Verilog系统函数$ value $ plusargs作为task.Return值调用 将被忽略
在编译我的verilog测试期间出现上述错误,该测试基本上是尝试通过i2c读取和写入值。我之前没有收到此错误。我不知道是什么改变了,这给了我这个错误。此错误指向另一个名为tb.v的文件,其中包含testbench基础结构。它在tb.v中指出的行只是说`ifdef TEST
答案 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(...)