2017-03-09 22 views
1

請幫助解決我面臨的與禁用DUT實例相關的一個問題。 我的DUT頂層模塊有很多實例,但我的測試不需要它們。 有什麼辦法可以從測試臺上禁用這些實例。從測試平臺中禁用DUT的實例

例如,這是我的DUT模塊的原型:

module top (…….); 

// instances needs to be disabled 
module1 #(16) inst1 (.CLK(clk_100),.PAD_RSTN(ext_reset_n),.RSTN(global_reset_n)); 
module2 #(16) inst2 (.CLK(clk_100),.PAD_RSTN(ext_reset_n),.RSTN(pcie_reset_n)); 
pcie_module #(…) inst_pci (…..); 

// main test target instances 
target_testmodule #(…) test_inst(…); 
child1_of_target_testmodule #(…) test_inst_child1(…); 
child2_of_target_testmodule #(…) test_inst_child2(…); 

endmodule 

所以我的測試臺將只測試target_testmodule及其子模塊。 我正在使用bind將接口連接到target_testmodule,然後開始驅動target_testmodule的引腳。並且target_testmodule驅動其子模塊引腳。

所以對於這個測試,我不需要pci_module instace或其他instaces,因爲它們是大實例需要很多時間,提供了很多警告,並且它們還驅動了一些我不需要的target_testmodule端口。

我的問題是有一些機制來禁用測試臺上的pci模塊。我沒有對頂層模塊的寫入權限來評論這些實例,或將它們放在`ifdefs中。

回答

1
  • 您的第一個機制是要求鎖定文件的人對其進行更改,以便更有效地完成工作。他們可以爲您輸入generateifdef報表。
  • 如果您有單獨的時鐘或啓用信號,您可以強制它們處於非活動狀態
  • 複製並修改頂級文件的本地副本,然後使用該文件。這是一些替代本地模塊的方法
+0

非常感謝Dave。 我希望系統verilog在這裏給出了一些選項,比如綁定我不需要NULL的實例或強制整個實例清空。 目前我使用'ifndef SIM_REMOVE方法頂部 – haykp

1

除了獲得寫權限之外,下一個最簡單的方法就是讓自己成爲頂級。

Verilog(自IEEE1364-2001以來)和SystemVerilog確實有辦法將同名的不同模塊編譯到不同的庫中,然後使用配置來決定在制定過程中將使用哪一個模塊。您可以使用這種技術來使用簡化版本或虛擬版本來交換您不需要的模塊實例。根據您的測試環境的配置,實施這些配置可能會非常棘手。如果您正面臨挑戰,請閱讀IEEE Std 1800-2012 § 33. 配置設計的內容

+0

感謝格雷格,這也是另一個不錯的選擇! – haykp