0

Verilog 系统函数 $value$plusargs 作为任务调用。返回值将被忽略

我在编译我的 verilog 测试期间遇到上述错误,该测试基本上是试图通过 i2c 读取和写入值。我之前没有收到此错误。我不知道是什么更改导致我出现此错误。此外,此错误指向另一个名为 tb.v 的文件,其中包含测试台基础结构。它在 tb.v 中指向的行只是说 `ifdef TEST

4

2 回答 2

3

该错误消息意味着您正在调用一个函数,该函数返回一个值而不对返回值做任何事情。正如布赖恩所说,$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 中不会。

于 2013-03-29T21:51:06.400 回答
0

$value$pluargs 是一个返回值的函数。这个值是调用是否成功。不是您尝试获得的 +arg 的值。如果您不将结果分配给某些东西,我已经看到一些模拟器会感到不安。

基本上这将解决它:

reg dummy;
dummy = $value$plusargs(...)
于 2013-03-29T21:38:53.287 回答