std::string top_opt, edif_file, blif_file, family;
        bool flatten, retime, vpr, ise, noiopad, noclkbuf, nobram, nolutram, nosrl, nocarry, nowidelut, nodsp, uram;
-       bool abc9, dff_mode;
+       bool abc9, dff;
        bool flatten_before_abc;
        int widemux;
        int lut_size;
                nodsp = false;
                uram = false;
                abc9 = false;
-               dff_mode = false;
+               dff = false;
                flatten_before_abc = false;
                widemux = 0;
                lut_size = 6;
                                continue;
                        }
                        if (args[argidx] == "-retime") {
-                               dff_mode = true;
+                               dff = true;
                                retime = true;
                                continue;
                        }
                                continue;
                        }
                        if (args[argidx] == "-dff") {
-                               dff_mode = true;
+                               dff = true;
                                continue;
                        }
                        break;
                        run("clean");
                }
 
-               if (check_label("map_ffs")) {
+               if (check_label("map_ffs", "('-abc9' only)")) {
                        if (abc9 || help_mode) {
-                               run("techmap -map " + ff_map_file, "('-abc9' only)");
+                               if (dff || help_mode)
+                                       run("zinit -all", "('-dff' only)");
+                               run("techmap -map " + ff_map_file);
                        }
                }
 
                                }
                                if (nowidelut)
                                        abc9_opts += stringf(" -maxlut %d", lut_size);
-                               if (dff_mode)
+                               if (dff)
                                        abc9_opts += " -dff";
                                run("abc9" + abc9_opts);
                                run("techmap -map +/xilinx/abc9_unmap.v");
                                        else
                                                abc_opts += " -luts 2:2,3,6:5,10,20,40";
                                }
-                               if (dff_mode)
+                               if (dff)
                                        abc_opts += " -dff";
                                if (retime)
                                        abc_opts += " -D 1";