System verilog 同时将数组分配给32位向量
我有一个32位宽的数组,包含n个元素,我试图将这些元素分配给一个向量,我有以下代码: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
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操作员(打包/解包)