从Test-bench禁用DUT实例

问题描述 投票:1回答:2

请帮助解决我在禁用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或其他instaces,因为它们是大型实例需要很长时间,提供大量警告,并且它们还驱动了一些我没有解决的target_testmodule端口。

我的问题是有一些机制可以从测试平台上禁用pci模块。我没有顶级模块的写权限来注释实例或将它们放在`ifdefs中。

system-verilog
2个回答
1
投票
  • 您的第一个机制是要求锁定文件的人更改它,以便您可以更有效地完成工作。他们可以为您输入generateifdef声明。
  • 如果您有单独的时钟或启用信号,您可以强制它们处于非活动状态
  • 复制并修改顶级文件的本地副本,并改为使用该文件。有许多方法可以替代本地模块

1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.