From 8f6058a7d6654de5d28bca42e57ba118dbe44468 Mon Sep 17 00:00:00 2001 From: George Rennie Date: Thu, 7 Nov 2024 11:48:48 +0100 Subject: [PATCH 1/2] bufnorm: preserve constant bits driving wires --- passes/techmap/bufnorm.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/passes/techmap/bufnorm.cc b/passes/techmap/bufnorm.cc index 3c2cd9230..163e42c0f 100644 --- a/passes/techmap/bufnorm.cc +++ b/passes/techmap/bufnorm.cc @@ -438,8 +438,13 @@ struct BufnormPass : public Pass { bool chain_this_wire = chain_this_wire_f(wire); SigSpec keysig = sigmap(wire), insig = wire, outsig = wire; - for (int i = 0; i < GetSize(insig); i++) - insig[i] = mapped_bits.at(keysig[i], State::Sx); + for (int i = 0; i < GetSize(insig); i++) { + if (keysig[i].is_wire()) + insig[i] = mapped_bits.at(keysig[i], State::Sx); + else + insig[i] = keysig[i]; + } + if (chain_this_wire) { for (int i = 0; i < GetSize(outsig); i++) mapped_bits[keysig[i]] = outsig[i]; From a31c968340346294c4414db4217a525b8f892543 Mon Sep 17 00:00:00 2001 From: George Rennie Date: Thu, 7 Nov 2024 12:55:50 +0100 Subject: [PATCH 2/2] tests/bufnorm: add test for bufnorm of constant --- tests/techmap/bufnorm.ys | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 tests/techmap/bufnorm.ys diff --git a/tests/techmap/bufnorm.ys b/tests/techmap/bufnorm.ys new file mode 100644 index 000000000..b81b80aed --- /dev/null +++ b/tests/techmap/bufnorm.ys @@ -0,0 +1,11 @@ +# Check wires driven by constants are kept +read_verilog <