From 47c2257f82f25f75175e0a41e9ca1b37d653bf6a Mon Sep 17 00:00:00 2001 From: abhinavputhran Date: Sun, 8 Mar 2026 19:41:31 -0400 Subject: [PATCH] setundef: more tests! and wire selection in -init mode --- passes/cmds/setundef.cc | 10 +++++++++- tests/various/setundef_selection.ys | 17 +++++++++++------ tests/various/setundef_selection_undriven.il | 4 ++++ 3 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 tests/various/setundef_selection_undriven.il diff --git a/passes/cmds/setundef.cc b/passes/cmds/setundef.cc index cdd7f3446..99a223bdc 100644 --- a/passes/cmds/setundef.cc +++ b/passes/cmds/setundef.cc @@ -364,11 +364,19 @@ struct SetundefPass : public Pass { pool ffbits; pool initwires; - for (auto cell : module->selected_cells()) + for (auto cell : module->cells()) { if (!cell->is_builtin_ff()) continue; + bool cell_selected = design->selected(module, cell); + bool wire_selected = false; + for (auto bit : sigmap(cell->getPort(ID::Q))) + if (bit.wire && design->selected(module, bit.wire)) + wire_selected = true; + if (!cell_selected && !wire_selected) + continue; + for (auto bit : sigmap(cell->getPort(ID::Q))) ffbits.insert(bit); } diff --git a/tests/various/setundef_selection.ys b/tests/various/setundef_selection.ys index 67df8bed9..64713a742 100644 --- a/tests/various/setundef_selection.ys +++ b/tests/various/setundef_selection.ys @@ -7,21 +7,26 @@ endmodule EOT setundef -zero w:a sat -prove a 0 +sat -enable_undef -prove b 0 -falsify design -reset # Test that setundef -undriven -zero respects wire selection -read_verilog <