2016-06-20 15 views

回答

0

你只是简单地声明数组实例。取而代之的

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对于这些不同的情况可以具有不同的元素大小。

我会注意到,我不相信包装泛型被综合工具广泛支持。

+0

我不太明白,你的第二个例子仍然定义了'bit2_t'类型,这是我想避免的。 –

+0

是的,就是这样。只是写少。就像我们可以在C. –

相关问题