是系统verilog中的函数允许fork .. join语句吗?

时间:2014-04-16 07:16:43

标签: function system-verilog fork-join

他们绝对被允许执行任务,但我无法找到,如果他们被允许参加任务。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

是的,函数中允许fork...join_none

如果fork块与join_none匹配,则只能在函数中使用。原因是函数必须在零时间内执行。因为fork...join_none将被生成一个单独的线程/进程,所以该函数仍然可以在零时间内完成。

IEEE 1800-2012部分 13.4.4函数调用产生的后台进程

清楚地说明了这一点。
  

函数应无延迟执行。因此,调用函数的进程应立即返回。在一个函数内应允许不阻止的语句;具体而言,应允许在函数内部使用非阻塞赋值,事件触发器,时钟驱动器和fork - join_none构造。

答案 1 :(得分:0)

我的模拟工具允许fork...join_none功能,但会发出警告,fork...join(可能fork...join_any)将转换为begin...end。我无法在标准中找到关于此的任何内容,这很可能是我没有得到严格编译错误的原因。

请注意,因为不同的模拟器供应商可能会实施不同的规则。在函数中的两个大3模拟器fork...join_none肯定有效。 fork...join/join_any在函数的上下文中没有意义,所以我会完全避免它。