将2D阵列转换为SystemVerilog中的3D阵列



我有一个2 d动态数组为

      logic [511:0] array[];

i要将其转换为3 d的动态阵列,定义为

     logic [32][16]M[];  

例如

    array[0]= 1110110000111000...512 bits....
    M[0][0]=  1110110000111000...32 bits....
    M[0][1]=  next 32 bits....

等等。

可以建议您如何完成此任务。did我正确声明我的3D数组。我知道动态数组只能在未包装的数组中定义。我可以将数组定义为

    logic [31:0] M[16][]; ?

任何建议或更正都会有所帮助。

基于您给出的示例,似乎您想要一个16个32位包装单词的未包装数组的动态数组。那将是:

logic [31:0] M[16][];

,只要源中的位数可以拟合到目标中的精确匹配数量,您就可以使用位流式铸件将一种类型的形状分配给另一种类型的形状。您需要针对目标类型的Typedef标识符(这是一个很好的做法,在声明变量时通常使用Typedef)。

typedef [31:0] my_3d_t[16][];
my_3d_t M;
M = my_3d_t'(array);

将作业作为

M[0][0][31:0] = array[0][511:480];
M[0][1][31:0] = array[0][479:448];
...
M[0][15][31:0] = array[0][31:0];
M[1][0][31:0] = array[1][511:480];
...

相关内容

  • 没有找到相关文章

最新更新