创建一个不受约束的非对称数组数组

Creating an unconstrained asymmetrical array of arrays

我正在尝试创建动态大小的嵌套生成语句,以便非固件人员可以更改常量的值。

我想创建类似 C++ 向量的东西,它在编译时将具有定义的大小并包含整数常量。例如,我想要一个看起来像这样的二维向量:

a = < <1,2> , <1,3> , <3,4,5> >

所以我可以这样访问它:

a[0,0] = 5
a[1,0] = 3
a[2,1] = 1

到目前为止我试过这个:

type int_array is array (integer range<>) of integer;
type int_array_array is array (integer range<>, integer range<>) of integer;

constant nOuter : positive := 2;
constant nInner : int_array := (2 , 2 , 3);
constant vals : int_array_array(nOuter - 1 downto 0 , ???) := ( (1,2) , (1,3) , (3,4,5) );

我不完全确定这将如何写,或者这是否可能?

然后我的想法是可以像这样创建动态大小的块:

nOuters: for i in 0 to nOuters -1 generate:
    nInners: for j in 0 to nInner(i) generate:
        nVals: for inner k in 0 to vals(i,j) -1 generate:

我的蹩脚解决方案,我添加另一个常量:

constant nMaxInner : positive := 3;

constant vals : int_array_array(nOuter - 1 downto 0 , nMaxInner - 1 downto 0) := ( (0,1,2) , (0,1,3) , (3,4,5) );

但这并不优雅。