Improve EDIF lib_cell_ports scan
Signed-off-by: Clifford Wolf <clifford@clifford.at>
diff --git a/backends/edif/edif.cc b/backends/edif/edif.cc
index 53dd70b..9ab8201 100644
--- a/backends/edif/edif.cc
+++ b/backends/edif/edif.cc
@@ -186,6 +186,14 @@
for (auto module_it : design->modules_)
{
RTLIL::Module *module = module_it.second;
+ lib_cell_ports[module->name];
+
+ for (auto port : module->ports)
+ {
+ Wire *wire = module->wire(port);
+ lib_cell_ports[module->name][port] = std::max(lib_cell_ports[module->name][port], GetSize(wire));
+ }
+
if (module->get_blackbox_attribute())
continue;
@@ -203,7 +211,7 @@
if (!design->modules_.count(cell->type) || design->modules_.at(cell->type)->get_blackbox_attribute()) {
lib_cell_ports[cell->type];
for (auto p : cell->connections())
- lib_cell_ports[cell->type][p.first] = GetSize(p.second);
+ lib_cell_ports[cell->type][p.first] = std::max(lib_cell_ports[cell->type][p.first], GetSize(p.second));
}
}
}