diff options
author | Miodrag Milanovic <mmicko@gmail.com> | 2023-03-17 16:15:43 +0100 |
---|---|---|
committer | myrtle <gatecat@ds0.me> | 2023-03-20 09:17:22 +0100 |
commit | 10589c57bfd0e5dd29c739e9d9db044cdb8ad8ed (patch) | |
tree | 5ece469095b40c52d0b588a31b57df3643ee45ce /techlibs/ecp5 | |
parent | ceef00c35e6417ba480ae40c3fe919b50e18e1be (diff) | |
download | yosys-10589c57bfd0e5dd29c739e9d9db044cdb8ad8ed.tar.gz yosys-10589c57bfd0e5dd29c739e9d9db044cdb8ad8ed.tar.bz2 yosys-10589c57bfd0e5dd29c739e9d9db044cdb8ad8ed.zip |
insert IO buffers for ECP5, off by default
Diffstat (limited to 'techlibs/ecp5')
-rw-r--r-- | techlibs/ecp5/synth_ecp5.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/techlibs/ecp5/synth_ecp5.cc b/techlibs/ecp5/synth_ecp5.cc index f2dc534f9..82e234868 100644 --- a/techlibs/ecp5/synth_ecp5.cc +++ b/techlibs/ecp5/synth_ecp5.cc @@ -100,6 +100,9 @@ struct SynthEcp5Pass : public ScriptPass log(" generate an output netlist (and BLIF file) suitable for VPR\n"); log(" (this feature is experimental and incomplete)\n"); log("\n"); + log(" -iopad\n"); + log(" insert IO buffers\n"); + log("\n"); log(" -nodsp\n"); log(" do not map multipliers to MULT18X18D\n"); log("\n"); @@ -115,7 +118,7 @@ struct SynthEcp5Pass : public ScriptPass } string top_opt, blif_file, edif_file, json_file; - bool noccu2, nodffe, nobram, nolutram, nowidelut, asyncprld, flatten, dff, retime, abc2, abc9, nodsp, vpr, no_rw_check; + bool noccu2, nodffe, nobram, nolutram, nowidelut, asyncprld, flatten, dff, retime, abc2, abc9, iopad, nodsp, vpr, no_rw_check; void clear_flags() override { @@ -135,6 +138,7 @@ struct SynthEcp5Pass : public ScriptPass abc2 = false; vpr = false; abc9 = false; + iopad = false; nodsp = false; no_rw_check = false; } @@ -223,6 +227,10 @@ struct SynthEcp5Pass : public ScriptPass abc9 = true; continue; } + if (args[argidx] == "-iopad") { + iopad = true; + continue; + } if (args[argidx] == "-nodsp") { nodsp = true; continue; @@ -319,6 +327,11 @@ struct SynthEcp5Pass : public ScriptPass run("techmap"); else run("techmap -map +/techmap.v -map +/ecp5/arith_map.v"); + if (help_mode || iopad) { + run("iopadmap -bits -outpad OB I:O -inpad IB O:I -toutpad OBZ ~T:I:O -tinoutpad BB ~T:O:I:B A:top", "(only if '-iopad')"); + run("attrmvcp -attr src -attr LOC t:OB %x:+[O] t:OBZ %x:+[O] t:BB %x:+[B]"); + run("attrmvcp -attr src -attr LOC -driven t:IB %x:+[I]"); + } run("opt -fast"); if (retime || help_mode) run("abc -dff -D 1", "(only if -retime)"); |