module top; logic t; initial $display("A t %0d", $bits(t)); initial $display("A top.t %0d", $bits(top.t)); generate begin : X logic [1:0] t; initial $display("B t %0d", $bits(t)); initial $display("B top.t %0d", $bits(top.t)); initial $display("B X.t %0d", $bits(X.t)); initial $display("B top.X.t %0d", $bits(top.X.t)); begin : Y logic [2:0] t; initial $display("C t %0d", $bits(t)); initial $display("C top.t %0d", $bits(top.t)); initial $display("C X.t %0d", $bits(X.t)); initial $display("C top.X.t %0d", $bits(top.X.t)); initial $display("C Y.t %0d", $bits(Y.t)); initial $display("C X.Y.t %0d", $bits(X.Y.t)); initial $display("C top.X.Y.t %0d", $bits(top.X.Y.t)); end end for (genvar i = 0; i < 3; ++i) begin : Z logic [i:0] t; end endgenerate initial $display("A t %0d", $bits(t)); initial $display("A top.t %0d", $bits(top.t)); initial $display("A X.t %0d", $bits(X.t)); initial $display("A top.X.t %0d", $bits(top.X.t)); initial $display("A X.Y.t %0d", $bits(X.Y.t)); initial $display("A top.X.Y.t %0d", $bits(top.X.Y.t)); initial $display("A top.Z[0].t %0d", $bits(top.Z[0].t)); initial $display("A Z[0].t %0d", $bits(Z[0].t)); initial $display("A Z[1].t %0d", $bits(Z[1].t)); initial $display("A Z[2].t %0d", $bits(Z[2].t)); logic x; initial begin type(x) x [1:0]; type(x) y [2:0]; $display("size of x = %0d", $bits(x)); $display("size of y = %0d", $bits(y)); end logic [2:0][3:0] arr; generate begin : M logic [3:0][4:0] arr; initial $display("M arr[0] = %b", arr[0]); initial $display("M M.arr[0] = %b", M.arr[0]); initial $display("M top.arr[0] = %b", top.arr[0]); end endgenerate initial $display("arr[0] = %b", arr[0]); initial $display("M.arr[0] = %b", M.arr[0]); initial $display("top.arr[0] = %b", top.arr[0]); localparam arr2 [2][3] = '{ '{1'b0, 1'b1, 1'b1}, '{1'b1, 1'b0, 1'b0} }; for (genvar i = 0 ; i < 2 ; ++i) begin for (genvar j = 0 ; j < 3 ; ++j) begin localparam value = arr2[i][j]; initial $display("%0d %0d %0d", i, j, value); end end endmodule