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->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
{

View File

@ -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;

View File

@ -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);

View File

@ -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_)

View File

@ -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