diff --git a/passes/techmap/dfflibmap.cc b/passes/techmap/dfflibmap.cc index 0324afa84..49b980596 100644 --- a/passes/techmap/dfflibmap.cc +++ b/passes/techmap/dfflibmap.cc @@ -473,17 +473,19 @@ struct DfflibmapPass : public Pass { find_cell_sr(libparser.ast, "$_DFFSR_PPN_", true, true, false); find_cell_sr(libparser.ast, "$_DFFSR_PPP_", true, true, true); - bool keep_running = true; - while (keep_running) { + bool keep_running; + do { keep_running = false; - keep_running |= expand_cellmap("$_DFF_*_", "C"); - keep_running |= expand_cellmap("$_DFF_*??_", "C"); keep_running |= expand_cellmap("$_DFF_?*?_", "R"); keep_running |= expand_cellmap("$_DFF_??*_", "DQ"); - keep_running |= expand_cellmap("$_DFFSR_*??_", "C"); keep_running |= expand_cellmap("$_DFFSR_?*?_", "S"); keep_running |= expand_cellmap("$_DFFSR_??*_", "R"); - } + } while (keep_running); + do { + keep_running |= expand_cellmap("$_DFF_*_", "C"); + keep_running |= expand_cellmap("$_DFF_*??_", "C"); + keep_running |= expand_cellmap("$_DFFSR_*??_", "C"); + } while (keep_running); map_sr_to_arst("$_DFFSR_NNN_", "$_DFF_NN0_"); map_sr_to_arst("$_DFFSR_NNN_", "$_DFF_NN1_");