yosys/tests/various/param_struct.ys

52 lines
920 B
Plaintext

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);
assert(m == 2'b10);
assert(u == 5'b11001);
end
endmodule
EOF
hierarchy; proc; opt
async2sync
sat -verify -seq 1 -tempinduct -prove-asserts -show-all