獨立寫testbench注意的幾點


在單獨使用Modelsim有時候需要自己獨立書寫testbench,對於應用QII所自帶的Start testbench Template writer確實方便,但是有時對於一個小的獨立模塊進行仿真時就需要獨立調用Modelsim,這樣在Modelsim中編寫testbench,下面對於testbench的書寫總結一下。

  首先在寫testbench時,應注意名稱要和自己待仿真的工程名稱要對應,比如自己的待仿真文件名稱叫grey_even,那么對於teshbench的名稱則取一個叫grey_even_tst,在書寫testbench module name則取名叫grey_even_vlg_tst();這樣對於自己有好處,以免自己找不到自己寫的文件。

  書寫grey_even_vlg_tst();時,原來module grey_even();中的input端口在grey_even_vlg_tst();中要定義為同名reg變量,output 端口要定義為同名wire變量,然后在grey_even_vlg_tst();例化module grey_even();並調用module grey_even();這樣構成一個測試反饋回路,即例化的步驟:

grey_even i1(

   .iCLK(iCLK),
    .iG_grey(iG_grey),
    .iH_cont(iH_cont),
    .iRST_N(iRST_N),
    .iVGA_VS(iVGA_VS),
    .iV_cont(iV_cont),
    .oFIFO_syn(oFIFO_syn),
    .o_even(o_even)

 );
端口一定要和定義的接口對應,輸入口與reg相連,輸出口同wire相連。代碼如下
`timescale 1 ps/ 1 ps
module grey_even_vlg_tst();
// constants                                           
// general purpose registers
// test vector input registers
reg iCLK;
reg [9:0] iG_grey;
reg [10:0] iH_cont;
reg iRST_N;
reg iVGA_VS;
reg [10:0] iV_cont;
// wires                                               
wire oFIFO_syn;
wire [9:0]  o_even;

// assign statements (if any)                          
grey_even i1 (
// port map - connection between master ports and signals/registers   
    .iCLK(iCLK),
    .iG_grey(iG_grey),
    .iH_cont(iH_cont),
    .iRST_N(iRST_N),
    .iVGA_VS(iVGA_VS),
    .iV_cont(iV_cont),
    .oFIFO_syn(oFIFO_syn),
    .o_even(o_even)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
                                                       

                                           
$display("Running testbench");                       
end                                                    
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  


                                             
end                                                    
endmodule

然后再在例化后的部分開始編寫測試代碼。

testbench name :grey_even_tst(testbench的文件名)

Top level module :grey_even_vlg_tst(testbench的module名)

Design instance module name:i1(待測試module 在testbench的例化module名)

這個關系要明白


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM