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