如何在 package/package 主体声明后使用 "std_logic"?

How to use "std_logic" after package/package body declaration?

我正在尝试更好地使用 VHDL,因此我想尝试实现函数 "package ... is" 和 "package body ... is"。 当我这样做时,似乎 "std_logic" 在 GHDL 分析步骤中看不到 IEEEE 库的内容。

到目前为止,我尝试了其中包含和不包含代码的命令 -> 结果相同。 没有 "package" 行,它就像一个魅力......但我将无法按计划扩展它。

library IEEE;
use IEEE.std_logic_1164.all;

package run is
    -- some package definitions
end run;

package body run is
    -- the body
end run;

entity andfunc is
    Port( A : in std_logic;
        B : in std_logic;
        C : out std_logic
);
end andfunc;

architecture Behavioral of andfunc is
begin
    C <= A and B ;
end Behavioral;

具体错误信息为: “[...] 错误:"std_logic"

没有声明

期待您的回答。

您的 std_logic_1164 导入属于包,并且在其主体中也可见。它在整个文件中是不可见的。在实体之前重复这些行,它将对实体及其体系结构可见。

libraryuse的范围(可见性)不是整个文件。在 package 之后,如果您仍然需要它们,则必须召回它们。为了工作你的代码应该是:

library IEEE;
use IEEE.std_logic_1164.all;

package run is
    -- some package definitions
end run;

package body run is
    -- the body
end run;


library IEEE;
use IEEE.std_logic_1164.all;

entity andfunc is
    Port( A : in std_logic;
        B : in std_logic;
        C : out std_logic
);
end andfunc;

architecture Behavioral of andfunc is
begin
    C <= A and B ;
end Behavioral;