aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2019-06-21 18:12:07 -0700
committerEddie Hung <eddie@fpgeh.com>2019-06-21 18:12:07 -0700
commit39e0e006d5a6b1ae45d95d75895284e3c48f47d7 (patch)
tree6338cde26d2728f833a199345c471a08d4787feb /techlibs
parent6c2cb519965ac9b4057a90cd46f474c092967be2 (diff)
downloadyosys-39e0e006d5a6b1ae45d95d75895284e3c48f47d7.tar.gz
yosys-39e0e006d5a6b1ae45d95d75895284e3c48f47d7.tar.bz2
yosys-39e0e006d5a6b1ae45d95d75895284e3c48f47d7.zip
Fix wreduce call (!!!), tweak muxcover costs
Diffstat (limited to 'techlibs')
-rw-r--r--techlibs/xilinx/synth_xilinx.cc11
1 files changed, 6 insertions, 5 deletions
diff --git a/techlibs/xilinx/synth_xilinx.cc b/techlibs/xilinx/synth_xilinx.cc
index 882ebe439..9724dff94 100644
--- a/techlibs/xilinx/synth_xilinx.cc
+++ b/techlibs/xilinx/synth_xilinx.cc
@@ -229,7 +229,7 @@ struct SynthXilinxPass : public ScriptPass
if (help_mode)
run("wreduce [c:* t:$mux %d]", "(no selection if -nomux)");
else
- run("wreduce" + nomux ? "" : " c:* t:$mux %d");
+ run("wreduce" + std::string(nomux ? "" : " c:* t:$mux %d"));
run("peepopt");
run("opt_clean");
run("alumacc");
@@ -271,10 +271,11 @@ struct SynthXilinxPass : public ScriptPass
run("dffsr2dff");
run("dff2dffe");
if (!nomux || help_mode) {
- run("simplemap t:$mux", " (skip if -nomux)");
- // FIXME: Must specify mux4, even if we don't need it,
- // otherwise it will use mux8 as mux4
- run("muxcover -mux4=150 -mux8=200 -mux16=250 -dmux=0", "(skip if -nomux)");
+ run("simplemap t:$mux", " (skip if -nomux)");
+ // NB: Cost of mux2 is 100; mux8 should cost between 3 and 4
+ // of those so that 4:1 muxes and below are implemented
+ // out of mux2s
+ run("muxcover -mux8=350 -mux16=400 -dmux=0", "(skip if -nomux)");
}
run("opt -full");