[英]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按照实例化的顺序详细说明设计。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.