Make -nordff the default in "prep"
authorClifford Wolf <clifford@clifford.at>
Wed, 30 May 2018 11:17:09 +0000 (13:17 +0200)
committerClifford Wolf <clifford@clifford.at>
Wed, 30 May 2018 11:17:09 +0000 (13:17 +0200)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
techlibs/common/prep.cc

index 3dfc60383ca0842116f2f1c63b45f83b258e454d..cc977f97edeed05b63b66370c4ac8d6c63f9bff1 100644 (file)
@@ -55,13 +55,14 @@ struct PrepPass : public ScriptPass
                log("\n");
                log("    -memx\n");
                log("        simulate verilog simulation behavior for out-of-bounds memory accesses\n");
-               log("        using the 'memory_memx' pass. This option implies -nordff.\n");
+               log("        using the 'memory_memx' pass.\n");
                log("\n");
                log("    -nomem\n");
                log("        do not run any of the memory_* passes\n");
                log("\n");
-               log("    -nordff\n");
-               log("        passed to 'memory_dff'. prohibits merging of FFs into memory read ports\n");
+               log("    -rdff\n");
+               log("        do not pass -nordff to 'memory_dff'. This enables merging of FFs into\n");
+               log("        memory read ports.\n");
                log("\n");
                log("    -nokeepdc\n");
                log("        do not call opt_* with -keepdc\n");
@@ -77,13 +78,12 @@ struct PrepPass : public ScriptPass
                log("\n");
        }
 
-       string top_module, fsm_opts, memory_opts;
-       bool autotop, flatten, ifxmode, memxmode, nomemmode, nokeepdc;
+       string top_module, fsm_opts;
+       bool autotop, flatten, ifxmode, memxmode, nomemmode, nokeepdc, nordff;
 
        virtual void clear_flags() YS_OVERRIDE
        {
                top_module.clear();
-               memory_opts.clear();
 
                autotop = false;
                flatten = false;
@@ -91,6 +91,7 @@ struct PrepPass : public ScriptPass
                memxmode = false;
                nomemmode = false;
                nokeepdc = false;
+               nordff = true;
        }
 
        virtual void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
@@ -129,7 +130,6 @@ struct PrepPass : public ScriptPass
                        }
                        if (args[argidx] == "-memx") {
                                memxmode = true;
-                               memory_opts += " -nordff";
                                continue;
                        }
                        if (args[argidx] == "-nomem") {
@@ -137,7 +137,11 @@ struct PrepPass : public ScriptPass
                                continue;
                        }
                        if (args[argidx] == "-nordff") {
-                               memory_opts += " -nordff";
+                               nordff = true;
+                               continue;
+                       }
+                       if (args[argidx] == "-rdff") {
+                               nordff = false;
                                continue;
                        }
                        if (args[argidx] == "-nokeepdc") {
@@ -196,7 +200,7 @@ struct PrepPass : public ScriptPass
                                        run(memxmode ? "wreduce -memx" : "wreduce");
                        }
                        if (!nomemmode) {
-                               run("memory_dff" + (help_mode ? " [-nordff]" : memory_opts));
+                               run(string("memory_dff") + (help_mode ? " [-nordff]" : nordff ? " -nordff" : ""));
                                if (help_mode || memxmode)
                                        run("memory_memx", "(if -memx)");
                                run("opt_clean");