System verilog 同时将数组分配给32位向量

System verilog 同时将数组分配给32位向量,system-verilog,System Verilog,我有一个32位宽的数组,包含n个元素,我试图将这些元素分配给一个向量,我有以下代码: function automatic logic [SIZE-1:0] my_function (my_array x_map); logic SIZE-1:0] y_map = '0; int fctr = (SIZE)/32; int top_bnd

我有一个32位宽的数组,包含n个元素,我试图将这些元素分配给一个向量,我有以下代码:

 function automatic logic [SIZE-1:0] my_function (my_array x_map);

    logic SIZE-1:0] y_map               = '0;
    int fctr                            = (SIZE)/32;
    int top_bnd                         = 31;
    int lwr_bnd                         = 0;

for(int k0 = 0; k0 < fctr; k0++)
    begin

    y_map[top_bnd:lwr_bnd]              = x_map[k0];
    top_bnd                             = (top_bnd + 32'hFFFF);
    lwr_bnd                             = (lwr_bnd + 32'hFFFF);

    end

return y_map;

endfunction
功能自动逻辑[SIZE-1:0]my_功能(my_数组x_映射);
逻辑大小-1:0]y_映射='0;
int fctr=(大小)/32;
int top_bnd=31;
int lwr_bnd=0;
对于(int k0=0;k0
但是,这不起作用,我得到两个错误:

1) “零件选择的范围不合法” 2) 无法计算左切片表达式中的表达式,该表达式必须是编译时常量


谢谢

您可能需要为此使用流媒体运营商

y_map = {<<32{x_map}};

y\u映射={嘿,Dave,谢谢你的回答,很抱歉没有识别我的声明。但是我有一个问题,流式操作符Synthezable吗?它是一个可合成的构造。你的合成工具是否实现了它是另一个问题。出于某种原因,使用>我有相同的正确位顺序。请阅读第11.4.14节Streami1800-2017年LRM中的ng操作员(打包/解包)