aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2019-06-21 11:12:32 -0700
committerEddie Hung <eddie@fpgeh.com>2019-06-21 11:12:32 -0700
commitdd22edcd28f2ef9411dde9a941f1fefe05d7bff1 (patch)
tree3c9f2c5ebb36631312c0bdc82d59d5f385268881 /techlibs
parent9edde91c26e2f49f80e7f30b6c330bd50189ff05 (diff)
downloadyosys-dd22edcd28f2ef9411dde9a941f1fefe05d7bff1.tar.gz
yosys-dd22edcd28f2ef9411dde9a941f1fefe05d7bff1.tar.bz2
yosys-dd22edcd28f2ef9411dde9a941f1fefe05d7bff1.zip
Expand synth -coarse without wreduce, move muxcover
Diffstat (limited to 'techlibs')
-rw-r--r--techlibs/xilinx/synth_xilinx.cc36
1 files changed, 24 insertions, 12 deletions
diff --git a/techlibs/xilinx/synth_xilinx.cc b/techlibs/xilinx/synth_xilinx.cc
index f1e887df8..ede2bda10 100644
--- a/techlibs/xilinx/synth_xilinx.cc
+++ b/techlibs/xilinx/synth_xilinx.cc
@@ -218,15 +218,25 @@ struct SynthXilinxPass : public ScriptPass
run(stringf("hierarchy -check %s", top_opt.c_str()));
}
- if (check_label("flatten", "(with '-flatten' only)")) {
- if (flatten || help_mode) {
- run("proc");
- run("flatten");
- }
- }
-
if (check_label("coarse")) {
- run("synth -run coarse");
+ run("proc");
+ if (flatten || help_mode)
+ run("flatten", "(with -flatten only)");
+ run("opt_expr");
+ run("opt_clean");
+ run("check");
+ run("opt");
+ // FIXME
+ //run("wreduce");
+ run("peepopt");
+ run("opt_clean");
+ run("alumacc");
+ run("share");
+ run("opt");
+ run("fsm");
+ run("opt -fast");
+ run("memory -nomap");
+ run("opt_clean");
//if (!nomux || help_mode)
// run("muxpack", "(skip if '-nomux')");
@@ -259,16 +269,20 @@ struct SynthXilinxPass : public ScriptPass
}
if (check_label("fine")) {
- run("opt -fast -full");
+ run("opt -fast");
run("memory_map");
run("dffsr2dff");
run("dff2dffe");
+ if (!nomux || help_mode) {
+ run("simplemap t:$mux", " (skip if -nomux)");
+ run("muxcover -mux4=150 -mux8=200 -mux16=250 -dmux=0", "(skip if -nomux)");
+ }
run("opt -full");
if (!nosrl || help_mode) {
// shregmap operates on bit-level flops, not word-level,
// so break those down here
- run("simplemap t:$dff t:$dffe", "(skip if '-nosrl')");
+ run("simplemap t:$dff t:$dffe", " (skip if '-nosrl')");
// shregmap with '-tech xilinx' infers variable length shift regs
run("shregmap -tech xilinx -minlen 3", "(skip if '-nosrl')");
}
@@ -292,8 +306,6 @@ struct SynthXilinxPass : public ScriptPass
}
if (check_label("map_cells")) {
- if (!nomux || help_mode)
- run("muxcover -mux8 -mux16", "(skip if '-nomux')");
run("techmap -map +/techmap.v -map +/xilinx/cells_map.v");
run("clean");
}