2011-03-16 53 views
1

我必須做DPRAM的驗證。如何使用Unix腳本選擇Verilog測試文件?

每個測試用例都寫在不同的文件名爲test1.v,test2.v等

我想編寫一個腳本(UNIX),這樣當我鍵入運行test1.v那麼只有測試用例會跑。

注: - test1.v內容唯一的任務,其包括讀取斷言,斷言寫等

試驗檯是一個單獨的文件,其中包括時鐘和組件的實例化。

當運行test1.v完成後,它應該將test1.v任務鏈接到測試臺,然後獲得輸出。

我也做了編碼用Verilog

如何做到這一點?

+0

在Verilog中使用'ifdef並通過shell腳本中的環境變量來控制它 – 2011-03-17 11:20:24

回答

2

所以,據我可以做出來,你的不同的測試或'測試案例'在名爲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,並且宏將不會被擴展。

2

一種方式做到這一點是讓測試平臺文件包括與通用名稱的測試文件:

`include "test.v" 

然後,讓你的腳本創建符號鏈接到你想運行測試。例如,在一個shell腳本或Makefile文件,運行test1.v

ln -sf test1.v test.v 
run_sim 

要運行test2.v,你的腳本將替換爲test2的test1的等