From 9efd871903ecabc138ff5e2354b8ebe5cf066150 Mon Sep 17 00:00:00 2001 From: Krystine Sherwin <93062060+KrystalDelusion@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:05:29 +1200 Subject: [PATCH] consteval: Fix $bwmux handling If the cell type has a S signal and hasn't already been handled, use `CellTypes::eval(cell, A, B, S)`. --- kernel/consteval.h | 6 +++++- passes/tests/test_cell.cc | 4 +--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/kernel/consteval.h b/kernel/consteval.h index 844120ef0..adcf86f8a 100644 --- a/kernel/consteval.h +++ b/kernel/consteval.h @@ -349,7 +349,11 @@ struct ConstEval return false; bool eval_err = false; - RTLIL::Const eval_ret = CellTypes::eval(cell, sig_a.as_const(), sig_b.as_const(), sig_c.as_const(), sig_d.as_const(), &eval_err); + RTLIL::Const eval_ret; + if (sig_s.size() > 0 && eval(sig_s, undef, cell)) { + eval_ret = CellTypes::eval(cell, sig_a.as_const(), sig_b.as_const(), sig_s.as_const(), &eval_err); + } else + eval_ret = CellTypes::eval(cell, sig_a.as_const(), sig_b.as_const(), sig_c.as_const(), sig_d.as_const(), &eval_err); if (eval_err) return false; diff --git a/passes/tests/test_cell.cc b/passes/tests/test_cell.cc index 3a7e413ee..068386b49 100644 --- a/passes/tests/test_cell.cc +++ b/passes/tests/test_cell.cc @@ -1044,9 +1044,7 @@ struct TestCellPass : public Pass { // $pmux doesn't work in sat, and is not supported with 'techmap -assert' if (nosat && techmap_cmd.compare("aigmap") == 0) cell_types[ID($pmux)] = "*"; - // $bwmux is not supported by ConstEval - if (noeval) - cell_types[ID($bwmux)] = "A"; + cell_types[ID($bwmux)] = "A"; cell_types[ID($slice)] = "A"; cell_types[ID($concat)] = "AB";