2017-03-09 70 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