我想创建一个包含类型的包,我可以将其加载到其他地方并在那里使用。但我不能让它发挥作用。
就我而言,我有类似的东西:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
package types is
constant number : integer := 42;
subtype fancy_vector is std_logic_vector(10 downto 0);
type fancy_vector_array is array (4 downto 0) of fancy_vector;
end types;
library ieee;
use work.types.all;
entity tb_types is
end tb_types;
-- If I comment this entity out, everything works as expected
entity dummy is
port (
test : in fancy_vector_array
);
end dummy;
architecture implementation of tb_types is
begin
main: process begin
assert (number = 42);
report "Everything went well";
wait;
end process;
end implementation;
我使用ghdl
分析和编译测试平台,如下所示:
$ ghdl -i types.vhdl tb_types.vhdl
$ ghdl -m tb_types
tb_types.vhdl:10:26:error: no declaration for "fancy_vector_array"
如果我将虚拟实体注释掉,一切都按预期正常工作。断言没有触发,它报告"一切顺利"。
我在这里做错了什么?
我也试过没有.all
以及types.fancy_vector_array
和types.number
。然后它说:no declaration for "types"
。