1. 程式人生 > >Verilog中的條件執行:$test$plusargs和$value$plusargs

Verilog中的條件執行:$test$plusargs和$value$plusargs

$test$plusargs和$value$plusargs

$test$plusargs和$value$plusargs作為進行Verilog和SystemVerilog模擬執行時呼叫的系統函式,可以在模擬命令直接進行賦值,並且不侷限於不同模擬器對於引數在模擬命令中定義格式不同的限制,也避免了調換引數帶來的頻繁編譯等問題。使用這兩條函式對於搭建測試平臺有一定的便利,同時對於理解Factory中用例是如何傳遞進Proxy Class有一定的幫助。

直接點說就是將執行的判斷條件放在命令列中決定,由使用者在啟動模擬時輸入。

if ($test$plusargs("DISPLAY_VAR")) begin
.....
end

if($value$plusargs("test_var = %d", test_var) begin
.....
end  

第一個if語句的表示式中使用了$test$plusargs作為判斷條件,如果想要執行後面的begin塊,就得在啟動模擬的執行命令中加入指定的引數即DISPLAY_VAR,這樣模擬在執行時,$test$plusargs會搜尋引數字元,如果找到了匹配的選項,就會返回1,否則返回0。 run-options+DISPLAY_VAR… 由上面的描述可以看出,$test$plusargs的功能和`ifdef機制很相似,很多模擬工具也可以在模擬執行命令後面加上巨集定義從而開啟ifdef。

$value$plusargs的功能更為高階一些,如果想要第二個if語句後的begin塊執行,需要在模擬執行命令後加入test_var = *,它一方面既可以實現$test$plusargs的功能,另一方面還同時給模擬變數test_var賦值。 run-options+test_var=10…