【发布时间】:2014-10-23 03:44:45
【问题描述】:
这篇题为Systemverilog Event Regions Race Avoidance & Guidelines的论文提交了一个与Systemverilog IEEE 1800-2012 LRM相矛盾的例子:
...当分叉后台进程时,允许 新创建的子进程有机会在之前开始执行 继续执行父进程。这很容易 使用以下代码完成:
program test;
initial begin
fork
process1;
process2;
process3;
join_none
#0;
// parent process continue
end
endprogram
但是 IEEE Systemverilog LRM IEEE 1800-2012 声明:
"join_none.父进程继续并发执行 由 fork 产生的所有进程。产生的进程不 开始执行直到父线程执行阻塞语句 或终止。”
这是什么?
【问题讨论】:
-
顺便说一句,我知道这只是一个简单的例子,但我绝不建议在代码中的任何地方使用 #0。不理解使用的意义,就不会理解使用带来的问题。
标签: system-verilog