VHDL-2008 连续强制使用外部名称

VHDL-2008 continuously force an external name

我希望能够在我的测试平台层次结构中不断地强制降低信号。这是一个简单的例子,说明我在我的测试台上是如何做到这一点的。

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity double_inverter is
port(
  a : in std_logic;
  z : out std_logic
);
end double_inverter;

architecture x of double_inverter is
 signal b : std_logic;
begin

  b <= not a;
  z <= not b;

end architecture x;


library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity inverter_tb is
end inverter_tb;

architecture y of inverter_tb is
  signal z : std_logic;
  signal clk : std_logic := '0';
begin

  clk <= not clk after 5 ns;

  dut : entity work.double_inverter
  port map(
    a => '0',
    z => z
  );

  continuous_stim : process(clk)
  begin

    << signal dut.b : std_logic >> <= force clk;

  end process;

end architecture y;

这在 Modelsim 10.4b 中有效,即 double_inverter 实例中的信号 b 将由 clk 设置而不是信号 a,但是有没有更好的方法来控制外部名称信号?

感谢您的帮助。

在某些情况下,您可以使用外部名称的别名:

alias dut_b is <<signal dut.b : std_logic >> ;

由于我们想到在体系结构中声明信号,我们的直觉是将别名放入体系结构中。然而,在这种情况下,这是不允许的,因为 DUT 尚未详细说明。

您可能会被允许将其放入流程中 - 我将不得不做一些研究来检查语言是否允许这样做。我担心的是进程不允许信号声明,所以我不相信它会允许进程中的信号别名——尝试它并让我们知道它是否有效没有坏处。

通常当我使用这样的东西时,我会把它放在创建测试用例并由测试台实例化的组件的架构声明区域中。为了避免详细说明顺序的问题,我确保首先在测试平台中实例化我的 DUT,通常最后生成测试用例的组件(中间是基于事务的模型)——VHDL 按照实例化的顺序详细说明设计。