我必須做DPRAM的驗證。如何使用Unix腳本選擇Verilog測試文件?
每個測試用例都寫在不同的文件名爲test1.v,test2.v等
我想編寫一個腳本(UNIX),這樣當我鍵入運行test1.v那麼只有測試用例會跑。
注: - test1.v內容唯一的任務,其包括讀取斷言,斷言寫等
試驗檯是一個單獨的文件,其中包括時鐘和組件的實例化。
當運行test1.v完成後,它應該將test1.v任務鏈接到測試臺,然後獲得輸出。
我也做了編碼用Verilog
如何做到這一點?
我必須做DPRAM的驗證。如何使用Unix腳本選擇Verilog測試文件?
每個測試用例都寫在不同的文件名爲test1.v,test2.v等
我想編寫一個腳本(UNIX),這樣當我鍵入運行test1.v那麼只有測試用例會跑。
注: - test1.v內容唯一的任務,其包括讀取斷言,斷言寫等
試驗檯是一個單獨的文件,其中包括時鐘和組件的實例化。
當運行test1.v完成後,它應該將test1.v任務鏈接到測試臺,然後獲得輸出。
我也做了編碼用Verilog
如何做到這一點?
所以,據我可以做出來,你的不同的測試或'測試案例'在名爲test<n>.v
的文件中。我假設每個測試用例都有一個在所有文件中都具有相同名稱的任務,如run_testcase
。這意味着你的測試平臺(testbench.v
,說的)必須像:
module testbench();
...
`include "test.v" // <- problem is this line
...
initial begin
// Some setup
run_testcase();
//
$finish;
end
endmodule
所以你的問題是include
線 - 不同的文件需要根據測試用例被包括在內。我可以想到解決這個問題的兩種方法是工具建議 - 使用符號鏈接'重命名'測試用例文件。因此,一個例子包裝腳本(run_sim1
)啓動您的SIM卡可能看起來有點像:
#! /usr/bin/env sh
testcase=$1
ln -sf ${testcase} test.v
my_simulator testbench.v
另一種方法是使用宏,併爲您的模擬包裝腳本進行定義。你的測試平臺將被修改爲如下所示:
...
`include `TESTCASE
...
而且包裝腳本(run_sim2
):
#! /usr/bin/env sh
testcase=$1
my_simulator testbench.v +define+TESTCASE=\"${testcase}\"
的引號這裏很重要,因爲VERILOG include
指令希望他們。不幸的是,我們不能在測試平臺中留下引號,因爲它看起來像一個字符串到verilog,並且宏將不會被擴展。
一種方式做到這一點是讓測試平臺文件包括與通用名稱的測試文件:
`include "test.v"
然後,讓你的腳本創建符號鏈接到你想運行測試。例如,在一個shell腳本或Makefile文件,運行test1.v
:
ln -sf test1.v test.v
run_sim
要運行test2.v
,你的腳本將替換爲test2的test1的等
在Verilog中使用'ifdef並通過shell腳本中的環境變量來控制它 – 2011-03-17 11:20:24