歡迎您光臨本站 登入註冊首頁

編寫testbench的總結

admin @ 2014-03-26 , reply:0

概述

激勵的設置    相應於被測試模塊的輸入激勵設置為reg型,輸出相應設置為wire類型,雙向埠inout在測試中需要進行處理。方法1:為雙向埠設置中間變數ino……

激勵的設置
     相應於被測試模塊的輸入激勵設置為reg型,輸出相應設置為wire類型,雙向埠inout在測試中需要進行處理。
方法1:為雙向埠設置中間變數inout_reg作為該inout的輸出寄存,inout口在testbench中要定義為wire型變數,然後用輸出使能控制傳輸方向。
eg: inout [0:0] bi_dir_port;
wire [0:0] bi_dir_port;
reg [0:0] bi_dir_port_reg;
reg bi_dir_port_oe;
assign bi_dir_port=bi_dir_port_oe?bi_dir_port_reg:1'bz;
    用bi_dir_port_oe控制埠數據方向,並利用中間變數寄存器改變其值。等於兩個模塊之間用inout雙向口互連。往埠寫(就是往模塊裡面輸入)

方法2:使用force和release語句,這種方法不能準確反映雙向埠的信號變化,但這種方法可以反映塊內信號的變化。具體如示:
module test();
wire data_inout;
reg data_reg;
reg link; #xx; //延時
force data_inout=1'bx; //強製作為輸入埠
...............
#xx;
release data_inout; //釋放輸入埠
endmodule

從文本文件中讀取和寫入向量
1)讀取文本文件:
    用 $readmemb系統任務從文本文件中讀取二進位向量(可以包含輸入激勵和輸出期望值)。$readmemh 用於讀取十六進位文件。例如:
reg [7:0] mem[1:256] // a 8-bit, 256-word 定義存儲器mem
initial $readmemh ( "mem.data", mem ) // 將.dat文件讀入寄存器mem中
initial $readmemh ( "mem.data", mem, 128, 1 ) // 參數為寄存器載入數據的地址始終
$fopen 
2)輸出文本文件:
打開輸出文件用
integer out_file; // out_file 是一個文件描述,需要定義為 integer類型
out_file = $fopen ( " cpu.data " ); // cpu.data 是需要打開的文件,也就是最終的輸出文本

Verilog Testbench信號記錄的系統任務:
1). SHM資料庫可以記錄在設計模擬過程中信號的變化. 它只在probes有效的時間內記錄你set probe on的信號的變化.
ex). $shm_open("waves.shm"); //打開波形資料庫 $shm_probe(top, "AS"); // set probe on "top", $shm_close //關閉資料庫
在記錄信號或者波形時需要指出被記錄信號的路徑,如:tb.module.u1.clk.


[admin via 研發互助社區 ] 編寫testbench的總結已經有5759次圍觀

http://cocdig.com/docs/show-post-42992.html