我正在尝试学习如何使用 $ 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.
我不确定问题是否与我使用的代码或命令有关。在此先感谢:)
答案 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进行模拟。仅供参考。