Sta::vertexSlack(endpoint) speedup

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2025-10-23 08:56:22 -07:00
parent 8f8f397610
commit 7539c7372d
2 changed files with 25 additions and 18 deletions

View File

@ -1074,6 +1074,7 @@ Search::findArrivals1(Level level)
Stats stats(debug_, report_); Stats stats(debug_, report_);
int arrival_count = arrival_iter_->visitParallel(level, arrival_visitor_); int arrival_count = arrival_iter_->visitParallel(level, arrival_visitor_);
deleteTagsPrev(); deleteTagsPrev();
if (arrival_count > 0)
deleteUnusedTagGroups(); deleteUnusedTagGroups();
stats.report("Find arrivals"); stats.report("Find arrivals");
if (arrival_iter_->empty() if (arrival_iter_->empty()

View File

@ -3196,6 +3196,11 @@ Sta::findRequired(Vertex *vertex)
{ {
searchPreamble(); searchPreamble();
search_->findAllArrivals(); search_->findAllArrivals();
if (search_->isEndpoint(vertex)
// Need to include downstream required times if there is fanout.
&& !hasFanout(vertex, search_->searchAdj(), graph_))
search_->seedRequired(vertex);
else {
search_->findRequireds(vertex->level()); search_->findRequireds(vertex->level());
if (variables_->crprEnabled() if (variables_->crprEnabled()
&& search_->crprPathPruningEnabled() && search_->crprPathPruningEnabled()
@ -3215,6 +3220,7 @@ Sta::findRequired(Vertex *vertex)
search_->findArrivals(); search_->findArrivals();
search_->findRequireds(vertex->level()); search_->findRequireds(vertex->level());
} }
}
} }
void void