Vivados 'synth 8-1027' 错误的原因是什么?
What is the cause of Vivados 'synth 8-1027' error?
我将我的 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 行抛出此错误:
ERROR: [Synth 8-1027] dmatest is not an entity [D:/git/SATAController/vhdl/ExampleDesign/DMATest/DMATest_DMATest.vhdl:134]
我假设 Vivado 无法解析实体 DMATest,因此它不在已知实体列表中。
但是我怎样才能缩小这个错误呢?
错误 synth 8-1027
在 Xilinx.com 上没有答复记录 (AR)。
编辑 1:
8-1027错误前有警告:
WARNING: [Synth 8-2600] re-analyze unit dmatest since unit dmatest is overwritten or removed [D:/git/SATAController/vhdl/ExampleDesign/DMATest/DMATest_DMATest.vhdl:61]
Google 也不知道此警告:)
我明确命名我所有的 VHDL 库(PoC 除外)L_*
以避免命名冲突。许多 VHDL 工具不支持以实体或包命名的库。
Vivado 解析所有文件。甚至那些没用过的!
我的 ISE 项目有一个旧的备份文件,里面有一个名为 'DMATest' 的包。
这应该可以解释为什么 DMATest 被重新分析并且 DMATest 不是一个实体 - 它被包覆盖了。
我将我的 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 行抛出此错误:
ERROR: [Synth 8-1027] dmatest is not an entity [D:/git/SATAController/vhdl/ExampleDesign/DMATest/DMATest_DMATest.vhdl:134]
我假设 Vivado 无法解析实体 DMATest,因此它不在已知实体列表中。
但是我怎样才能缩小这个错误呢?
错误 synth 8-1027
在 Xilinx.com 上没有答复记录 (AR)。
编辑 1:
8-1027错误前有警告:
WARNING: [Synth 8-2600] re-analyze unit dmatest since unit dmatest is overwritten or removed [D:/git/SATAController/vhdl/ExampleDesign/DMATest/DMATest_DMATest.vhdl:61]
Google 也不知道此警告:)
我明确命名我所有的 VHDL 库(PoC 除外)L_*
以避免命名冲突。许多 VHDL 工具不支持以实体或包命名的库。
Vivado 解析所有文件。甚至那些没用过的!
我的 ISE 项目有一个旧的备份文件,里面有一个名为 'DMATest' 的包。
这应该可以解释为什么 DMATest 被重新分析并且 DMATest 不是一个实体 - 它被包覆盖了。