Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
System verilog 为什么不能在系统verilog中的fork join any/none中使用引用参数?_System Verilog - Fatal编程技术网

System verilog 为什么不能在系统verilog中的fork join any/none中使用引用参数?

System verilog 为什么不能在系统verilog中的fork join any/none中使用引用参数?,system-verilog,System Verilog,无法在系统verilog中的fork join any/none中使用引用参数 **错误:../tb/range\u xform\u driver.sv(28):(vlog-LRM-2295)通过引用传递的参数不能在fork-join\u any或fork-join\u none块中使用 **错误:../tb/range\u xform\u driver.sv(29):(vlog-LRM-2295)通过引用传递的参数不能在fork-join\u any或fork\u-join\u none块中使

无法在系统verilog中的fork join any/none中使用引用参数 **错误:../tb/range\u xform\u driver.sv(28):(vlog-LRM-2295)通过引用传递的参数不能在fork-join\u any或fork-join\u none块中使用


**错误:../tb/range\u xform\u driver.sv(29):(vlog-LRM-2295)通过引用传递的参数不能在fork-join\u any或fork\u-join\u none块中使用这是LRM限制(参见第9.3.2节“1800-2017 LRM中的并行块”)。此限制背后的原因与以下事实有关:fork/join\u none/join\u any块中引用的任何变量的生存期必须在fork块的整个生存期内存在。回想一下,有以下几种变量的生存期

  • 静态-永久性,不是此问题的问题
  • 自动-在块激活期间存在
  • 通过活动引用进行动态类对象内存管理
队列、动态数组和关联数组为上述每个元素添加了另一个维度。 问题是,当您通过引用传递变量时,您不知道该变量属于哪种类型的存储类以便能够延长其生存期。您只有对与引用类型匹配的泛型变量类型的引用。 假设您有一个任务,该任务的ref参数是int,您调用该任务时,传递给它的类成员是int。调用该任务的代码只传递对该int的引用,而不传递它所属的类的句柄。传递数组元素也有同样的问题


如果编译器在任务中运行(将对任务的调用替换为任务源代码的内容),您可以绕过此限制。但是,您不能利用单独的编译(在编译调用任务的代码的单独步骤中编译任务定义).

嗨,dave,谢谢你的回复。请告诉我动态变量的生存期是如何限制的,仅限于join none和join any,而不是join all