Sta::makeInstanceAfter only connect internal pins

This commit is contained in:
James Cherry 2020-11-10 10:22:26 -07:00
parent 36c36d7b76
commit 19925c3a7d
1 changed files with 9 additions and 6 deletions

View File

@ -3809,19 +3809,22 @@ Sta::disconnectPin(Pin *pin)
//
////////////////////////////////////////////////////////////////
// Network::makePins with connectPinAfter.
void
Sta::makeInstanceAfter(Instance *inst)
{
// There is no user "connect_pin" called for internal pins,
// so call it implicitly.
LibertyCell *lib_cell = network_->libertyCell(inst);
if (lib_cell) {
if (lib_cell
&& lib_cell->hasInternalPorts()) {
LibertyCellPortBitIterator port_iter(lib_cell);
while (port_iter.hasNext()) {
LibertyPort *lib_port = port_iter.next();
Pin *pin = network_->findPin(inst, lib_port);
// Internal pins may not exist.
if (pin)
connectPinAfter(pin);
if (lib_port->direction()->isInternal()) {
Pin *pin = network_->findPin(inst, lib_port);
if (pin)
connectPinAfter(pin);
}
}
}
}