在fork-join語句塊中,每個語句都是并發(fā)進程。在這個語句塊中,父進程一直被阻塞,直到所有由“fork-join”產(chǎn)生的子進程都執(zhí)行完:
module forkJoin; int a, b, c, d; initial fork : forkBlock begin //frst process #50 a = 5; $display($stime,,, "a = %0d",a); end begin //second process #100 b = 10; $display($stime,,, "b = %0d",b); end begin //third process #100 c = 20; $display($stime,,, "c = %0d",c); end begin //fourth process #50 d = 15; $display($stime,,, "d = %0d",d); end //frst, second, third and fourth processes execute in parallel. join endmodule
仿真log:
50 a = 5 50 d = 15 100 b = 10 100 c = 20 V C S S i m u l a t i o n R e p o r t
上面的fork-join產(chǎn)生了4個并行的子進程,都使用begin-end區(qū)分,在每個begin-end中間的語句都是串行執(zhí)行的。
1. 第1個進程在時間50執(zhí)行;
2. 第2個進程在時間100執(zhí)行;
3. 第3個進程在時間100執(zhí)行;
4. 第4個進程在時間50執(zhí)行;
這4個進程的時序都是獨立的。
審核編輯:湯梓紅
-
Verilog
+關注
關注
29文章
1367瀏覽量
112258 -
System
+關注
關注
0文章
166瀏覽量
37806 -
進程
+關注
關注
0文章
207瀏覽量
14278 -
Fork
+關注
關注
0文章
14瀏覽量
3485
原文標題:SystemVerilog中的fork-join
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
SystemVerilog中的Virtual Methods
Parallel (Fork-Join) Block is not supported
begin ...... end 與 fork ...... join 語句的 區(qū)別 ------ 轉(zhuǎn)載
Fork/Join的框架機制詳解
最常見的fork用法是什么
如何利用system verilog的fork join_none實現(xiàn)信號打拍操作呢
聊一聊如何在仿真中如何“多進程”時間管理
Fork/Join框架的軟件重構及性能分析
SystemVerilog中對于process的多種控制方式
淺析標準的Verilog對語句有兩種分組方式

SystemVerilog中的fork-join_any
SystemVerilog中的fork-join_none
如何優(yōu)化MySQL中的join語句

評論