2014-09-26 83 views
1

我想模擬具有簡單的地址/數據接口的模塊。我想創建一個單獨的模塊作爲模塊的交易者。因此,例如,我可以簡單地在交易模塊中調用一個任務來執行地址和數據的寫入。例如用於模擬的模塊瞬變

Transactor.Write_Task(0, 123); //Writes 123 to Addr 0. 

我的問題是,我應該做一個include包括在測試平臺上交易者模塊?或者是單獨編譯交易者並將其實例化並將其連接起來的好方法,就好像它是另一個被測試的單元一樣? e.g:

\lib_Local_Bus.Local_Bus_Transactor Transactor 
    (
    .i_LB_Clk(w_LB_Clk), 
    .o_LB_CS(w_LB_CS), 
    .o_LB_Wr_Rd_n(w_LB_Wr_Rd_n), 
    .o_LB_Addr8(w_LB_Addr8), 
    .o_LB_Wr_Data(w_LB_Wr_Data), 
    .i_LB_Rd_Data(w_LB_Rd_Data), 
    .i_LB_Rd_DV(w_LB_Rd_DV) 
    ); 

我覺得這是很容易直接包括它與include,但後來我需要正確地指向它,這可能是一個問題。通過預編譯,將它像UUT那樣實例化,然後連接起來,還有更多的代碼,但是對於發生的事情來說更直接。

+0

爲什麼不將兩個文件作爲兩個單獨的文件一起編譯? – Ari 2014-09-26 18:20:01

+0

@Ari,我相信這就是我在使用'include'的地方所做的。交易者和測試臺都在他們自己的文件中。當我將交易者包含在結核病中時,它將它們編譯在一起。 – Russell 2014-09-26 18:23:20

+0

測試將在測試平臺的頂部調用這些任務在哪裏?你有權訪問SystemVerilog嗎?它有很多功能可以幫助您組織測試臺並使其更加可重用。 – 2014-09-29 16:23:24

回答

0

經典的方法是將它作爲任何其他模塊對待,這意味着它作爲自己的文件存在,並在最高級別的測試平臺中將交易器和DUT一起實例化。這是我編寫的大多數香草Verilog環境。

該模塊可以提供基於隊列的接口來將事務排入隊列中,或者可以從測試中調用基於任務的接口,例如,

initial 
    begin : test_block 
     Transactor.Send(data1); 
     ->stimulus_complete; 
    end