【从零开始学习 SystemVerilog】4.2、SystemVerilog 进程—— disable fork join
在前一篇文章中,讨论了启动并行线程的不同方法。现在我们将看到如何禁用分叉线程。
从fork-join块中启动的所有活动线程都可以通过调用disable-fork来终止。
为什么禁用分叉(fork)?
在给定示例的仿真开始时会发生以下情况:
- 1、主线程执行初始块并找到fork join_any块
- 2、它将并行启动三个线程,并等待其中任何一个线程完成
- 3、线程1首先完成,因为延迟最小
- 4、恢复主线程的执行
Thread2和Thread3仍然在运行,即使主线程已经离开fork join_any块。
module tb_top;
initial begin
// Fork off 3 sub-threads in parallel and the currently executing main thread
// will finish when any of the 3 sub-threads have finished.
fork
// Thread1 : Will finish first at time 40ns
#40 $display (