From dd7782e10bee79f63fc65ef5f0511e4c5c6612a2 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Thu, 7 Dec 2023 10:27:45 -0700 Subject: [PATCH] report_checks hang in latch loop Signed-off-by: James Cherry --- search/Path.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/search/Path.cc b/search/Path.cc index a09309ab..fa3756e6 100644 --- a/search/Path.cc +++ b/search/Path.cc @@ -16,6 +16,7 @@ #include "Path.hh" +#include "TimingRole.hh" #include "TimingArc.hh" #include "Network.hh" #include "Graph.hh" @@ -339,11 +340,15 @@ Path::cmpAll(const Path *path1, if (cmp != 0) return cmp; - p1.prevPath(sta, p1); - p2.prevPath(sta, p2); + TimingArc *prev_arc1, *prev_arc2; + p1.prevPath(sta, p1, prev_arc1); + p2.prevPath(sta, p2, prev_arc2); if (equal(&p1, path1, sta)) // Equivalent latch loops. return 0; + if ((prev_arc1 && prev_arc1->role()->isLatchDtoQ()) + || (prev_arc2 && prev_arc2->role()->isLatchDtoQ())) + break; } if (p1.isNull() && p2.isNull()) return 0;