aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2019-05-02 11:35:57 -0700
committerEddie Hung <eddie@fpgeh.com>2019-05-02 11:35:57 -0700
commitd80445e0492c67b63435880b3bca4ccbf6f3db43 (patch)
treefe883b42cbb225dbb02a6d82ac3073bb90d5b860
parent8829cba9016fb43ba393eeff887e7788abaec242 (diff)
downloadyosys-d80445e0492c67b63435880b3bca4ccbf6f3db43.tar.gz
yosys-d80445e0492c67b63435880b3bca4ccbf6f3db43.tar.bz2
yosys-d80445e0492c67b63435880b3bca4ccbf6f3db43.zip
Use new peepopt from #969
-rw-r--r--techlibs/xilinx/synth_xilinx.cc25
1 files changed, 15 insertions, 10 deletions
diff --git a/techlibs/xilinx/synth_xilinx.cc b/techlibs/xilinx/synth_xilinx.cc
index 7d7a05616..a1c4acf7e 100644
--- a/techlibs/xilinx/synth_xilinx.cc
+++ b/techlibs/xilinx/synth_xilinx.cc
@@ -211,6 +211,18 @@ struct SynthXilinxPass : public ScriptPass
if (check_label("coarse")) {
run("synth -run coarse");
+
+ // 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
+ // Also: wide multiplexer inference benefits from this too
+ if ((!nosrl && !nomux) || help_mode)
+ run("pmux2shiftx", "(skip if '-nosrl' and '-nomux')");
+
+ // Run a number of peephole optimisations, including one
+ // that optimises $mul cells driving $shiftx's B input
+ // and that aids wide mux analysis
+ run("peepopt");
}
if (check_label("bram", "(skip if '-nobram')")) {
@@ -228,13 +240,6 @@ struct SynthXilinxPass : public ScriptPass
}
if (check_label("fine")) {
- // 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
- // Also: wide multiplexer inference benefits from this too
- if ((!nosrl && !nomux) || help_mode)
- run("pmux2shiftx", "(skip if '-nosrl' and '-nomux')");
-
run("opt -fast -full");
run("memory_map");
run("dffsr2dff");
@@ -246,6 +251,9 @@ struct SynthXilinxPass : public ScriptPass
else if (!nocarry || help_mode)
run("techmap -map +/xilinx/arith_map.v", "(skip if '-nocarry')");
+ if (!nomux || help_mode)
+ run("techmap -map +/xilinx/cells_map.v");
+
if (!nosrl || help_mode) {
// shregmap operates on bit-level flops, not word-level,
// so break those down here
@@ -254,9 +262,6 @@ struct SynthXilinxPass : public ScriptPass
run("shregmap -tech xilinx -minlen 3", "(skip if '-nosrl')");
}
- if (!nomux || help_mode)
- run("techmap -map +/xilinx/cells_map.v");
-
run("techmap");
run("opt -fast");
}