系统任务或功能'$ value $ plusarg'未定义 - >警告:Verilog

时间:2015-11-01 13:57:45

标签: verilog modelsim

我正在尝试学习如何使用 $ value $ plusarg 。我从某个地方拿到了以下代码。

dom

当我试图运行它时,我收到警告:

module test;
integer i, r;

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

endmodule

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

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

我不确定问题是否与我使用的代码或命令有关。在此先感谢:)

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

此外,您可以使用$test$plusargs来检测/测试给定的交换机是否在运行时可用。如下所示:

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进行模拟。仅供参考。