Skip to content

Commit

Permalink
Fix setting bits of parameters in setundef pass
Browse files Browse the repository at this point in the history
This commit also adds test that verifies correctness of this change.
  • Loading branch information
Szelwiga committed Nov 8, 2024
1 parent cef87cc commit 8e508f2
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 1 deletion.
2 changes: 1 addition & 1 deletion passes/cmds/setundef.cc
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ struct SetundefPass : public Pass {
{
for (auto *cell : module->selected_cells()) {
for (auto &parameter : cell->parameters) {
for (auto bit : parameter.second) {
for (auto &bit : parameter.second.bits()) {
if (bit > RTLIL::State::S1)
bit = worker.next_bit();
}
Expand Down
10 changes: 10 additions & 0 deletions tests/various/setundef.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module foo #(parameter [1:0] a) (output [1:0] o);
assign o = a;
endmodule

module top(output [1:0] o);
foo #(2'b0x) foo(o);
always_comb begin
assert(o == 2'b00);
end
endmodule
8 changes: 8 additions & 0 deletions tests/various/setundef.ys
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
read_verilog -sv setundef.sv
setundef -zero -params
hierarchy -top top
flatten
proc
async2sync
write_json
sat -seq 5 -prove-asserts

0 comments on commit 8e508f2

Please sign in to comment.