mirror of
https://github.com/The-OpenROAD-Project/OpenSTA.git
synced 2026-08-22 05:57:30 +02:00
findRequired(vertex) rm crpr disable
Signed-off-by: James Cherry <[email protected]>
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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_)
|
||||
|
||||
+1
-41
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user