aboutsummaryrefslogtreecommitdiffstats
path: root/passes/opt/opt_reduce.cc
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2020-02-05 10:47:31 -0800
committerEddie Hung <eddie@fpgeh.com>2020-02-05 10:47:31 -0800
commitb6a1f627b5871e750fe6a559fbb42334c7de8b84 (patch)
treef1b284aebe30d0f7eabd9e8919b4275a38ff2ae4 /passes/opt/opt_reduce.cc
parent5aaa19f1ab33394accbe633cd96a3fbe281dd09a (diff)
parent5ebdc0f8e07989b79337ced0553bd28819a8cf3e (diff)
downloadyosys-b6a1f627b5871e750fe6a559fbb42334c7de8b84.tar.gz
yosys-b6a1f627b5871e750fe6a559fbb42334c7de8b84.tar.bz2
yosys-b6a1f627b5871e750fe6a559fbb42334c7de8b84.zip
Merge remote-tracking branch 'origin/master' into eddie/shiftx2mux
Diffstat (limited to 'passes/opt/opt_reduce.cc')
-rw-r--r--passes/opt/opt_reduce.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/passes/opt/opt_reduce.cc b/passes/opt/opt_reduce.cc
index 6a8d8cabd..f74655d1c 100644
--- a/passes/opt/opt_reduce.cc
+++ b/passes/opt/opt_reduce.cc
@@ -44,9 +44,10 @@ struct OptReduceWorker
cells.erase(cell);
RTLIL::SigSpec sig_a = assign_map(cell->getPort(ID::A));
+ sig_a.sort_and_unify();
pool<RTLIL::SigBit> new_sig_a_bits;
- for (auto &bit : sig_a.to_sigbit_set())
+ for (auto &bit : sig_a)
{
if (bit == RTLIL::State::S0) {
if (cell->type == ID($reduce_and)) {
@@ -86,6 +87,7 @@ struct OptReduceWorker
}
RTLIL::SigSpec new_sig_a(new_sig_a_bits);
+ new_sig_a.sort_and_unify();
if (new_sig_a != sig_a || sig_a.size() != cell->getPort(ID::A).size()) {
log(" New input vector for %s cell %s: %s\n", cell->type.c_str(), cell->name.c_str(), log_signal(new_sig_a));
@@ -235,7 +237,6 @@ struct OptReduceWorker
log(" New connections: %s = %s\n", log_signal(old_sig_conn.first), log_signal(old_sig_conn.second));
module->connect(old_sig_conn);
- module->check();
did_something = true;
total_count++;
@@ -324,6 +325,8 @@ struct OptReduceWorker
opt_mux(cell);
}
}
+
+ module->check();
}
};