SystemVerilog通过fork-join构造为并行或并发线程提供支持。可以使用fork和join同时生成多个过程块。fork-join有一些变体,允许主线程根据子线程完成的时间继续执行其余语句。
语法
fork
// Thread 1
// Thread 2
// ...
// Thread 3
join
fork join example
在下面显示的示例中,使用fork-join分叉了三个线程。主线程保持挂起状态,直到由fork生成的所有线程完成。begin和end中的任何代码块都被视为一个单独的线程,在本例中是Thread2。
module tb;
initial begin
$display ("[%0t] M