From d5c18750557e0a29ca99b9e165e440027d4aa501 Mon Sep 17 00:00:00 2001 From: "Emil J. Tywoniak" Date: Wed, 24 Jun 2026 17:39:13 +0200 Subject: [PATCH] techmap: decode derived_name in the map pool, not the target design derived_name and the template's marker wire are interned in map->twines; decoding them with design->twines read an out-of-range/foreign pool slot (garbage, or a crash once pool sizes diverge) in the _TECHMAP_FAIL_ log. Co-Authored-By: Claude Opus 4.8 --- passes/techmap/techmap.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/passes/techmap/techmap.cc b/passes/techmap/techmap.cc index 12106a567..c3d48c870 100644 --- a/passes/techmap/techmap.cc +++ b/passes/techmap/techmap.cc @@ -798,7 +798,7 @@ struct TechmapWorker RTLIL::SigSpec value = elem.value; if (value.is_fully_const() && value.as_bool()) { log("Not using module `%s' from techmap as it contains a %s marker wire with non-zero value %s.\n", - design->twines.unescaped_str(derived_name).data(), design->twines.unescaped_str(elem.wire->name.ref()).data(), log_signal(value)); + map->twines.unescaped_str(derived_name).data(), map->twines.unescaped_str(elem.wire->name.ref()).data(), log_signal(value)); techmap_do_cache[tpl] = false; } }