Hello,
Trying to convert unpacked array data to packed array data vice versa in the below way.
Multiplexed data (rx_tdata_muxed and tx_tdata_muxed) is to/from DUT and is fixed (cn’t be altered)
Unfortunately observing below errors:
Error-[CAWM] Width mismatch
pack_array_ex.sv, 16
Continuous assignment width mismatch
Pack operation using streaming operator requires that width of destination
be greater than or equal to source 208 bits (lhs) versus 320 bits (rhs).
Source info: assign rx_tdata_muxed = { << 64 {rx_tdata_tmp}};
Any solution would be highly appreciated. Thanks in advance.
Best regards,
Maddy
`define N_INT_A 2
`define DW_INT_A 8
`define N_INT_B 3
`define DW_INT_B 64
module pack_array_ex;
wire [(`N_INT_A*`DW_INT_A+`N_INT_B*`DW_INT_B) - 1:0] rx_tdata_muxed; //
wire [`DW_INT_B-1:0] rx_tdata_tmp[`N_INT_A+`N_INT_B]= {64'h1111_1111_1111_1111, 64'h2222_2222_2222_2222, 64'h3333_3333_3333_3333, 64'h4444_4444_4444_4444, 64'hFFFF_FFFF_FFFF_FFFF };
wire [(`N_INT_A*`DW_INT_A+`N_INT_B*`DW_INT_B) - 1:0] tx_tdata_muxed = 208'h5555_5555_AAAA_AAAA_5555_5555_AAAA_AAAA_5555_5555_AAAA_AAAA_5555;
wire [`DW_INT_B-1:0] tx_tdata_tmp[`N_INT_A+`N_INT_B];
assign rx_tdata_muxed = {<<64{rx_tdata_tmp}};
assign tx_tdata_tmp = {<<64{tx_tdata_muxed}};
initial begin
$display("rx_tdata: %0h",rx_tdata_muxed);
$display("tx_tdata: %0h",tx_tdata_muxed);
end
endmodule