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;