diff --git a/search/PathEnum.cc b/search/PathEnum.cc index a6cd97da..0d010ddb 100644 --- a/search/PathEnum.cc +++ b/search/PathEnum.cc @@ -506,16 +506,16 @@ PathEnum::makeDiversions(PathEnd *path_end, Path *prev_path = path->prevPath(); TimingArc *prev_arc = path->prevArc(this); PathEnumFaninVisitor fanin_visitor(path_end, path, unique_pins_, this); - while (prev_path - // Do not enumerate paths in the clk network. - && !path->isClock(this)) { + while (prev_path) { // Fanin visitor does all the work. // While visiting the fanins the fanin_visitor finds the // previous path and arc as well as diversions. fanin_visitor.visitFaninPathsThru(path, prev_path->vertex(this), prev_arc); // Do not enumerate beyond latch D to Q edges. // This breaks latch loop paths. - if (prev_arc->role() == TimingRole::latchDtoQ()) + const TimingRole *prev_role = prev_arc->role(); + if (prev_role == TimingRole::latchDtoQ() + || prev_role == TimingRole::regClkToQ()) break; path = prev_path; prev_path = path->prevPath();