module tb;
event process_A_done; // Declare events for synchronization
event process_D_done;
event process_C_done;
initial
begin
fork: process_fork
begin: process_A
$display("Process_A completed %0t",$time);
-> process_A_done; // Trigger process_A_done event
end
begin: process_B
wait(process_D_done.triggered); // Wait for process_B_done event
$display("Process_B completed %0t",$time);
end
begin: process_C
wait(process_A_done.triggered);
$display("Process_C completed %0t",$time);
-> process_C_done;
end
begin: process_D
wait(process_C_done.triggered);
$display("Process_D completed %0t",$time);
->process_D_done;
end
join
end
endmodule
Key points - events , wait , -> , triggered ,
wait_order Waits for events to be triggered in the given order, and issues an error if any event executes out of order.
No comments:
Post a Comment