Revert "Since $_ANDNOT_ is not symmetric, do not sort leaves"
authorEddie Hung <eddieh@ece.ubc.ca>
Wed, 14 Aug 2019 17:40:53 +0000 (10:40 -0700)
committerGitHub <noreply@github.com>
Wed, 14 Aug 2019 17:40:53 +0000 (10:40 -0700)
passes/techmap/extract_fa.cc

index befaf68a432bac299c8e89bfa0a10b1252abe2ef..b541ceb6b8a7723199c56fefe8d2eb2ff16794cc 100644 (file)
@@ -153,10 +153,12 @@ struct ExtractFaWorker
                }
        }
 
-       void check_partition(SigBit root, const pool<SigBit> &leaves)
+       void check_partition(SigBit root, pool<SigBit> &leaves)
        {
                if (config.enable_ha && GetSize(leaves) == 2)
                {
+                       leaves.sort();
+
                        SigBit A = SigSpec(leaves)[0];
                        SigBit B = SigSpec(leaves)[1];
 
@@ -194,6 +196,8 @@ struct ExtractFaWorker
 
                if (config.enable_fa && GetSize(leaves) == 3)
                {
+                       leaves.sort();
+
                        SigBit A = SigSpec(leaves)[0];
                        SigBit B = SigSpec(leaves)[1];
                        SigBit C = SigSpec(leaves)[2];
@@ -233,7 +237,7 @@ struct ExtractFaWorker
                }
        }
 
-       void find_partitions(SigBit root, const pool<SigBit> &leaves, pool<const pool<SigBit>> &cache, int maxdepth, int maxbreadth)
+       void find_partitions(SigBit root, pool<SigBit> &leaves, pool<pool<SigBit>> &cache, int maxdepth, int maxbreadth)
        {
                if (cache.count(leaves))
                        return;
@@ -289,8 +293,8 @@ struct ExtractFaWorker
                                continue;
 
                        SigBit root = it.first;
-                       const pool<SigBit> leaves = { root };
-                       pool<const pool<SigBit>> cache;
+                       pool<SigBit> leaves = { root };
+                       pool<pool<SigBit>> cache;
 
                        if (config.verbose)
                                log("  checking %s\n", log_signal(it.first));