struct_scope.v 1.57 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
module top;
    wire [2:0] a;
    wire [6:0] b;
    wire [17:0] c;

    generate
        begin : foo
            wire [2:0] a;
            wire [14:0] b;
            wire [17:0] c;
            wire [33:0] d;
        end
    endgenerate

`define INSPECT_SIZE(expr, size) $display(`"expr -> %0d`", size);
`define INSPECT_DATA(expr) $display(`"expr -> %b`", expr);
    initial begin
        `INSPECT_SIZE(a, 3);
        `INSPECT_SIZE(a.x, 1);
        `INSPECT_SIZE(a.y, 2);

        `INSPECT_SIZE(b, 7);
        `INSPECT_SIZE(b.x, 3);
        `INSPECT_SIZE(b.y, 4);

        `INSPECT_SIZE(c, 18);
        `INSPECT_SIZE(c.x, 5);
        `INSPECT_SIZE(c.y, 6);
        `INSPECT_SIZE(c.z, 7);
        `INSPECT_SIZE(c.z.x, 3);
        `INSPECT_SIZE(c.z.y, 4);

        `INSPECT_SIZE(foo.a, 3);
        `INSPECT_SIZE(foo.a.x, 1);
        `INSPECT_SIZE(foo.a.y, 2);

        `INSPECT_SIZE(foo.b, 15);
        `INSPECT_SIZE(foo.b.x, 7);
        `INSPECT_SIZE(foo.b.y, 8);

        `INSPECT_SIZE(foo.c, 18);
        `INSPECT_SIZE(foo.c.x, 5);
        `INSPECT_SIZE(foo.c.y, 6);
        `INSPECT_SIZE(foo.c.z, 7);
        `INSPECT_SIZE(foo.c.z.x, 3);
        `INSPECT_SIZE(foo.c.z.y, 4);

        `INSPECT_SIZE(foo.d, 34);
        `INSPECT_SIZE(foo.d.x, 9);
        `INSPECT_SIZE(foo.d.y, 10);
        `INSPECT_SIZE(foo.d.z, 15);
        `INSPECT_SIZE(foo.d.z.x, 7);
        `INSPECT_SIZE(foo.d.z.y, 8);

        `INSPECT_DATA(a);
        `INSPECT_DATA(b);
        `INSPECT_DATA(c);
        `INSPECT_DATA(foo.a);
        `INSPECT_DATA(foo.b);
        `INSPECT_DATA(foo.c);
        `INSPECT_DATA(foo.d);
    end
endmodule