SystemVerilog 中的二维切片

Slicing of two dimensions in SystemVerilog

在 SystemVerilog 中,我正在尝试执行以下操作:

wire signed [0:95][0:4][0:4][31:0] X;

wire signed [0:31][0:31][31:0] Y;

assign X[0] = Y[0:4][0:4];

assign X[1] = Y[0:4][1:5];

assign X[2] = Y[1:5][0:4];

assign X[3] = Y[1:5][1:5];

...

错误:

Error-[SE] Syntax error
  Following verilog source has syntax error :
  "try.sv", 399: token is '[', column 53
                assign X[0] = Y[0:4][0:4];

请帮忙

SystemVerilog 不允许表示数组 non-contiguous 区域的切片。您必须使用 forforeach 循环来执行此操作。我不确定你的意图是什么,但这应该让你继续。

for(int i=0;i<5;i++)
  for(int j=0;j<5;j++)
     X[0][i][j] = Y[i][j];