Prefer non-inverted clocks in dfflibmap
authorClifford Wolf <clifford@clifford.at>
Thu, 19 Dec 2013 12:21:57 +0000 (13:21 +0100)
committerClifford Wolf <clifford@clifford.at>
Thu, 19 Dec 2013 12:21:57 +0000 (13:21 +0100)
passes/techmap/dfflibmap.cc

index 0324afa84809788fc9e13cd836df7cdc14d086c3..49b98059617c93d9c337a9f615b0f906fc237b19 100644 (file)
@@ -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_");