summaryrefslogtreecommitdiff
path: root/passes/equiv/equiv_simple.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-01-24 00:16:17 +0100
committerClifford Wolf <clifford@clifford.at>2015-01-24 00:32:24 +0100
commit75bbeb828ad266a7614eff2e33d0a8f9fab75ed2 (patch)
tree852ed6a347f66be5f6d59432bb15fec06c18d0b2 /passes/equiv/equiv_simple.cc
parent43951099cf46b5a0a25bdebb001685a89dfe6c82 (diff)
Various equiv_* improvements
Diffstat (limited to 'passes/equiv/equiv_simple.cc')
-rw-r--r--passes/equiv/equiv_simple.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/passes/equiv/equiv_simple.cc b/passes/equiv/equiv_simple.cc
index f0ab6da6..d50b5aba 100644
--- a/passes/equiv/equiv_simple.cc
+++ b/passes/equiv/equiv_simple.cc
@@ -241,11 +241,11 @@ struct EquivSimplePass : public Pass {
for (auto module : design->selected_modules())
{
- vector<Cell*> unproven_equiv_cells;
+ vector<pair<SigBit, Cell*>> unproven_equiv_cells;
for (auto cell : module->selected_cells())
if (cell->type == "$equiv" && cell->getPort("\\A") != cell->getPort("\\B"))
- unproven_equiv_cells.push_back(cell);
+ unproven_equiv_cells.push_back(pair<SigBit, Cell*>(cell->getPort("\\Y").to_single_sigbit(), cell));
if (unproven_equiv_cells.empty())
continue;
@@ -264,8 +264,9 @@ struct EquivSimplePass : public Pass {
bit2driver[bit] = cell;
}
- for (auto cell : unproven_equiv_cells) {
- EquivSimpleWorker worker(cell, sigmap, bit2driver, max_seq, verbose);
+ std::sort(unproven_equiv_cells.begin(), unproven_equiv_cells.end());
+ for (auto it : unproven_equiv_cells) {
+ EquivSimpleWorker worker(it.second, sigmap, bit2driver, max_seq, verbose);
if (worker.run())
success_counter++;
}