未定义系统任务或函数“$value$plusarg”-> 警告:Verilog

System task or function '$value$plusarg' is not defined -> Warning : Verilog

我正在尝试学习如何使用 $value$plusarg。我从某处获取了以下代码。

module test;
integer i, r;

initial begin
  r = $value$plusarg("myint=%d", i);
  $display("Value is %0d", i);
end

endmodule

当我尝试 运行 它时,我收到如下警告:

System task or function '$value$plusarg' is not defined.

我用过Modelsim。我用过的命令如下:

vlog test_genvar.v +define+myint="22"
vsim work.test
run -all

我不确定问题出在代码还是我使用的命令上。提前致谢:)

你有 1800-2012 LRM 的副本吗?如果你这样做了,你会发现你拼错了一些东西。

非常愚蠢的错误。系统任务名称是 $value$plusargs 而不是 $value$plusarg(缺少 's'..!!!)。

此外,您可以使用 $test$plusargs 到 detect/test 给定的开关是否在 运行 时间可用。喜欢如下:

if($test$plusargs("myint"))
begin
$value$plusargs("myint=%d",i);
end

还有一件事,我正在使用 VCS,为了提供这些类型的开关,我只使用“./simv +myint=5”(当然 simv 是我的编译可执行文件)。所以,不需要 +define+myint=5,直接 +myint=5 就可以了。

此外,这些是 运行 时间开关,而不是编译时间。所以,我认为他们应该使用 vsim 命令而不是 vlog,但我不确定这一点。我想没什么大不了的。

您的代码可在 EDAPlayground here 获得,使用 VCS 进行模拟。仅供参考。