diff --git a/search/Sta.cc b/search/Sta.cc index a46cd4b5..b0390024 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -2776,6 +2776,24 @@ Sta::vertexRequired(Vertex *vertex, return required; } +Slack +Sta::netSlack(const Net *net, + const MinMax *min_max) +{ + ensureGraph(); + Slack slack = MinMax::min()->initValue(); + NetPinIterator *pin_iter = network_->pinIterator(net); + while (pin_iter->hasNext()) { + Pin *pin = pin_iter->next(); + if (network_->isLoad(pin)) { + Vertex *vertex = graph_->pinLoadVertex(pin); + Slack pin_slack = vertexSlack(vertex, min_max); + slack = min(slack, pin_slack); + } + } + return slack; +} + Slack Sta::pinSlack(const Pin *pin, const MinMax *min_max) diff --git a/search/Sta.hh b/search/Sta.hh index 5884b6b8..927a21f5 100644 --- a/search/Sta.hh +++ b/search/Sta.hh @@ -985,6 +985,9 @@ public: const TransRiseFall *tr, const ClockEdge *clk_edge, const PathAnalysisPt *path_ap); + + Slack netSlack(const Net *net, + const MinMax *min_max); Slack pinSlack(const Pin *pin, const TransRiseFall *tr, const MinMax *min_max);