`default_nettype none typedef struct packed { logic [1:0] last; logic [3:0] middle; logic [1:0] first; } MyStruct_t; module Example( input logic [3:0] a, output logic [31:0] all ); generate genvar i; for(i = 0; i < 4; i = i + 1) begin MyStruct_t s; always_comb begin s = '{ first: i, middle: a, last: 3 - i }; end assign all[i*$bits(s)+:$bits(s)] = s; end endgenerate endmodule