错误:Verilog系统函数$ value $ plusargs被调用为task.Return值将被忽略

时间:2013-03-29 21:35:46

标签: verilog system-verilog

  

Verilog系统函数$ value $ plusargs作为task.Return值调用   将被忽略

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

2 个答案:

答案 0 :(得分:3)

该错误消息表示您正在调用一个函数,该函数返回一个值而不对返回值执行任何操作。正如Brian所说,$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中却没有。

答案 1 :(得分:0)

$ value $ pluargs是一个返回值的函数。该值是呼叫是否成功。不是你试图得到的+ arg的价值。我已经看到一些模拟器如果不将结果分配给某些东西会感到不安。

基本上这将解决它:

reg dummy;
dummy = $value$plusargs(...)