`define PRINT(name, val) \
    dummy``name = val; \
    $display(`"name %h %h %0d %0d`", \
        val, dummy``name, $bits(val), $bits(dummy``name));

module top;

    reg [31:0] dummyA;
    reg [31:0] dummyB;
    reg [31:0] dummyC;
    reg [31:0] dummyD;
    reg [31:0] dummyE;
    reg dummyF;
    reg [0:0] dummyG;
    reg [3:0] dummyH;
    reg [31:0] dummyI;
    reg [31:0] dummyK;

    initial begin

        `PRINT(A, 0)
        `PRINT(A, 1)
        `PRINT(A, 2)

        `PRINT(B, 2)
        `PRINT(B, 1)
        `PRINT(B, 3)

        `PRINT(C, 20)
        `PRINT(C, 0)
        `PRINT(C, 19)

        `PRINT(D, 16)
        `PRINT(D, 17)
        `PRINT(D, 18)

        `PRINT(E, 0)
        `PRINT(E, 16)
        `PRINT(E, 17)
        `PRINT(E, 18)
        `PRINT(E, 2)
        `PRINT(E, 3)

        `PRINT(F, 1'b0)
        `PRINT(F, 1'b1)

        `PRINT(G, 1'b0)
        `PRINT(G, 1'b1)

        `PRINT(H, 4'b1)
        `PRINT(H, 4'b0)

        `PRINT(I, 'b0)
        `PRINT(I, 'b1)

        `PRINT(K, 0)
        `PRINT(K, 10)
        `PRINT(K, 11)
        `PRINT(K, 12)
        `PRINT(K, 13)
        `PRINT(K, 20)
        `PRINT(K, 21)
        `PRINT(K, 22)
        `PRINT(K, 23)
        `PRINT(K, 24)
        `PRINT(K, 25)
        `PRINT(K, 30)
        `PRINT(K, 31)
        `PRINT(K, 32)
        `PRINT(K, 33)
        `PRINT(K, 34)
        `PRINT(K, 35)
        `PRINT(K, 40)
        `PRINT(K, 41)
        `PRINT(K, 42)
        `PRINT(K, 50)

    end

    parameter USE_J = 1;
    generate
        if (USE_J) begin
            reg [31:0] dummyJ;
            initial begin
                `PRINT(J, 0)
                `PRINT(J, 1)
                `PRINT(J, 2)
            end
        end
        else begin
            reg [31:0] dummyZ;
            initial begin
                `PRINT(Z, 0)
                `PRINT(Z, 1)
                `PRINT(Z, 2)
            end
        end
    endgenerate

endmodule