machxo2: Add -noiopad option to synth_machxo2.
authorWilliam D. Jones <thor0505@comcast.net>
Fri, 27 Nov 2020 02:23:13 +0000 (21:23 -0500)
committerMarcelina Koƛcielnicka <mwk@0x04.net>
Tue, 23 Feb 2021 16:39:58 +0000 (17:39 +0100)
techlibs/machxo2/synth_machxo2.cc

index 794f25d0afc6db9676ae6fff8a3ab7b46b674d3f..c9ab23426780db3592776fc7c805f98986c62f43 100644 (file)
@@ -60,6 +60,9 @@ struct SynthMachXO2Pass : public ScriptPass
                log("    -noflatten\n");
                log("        do not flatten design before synthesis\n");
                log("\n");
+               log("    -noiopad\n");
+               log("        do not insert IO buffers\n");
+               log("\n");
                log("    -vpr\n");
                log("        generate an output netlist (and BLIF file) suitable for VPR\n");
                log("        (this feature is experimental and incomplete)\n");
@@ -71,7 +74,7 @@ struct SynthMachXO2Pass : public ScriptPass
        }
 
        string top_opt, blif_file, edif_file, json_file;
-       bool flatten, vpr;
+       bool flatten, vpr, noiopad;
 
        void clear_flags() override
        {
@@ -81,6 +84,7 @@ struct SynthMachXO2Pass : public ScriptPass
                json_file = "";
                flatten = true;
                vpr = false;
+               noiopad = false;
        }
 
        void execute(std::vector<std::string> args, RTLIL::Design *design) override
@@ -123,6 +127,10 @@ struct SynthMachXO2Pass : public ScriptPass
                                flatten = false;
                                continue;
                        }
+                       if (args[argidx] == "-noiopad") {
+                               noiopad = true;
+                               continue;
+                       }
                        if (args[argidx] == "-vpr") {
                                vpr = true;
                                continue;
@@ -175,7 +183,8 @@ struct SynthMachXO2Pass : public ScriptPass
 
                if (check_label("map_ios"))
                {
-                       run("iopadmap -bits -outpad $__FACADE_OUTPAD I:O -inpad $__FACADE_INPAD O:I -toutpad $__FACADE_TOUTPAD OE:I:O -tinoutpad $__FACADE_TINOUTPAD OE:O:I:B A:top");
+                       if (!noiopad || help_mode)
+                               run("iopadmap -bits -outpad $__FACADE_OUTPAD I:O -inpad $__FACADE_INPAD O:I -toutpad $__FACADE_TOUTPAD OE:I:O -tinoutpad $__FACADE_TINOUTPAD OE:O:I:B A:top", "(skip if '-noiopad')");
                }
 
                if (check_label("map_ffs"))