aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/xilinx
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2019-06-06 14:43:08 -0700
committerEddie Hung <eddie@fpgeh.com>2019-06-06 14:43:08 -0700
commita8c49168fb1e5e665e126c65dc454183a6d7826b (patch)
tree7cda5e7a9046a7fd024888912e62d0b7d9a7be75 /techlibs/xilinx
parent7166dbe418420bf8f0696b21bff22d5f66a4cc8e (diff)
downloadyosys-a8c49168fb1e5e665e126c65dc454183a6d7826b.tar.gz
yosys-a8c49168fb1e5e665e126c65dc454183a6d7826b.tar.bz2
yosys-a8c49168fb1e5e665e126c65dc454183a6d7826b.zip
Run muxpack and muxcover in synth_xilinx
Diffstat (limited to 'techlibs/xilinx')
-rw-r--r--techlibs/xilinx/cells_map.v12
-rw-r--r--techlibs/xilinx/synth_xilinx.cc7
2 files changed, 18 insertions, 1 deletions
diff --git a/techlibs/xilinx/cells_map.v b/techlibs/xilinx/cells_map.v
index 4acf04744..8537dc479 100644
--- a/techlibs/xilinx/cells_map.v
+++ b/techlibs/xilinx/cells_map.v
@@ -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
diff --git a/techlibs/xilinx/synth_xilinx.cc b/techlibs/xilinx/synth_xilinx.cc
index 7686f2cbc..a70bb23f1 100644
--- a/techlibs/xilinx/synth_xilinx.cc
+++ b/techlibs/xilinx/synth_xilinx.cc
@@ -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");