System verilog SystemVerilog:将两个一维数组转换为二维数组

System verilog SystemVerilog:将两个一维数组转换为二维数组,system-verilog,System Verilog,如果我有a和b,我怎么能把它转换成c型呢? 我想一个明显的方法是使用: logic [7:0] a; logic [7:0] b; logic [1:0][7:0] c; assign c = {{a},{b}}; 但假设c不是一个逻辑变量,而是一个模块的输入端口 assign c[0] = a; assign c[1] = b; 您会怎么做?因为您使用的是压缩数组,所以c的类型并不重要。它只需要16位。另外,您不需要在a和b周围额外的{}。你可以写{a,b}{a,b}的类型不是与逻辑[15

如果我有a和b,我怎么能把它转换成c型呢? 我想一个明显的方法是使用:

logic [7:0] a;
logic [7:0] b;
logic [1:0][7:0] c;
assign c = {{a},{b}};
但假设c不是一个逻辑变量,而是一个模块的输入端口

assign c[0] = a;
assign c[1] = b;

您会怎么做?

因为您使用的是压缩数组,所以
c
的类型并不重要。它只需要16位。另外,您不需要在
a
b
周围额外的{}。你可以写
{a,b}

{a,b}的类型不是与逻辑[15:0]相同吗?是的,它与
逻辑[15:0]
相同,它与
逻辑[1:0][7:0]的赋值兼容
mymodule inst_mymodule (
    .c_i({{a},{b}}) // c is logic [1:0][7:0]
    .o(out)
);