描述
在VHDL中,直接实例化允许ISE工具正确构建项目的层次结构,例如:
库IEEE;
使用IEEE.STD_LOGIC_1164.ALL;
库;
使用theand.box;
实体顶部是
端口(clk:在STD_LOGIC;
din:在STD_LOGIC_VECTOR(5 downto 0);
dout:out STD_LOGIC_VECTOR(2 downto 0));
最后;
建筑行为顶部是
开始
AND_INST:实体theand.box
港口映射(
A => din(0),
B => din(1),
C => dout(0));
结束行为;
但是,如果在这个直接实例化中我们开始使用相对“工作”。库引用,Project Navigator无法正确构建项目层次结构。
例如,假设您正在将以下文件编译到“theand”库中:
库IEEE;
使用IEEE.STD_LOGIC_1164.ALL;
实体门是
端口(A:在STD_LOGIC;
B:在STD_LOGIC中;
C:输出STD_LOGIC);
结束门;
建筑门的行为是
开始
C <= A和B;
结束行为;
此外,以下文件被编译为“theand”库,但是对门实体的引用是使用“work”执行的。作为相对工作库,ISE不能正确构建项目层次结构:
库IEEE;
使用IEEE.STD_LOGIC_1164.ALL;
实体框是
端口(A:在STD_LOGIC;
B:在STD_LOGIC中;
C:输出STD_LOGIC);
结束箱;
建筑行为的框架是
开始
GATE_INST:实体work.gate
港口映射(
A => A,
B => B,
C => C);
结束行为;
解
如果VHDL库中除“工作”之外的实体实例化“工作”库中的实体或模块,则Virtex-6或Spartan-6 FPGA(或更新的器件系列)项目会发生这种情况。
示例:正在VHDL模块中实例化verilog模块,VHDL模块位于非工作库中。 Verilog模块正在运行,因为它无法分配给库。层次结构未正确显示,并且在运行综合时,无法正确绑定实例化。然后NGDBuide因缺少模块而失败。
要解决此问题:
- 如果可能,将实例化的实体移动到“工作”库以外的库。
- 如果无法将模块移动到库(例如,Verilog模块),作为ISE Design Suite 12.2中的临时解决方案,您可以手动修改PRJ文件以将verilog库更改为与VHDL库相同,然后在命令行上运行XST。生成的“.ngc”可以作为新项目的源添加,或者实现流也可以在命令行上运行。
在ISE数据表12.3中,“用于Verilog源的库”选项被添加到“Synthesis – XST”综合选项中。
此选项允许用户指定除“工作”之外的任何项目VHDL库,作为Verilog源的库。
没有回复内容