}
for (const auto &conn : cell->connections()) {
- if (cell->input(conn.first)) {
+ auto port_wire = inst_module->wire(conn.first);
+ if (port_wire->port_input) {
// Ignore inout for the sake of topographical ordering
- if (cell->output(conn.first)) continue;
+ if (port_wire->port_output) continue;
for (auto bit : sigmap(conn.second))
bit_users[bit].insert(cell->name);
}
- if (cell->output(conn.first))
+ if (port_wire->port_output)
for (auto bit : sigmap(conn.second))
bit_drivers[bit].insert(cell->name);
}
log_error("Connection '%s' on cell '%s' (type '%s') not recognised!\n", log_id(c.first), log_id(cell), log_id(cell->type));
if (is_input) {
- for (auto b : c.second.bits()) {
+ for (auto b : sigmap(c.second)) {
Wire *w = b.wire;
if (!w) continue;
if (!w->port_output || !cell_known) {
}
}
- for (auto b : c.second.bits()) {
+ for (auto b : sigmap(c.second)) {
Wire *w = b.wire;
if (!w) continue;
input_bits.insert(b);
arrival_times[b] = arrival;
}
}
-
-
}
}