Add "synth_sf2 -vlog", fix "synth_sf2 -edif"
authorClifford Wolf <clifford@clifford.at>
Thu, 17 Jan 2019 12:33:45 +0000 (13:33 +0100)
committerClifford Wolf <clifford@clifford.at>
Thu, 17 Jan 2019 12:33:45 +0000 (13:33 +0100)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
techlibs/sf2/synth_sf2.cc

index 62b3cd0e227af81a1c09b5c69dc42b4c59b62047..6828a429842e2a1310cdf558ca8d4915b0b2fac2 100644 (file)
@@ -44,6 +44,10 @@ struct SynthSf2Pass : public ScriptPass
                log("        write the design to the specified EDIF file. writing of an output file\n");
                log("        is omitted if this parameter is not specified.\n");
                log("\n");
+               log("    -vlog <file>\n");
+               log("        write the design to the specified Verilog file. writing of an output file\n");
+               log("        is omitted if this parameter is not specified.\n");
+               log("\n");
                log("    -json <file>\n");
                log("        write the design to the specified JSON file. writing of an output file\n");
                log("        is omitted if this parameter is not specified.\n");
@@ -65,13 +69,14 @@ struct SynthSf2Pass : public ScriptPass
                log("\n");
        }
 
-       string top_opt, edif_file, json_file;
+       string top_opt, edif_file, vlog_file, json_file;
        bool flatten, retime;
 
        void clear_flags() YS_OVERRIDE
        {
                top_opt = "-auto-top";
                edif_file = "";
+               vlog_file = "";
                json_file = "";
                flatten = true;
                retime = false;
@@ -93,6 +98,10 @@ struct SynthSf2Pass : public ScriptPass
                                edif_file = args[++argidx];
                                continue;
                        }
+                       if (args[argidx] == "-vlog" && argidx+1 < args.size()) {
+                               vlog_file = args[++argidx];
+                               continue;
+                       }
                        if (args[argidx] == "-json" && argidx+1 < args.size()) {
                                json_file = args[++argidx];
                                continue;
@@ -192,7 +201,13 @@ struct SynthSf2Pass : public ScriptPass
                if (check_label("edif"))
                {
                        if (!edif_file.empty() || help_mode)
-                               run(stringf("write_edif %s", help_mode ? "<file-name>" : edif_file.c_str()));
+                               run(stringf("write_edif -gndvccy %s", help_mode ? "<file-name>" : edif_file.c_str()));
+               }
+
+               if (check_label("vlog"))
+               {
+                       if (!vlog_file.empty() || help_mode)
+                               run(stringf("write_verilog %s", help_mode ? "<file-name>" : vlog_file.c_str()));
                }
 
                if (check_label("json"))