disable fork
Table of Contents
disable fork; causes the process to kill/terminate all the active processes started from fork blocks.
disable fork example
In the below example,
On execution of the disable fork, all the active process will get terminated.
Process-2 of fork-1, Process-1, and Process-2 of fork-2 will get terminated.
module disable_fork;
initial begin
$display("-----------------------------------------------------------------");
//fork-1
fork
//Process-1
begin
$display($time,"\tProcess-1 of fork-1 Started");
#5;
$display($time,"\tProcess-1 of fork-1 Finished");
end
//Process-2
begin
$display($time,"\tProcess-2 of fork-1 Started");
#20;
$display($time,"\tProcess-2 of fork-1 Finished");
end
join_any
//fork-2
fork
//Process-1
begin
$display($time,"\tProcess-1 of fork-2 Started");
#5;
$display($time,"\tProcess-1 of fork-2 Finished");
end
//Process-2
begin
$display($time,"\tProcess-2 of fork-2 Started");
#20;
$display($time,"\tProcess-2 of fork-2 Finished");
end
join_none
disable fork;
$display("-----------------------------------------------------------------");
$display($time,"\tAfter disable-fork");
$display("-----------------------------------------------------------------");
end
endmodule
Simulator Output
----------------------------------------------------------------- 0 Process-1 of fork-1 Started 0 Process-2 of fork-1 Started 5 Process-1 of fork-1 Finished ----------------------------------------------------------------- 5 After disable-fork -----------------------------------------------------------------
Example-2
In the below example,
sub_process started from process-2 will get terminated during the execution of disable fork.
module disable_fork;
initial begin
$display("-----------------------------------------------------------------");
fork
//Process-1
begin
$display($time,"\tProcess-1 of fork-1 Started");
#5;
$display($time,"\tProcess-1 of fork-1 Finished");
end
//Process-2
begin
sub_process();
end
join_any
disable fork;
$display("-----------------------------------------------------------------");
$display($time,"\tAfter disable-fork");
$display("-----------------------------------------------------------------");
end
//Sub-Process
task sub_process;
$display($time,"\tSub-Process Started");
#10;
$display($time,"\tSub-Process Finished");
endtask
endmodule
Simulator Output
----------------------------------------------------------------- 0 Process-1 of fork-1 Started 0 Sub-Process Started 5 Process-1 of fork-1 Finished ----------------------------------------------------------------- 5 After disable-fork -----------------------------------------------------------------
