你只是简单地声明数组实例。取而代之的
type bit2_t is array (0 to 1) of bit;
type record0 is record
bit2 : array (0 to 1) of bit;
end record;
您需要使用
type bit2_t is array (integer range <>) of bit;
type record0 is record
bit2 : bit2_t(0 to 1);
end record;
如果你想要的位的2位数组的数组,你可以使用
type bit2_t is array (0 to 1) of bit;
type bit2_array_t is array (integer range <>) of bit2_t;
type record0 is record
bit2 : bit2_array_t(0 to 7); -- '7' or whatever your range needs to be
end record;
你可以把这个较笼统通过将7
更改为常数,如bit2 : bit2_array_t(0 to BIT2_ARRAY_LENGTH-1);
。
如果您想要某种记录类型以某种方式被参数化,据我所知,只能使用程序包泛型来实现此功能,如this answer中所述。您的代码将按照描述使用包,并且此包将根据generic
参数声明具有数组大小的记录类型。通过在每种情况下使用generic
的不同值对该包进行实例化,您的record
对于这些不同的情况可以具有不同的元素大小。
我会注意到,我不相信包装泛型被综合工具广泛支持。
我不太明白,你的第二个例子仍然定义了'bit2_t'类型,这是我想避免的。 –
是的,就是这样。只是写少。就像我们可以在C. –