问题描述
我有一个设计,我在一个包中声明了一个与我的一个实例同名的组件。我在Virtex-6 / Spartan-6上遇到以下错误,但是对于任何旧器件都没有任何问题:
“错误:HDLCompiler:40 – ”<file> .vhd“行xx:<名称>不是组件”
以下示例导致错误,请注意组件的名称和实例都是my_name:
库;
使用ieee.std_logic_1164.all;
包my_pack_0003是
组件my_name是
port(in_port:in std_logic;
out_port:out std_logic);
最终组件;
最终包;
———————————–
库;
使用ieee.std_logic_1164.all;
库工作;
使用work.my_pack_0003.all;
实体ex_0003是
port(in_port:in std_logic;
out_port:out std_logic);
结束ex_0003;
ex_0003的架构beh
开始
my_name:my_name端口映射(in_port => in_port, – 注意:错误点在这里
out_port => out_port);
结束;
解决/修复方法
在11.2中,XST为Virtex-6和Spartan-6系列引入了新的VHDL / Verilog解析器。有关此更改的更多信息,请参阅(Xilinx答复32927)
以上代码不符合VHDL LRM。要解决此问题,只需更改实例或组件的名称即可。
例如,在上面的代码中,您可以将源编辑为:
库;
使用ieee.std_logic_1164.all;
包my_pack_0003是
组件my_name是
port(in_port:in std_logic;
out_port:out std_logic);
最终组件;
最终包;
———————————–
库;
使用ieee.std_logic_1164.all;
库工作;
使用work.my_pack_0003.all;
实体ex_0003是
port(in_port:in std_logic;
out_port:out std_logic);
结束ex_0003;
ex_0003的架构beh
开始
my_inst :my_name端口映射(in_port => in_port, – 注意:错误点在这里
out_port => out_port);
结束;
没有回复内容