问题描述
我正在尝试打包一个2D解压缩的数组,将其通过Verilog包装器传递,然后将其解压缩到另一个模块(或测试台)中。最简单的代码如下:
module a_tb();
timeunit 10ns;
timeprecision 1ns;
localparam N = 4;
localparam WIDTH = 8;
logic [N*N*WIDTH-1:0] A_flat_1;
logic [WIDTH-1:0] A_1 [N][N];
logic [N*N*WIDTH-1:0] A_flat_2;
logic [WIDTH-1:0] A_2 [N][N];
assign {<<{A_flat_1}} = A_1;
assign A_flat_2 = A_flat_1;
assign A_2 = {<<{A_flat_2}}; // Line 13
initial begin
foreach (A_1[i,j]) begin
A_1[i][j] = 10*i+j;
end
#10;
$display("%p",A_1);
$display("%p",A_2);
assert(A_1==A_2);
end
endmodule
在Vivado 2018.2 Simulator中出现以下错误:
ERROR: [VRFC 10-1571] wrong element type in unpacked array concatenation [U:/path/array_test.tb.sv:13]
据我对流运算符的了解,这应该可行。这可能是工具错误吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)