synth to take -abc9 argument
authorEddie Hung <eddieh@ece.ubc.ca>
Wed, 20 Feb 2019 19:08:49 +0000 (11:08 -0800)
committerEddie Hung <eddieh@ece.ubc.ca>
Wed, 20 Feb 2019 19:08:49 +0000 (11:08 -0800)
techlibs/common/synth.cc

index ccfa76e029844ed6c5812320f5e34e1267df2516..349605f8c2152d10512793bd3eec55f10748d088 100644 (file)
@@ -75,13 +75,16 @@ struct SynthPass : public ScriptPass
                log("        from label is synonymous to 'begin', and empty to label is\n");
                log("        synonymous to the end of the command list.\n");
                log("\n");
+               log("    -abc9\n");
+               log("        use abc9 instead of abc\n");
+               log("\n");
                log("\n");
                log("The following commands are executed by this synthesis command:\n");
                help_script();
                log("\n");
        }
 
-       string top_module, fsm_opts, memory_opts;
+       string top_module, fsm_opts, memory_opts, abc;
        bool autotop, flatten, noalumacc, nofsm, noabc, noshare;
        int lut;
 
@@ -98,6 +101,7 @@ struct SynthPass : public ScriptPass
                nofsm = false;
                noabc = false;
                noshare = false;
+               abc = "abc";
        }
 
        void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
@@ -159,6 +163,10 @@ struct SynthPass : public ScriptPass
                                noshare = true;
                                continue;
                        }
+                       if (args[argidx] == "-abc9") {
+                               abc = "abc9";
+                               continue;
+                       }
                        break;
                }
                extra_args(args, argidx, design);
@@ -239,15 +247,15 @@ struct SynthPass : public ScriptPass
                #ifdef YOSYS_ENABLE_ABC
                                if (help_mode)
                                {
-                                       run("abc -fast", "       (unless -noabc, unless -lut)");
-                                       run("abc -fast -lut k", "(unless -noabc, if -lut)");
+                                       run(abc + " -fast", "       (unless -noabc, unless -lut)");
+                                       run(abc + " -fast -lut k", "(unless -noabc, if -lut)");
                                }
                                else
                                {
                                        if (lut)
-                                               run(stringf("abc -fast -lut %d", lut));
+                                               run(stringf("%s -fast -lut %d", abc.c_str(), lut));
                                        else
-                                               run("abc -fast");
+                                               run(abc + " -fast");
                                }
                                run("opt -fast", "       (unless -noabc)");
                #endif