从Test-bench

时间:2017-03-09 07:18:24

标签: system-verilog

请帮助解决我在禁用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。

2 个答案:

答案 0 :(得分:1)

  • 您的第一个机制是要求锁定文件的人进行更改,以便您可以更有效地完成工作。他们可以为您提供generateifdef语句。
  • 如果您有单独的时钟或启用信号,则可以强制它们处于非活动状态
  • 复制并修改顶级文件的本地副本,并改为使用该文件。有许多替代本地模块的方法

答案 1 :(得分:1)

除了获得写入权限之外,下一个最简单的方法是让你拥有自己的顶级。

Verilog(自IEEE1364-2001以来)和SystemVerilog确实有一种方法可以将不同的同名模块编译到不同的库中,然后使用配置来确定在精化过程中将使用哪一个。您可以使用此技术来使用简化或虚拟版本交换您不需要的模块实例。根据您的测试环境配置,实现此配置可能会非常棘手。如果您正在接受挑战,请阅读IEEE Std 1800-2012§33。配置设计内容