Process - mbits-mirafra/verilator GitHub Wiki

Fork join:

                                          
module fork_test;
  initial begin
    for (int j=0; j<3; j++)
      begin
        fork
          automatic int k=j;
          $display(k);
        join
      end
  end
endmodule:fork_test


Output:

WhatsApp Image 2024-01-11 at 11 30 05 AM

fork join_any:


module fork_join;
  initial begin
    $display("-----------------------------------------------------------------");    
    fork
      //Process-1
      begin
        $display($time,"\tProcess-1 Started");
        #5;
        $display($time,"\tProcess-1 Finished");
      end

      //Process-2
      begin
        $display($time,"\tProcess-2 Started");
        #20;
        $display($time,"\tProcess-2 Finished");
      end
    join_any

    $display($time,"\tOutside Fork-Join");
    $display("-----------------------------------------------------------------");
  end
endmodule


Output:

WhatsApp Image 2024-01-11 at 3 03 25 PM

Fork join_none:


module fork_join_none;
  initial begin
    $display("-----------------------------------------------------------------");
    fork
      //Process-1
      begin
        $display($time,"\tProcess-1 Started");
        #5;
        $display($time,"\tProcess-1 Finished");
      end
      //Process-2
      begin
        $display($time,"\tProcess-2 Startedt");
        #20;
        $display($time,"\tProcess-2 Finished");
      end
    join_none
 
    $display($time,"\tOutside Fork-Join_none");
    $display("-----------------------------------------------------------------");
  end
endmodule

Output:

WhatsApp Image 2024-01-11 at 3 05 50 PM

But in the cadence simulator the output would be:

-----------------------------------------------------------------
                   0	Outside Fork-Join_none
-----------------------------------------------------------------
                   0	Process-1 Started
                   0	Process-2 Startedt
                   5	Process-1 Finished
                  20	Process-2 Finished