原因:在VHDL设计文件(.vhd)中指定位置的主要单元声明中,您声明了指定的主单元 . 但是,指定的库已包含具有相同名称的主单元 .
参见IEEE Std 1076-2008 13.1设计单位,第2段:
primary_unit :: = entity_declaration | configuration_declaration | package_declaration | package_instantiation_declaration | context_declaration | PSL_Verification_Unit
第5段:
主单元的名称由该单元的初始保留字后面的第一个标识符给出 . 在二级单元中,只有建筑体被命名;体系结构体的名称由保留字体系结构后面的标识符给出 . 给定库中的每个主要单元应具有在给定库中唯一的简单名称,并且与给定实体声明关联的每个体系结构主体应具有在与该关联的体系结构主体的名称集合内唯一的简单名称 . 实体声明 .
1.3本标准的结构和术语,1.3.1总则,第4段:
在本文件中,单词shall用于表示强制性要求 . 单词should用于表示推荐 . 单词may可用于表示允许的操作 . 单词can用于可能性和能力的陈述 .
1.3.3语义描述,第2段:
以下术语在这些语义描述中使用,具有以下含义:错误:所描述的条件表示形式错误的描述;但是,不需要实现来检测和报告此情况 . 只有在通常不可能在语言处理期间检测到条件时才认为条件是错误的 . 错误:所描述的条件代表了一个错误的描述;需要实现来检测条件并向工具的用户报告错误 .
VHDL中必须使用'shall have',其中违规是一种格式错误的描述,并被报告为错误 .
它抱怨你的 nios 声明与库中已有的声明不符 . (如果它们匹配现有声明将被替换):
13.1设计单位,第1段:
某些结构被独立分析并插入到设计库中;这些结构称为设计单元 . 一个或多个设计单元依次包括设计文件 .
13.5分析顺序,第5段:
给定库单元可能受到在给定库单元中引用其名称的任何库单元中的更改的影响 . 辅助单元可能受其相应主要单元更改的影响 . 如果更改了库单元(例如,通过重新分析相应的设计单元),那么可能受此类更改影响的所有库单元都将过时,并且在再次使用之前应重新分析 .
因此,如果重新分析同一实体类(13.1,primary_unit)的主要单元,则需要替换主要单元 . 尝试使用不同的主要单元实体类,您将收到错误 .
返回QuartusII帮助:
操作:将两个主要单元编译到不同的库中或为它们分配唯一的名称 .
您声明您的工作目录包含已分析的设计文件和名为nios.vhd的文件,该文件与您的设计文件NIOS.vhd具有不同的名称 .
问题不是文件名,而是主要的单位名称 . 在这种情况下,它是主要的单位名称,Altera可以在合成过程中随意使用 . 值得庆幸的是,它是不同实体类的主要单元 . 你将留下循环分析依赖(从13.5),这是更难以理解 .
您应该更改主要单元名称,因为将主要单元名称绑定到文件名是很常见的(而设计文件可以包含任何数字)设计单位),您也可以更改您的设计文件名 .