mirror of https://github.com/zachjs/sv2v.git
88 lines
1.9 KiB
Systemverilog
88 lines
1.9 KiB
Systemverilog
module top;
|
|
typedef struct packed {
|
|
logic x;
|
|
logic [1:0] y;
|
|
} A;
|
|
typedef struct packed {
|
|
logic [2:0] x;
|
|
logic [3:0] y;
|
|
} B;
|
|
typedef struct packed {
|
|
logic [4:0] x;
|
|
logic [5:0] y;
|
|
B z;
|
|
} C;
|
|
|
|
A a;
|
|
B b;
|
|
C c;
|
|
|
|
generate
|
|
begin : foo
|
|
typedef struct packed {
|
|
logic [6:0] x;
|
|
logic [7:0] y;
|
|
} B;
|
|
typedef struct packed {
|
|
logic [8:0] x;
|
|
logic [9:0] y;
|
|
B z;
|
|
} D;
|
|
|
|
A a;
|
|
B b;
|
|
C c;
|
|
D d;
|
|
end
|
|
endgenerate
|
|
|
|
`define INSPECT_SIZE(expr) $display(`"expr -> %0d`", $bits(expr));
|
|
`define INSPECT_DATA(expr) $display(`"expr -> %b`", expr);
|
|
initial begin
|
|
`INSPECT_SIZE(a);
|
|
`INSPECT_SIZE(a.x);
|
|
`INSPECT_SIZE(a.y);
|
|
|
|
`INSPECT_SIZE(b);
|
|
`INSPECT_SIZE(b.x);
|
|
`INSPECT_SIZE(b.y);
|
|
|
|
`INSPECT_SIZE(c);
|
|
`INSPECT_SIZE(c.x);
|
|
`INSPECT_SIZE(c.y);
|
|
`INSPECT_SIZE(c.z);
|
|
`INSPECT_SIZE(c.z.x);
|
|
`INSPECT_SIZE(c.z.y);
|
|
|
|
`INSPECT_SIZE(foo.a);
|
|
`INSPECT_SIZE(foo.a.x);
|
|
`INSPECT_SIZE(foo.a.y);
|
|
|
|
`INSPECT_SIZE(foo.b);
|
|
`INSPECT_SIZE(foo.b.x);
|
|
`INSPECT_SIZE(foo.b.y);
|
|
|
|
`INSPECT_SIZE(foo.c);
|
|
`INSPECT_SIZE(foo.c.x);
|
|
`INSPECT_SIZE(foo.c.y);
|
|
`INSPECT_SIZE(foo.c.z);
|
|
`INSPECT_SIZE(foo.c.z.x);
|
|
`INSPECT_SIZE(foo.c.z.y);
|
|
|
|
`INSPECT_SIZE(foo.d);
|
|
`INSPECT_SIZE(foo.d.x);
|
|
`INSPECT_SIZE(foo.d.y);
|
|
`INSPECT_SIZE(foo.d.z);
|
|
`INSPECT_SIZE(foo.d.z.x);
|
|
`INSPECT_SIZE(foo.d.z.y);
|
|
|
|
`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
|