2013-05-03 140 views
1

問題 - 我需要獲取命令行選項來爲系統verilog中的約束添加條件。將字符串變量傳遞給系統verilog中的plusargs

我從函數調用調用$value$pluargs("string=%d",val),我需要使用傳遞給函數的參數作爲'字符串'名稱。

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

我不知道該怎麼做。說$value$plusargs("%s=%d",name,val)會導致「參數太多」的錯誤。

任何建議將非常感激!謝謝!

回答

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 
0

您可以使用$測試$ 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 
+0

這沒有正確使用名稱參數(除了註釋行)。 – ScottJ 2016-01-22 19:25:34

+1

@ScottJ我編輯了答案。感謝指針。 – sharvil111 2016-01-23 02:32:17

相關問題