From b1a997aa9a0907fb09fa1f656b9561eb42227e37 Mon Sep 17 00:00:00 2001 From: "Emil J. Tywoniak" Date: Tue, 17 Feb 2026 19:52:30 +0100 Subject: [PATCH] modtools, wreduce: check_db sanity check --- kernel/modtools.h | 7 +++++++ passes/opt/wreduce.cc | 3 +++ 2 files changed, 10 insertions(+) diff --git a/kernel/modtools.h b/kernel/modtools.h index cf68693bc..c97e0acd7 100644 --- a/kernel/modtools.h +++ b/kernel/modtools.h @@ -297,6 +297,13 @@ struct ModIndex : public RTLIL::Monitor return info->ports; } + void check_db() + { + for (auto &it : database) { + log_assert(database.find(it.first) != database.end()); + } + } + void dump_db() { log("--- ModIndex Dump ---\n"); diff --git a/passes/opt/wreduce.cc b/passes/opt/wreduce.cc index 359c76d42..27492540c 100644 --- a/passes/opt/wreduce.cc +++ b/passes/opt/wreduce.cc @@ -489,6 +489,7 @@ struct WreduceWorker for (auto w : module->wires()) complete_wires.insert(mi.sigmap(w)); + mi.dump_db(); for (auto w : module->selected_wires()) { int unused_top_bits = 0; @@ -496,6 +497,8 @@ struct WreduceWorker if (w->port_id > 0 || count_nontrivial_wire_attrs(w) > 0) continue; + log_debug("wire %s\n", w->name); + mi.check_db(); for (int i = GetSize(w)-1; i >= 0; i--) { SigBit bit(w, i); auto info = mi.query(bit);