Error out if -abc9 and -retime specified
authorEddie Hung <eddie@fpgeh.com>
Wed, 10 Jul 2019 19:47:48 +0000 (12:47 -0700)
committerEddie Hung <eddie@fpgeh.com>
Wed, 10 Jul 2019 19:47:48 +0000 (12:47 -0700)
techlibs/ecp5/synth_ecp5.cc
techlibs/ice40/synth_ice40.cc
techlibs/xilinx/synth_xilinx.cc

index 3b0c2ea9ed9fe339d23ad2ff1662acdc00eb9303..9f409ca512c961245becbf96f137eb74c6229bed 100644 (file)
@@ -199,6 +199,9 @@ struct SynthEcp5Pass : public ScriptPass
                if (!design->full_selection())
                        log_cmd_error("This command only operates on fully selected designs!\n");
 
+               if (abc9 && retime)
+                               log_cmd_error("-retime option not currently compatible with -abc9!\n");
+
                log_header(design, "Executing SYNTH_ECP5 pass.\n");
                log_push();
 
index 9dd5d81f7cce839d800841447e5761030b9a7aee..2c75215cbea5e6ff99ffcdf368062f9212635a61 100644 (file)
@@ -227,6 +227,9 @@ struct SynthIce40Pass : public ScriptPass
                if (device_opt != "hx" && device_opt != "lp" && device_opt !="u")
                        log_cmd_error("Invalid or no device specified: '%s'\n", device_opt.c_str());
 
+               if (abc == "abc9" && retime)
+                       log_cmd_error("-retime option not currently compatible with -abc9!\n");
+
                log_header(design, "Executing SYNTH_ICE40 pass.\n");
                log_push();
 
@@ -296,7 +299,7 @@ struct SynthIce40Pass : public ScriptPass
                                run("techmap");
                        else
                                run("techmap -map +/techmap.v -map +/ice40/arith_map.v");
-                       if ((retime || help_mode) && abc != "abc9")
+                       if (retime || help_mode)
                                run(abc + " -dff", "(only if -retime)");
                        run("ice40_opt");
                }
index b7c32d2e052ff020d7acbc8b2e4ee424ed8e5743..22c4a1a1b90c63cdd36f38a2f0dae1d69fb35ffb 100644 (file)
@@ -25,8 +25,8 @@
 USING_YOSYS_NAMESPACE
 PRIVATE_NAMESPACE_BEGIN
 
-#define XC7_WIRE_DELAY "300" // Number with which ABC will map a 6-input gate
-                             // to one LUT6 (instead of a LUT5 + LUT2)
+#define XC7_WIRE_DELAY 300 // Number with which ABC will map a 6-input gate
+                           // to one LUT6 (instead of a LUT5 + LUT2)
 
 struct SynthXilinxPass : public ScriptPass
 {
@@ -195,11 +195,14 @@ struct SynthXilinxPass : public ScriptPass
                extra_args(args, argidx, design);
 
                if (family != "xcup" && family != "xcu" && family != "xc7" && family != "xc6s")
-                       log_cmd_error("Invalid Xilinx -family setting: %s\n", family.c_str());
+                       log_cmd_error("Invalid Xilinx -family setting: '%s'.\n", family.c_str());
 
                if (!design->full_selection())
                        log_cmd_error("This command only operates on fully selected designs!\n");
 
+               if (abc9 && retime)
+                       log_cmd_error("-retime option not currently compatible with -abc9!\n");
+
                log_header(design, "Executing SYNTH_XILINX pass.\n");
                log_push();
 
@@ -297,9 +300,9 @@ struct SynthXilinxPass : public ScriptPass
                                if (family != "xc7")
                                        log_warning("'synth_xilinx -abc9' currently supports '-family xc7' only.\n");
                                if (nowidelut)
-                                       run("abc9 -lut +/xilinx/abc_xc7_nowide.lut -box +/xilinx/abc_xc7.box -W " + std::string(XC7_WIRE_DELAY) + string(retime ? " -dff" : ""));
+                                       run("abc9 -lut +/xilinx/abc_xc7_nowide.lut -box +/xilinx/abc_xc7.box -W " + std::to_string(XC7_WIRE_DELAY));
                                else
-                                       run("abc9 -lut +/xilinx/abc_xc7.lut -box +/xilinx/abc_xc7.box -W " + std::string(XC7_WIRE_DELAY) + string(retime ? " -dff" : ""));
+                                       run("abc9 -lut +/xilinx/abc_xc7.lut -box +/xilinx/abc_xc7.box -W " + std::to_string(XC7_WIRE_DELAY));
                        }
                        else {
                                if (nowidelut)