SystemVerilog中的fork-join_none

描述

fork-join_none和fork-join、fork-join_any的区别一样在于进程退出机制以及对于父进程的影响。

fork-join_none不会占用任何父进程的时间,即不会影响父进程。

基于这个特性,如果你希望启动一个并行的进程,而又不需要等待它结束就可以使用fork-join_none

 

module forkJoin;
 int a, b, c, d;
 initial
 begin
 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
 #40 d = 15;
 $display($stime,,,"d = %0d",d);
 end
 join_none
 $display($stime,,, "out of the loop");
 #100;
 end
 endmodule

 

仿真log:

 

 0 out of the loop
 40 d = 15
 50 a = 5
 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_none启动4个进程,然而从仿真log中可以看到父进程没有被阻塞,在时刻0就打印了“out of the loop” 。

原  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分