目錄
- 準備工作
- 接口相關代碼編寫
- 事務相關代碼編寫
準備工作
DVT(Design and Verification Tools)是一款專門為 IC 驗證打造的 IDE 插件,可以理解為智能的 Verilog/System Verilog 編輯器,在 VS Code、Eclipse 軟件中使用。
接口相關代碼編寫
- lvc_ahb_if.sv 是面向 DUT 的接口,方便 TB 與 DUT 建立總線通信
- rkv_ahbram_if.sv 是面向 TB 的接口,提供全局的 testbench 控制
- rkv_ahbram_tb.sv 是 TB 頂層文件,由于時鐘信號較為固定,無需在后續測試過程中更改,所以可以把時鐘信號生成的代碼放于此
下面將介紹各文件的代碼更新內容:
- lvc_ahb_defines.svh
- 定義 AHB 總線相關的宏
- lvc_ahb_if.sv
- 定義 AHB 總線信號
- rkv_ahbram_if.sv
- 定義時鐘和復位信號
- 定義 task 任務產生復位信號,interface 里定義的 task/function 都是靜態的,為了避免出現多個進程同時調用時,局部變量被覆蓋的情況,這里使用動態任務
task automatic assert_reset(input int active_cycles = 5, // 復位保持多少個時鐘周期input int start_delay = 0 // 復位開始前延遲多少個時鐘周期
);rstn <= 1;repeat(start_delay) @(posedge clk); // 等待 start_delay 個時鐘周期后開始復位rstn <= 0;repeat(active_cycles) @(posedge clk); // 復位保持 active_cycles 個時鐘周期后釋放復位rstn <= 1;
endtask
- rkv_ahbram_tb.sv
- 例化接口 lvc_ahb_if 類和 rkv_ahbram_if 類
- 使用 lvc_ahb_if 類的 interface 實例化 DUT(設計文件:ahb_blockram_32.v)
- 產生時鐘信號
事務相關代碼編寫
- lvc_ahb_types.sv 集中定義了協議里各種枚舉類型
- lvc_ahb_transaction.sv 用于存放一次 AHB 傳輸需要的變量。作為輸入激勵,需要 sequence 隨機化生成的變量定義為 rand 類型;仿真過程中記錄/監測的變量為 非rand