diff --git a/include/sta/Search.hh b/include/sta/Search.hh index f1d8ca7e..3f4331ec 100644 --- a/include/sta/Search.hh +++ b/include/sta/Search.hh @@ -103,6 +103,7 @@ public: bool removal, bool clk_gating_setup, bool clk_gating_hold); + bool arrivalsValid(); // Invalidate all arrival and required times. void arrivalsInvalid(); // Invalidate vertex arrival time. diff --git a/search/Search.cc b/search/Search.cc index 04d518d3..f4b0df0e 100644 --- a/search/Search.cc +++ b/search/Search.cc @@ -651,6 +651,13 @@ Search::deleteVertexBefore(Vertex *vertex) invalid_endpoints_->erase(vertex); } +bool +Search::arrivalsValid() +{ + return arrivals_exist_ + && invalid_requireds_.empty(); +} + void Search::arrivalsInvalid() { diff --git a/search/Sta.cc b/search/Sta.cc index a50efe9c..2a2b4f38 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -2621,7 +2621,8 @@ Sta::visitEndpoints(VertexVisitor *visitor) PinSet * Sta::findGroupPathPins(const char *group_path_name) { - if (!search_->havePathGroups()) { + if (!(search_->havePathGroups() + && search_->arrivalsValid())) { PathEndSeq *path_ends = findPathEnds(// from, thrus, to, unconstrained nullptr, nullptr, nullptr, false, // corner, min_max,