2021-11-16 03:59:54 -06:00
|
|
|
read_verilog -sv << EOF
|
|
|
|
package p;
|
|
|
|
typedef struct packed {
|
|
|
|
logic a;
|
|
|
|
logic b;
|
|
|
|
} struct_t;
|
|
|
|
|
|
|
|
typedef struct packed {
|
|
|
|
struct_t g;
|
|
|
|
logic [2:0] h;
|
|
|
|
} nested_struct_t;
|
|
|
|
|
|
|
|
typedef union packed {
|
|
|
|
logic [4:0] x;
|
|
|
|
} nested_union_t;
|
|
|
|
|
|
|
|
parameter struct_t c = {1'b1, 1'b0};
|
|
|
|
parameter nested_struct_t x = {{1'b1, 1'b0}, 1'b1, 1'b1, 1'b1};
|
|
|
|
endpackage
|
|
|
|
|
|
|
|
module dut ();
|
|
|
|
parameter p::struct_t d = p::c;
|
|
|
|
parameter p::nested_struct_t i = p::x;
|
|
|
|
|
|
|
|
parameter p::nested_union_t u = {5'b11001};
|
|
|
|
|
|
|
|
localparam e = d.a;
|
|
|
|
localparam f = d.b;
|
|
|
|
|
|
|
|
localparam j = i.g.a;
|
|
|
|
localparam k = i.g.b;
|
|
|
|
localparam l = i.h;
|
|
|
|
localparam m = i.g;
|
|
|
|
|
|
|
|
localparam o = u.x;
|
|
|
|
|
|
|
|
always_comb begin
|
|
|
|
assert(d == 2'b10);
|
|
|
|
assert(e == 1'b1);
|
|
|
|
assert(f == 1'b0);
|
|
|
|
assert(j == 1'b1);
|
|
|
|
assert(k == 1'b0);
|
|
|
|
assert(l == 3'b111);
|
2022-02-14 07:34:20 -06:00
|
|
|
assert(m == 2'b10);
|
2021-11-16 03:59:54 -06:00
|
|
|
assert(u == 5'b11001);
|
|
|
|
end
|
|
|
|
endmodule
|
|
|
|
EOF
|
|
|
|
hierarchy; proc; opt
|
|
|
|
sat -verify -seq 1 -tempinduct -prove-asserts -show-all
|