fork-join_any和fork-join有所不同,fork-join_any的父进程一直阻塞,直到任何一个并行的子进程结束。
需要注意的是,当其中任何一个子进程和父进程结束后,剩余未结束的子进程不会停止,而是会一直执行下去,直到仿真停止。
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_any $display($stime,,, "out of the loop"); end endmodule
仿真log:
40 d = 15 40 out of the loop V C S S i m u l a t i o n R e p o r t
上面的fork-join-any示例中有4个子进程,分别在时间40,50,100,100执行。随着进程4结束,父进程也会结束,仿真随之停止。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !