System verilog 从测试台禁用DUT实例

System verilog 从测试台禁用DUT实例,system-verilog,System Verilog,请帮助解决我面临的与禁用DUT实例有关的一个问题。 我的DUT top模块中有许多实例,但我的测试不需要它们。 有没有办法从测试台上禁用这些实例 例如,这是我的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(

请帮助解决我面临的与禁用DUT实例有关的一个问题。 我的DUT top模块中有许多实例,但我的测试不需要它们。 有没有办法从测试台上禁用这些实例

例如,这是我的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
因此,我的测试台将只测试目标_testmodule及其子模块。 我正在使用bind将接口连接到target_testmodule,然后开始驱动target_testmodule的引脚。目标模块驱动其子模块引脚

因此,对于本测试,我不需要pci_module Instance或其他Instance,因为它们是大型实例,需要花费大量时间,提供大量警告,而且它们还驱动一些我不需要的目标_testmodule端口

我的问题是有某种机制可以从测试台上禁用pci模块。我没有对top模块的写入权限,无法对实例进行注释或将其放入“ifdef”中。

  • 第一种机制是让锁定文件的人更改文件,这样您就可以更高效地完成工作。他们可以为您输入
    generate
    ifdef
    语句
  • 如果您有单独的时钟或启用信号,则可以强制它们处于非活动状态
  • 复制和修改顶级文件的本地副本,并改用该文件。有许多方法可以替代本地模块

除了获得写入权限之外,下一个最简单的方法是制作自己的top


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

非常感谢。我希望系统verilog在这里提供一些选项,比如绑定不需要为NULL的实例,或者强制整个实例为空。目前我在TopThank Greg中使用'ifndef SIM_REMOVE方法,这也是另一个不错的观点!