问题 - 我需要获取命令行选项来为系统verilog中的约束添加条件。
我正在从函数调用中调用$value$pluargs("string=%d",val)
,我需要将传递给函数的参数用作'string'名称。
function(string name);
$value$plusargs("<name>=%d", val)
endfunction
我不知道该怎么做。说$value$plusargs("%s=%d",name,val)
会导致“参数太多”错误。
任何建议都会非常感激!谢谢!
答案 0 :(得分:4)
您可以使用字符串连接:
module tb;
int val = 5;
initial begin
$monitor("val=", val);
foo("bar");
end
function void foo (string name);
$value$plusargs({name, "=%d"}, val);
endfunction
endmodule
答案 1 :(得分:0)
您可以使用 $ test $ plusargs 来确定是否提供了命令行开关。
此系统函数搜索所提供的plusargs列表 串。搜索命令行中存在的plusargs 提供的订单。
如果提供的字符串中包含所有字符,则返回1'b1的结果。如果命令行中没有plusarg与提供的字符串匹配,则返回1'b0的结果。我已经修改了这个功能。
function void foo (string name);
if( $test$plusargs("name") )
begin
// Use the below
$value$plusargs({name, "=%d"}, val);
end
endfunction