diff --git a/sdc/ExceptionPath.cc b/sdc/ExceptionPath.cc index c4db3ef8..4dd00534 100644 --- a/sdc/ExceptionPath.cc +++ b/sdc/ExceptionPath.cc @@ -1421,7 +1421,7 @@ ExceptionTo::matchesFilter(const Pin *pin, const RiseFall *end_rf, const Network *network) const { - // "report -to reg" does match clock pins. + // "report -to reg" matches clock pins. return matches(pin, clk_edge, end_rf, true, network); } @@ -1456,7 +1456,8 @@ ExceptionTo::matches(const Pin *pin, && (inst_matches_reg_clk_pin || !network->isRegClkPin(pin)) && insts_->hasKey(network->instance(pin)) - && network->direction(pin)->isAnyInput() + && (network->direction(pin)->isAnyInput() + || network->direction(pin)->isInternal()) && rf_->matches(end_rf) && end_rf_->matches(end_rf)) || (pins_ == nullptr diff --git a/sdc/Sdc.cc b/sdc/Sdc.cc index 94361d82..2cb24e96 100644 --- a/sdc/Sdc.cc +++ b/sdc/Sdc.cc @@ -3939,7 +3939,8 @@ Sdc::exceptionToInvalid(const Pin *pin) Net *net = network_->net(pin); // Floating pins are invalid. if ((net == nullptr - && !network_->isTopLevelPort(pin)) + && !(network_->isTopLevelPort(pin) + || network_->direction(pin)->isInternal())) || (net // Pins connected to power/ground are invalid. && (network_->isPower(net) diff --git a/search/Sta.cc b/search/Sta.cc index 7a47cdd2..15b7c08d 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -2027,11 +2027,12 @@ Sta::exceptionFromInvalid(const Pin *pin) const || (net // Pins connected to power/ground are invalid. && (network_->isPower(net) - || network_->isGround(net))) + || network_->isGround(net))) || !((network_->isTopLevelPort(pin) && network_->direction(pin)->isAnyInput()) || network_->isRegClkPin(pin) - || network_->isLatchData(pin)); + || network_->isLatchData(pin) + || network_->direction(pin)->isInternal()); } void