Harmonize BRAM/LUTRAM descriptions across all of Yosys.
[yosys.git] / techlibs / efinix / synth_efinix.cc
index d64491ca83d7b84f9b8c6135f5712da98390f44a..3e52743855afc02f05d4299bc714563ded5af5b8 100644 (file)
@@ -60,6 +60,9 @@ struct SynthEfinixPass : public ScriptPass
                log("    -retime\n");
                log("        run 'abc' with -dff option\n");
                log("\n");
+               log("    -nobram\n");
+               log("        do not use EFX_RAM_5K cells in output netlist\n");
+               log("\n");
                log("\n");
                log("The following commands are executed by this synthesis command:\n");
                help_script();
@@ -67,7 +70,7 @@ struct SynthEfinixPass : public ScriptPass
        }
 
        string top_opt, edif_file, json_file;
-       bool flatten, retime;
+       bool flatten, retime, nobram;
 
        void clear_flags() YS_OVERRIDE
        {
@@ -76,6 +79,7 @@ struct SynthEfinixPass : public ScriptPass
                json_file = "";
                flatten = true;
                retime = false;
+               nobram = false;
        }
 
        void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
@@ -114,6 +118,10 @@ struct SynthEfinixPass : public ScriptPass
                                retime = true;
                                continue;
                        }
+                       if (args[argidx] == "-nobram") {
+                               nobram = true;
+                               continue;
+                       }
                        break;
                }
                extra_args(args, argidx, design);
@@ -150,18 +158,22 @@ struct SynthEfinixPass : public ScriptPass
                        run("synth -run coarse");
                }
 
-               if (check_label("map_bram", "(skip if -nobram)"))
+               if (!nobram || check_label("map_bram", "(skip if -nobram)"))
                {
-                       run("memory_bram -rules +/efinix/bram.txt");
+                       run("memory_bram -rules +/efinix/brams.txt");
                        run("techmap -map +/efinix/brams_map.v");
-                       run("efinix_determine_init");
+                       run("setundef -zero -params t:EFX_RAM_5K");
                }
 
-               if (check_label("fine"))
+               if (check_label("map_ffram"))
                {
                        run("opt -fast -mux_undef -undriven -fine");
                        run("memory_map");
                        run("opt -undriven -fine");
+               }
+
+               if (check_label("map_gates"))
+               {
                        run("techmap -map +/techmap.v -map +/efinix/arith_map.v");
                        if (retime || help_mode)
                                run("abc -dff", "(only if -retime)");
@@ -194,7 +206,7 @@ struct SynthEfinixPass : public ScriptPass
                        run("efinix_fixcarry");
                        run("clean");
                }
-               
+
                if (check_label("check"))
                {
                        run("hierarchy -check");