Cleanups in freduce command
authorClifford Wolf <clifford@clifford.at>
Fri, 3 Jan 2014 16:50:39 +0000 (17:50 +0100)
committerClifford Wolf <clifford@clifford.at>
Fri, 3 Jan 2014 16:50:39 +0000 (17:50 +0100)
passes/sat/freduce.cc

index 893fe5167b05b7687ba46dad9c1a59b16291248b..23ab8a04ad1e87ec990a26ead51f7f6c744c4032 100644 (file)
@@ -441,8 +441,6 @@ struct FreduceWorker
 
                int bits_count = 0;
                std::map<std::vector<RTLIL::SigBit>, std::vector<RTLIL::SigBit>> buckets;
-               buckets[std::vector<RTLIL::SigBit>()].push_back(RTLIL::SigBit(RTLIL::State::S0));
-               buckets[std::vector<RTLIL::SigBit>()].push_back(RTLIL::SigBit(RTLIL::State::S1));
                for (auto &batch : batches)
                {
                        for (auto &bit : batch)
@@ -464,6 +462,11 @@ struct FreduceWorker
                }
                log("  Sorted %d signal bits into %d buckets.\n", bits_count, int(buckets.size()));
 
+               if (buckets.count(std::vector<RTLIL::SigBit>()) != 0) {
+                       buckets[std::vector<RTLIL::SigBit>()].push_back(RTLIL::SigBit(RTLIL::State::S0));
+                       buckets[std::vector<RTLIL::SigBit>()].push_back(RTLIL::SigBit(RTLIL::State::S1));
+               }
+
                std::vector<std::vector<equiv_bit_t>> equiv;
                for (auto &bucket : buckets)
                {