mirror of
https://github.com/zachjs/sv2v.git
synced 2026-09-05 17:15:47 +02:00
initial generate block scoping support
- significant refactor of struct conversion - significant refactor of typedef conversion - scoping support in multipack conversion - scoping support in typeof conversion
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
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
|
||||
Reference in New Issue
Block a user