diff --git a/search/CheckCapacitanceLimits.cc b/search/CheckCapacitanceLimits.cc index c4d2c021..ced71a7d 100644 --- a/search/CheckCapacitanceLimits.cc +++ b/search/CheckCapacitanceLimits.cc @@ -26,6 +26,8 @@ #include "Corner.hh" #include "PortDirection.hh" #include "Sim.hh" +#include "Graph.hh" +#include "GraphDelayCalc.hh" namespace sta { @@ -316,9 +318,13 @@ CheckCapacitanceLimits::checkPin(const Pin *pin) const Network *network = sta_->network(); const Sim *sim = sta_->sim(); const Sdc *sdc = sta_->sdc(); + const Graph *graph = sta_->graph(); + GraphDelayCalc *dcalc = sta_->graphDelayCalc(); + Vertex *vertex = graph->pinLoadVertex(pin); return network->direction(pin)->isAnyOutput() && !sim->logicZeroOne(pin) - && !sdc->isDisabled(pin); + && !sdc->isDisabled(pin) + && !(vertex && sta_->graphDelayCalc()->isIdealClk(vertex)); } } // namespace diff --git a/search/CheckFanoutLimits.cc b/search/CheckFanoutLimits.cc index 4ca89ca8..352482f2 100644 --- a/search/CheckFanoutLimits.cc +++ b/search/CheckFanoutLimits.cc @@ -22,6 +22,8 @@ #include "Sdc.hh" #include "Sim.hh" #include "PortDirection.hh" +#include "Graph.hh" +#include "GraphDelayCalc.hh" namespace sta { @@ -285,9 +287,13 @@ CheckFanoutLimits::checkPin(const Pin *pin) const Network *network = sta_->network(); const Sim *sim = sta_->sim(); const Sdc *sdc = sta_->sdc(); + const Graph *graph = sta_->graph(); + GraphDelayCalc *dcalc = sta_->graphDelayCalc(); + Vertex *vertex = graph->pinLoadVertex(pin); return network->direction(pin)->isAnyOutput() && !sim->logicZeroOne(pin) - && !sdc->isDisabled(pin); + && !sdc->isDisabled(pin) + && !(vertex && dcalc->isIdealClk(vertex)); } } // namespace diff --git a/search/Sta.cc b/search/Sta.cc index 984891be..42e42b14 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -4817,7 +4817,7 @@ Sta::slowDrvrIterator() return new SlowDrvrIterator(insts); } -////////////////////////////////////////////////////////////////' +//////////////////////////////////////////////////////////////// void Sta::checkSlewLimitPreamble() @@ -4907,8 +4907,8 @@ Sta::checkFanoutLimitPreamble() { if (check_fanout_limits_ == nullptr) makeCheckFanoutLimits(); - // Sim values required to suppress reporting constant nets. - ensureLevelized(); + // For sim values and ideal clocks. + findDelays(); } Pin * @@ -4974,8 +4974,8 @@ Sta::checkCapacitanceLimitPreamble() { if (check_capacitance_limits_ == nullptr) makeCheckCapacitanceLimits(); - // Sim values required to suppress reporting constant nets. - ensureLevelized(); + // For sim values and ideal clocks. + findDelays(); } Pin *