在其前面使用类型';用VHDL(2008)声明的

在其前面使用类型';用VHDL(2008)声明的,vhdl,xilinx,vivado,Vhdl,Xilinx,Vivado,在VHDL的任何版本中,可能在2008年,在声明类型之前使用它是可能的吗 例如,我在实体的体系结构中有以下数组声明: type my_array is array (integer range <>) of my_type; 现在,Vivado中出现以下错误: [Synth 8-1031]未声明my_类型 当然,解决方案是将记录声明移到数组声明之上。但是,随着类型数量的增加,这会变得非常复杂和混乱(因为您基本上必须在拓扑上对类型进行排序,同时考虑它们的依赖关系) 每种主要编程语言都

在VHDL的任何版本中,可能在2008年,在声明类型之前使用它是可能的吗

例如,我在实体的体系结构中有以下数组声明:

type my_array is array (integer range <>) of my_type;
现在,Vivado中出现以下错误:

[Synth 8-1031]未声明my_类型

当然,解决方案是将记录声明移到数组声明之上。但是,随着类型数量的增加,这会变得非常复杂和混乱(因为您基本上必须在拓扑上对类型进行排序,同时考虑它们的依赖关系)

每种主要编程语言都支持类似的东西,所以我想它可能也存在于VHDL中。我还模模糊糊地记得读到过关于这个已经添加到VHDL 2008中的文章,但是找不到任何关于它的资源,我用VHDL 2008进行的快速测试结果是否定的


那么,如果类型仍然在相同的体系结构、相同的文件中声明,但只在下面几行中声明,那么是否可以在声明之前在VHDL中使用类型?

在任何版本的VHDL中,可能在2008年,是否可以在声明之前使用类型?

没有

IEEE标准1076-2008 6。声明

6.1总则

该语言定义了几种由声明显式或隐式声明的命名实体。每个实体的名称由声明定义,可以是标识符、运算符符号或字符文字。

对于每种形式的声明,语言规则定义了称为声明范围的特定文本区域(见12.2)

12.2声明的范围

声明的范围(体系结构主体除外)从声明的开始延伸到立即结束的声明区域的结束;体系结构主体的范围从体系结构主体的开始延伸到结束。在这两种情况下,声明范围的这一部分称为立即范围

12.3能见度

声明仅在其范围的某一部分内可见;除PSL验证单元、包声明或受保护类型声明以外的设计单元声明外,本部分从声明末尾开始,在这种情况下,它在设计单元标识符、包声明之后出现保留字之后立即开始,或受保护的类型声明。此规则同时适用于显式和隐式声明

是可见性规则阻止您在声明类型之前引用它

此外,VHDL不支持接口类型声明(泛型类型)以外的类型的前向声明,但支持子类型的前向声明,如示例
my_array
所示

Brian指出,由于缺乏综合供应商的支持以及Peter Ashenden的《VHDL 2008只是新东西》一书中总结的类型操作限制(见6.5.3接口类型声明),泛型类型的实用性受到限制:

1.1一般类型

VHDL-2008定义了一系列规则,涵盖形式泛型类型及其使用方法。形式泛型类型名可能表示除文件类型或受保护类型之外的任何受约束类型。该实体只能假设所有此类类型的操作都适用,即:转让;使用新资源进行分配;型式鉴定和型式转换;以及平等和不平等操作。形式泛型类型不能用作文件元素或属性的类型。此外,如果实际类型不是访问类型并且不包含访问类型的子元素,则它只能用作显式声明的常量或信号(包括端口)的类型。对于信号,实际类型的预定义相等运算符用于驱动程序更新和事件检测


在VHDL的任何版本中,可能在2008年,在声明类型之前是否可以使用该类型?

没有

IEEE标准1076-2008 6。声明

6.1总则

该语言定义了几种由声明显式或隐式声明的命名实体。每个实体的名称由声明定义,可以是标识符、运算符符号或字符文字。

对于每种形式的声明,语言规则定义了称为声明范围的特定文本区域(见12.2)

12.2声明的范围

声明的范围(体系结构主体除外)从声明的开始延伸到立即结束的声明区域的结束;体系结构主体的范围从体系结构主体的开始延伸到结束。在这两种情况下,声明范围的这一部分称为立即范围

12.3能见度

声明仅在其范围的某一部分内可见;除PSL验证单元、包声明或受保护类型声明以外的设计单元声明外,本部分从声明末尾开始,在这种情况下,它在设计单元标识符、包声明之后出现保留字之后立即开始,或受保护的类型声明。此规则同时适用于显式和隐式声明

是可见性规则阻止您在声明类型之前引用它

此外,VHDL不支持接口类型声明(泛型类型)以外的类型的前向声明,但支持子类型的前向声明,如示例
my_array
所示

Brian指出,由于缺乏综合供应商的支持以及Peter Ashenden的《VHDL 2008只是新东西》一书中总结的类型操作限制(见6.5.3接口类型声明),泛型类型的实用性受到限制:

1.1一般类型

VHDL-2008定义了一系列涵盖正式ge的规则
type my_type is record 
    my_field: signed(31 downto 0);
end record;
type value_cell;  -- Incomplete declaration

type value_ptr is access value_cell;  -- value_cell only for access type

type value_cell is record  -- Full declaration
  value     : bit_vector(0 to 3);
  next_cell : value_ptr;
end record value_cell;