12.2 Project Navigator  – 使用VHDL库进行显式/直接VHDL实例化时,层次结构不正确-Altera-Intel社区-FPGA CPLD-ChipDebug

12.2 Project Navigator – 使用VHDL库进行显式/直接VHDL实例化时,层次结构不正确

描述

在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因缺少模块而失败。

要解决此问题:

  1. 如果可能,将实例化的实体移动到“工作”库以外的库。
  2. 如果无法将模块移动到库(例如,Verilog模块),作为ISE Design Suite 12.2中的临时解决方案,您可以手动修改PRJ文件以将verilog库更改为与VHDL库相同,然后在命令行上运行XST。生成的“.ngc”可以作为新项目的源添加,或者实现流也可以在命令行上运行。

在ISE数据表12.3中,“用于Verilog源的库”选项被添加到“Synthesis – XST”综合选项中。

此选项允许用户指定除“工作”之外的任何项目VHDL库,作为Verilog源的库。

请登录后发表评论

    没有回复内容