3

我需要获取命令行选项来为 SystemVerilog 中的约束添加条件。

$value$pluargs("string=%d",val)从函数调用中调用,我需要使用传递给函数的参数作为“字符串”名称。

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

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

4

2 回答 2

5

您可以使用字符串连接:

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
于 2013-05-03T14:51:49.207 回答
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
于 2015-09-30T06:36:49.957 回答