请帮助解决我在禁用DUT实例时遇到的一个问题。 我的DUT顶级模块中有很多实例,但我的测试不需要它们。 有没有办法从test-bench中禁用这些实例。
例如,这是我的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或其他实例,因为它们是大型实例需要很长时间,提供了大量警告,并且它们还驱动了一些我不知道的target_testmodule端口。
我的问题是有一些机制可以从测试台上禁用pci模块。我没有顶级模块的写权限来评论实例或将它们放在`ifdefs。
中答案 0 :(得分:1)
generate
或ifdef
语句。答案 1 :(得分:1)
除了获得写入权限之外,下一个最简单的方法是让你拥有自己的顶级。
Verilog(自IEEE1364-2001以来)和SystemVerilog确实有一种方法可以将不同的同名模块编译到不同的库中,然后使用配置来确定在精化过程中将使用哪一个。您可以使用此技术来使用简化或虚拟版本交换您不需要的模块实例。根据您的测试环境配置,实现此配置可能会非常棘手。如果您正在接受挑战,请阅读IEEE Std 1800-2012§33。配置设计内容