Fix port hanlding in pmgen
authorClifford Wolf <clifford@clifford.at>
Fri, 23 Aug 2019 14:26:54 +0000 (16:26 +0200)
committerClifford Wolf <clifford@clifford.at>
Fri, 23 Aug 2019 14:26:54 +0000 (16:26 +0200)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
passes/pmgen/pmgen.py

index c2621393dd63b021793000b108f60e293ff1030c..573722d68e4830a5234fe368648f0f963c4176fd 100644 (file)
@@ -422,8 +422,6 @@ with open(outfile, "w") as f:
     print("  void add_siguser(const SigSpec &sig, Cell *cell) {", file=f)
     print("    for (auto bit : sigmap(sig)) {", file=f)
     print("      if (bit.wire == nullptr) continue;", file=f)
-    print("      if (sigusers.count(bit) == 0 && bit.wire->port_id)", file=f)
-    print("        sigusers[bit].insert(nullptr);", file=f)
     print("      sigusers[bit].insert(cell);", file=f)
     print("    }", file=f)
     print("  }", file=f)
@@ -478,10 +476,11 @@ with open(outfile, "w") as f:
             else:
                 print("    ud_{}.{} = {}();".format(current_pattern, s, t), file=f)
     current_pattern = None
-    print("    for (auto cell : module->cells()) {", file=f)
+    print("    for (auto port : module->ports)", file=f)
+    print("      add_siguser(module->wire(port), nullptr);", file=f)
+    print("    for (auto cell : module->cells())", file=f)
     print("      for (auto &conn : cell->connections())", file=f)
     print("        add_siguser(conn.second, cell);", file=f)
-    print("    }", file=f)
     print("    for (auto cell : cells) {", file=f)
 
     for index in range(len(blocks)):