在fork-join语句块中,每个语句都是并发进程。在这个语句块中,父进程一直被阻塞,直到所有由“fork-join”产生的子进程都执行完:
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产生了4个并行的子进程,都使用begin-end区分,在每个begin-end中间的语句都是串行执行的。
1. 第1个进程在时间50执行;
2. 第2个进程在时间100执行;
3. 第3个进程在时间100执行;
4. 第4个进程在时间50执行;
这4个进程的时序都是独立的。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !