是否可以在 VHDL Testbench 中访问 uut 的组件?

Is it possible to access components of the uut in VHDL Testbench?

我想为实例化多个组件但没有重要输出的模块编写测试平台。为了测试正确性,我必须访问 uut 组件的变量。至少能够访问 uut 的变量会有所帮助。

我想像这样工作:

uut: top_module port map(
              i_clk => clk,
              i_reset => reset
      );
testbench: process
begin
    wait for CLK_PERIOD;
    report  STD_LOGIC'image(top_module.flag) severity note;
end process;

当然,我可以编写测试台来替换顶层模块,但那样我就无法测试该模型了。扩展顶部 module/uut 的输出也不是真正的选择。

借助 VHDL 2008,您可以使用新的 external names 语法:

alias int1 << signal .tb_top.u_ioc.int1 : std_logic >>;

对于早期的 VHDL 标准,您必须使用特定于供应商的工具,例如signal_spy 对于 Questa/ModelSim.

另一种方法是在较低级别编写测试平台,例如在测试平台内连接您的子组件,而不是测试最高级别的实体。