1

我将 ISE 14.7 项目导入 Vivado 2015.1。它在 Xilinx ISE 中没有错误并且完美合成。

该错误是由我的 VHDL 库 L_DMATest 中的实体 DMATest 引发的。

library IEEE;
use     IEEE.STD_LOGIC_1164.all;
use     IEEE.NUMERIC_STD.all;

library PoC;
use     PoC.my_project.MY_PROJECT_NAME;
use     PoC.config.all;
use     PoC.utils.all;
use     PoC.vectors.all;
use     PoC.strings.all;
use     PoC.physical.all;
use     PoC.io.all;
use     PoC.lcd.all;
use     PoC.sata.all;
use     PoC.satadbg.all;
use     PoC.sata_TransceiverTypes.all;
use     PoC.xil.all;

library L_DMATest;

library L_PicoBlaze;
use     L_PicoBlaze.pb.all;
use     L_PicoBlaze.pb_SoFPGA.all;

entity DMATest is     -- <= line 61
  generic (
    DEBUG                         : BOOLEAN;
    ENABLE_CHIPSCOPE              : BOOLEAN;
    ENABLE_DEBUGPORT              : BOOLEAN;

    SYSTEM_CLOCK_FREQ             : FREQ;
    SATA_CLOCK_FREQ               : FREQ;

    SOFPGA_CLOCK_FREQ             : FREQ;
    UART_CLOCK_FREQ               : FREQ;
    RC_CLOCK_FREQ                 : FREQ;
    IIC_CLOCK_FREQ                : FREQ;

    SATAS_ALLOW_SPEED_NEGOTIATION  : BOOLEAN;
    SATAS_INITIAL_SATA_GENERATION  : T_SATA_GENERATION
  );
  port (
    ClockNetwork_Reset        : in  STD_LOGIC;
    ClockNetwork_ResetDone    : out STD_LOGIC;

    System_Clock              : in  STD_LOGIC;
    System_Reset              : in  STD_LOGIC;
    SoFPGA_Clock              : in  STD_LOGIC;
    SoFPGA_Reset              : in  STD_LOGIC;
    UART_Clock                : in  STD_LOGIC;
    UART_Reset                : in  STD_LOGIC;
    RC_Clock                  : in  STD_LOGIC;
    RC_Reset                  : in  STD_LOGIC;
    IIC_Clock                 : in  STD_LOGIC;
    IIC_Reset                 : in  STD_LOGIC;

    SATA_Clock                : out STD_LOGIC;
    Debug_Clock               : in  STD_LOGIC;
    DebugPortIn               : in  T_SATADBG_STREAMINGSTACK_IN;
    DebugPortOut              : out T_SATADBG_STREAMINGSTACK_OUT;

    UART_TX                   : out STD_LOGIC;
    UART_RX                   : in  STD_LOGIC;

    Raw_IIC_Clock_i           : in  STD_LOGIC;
    Raw_IIC_Clock_t           : out STD_LOGIC;
    Raw_IIC_Data_i            : in  STD_LOGIC;
    Raw_IIC_Data_t            : out STD_LOGIC;
    Raw_IIC_Switch_Reset      : out STD_LOGIC;
    -- vendor specific ports
    SATA_Common_In            : in  T_SATA_TRANSCEIVER_COMMON_IN_SIGNALS;
    SATA_Private_In           : in  T_SATA_TRANSCEIVER_PRIVATE_IN_SIGNALS;
    SATA_Private_Out          : out T_SATA_TRANSCEIVER_PRIVATE_OUT_SIGNALS
  );
end;

architecture rtl of DMATest is          -- <= line 134
  attribute KEEP                      : BOOLEAN;
  attribute ENUM_ENCODING             : STRING;

begin
  -- removed code
end architecture;

架构线 134 抛出此错误:

错误:[Synth 8-1027] dmatest 不是实体 [D:/git/SATAController/vhdl/ExampleDesign/DMATest/DMATest_DMATest.vhdl:134]

我假设 Vivado 无法解析实体 DMATest,因此它不在已知实体列表中。

但是我怎样才能缩小这个错误呢?

该错误synth 8-1027在 Xilinx.com 上没有答案记录 (AR)。

编辑 1:
在 8-1027 错误之前有一个警告:

警告:[Synth 8-2600] 重新分析单元 dmatest,因为单元 dmatest 被覆盖或删除 [D:/git/SATAController/vhdl/ExampleDesign/DMATest/DMATest_DMATest.vhdl:61]

谷歌也不知道这个警告:)

我明确命名了我所有的 VHDL 库(PoC 除外)L_*以避免命名冲突。许多 VHDL 工具不支持命名为实体或包的库。

4

1 回答 1

0

Vivado 解析所有文件。甚至那些没用过的!
我的 ISE 项目有一个旧的备份文件,里面有一个名为“DMATest”的包。

这应该可以解释为什么 DMATest 被重新分析并且 DMATest 不是一个实体——它被包覆盖了。

于 2015-06-20T21:52:42.627 回答