Tuesday, December 2, 2025

Write code that will create the four processes. Process_C should begin when Process_A has finished, and then Process_D. However, Process_B ought to wait for Process_D to finish.

 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