Fixed instantiating multi-bit ports in edif backend
authorClifford Wolf <clifford@clifford.at>
Fri, 21 Feb 2014 12:10:36 +0000 (13:10 +0100)
committerClifford Wolf <clifford@clifford.at>
Fri, 21 Feb 2014 12:10:36 +0000 (13:10 +0100)
backends/edif/edif.cc

index 1748ed810f27c7ca00a56427d5e0e7372b61a6c7..5020cd67eb6a623dc5dd0b55c802551c93235cd3 100644 (file)
@@ -303,8 +303,10 @@ struct EdifBackend : public Backend {
                                        sig.expand();
                                        for (int i = 0; i < sig.width; i++) {
                                                RTLIL::SigSpec sigbit(sig.chunks.at(i));
-                                               std::string portname = sig.width > 1 ? stringf("%s[%d]", RTLIL::id2cstr(p.first), i) : RTLIL::id2cstr(p.first);
-                                               net_join_db[sigbit].insert(stringf("(portRef %s (instanceRef %s))", edif_names(portname).c_str(), EDIF_NAME(cell->name)));
+                                               if (sig.width == 1)
+                                                       net_join_db[sigbit].insert(stringf("(portRef %s (instanceRef %s))", edif_names(RTLIL::id2cstr(p.first)).c_str(), EDIF_NAME(cell->name)));
+                                               else
+                                                       net_join_db[sigbit].insert(stringf("(portRef (member %s %d) (instanceRef %s))", edif_names(RTLIL::id2cstr(p.first)).c_str(), i, EDIF_NAME(cell->name)));
                                        }
                                }
                        }