From 19925c3a7d00d639c35567bbd7facb6f63e06337 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 10 Nov 2020 10:22:26 -0700 Subject: [PATCH] Sta::makeInstanceAfter only connect internal pins --- search/Sta.cc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/search/Sta.cc b/search/Sta.cc index d1cbe69d..ad35ed9a 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -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); + } } } }