Verilog 系统函数 $value$plusargs 作为任务调用。返回值将被忽略
我在编译我的 verilog 测试期间遇到上述错误,该测试基本上是试图通过 i2c 读取和写入值。我之前没有收到此错误。我不知道是什么更改导致我出现此错误。此外,此错误指向另一个名为 tb.v 的文件,其中包含测试台基础结构。它在 tb.v 中指向的行只是说 `ifdef TEST
Verilog 系统函数 $value$plusargs 作为任务调用。返回值将被忽略
我在编译我的 verilog 测试期间遇到上述错误,该测试基本上是试图通过 i2c 读取和写入值。我之前没有收到此错误。我不知道是什么更改导致我出现此错误。此外,此错误指向另一个名为 tb.v 的文件,其中包含测试台基础结构。它在 tb.v 中指向的行只是说 `ifdef TEST
该错误消息意味着您正在调用一个函数,该函数返回一个值而不对返回值做任何事情。正如布赖恩所说,$value$plusargs
返回一个值,因此您需要将其分配给某物,或者在 SystemVerilog 中您可以使用void'(..)
.
// For Verilog
reg result;
result = $value$plusargs(...);
-
// For SystemVerilog
void'($value$plusargs(...));
您可能还想知道 plusarg 是否匹配。在这种情况下,最好以这种方式编码:
if ($value$plusargs(...)) begin
// do something
end
关于为什么你突然开始看到这个的一种解释是,如果你改变了一些东西,所以源代码被编译为 SystemVerilog 而不是 Verilog。它依赖于工具,但给定的编译器可能会在 SystemVerilog 中抱怨这一点,但在 Verilog 中不会。
$value$pluargs 是一个返回值的函数。这个值是调用是否成功。不是您尝试获得的 +arg 的值。如果您不将结果分配给某些东西,我已经看到一些模拟器会感到不安。
基本上这将解决它:
reg dummy;
dummy = $value$plusargs(...)