将字符串变量传递给系统verilog中的plusargs

时间:2013-05-03 14:27:24

标签: verilog system-verilog

问题 - 我需要获取命令行选项来为系统verilog中的约束添加条件。

我正在从函数调用中调用$value$pluargs("string=%d",val),我需要将传递给函数的参数用作'string'名称。

function(string name);
$value$plusargs("<name>=%d", val)
endfunction

我不知道该怎么做。说$value$plusargs("%s=%d",name,val)会导致“参数太多”错误。

任何建议都会非常感激!谢谢!

2 个答案:

答案 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