From 6e29fcb3f0d8a73af3a0913eb945b665a72e69cb Mon Sep 17 00:00:00 2001 From: James Cherry Date: Fri, 24 Oct 2025 08:47:07 -0700 Subject: [PATCH] findRequired(vertex) rm crpr disable Signed-off-by: James Cherry --- graph/Graph.cc | 8 -------- include/sta/Graph.hh | 3 --- include/sta/Sta.hh | 2 -- search/Search.cc | 1 - search/Sta.cc | 42 +----------------------------------------- 5 files changed, 1 insertion(+), 55 deletions(-) diff --git a/graph/Graph.cc b/graph/Graph.cc index 569c874f..713fa2e5 100644 --- a/graph/Graph.cc +++ b/graph/Graph.cc @@ -594,7 +594,6 @@ Graph::deletePaths(Vertex *vertex) { vertex->setPaths(nullptr); vertex->tag_group_index_ = tag_group_index_max; - vertex->crpr_path_pruning_disabled_ = false; } //////////////////////////////////////////////////////////////// @@ -998,7 +997,6 @@ Vertex::init(Pin *pin, visited1_ = false; visited2_ = false; bfs_in_queue_ = 0; - crpr_path_pruning_disabled_ = false; } Vertex::~Vertex() @@ -1120,12 +1118,6 @@ Vertex::removeSlewAnnotated() slew_annotated_ = 0; } -void -Vertex::setCrprPathPruningDisabled(bool disabled) -{ - crpr_path_pruning_disabled_ = disabled; -} - TagGroupIndex Vertex::tagGroupIndex() const { diff --git a/include/sta/Graph.hh b/include/sta/Graph.hh index 223c58c8..6bf86cfe 100644 --- a/include/sta/Graph.hh +++ b/include/sta/Graph.hh @@ -304,8 +304,6 @@ public: bool bfsInQueue(BfsIndex index) const; void setBfsInQueue(BfsIndex index, bool value); bool isRegClk() const { return is_reg_clk_; } - bool crprPathPruningDisabled() const { return crpr_path_pruning_disabled_;} - void setCrprPathPruningDisabled(bool disabled); // ObjectTable interface. ObjectIdx objectIdx() const { return object_idx_; } @@ -353,7 +351,6 @@ protected: bool is_check_clk_:1; bool is_constrained_:1; bool has_downstream_clk_pin_:1; - bool crpr_path_pruning_disabled_:1; bool visited1_:1; bool visited2_:1; diff --git a/include/sta/Sta.hh b/include/sta/Sta.hh index a07192f1..6f2a6d17 100644 --- a/include/sta/Sta.hh +++ b/include/sta/Sta.hh @@ -1437,8 +1437,6 @@ protected: Corner *corner, const MinMax *min_max); void powerPreamble(); - void disableFanoutCrprPruning(Vertex *vertex, - int &fanou); virtual void replaceCell(Instance *inst, Cell *to_cell, LibertyCell *to_lib_cell); diff --git a/search/Search.cc b/search/Search.cc index 6cbb5a74..9b38b66a 100644 --- a/search/Search.cc +++ b/search/Search.cc @@ -1182,7 +1182,6 @@ ArrivalVisitor::visit(Vertex *vertex) visitFaninPaths(vertex); if (crpr_active_ && search_->crprPathPruningEnabled() - && !vertex->crprPathPruningDisabled() // No crpr for ideal clocks. && tag_bldr_->hasPropagatedClk() && !has_fanin_one_) diff --git a/search/Sta.cc b/search/Sta.cc index 8468d19e..37932e53 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -3200,48 +3200,8 @@ Sta::findRequired(Vertex *vertex) // Need to include downstream required times if there is fanout. && !hasFanout(vertex, search_->searchAdj(), graph_)) search_->seedRequired(vertex); - else { + else search_->findRequireds(vertex->level()); - if (variables_->crprEnabled() - && search_->crprPathPruningEnabled() - && !search_->crprApproxMissingRequireds() - // Clocks invariably have requireds that are pruned but it isn't - // worth finding arrivals and requireds all over again for - // the entire fanout of the clock. - && !search_->isClock(vertex)) { - // Invalidate arrivals and requireds and disable - // path pruning on fanout vertices with DFS. - int fanout = 0; - disableFanoutCrprPruning(vertex, fanout); - debugPrint(debug_, "search", 1, "resurrect pruned required %s fanout %d", - vertex->to_string(this).c_str(), - fanout); - // Find fanout arrivals and requireds with pruning disabled. - search_->findArrivals(); - search_->findRequireds(vertex->level()); - } - } -} - -void -Sta::disableFanoutCrprPruning(Vertex *vertex, - int &fanout) -{ - if (!vertex->crprPathPruningDisabled()) { - search_->arrivalInvalid(vertex); - search_->requiredInvalid(vertex); - vertex->setCrprPathPruningDisabled(true); - fanout++; - SearchPred *pred = search_->searchAdj(); - VertexOutEdgeIterator edge_iter(vertex, graph_); - while (edge_iter.hasNext()) { - Edge *edge = edge_iter.next(); - Vertex *to_vertex = edge->to(graph_); - if (pred->searchThru(edge) - && pred->searchTo(to_vertex)) - disableFanoutCrprPruning(to_vertex, fanout); - } - } } Slack