我需要检查我的设备包装逻辑,我遇到的一个问题是IBUFDS实例没有正确模拟。我写了简单的测试来检查和显示我的意思。
Device.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Device is
Port (
CLK_P: in std_logic;
CLK_N: in std_logic;
CLK: out std_logic
);
end Device;
architecture arch of Device is
component IBUFDS
port (
O: out std_logic;
I: in std_logic;
IB: in std_logic
);
end component;
begin
D: IBUFDS
port map (
O => CLK,
I => CLK_P,
IB => CLK_N
);
end arch;
Device_tb.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Device_tb is
-- Port ( );
end Device_tb;
architecture Behavioral of Device_tb is
signal CLK, CLK_P, CLK_N: std_logic := '0';
begin
DEV: entity work.Device(arch)
port map(
CLK => CLK,
CLK_P => CLK_P,
CLK_N => CLK_N
);
CLK_gen: process
begin
CLK_P <= not CLK_P;
CLK_N <= CLK_P;
wait for 5 ns;
end process;
end Behavioral;
结果模拟
正如您所见,CLK out始终未定义。不知道如何解决这个问题,它是否可以解决。我已经考虑过我的包装器的架构,但不喜欢这个解决方案,也许有更好的方法来模拟这个。我试图为IBUFDS实例编写通用映射,但是,详细说明了步骤失败并出现错误,那些通用参数没有为IBUFDS定义。