1)在命令行的仿真參數(SIM_OPT)加上:“+var_a=100? +var_b=99”
2)在環境中調用:
$test$plusargs("var_a");如果命令行存在這個字符,返回1,否則返回0;
$value$plusargs("var_a=%0d",tc_var_a);就可以把命令行var_a的參數100提取出來到tc_var_a變量了
sv中$test$plusargs和$value$plusargs的用法小結(轉載自博客園from nanoty)_sv $value$plusaegs-CSDN博客
?$test$plusargs和$value$plusargs作為進行Verilog和SystemVerilog仿真運行時調用的系統函數,可以在仿真命令直接進行賦值,并且不局限于不同仿真器對于參數在仿真命令中定義格式不同的限制,也避免了調換參數帶來的頻繁編譯等問題。
可以使用$test$plusargs和$value$plusargs進行解決,該函數的調用發生在仿真運行(run)階段。這樣僅需要對設計進行一次編譯即可,如果需要改變相應的條件,可以在run的時候動態指定,這樣有利于腳本處理進行回歸的驗證,同時也有利于object的動態construct。
————————————————
$test$plusargs
????在運行(run)仿真時指定要選擇的條件,即只需要在仿真運行命令(run-options)中指定參數需要選擇的條件即可。當仿真運行時,$test$plusargs會在命令行中搜索指定的字符,若找到相應字符,在函數返回“1”,否則返回“0”。
$value$plusargs
$value$plusargs可以講運行命令(run-options)中的參數值傳遞給指定的信號或者字符,其語法格式如下:
Integer=$value$plusargs(“string”,signalname);
其中string=”plusarg_format”+”format_string”,”plusarg_format”指定了用戶定義的要進行傳遞的值,”format_string”指定了要傳遞的值的格式(類似$display中定義的%s、%h、etc.),并且string中”plusarg_format”和”format_string”格式應該為”plusarg_format”(=/+)”format_string”。如果轉換后的位寬和傳遞的值不一致,則按照如下規則轉換:
實例: