Run muxpack and muxcover in synth_xilinx
authorEddie Hung <eddie@fpgeh.com>
Thu, 6 Jun 2019 21:43:08 +0000 (14:43 -0700)
committerEddie Hung <eddie@fpgeh.com>
Thu, 6 Jun 2019 21:43:08 +0000 (14:43 -0700)
techlibs/xilinx/cells_map.v
techlibs/xilinx/synth_xilinx.cc

index 4acf04744740800fece3cc1e5c1ff5d999f7b520..8537dc479770374154f5297d166e7668be7c248f 100644 (file)
@@ -250,3 +250,15 @@ module \$__XILINX_MUX_ (A, B, Y);
     end
   endgenerate
 endmodule
+
+module \$_MUX8_ (A, B, C, D, E, F, G, H, S, T, U, Y);
+input A, B, C, D, E, F, G, H, S, T, U;
+output Y;
+  \$__XILINX_MUX_  #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(8), .B_WIDTH(3), .Y_WIDTH(1)) _TECHMAP_REPLACE_ (.A({A,B,C,D,E,F,G,H}), .B({U,T,S}), .Y(Y));
+endmodule
+
+module \$_MUX16_ (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, S, T, U, V, Y);
+input A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, S, T, U, V;
+output Y;
+  \$__XILINX_MUX_  #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(16), .B_WIDTH(3), .Y_WIDTH(1)) _TECHMAP_REPLACE_ (.A({A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P}), .B({V,U,T,S}), .Y(Y));
+endmodule
index 7686f2cbc00e3f5888ec200a0461d05c2ce213ea..a70bb23f1961fc062812a0791f5fe6503b4e8729 100644 (file)
@@ -225,6 +225,9 @@ struct SynthXilinxPass : public ScriptPass
                if (check_label("coarse")) {
                        run("synth -run coarse");
 
+                       if (!nomux || help_mode)
+                               run("muxpack", "(skip if '-nomux')");
+
                        // shregmap -tech xilinx can cope with $shiftx and $mux
                        //   cells for identifying variable-length shift registers,
                        //   so attempt to convert $pmux-es to the former
@@ -286,7 +289,9 @@ struct SynthXilinxPass : public ScriptPass
                }
 
                if (check_label("map_cells")) {
-                       run("techmap -map +/techmap.v -map +/xilinx/cells_map.v -map +/xilinx/ff_map.v ");
+                       if (!nomux || help_mode)
+                               run("muxcover", "(skip if '-nomux')");
+                       run("techmap -map +/techmap.v -map +/xilinx/cells_map.v -map +/xilinx/ff_map.v");
                        run("dffinit -ff FDRE Q INIT -ff FDCE Q INIT -ff FDPE Q INIT -ff FDSE Q INIT "
                                        "-ff FDRE_1 Q INIT -ff FDCE_1 Q INIT -ff FDPE_1 Q INIT -ff FDSE_1 Q INIT");
                        run("clean");