Add comment for why opt_expr is necessary
authorEddie Hung <eddie@fpgeh.com>
Tue, 10 Sep 2019 21:11:56 +0000 (14:11 -0700)
committerEddie Hung <eddie@fpgeh.com>
Tue, 10 Sep 2019 21:11:56 +0000 (14:11 -0700)
techlibs/xilinx/synth_xilinx.cc

index 2cf0bd4f969a13203ae0dc766c7a202f93366ad5..c99b779051c3707e8dc7e9da5be39deca48a822c 100644 (file)
@@ -325,6 +325,8 @@ struct SynthXilinxPass : public ScriptPass
                        if (!nodsp || help_mode) {
                                // NB: Xilinx multipliers are signed only
                                run("techmap -map +/mul2dsp.v -map +/xilinx/dsp_map.v -D DSP_A_MAXWIDTH=25 -D DSP_A_MAXWIDTH_PARTIAL=18 -D DSP_B_MAXWIDTH=18 -D DSP_SIGNEDONLY=1 -D DSP_NAME=$__MUL25X18", "(skip if '-nodsp')");
+                               // Necessary for optimising away $shl cells, as well as $add cells
+                               //   that have inputs with 1'b0 LSBs
                                run("opt_expr -fine", "                 (skip if '-nodsp')");
                                run("wreduce", "                        (skip if '-nodsp')");
                                run("xilinx_dsp", "                     (skip if '-nodsp')");