findRequired(vertex) rm crpr disable

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2025-10-24 08:47:07 -07:00
parent 7539c7372d
commit 6e29fcb3f0
5 changed files with 1 additions and 55 deletions

View File

@ -594,7 +594,6 @@ Graph::deletePaths(Vertex *vertex)
{ {
vertex->setPaths(nullptr); vertex->setPaths(nullptr);
vertex->tag_group_index_ = tag_group_index_max; vertex->tag_group_index_ = tag_group_index_max;
vertex->crpr_path_pruning_disabled_ = false;
} }
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
@ -998,7 +997,6 @@ Vertex::init(Pin *pin,
visited1_ = false; visited1_ = false;
visited2_ = false; visited2_ = false;
bfs_in_queue_ = 0; bfs_in_queue_ = 0;
crpr_path_pruning_disabled_ = false;
} }
Vertex::~Vertex() Vertex::~Vertex()
@ -1120,12 +1118,6 @@ Vertex::removeSlewAnnotated()
slew_annotated_ = 0; slew_annotated_ = 0;
} }
void
Vertex::setCrprPathPruningDisabled(bool disabled)
{
crpr_path_pruning_disabled_ = disabled;
}
TagGroupIndex TagGroupIndex
Vertex::tagGroupIndex() const Vertex::tagGroupIndex() const
{ {

View File

@ -304,8 +304,6 @@ public:
bool bfsInQueue(BfsIndex index) const; bool bfsInQueue(BfsIndex index) const;
void setBfsInQueue(BfsIndex index, bool value); void setBfsInQueue(BfsIndex index, bool value);
bool isRegClk() const { return is_reg_clk_; } bool isRegClk() const { return is_reg_clk_; }
bool crprPathPruningDisabled() const { return crpr_path_pruning_disabled_;}
void setCrprPathPruningDisabled(bool disabled);
// ObjectTable interface. // ObjectTable interface.
ObjectIdx objectIdx() const { return object_idx_; } ObjectIdx objectIdx() const { return object_idx_; }
@ -353,7 +351,6 @@ protected:
bool is_check_clk_:1; bool is_check_clk_:1;
bool is_constrained_:1; bool is_constrained_:1;
bool has_downstream_clk_pin_:1; bool has_downstream_clk_pin_:1;
bool crpr_path_pruning_disabled_:1;
bool visited1_:1; bool visited1_:1;
bool visited2_:1; bool visited2_:1;

View File

@ -1437,8 +1437,6 @@ protected:
Corner *corner, Corner *corner,
const MinMax *min_max); const MinMax *min_max);
void powerPreamble(); void powerPreamble();
void disableFanoutCrprPruning(Vertex *vertex,
int &fanou);
virtual void replaceCell(Instance *inst, virtual void replaceCell(Instance *inst,
Cell *to_cell, Cell *to_cell,
LibertyCell *to_lib_cell); LibertyCell *to_lib_cell);

View File

@ -1182,7 +1182,6 @@ ArrivalVisitor::visit(Vertex *vertex)
visitFaninPaths(vertex); visitFaninPaths(vertex);
if (crpr_active_ if (crpr_active_
&& search_->crprPathPruningEnabled() && search_->crprPathPruningEnabled()
&& !vertex->crprPathPruningDisabled()
// No crpr for ideal clocks. // No crpr for ideal clocks.
&& tag_bldr_->hasPropagatedClk() && tag_bldr_->hasPropagatedClk()
&& !has_fanin_one_) && !has_fanin_one_)

View File

@ -3200,48 +3200,8 @@ Sta::findRequired(Vertex *vertex)
// Need to include downstream required times if there is fanout. // Need to include downstream required times if there is fanout.
&& !hasFanout(vertex, search_->searchAdj(), graph_)) && !hasFanout(vertex, search_->searchAdj(), graph_))
search_->seedRequired(vertex); search_->seedRequired(vertex);
else { else
search_->findRequireds(vertex->level()); 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 Slack