Vhdl 具有泛型类型的泛型的默认初始值

Vhdl 具有泛型类型的泛型的默认初始值,vhdl,Vhdl,我很确定这不能在VHDL 2008中实现。我想知道它是否可能在VHDL 2019中实现 我想为泛型提供一个初始值,其中该类型是同一接口列表中的泛型类型 generic ( type some_type; G_INIT : some_type; --I want this to default to the initial value of some_type ) ... signal s : some_type := G_INIT; 理想情况下,我希望它只是默认为类型的初始值,但是

我很确定这不能在VHDL 2008中实现。我想知道它是否可能在VHDL 2019中实现

我想为泛型提供一个初始值,其中该类型是同一接口列表中的泛型类型

generic (
  type some_type;
  G_INIT : some_type; --I want this to default to the initial value of some_type
)

...

signal s : some_type := G_INIT;
理想情况下,我希望它只是默认为类型的初始值,但是如果用户愿意,可以覆盖它。您不能使用任何标准属性,因为您不知道
某些类型
是标量类型、离散类型还是复合类型。在上面的2008中,唯一的选择似乎是强制用户每次为
G_INIT
提供一个值


理想情况下,应该有一个属性,如
T'INITIAL\u VAL
来涵盖这一点。

我怀疑您的泛型列表也可能包含一个函数(可能称为INITIAL\u VAL),该函数返回您想要的初始值。OTOH,如果你大部分时间没有默认映射函数,那么你也可以映射常量值。在这里演示失败是很重要的。为接口类型预定义的唯一操作是(6.5.3)接口类型声明分配、分配、类型限定、类型转换和隐式声明的(=)和(/=)运算符。这自然会导致在Jim评论中包含初始化函数的想法。它是可以改变的。否则(6.5.6.2通用条款,包括-2019“如果没有为给定的形式通用常量指定实际值,则为错误…”)。@user1155120这不是真正的失败问题。更方便。如果
some_type=>std_logic
,则用户必须将
G_INIT=>std_logic'left
。如果
some_type=>my_crazy_record_type
,那么用户要么构建一个复杂的常量,要么将其连接到一个信号(用于初始值)。这两种方法似乎都不适用于隐含的假设性问题,而不显示研究成果并将问题局限于特定问题。注意:某些_类型可能与无界数组子类型关联(例如,无约束的位_向量)。对象声明子类型指示可以为聚合初始值表达式提供约束。无法执行无界数组类型声明。子类型本身并不是初始表达式的通用粘合剂,初始值与对象声明相关联。(5.3.2数组类型,5.3.2.1概述,6.4.2对象声明)。