将打包数组转换为解压缩数组,用于作为参数的数组

时间:2017-02-01 14:42:40

标签: system-verilog

是否可以将压缩数组转换为解压缩数组,并将unpacked数组用作模块实例化中的参数?打包数组被定义为localparam。

以下是我想要做的事情的说明

curl 162.243.100.100

1 个答案:

答案 0 :(得分:1)

您可以使用赋值模式将打包数组转换为解压缩数组,但它不是非常灵活/可扩展:

unpacked_array = '{ packed_array[0], packed_array[1], ... , packed_array[...]};

例如

localparam [7:0] packed_array   = '{default: 0};
localparam unpacked_array [3:0] = '{ packed_array[0], packed_array[1], packed_array[2], packed_array[3]}; 

module1 #(unpacked_array) myModule1();

https://www.edaplayground.com/x/3v8V

您可以使用流媒体运算符将解压缩的数组转换为压缩数组:

packed_array = { << { unpacked_array }};

例如

localparam       unpacked_array[7:0] = '{default: 0};
localparam [3:0] packed_array        = { << { unpacked_array[3:0] }}; 

module1 #(packed_array) myModule1();

https://www.edaplayground.com/x/5Q5b