我需要获取命令行选项来为 SystemVerilog 中的约束添加条件。
我$value$pluargs("string=%d",val)
从函数调用中调用,我需要使用传递给函数的参数作为“字符串”名称。
function(string name);
$value$plusargs("<name>=%d", val)
endfunction
我不知道该怎么做。说$value$plusargs("%s=%d",name,val)
会导致“参数过多”错误。
我需要获取命令行选项来为 SystemVerilog 中的约束添加条件。
我$value$pluargs("string=%d",val)
从函数调用中调用,我需要使用传递给函数的参数作为“字符串”名称。
function(string name);
$value$plusargs("<name>=%d", val)
endfunction
我不知道该怎么做。说$value$plusargs("%s=%d",name,val)
会导致“参数过多”错误。
您可以使用字符串连接:
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
您可以使用$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