使用自定义库模拟VHDL设计

时间:2016-09-22 12:09:20

标签: vhdl simulation xilinx

我正在尝试制作一个简单的VHDL项目来刷新我的记忆。我正在使用文件 half_adder.vhd 创建另一个文件 full_adder.vhd ,我希望模拟它。这些文件不在同一个项目中。我使用的是Xilinx ISE版本14.7。

我的代码合成完美,并通过语法检查。我也可以创建RTL原理图。但是,每当我尝试为完整加法器创建测试平台时,我都会收到以下错误消息:

  

错误:HDLParsers:3317 - “E:/workspaceXilinx/FullAdder/full_adder.vhd”第23行。       无法找到库half_adder。

     

错误:HDLParsers:3513 - “E:/workspaceXilinx/FullAdder/full_adder.vhd”第24行。       自设计单位以来,声明在此范围内都无法显示      half_adder不是包。

我已将 half_adder.vhd 添加到工作库中,因此我不确定无法找到该库的原因。以下是我正在使用的两个文件:

half_adder.vhd

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity half_adder is
    port(a, b: in STD_LOGIC;
            s, c: out STD_LOGIC);
end half_adder;

architecture Behavioral of half_adder is
begin
    s <= a xor b;
    c <= a and b;
end Behavioral;

full_adder.vhd

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

library half_adder;
use half_adder.all;

entity full_adder is
    port (a, b, cin: in STD_LOGIC;
            s, cout: out STD_LOGIC);
end full_adder;


architecture Behavioral of full_adder is
signal s1, c1, c2: STD_LOGIC:='0';
begin

    HA1: entity work.half_adder port map(a, b, s1, c1);
    HA2: entity work.half_adder port map(s1, cin, s, c2);
    cout <= c1 or c2;

end Behavioral;

1 个答案:

答案 0 :(得分:0)

work库指的是当前正在编译的库。如果您尚未在设计工具中明确创建half_adder库,则该库将不存在。您需要做的就是删除与library相关的usehalf_adder条款;这不是必需的。