path enum diversion slack limit

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2025-04-23 16:54:23 -07:00
parent cba0cf5cc4
commit 60fadc2771
1 changed files with 6 additions and 1 deletions

View File

@ -354,7 +354,12 @@ PathEnumFaninVisitor::visitFromToPath(const Pin *,
makeDivertedPathEnd(from_path, edge, arc, div_end, after_div_copy);
if (div_end) {
// Only enumerate paths with greater slack.
if (div_end->slack(this) >= (path_end_slack_ * (1.0-.001))) {
// fuzz for difference in updatePathHeadDelays and accumulated arrivals.
float fuzz = .001;
float slack_limit = path_end_slack_ > 0
? path_end_slack_ * (1.0 - fuzz)
: path_end_slack_ * (1.0 + fuzz);
if (delayGreaterEqual(div_end->slack(this), slack_limit, this)) {
reportDiversion(edge, arc, from_path);
path_enum_->makeDiversion(div_end, after_div_copy);
visited_fanins_.emplace(from_vertex, arc);