Add a unique argument to pmgen's nusers()
authorEddie Hung <eddie@fpgeh.com>
Fri, 23 Aug 2019 21:32:17 +0000 (14:32 -0700)
committerEddie Hung <eddie@fpgeh.com>
Fri, 23 Aug 2019 21:32:17 +0000 (14:32 -0700)
passes/pmgen/pmgen.py

index 573722d68e4830a5234fe368648f0f963c4176fd..2f2545c2247637a3bfd2599a8e4bca5c85a35b43 100644 (file)
@@ -458,12 +458,16 @@ with open(outfile, "w") as f:
     print("  }", file=f)
     print("", file=f)
 
-    print("  int nusers(const SigSpec &sig) {", file=f)
+    print("  int nusers(const SigSpec &sig, bool unique=true) {", file=f)
+    print("    int i = 0;", file=f)
     print("    pool<Cell*> users;", file=f)
     print("    for (auto bit : sigmap(sig))", file=f)
-    print("      for (auto user : sigusers[bit])", file=f)
-    print("        users.insert(user);", file=f)
-    print("    return GetSize(users);", file=f)
+    print("      if (unique)", file=f);
+    print("        i += GetSize(sigusers[bit]);", file=f);
+    print("      else", file=f);
+    print("        for (auto user : sigusers[bit])", file=f)
+    print("          users.insert(user);", file=f)
+    print("    return unique ? GetSize(users) : i;", file=f)
     print("  }", file=f)
     print("", file=f)