select once
authorEddie Hung <eddie@fpgeh.com>
Thu, 26 Sep 2019 17:15:05 +0000 (10:15 -0700)
committerEddie Hung <eddie@fpgeh.com>
Thu, 26 Sep 2019 17:15:05 +0000 (10:15 -0700)
techlibs/ice40/synth_ice40.cc
techlibs/xilinx/synth_xilinx.cc

index 694782e5b87dd3f7128ad4533ae073d61ebc63c5..52e13bdc278c6ba2410678609653a437a43c6645 100644 (file)
@@ -276,11 +276,13 @@ struct SynthIce40Pass : public ScriptPass
                                run("techmap -map +/mul2dsp.v -map +/ice40/dsp_map.v -D DSP_A_MAXWIDTH=16 -D DSP_B_MAXWIDTH=16 "
                                                "-D DSP_A_MINWIDTH=2 -D DSP_B_MINWIDTH=2 -D DSP_Y_MINWIDTH=11 "
                                                "-D DSP_NAME=$__MUL16X16", "(if -dsp)");
-                               run("opt_expr -fine a:mul2dsp", "        (if -dsp)");
-                               run("wreduce a:mul2dsp", "               (if -dsp)");
-                               run("ice40_dsp", "                       (if -dsp)");
-                               run("setattr -unset mul2dsp a:mul2dsp", "(if -dsp)");
-                               run("chtype -set $mul t:$__soft_mul", "  (if -dsp)");
+                               run("select a:mul2dsp", "              (if -dsp)");
+                               run("opt_expr -fine", "                (if -dsp)");
+                               run("wreduce", "                       (if -dsp)");
+                               run("setattr -unset mul2dsp", "        (if -dsp)");
+                               run("select -clear", "                 (if -dsp)");
+                               run("ice40_dsp", "                     (if -dsp)");
+                               run("chtype -set $mul t:$__soft_mul", "(if -dsp)");
                        }
                        run("alumacc");
                        run("opt");
index b87fa9f6ffbd9ec0e2d738915b33ba3168ed4e45..0445eb7209a9b885aa741a6a5480ce3b7ca9184b 100644 (file)
@@ -346,9 +346,11 @@ struct SynthXilinxPass : public ScriptPass
                                                "-D DSP_A_MINWIDTH=2 -D DSP_B_MINWIDTH=2 " // Blocks Nx1 multipliers
                                                "-D DSP_Y_MINWIDTH=9 " // UG901 suggests small multiplies are those 4x4 and smaller
                                                "-D DSP_SIGNEDONLY=1 -D DSP_NAME=$__MUL25X18");
-                               run("opt_expr -fine a:mul2dsp");
-                               run("wreduce a:mul2dsp");
-                               run("setattr -unset mul2dsp a:mul2dsp");
+                               run("select a:mul2dsp");
+                               run("opt_expr -fine"):
+                               run("wreduce");
+                               run("setattr -unset mul2dsp");
+                               run("select -clear");
                                run("xilinx_dsp");
                                run("chtype -set $mul t:$__soft_mul");
                        }