aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/gowin
diff options
context:
space:
mode:
authorPepijn de Vos <pepijndevos@gmail.com>2019-10-28 15:18:01 +0100
committerPepijn de Vos <pepijndevos@gmail.com>2019-10-28 15:18:01 +0100
commit903f9973913371452005eb173ac50fec1d5d1447 (patch)
treeb160b35c7a1048dc5d1ef2f63a6159f5aef6fe1f /techlibs/gowin
parent9517525224c7bc4b8ac7d093066485888a337b76 (diff)
downloadyosys-903f9973913371452005eb173ac50fec1d5d1447.tar.gz
yosys-903f9973913371452005eb173ac50fec1d5d1447.tar.bz2
yosys-903f9973913371452005eb173ac50fec1d5d1447.zip
add tristate buffer and test
Diffstat (limited to 'techlibs/gowin')
-rw-r--r--techlibs/gowin/cells_sim.v6
-rw-r--r--techlibs/gowin/synth_gowin.cc4
2 files changed, 8 insertions, 2 deletions
diff --git a/techlibs/gowin/cells_sim.v b/techlibs/gowin/cells_sim.v
index 0fe2c8c52..cc1ac48e6 100644
--- a/techlibs/gowin/cells_sim.v
+++ b/techlibs/gowin/cells_sim.v
@@ -302,6 +302,12 @@ module OBUF(output O, input I);
assign O = I;
endmodule
+module TBUF (O, I, OEN);
+ input I, OEN;
+ output O;
+ assign O = OEN ? I : 1'bz;
+endmodule
+
module GSR (input GSRI);
wire GSRO = GSRI;
endmodule
diff --git a/techlibs/gowin/synth_gowin.cc b/techlibs/gowin/synth_gowin.cc
index e9b2ccded..d541edd84 100644
--- a/techlibs/gowin/synth_gowin.cc
+++ b/techlibs/gowin/synth_gowin.cc
@@ -174,7 +174,7 @@ struct SynthGowinPass : public ScriptPass
run("synth -run coarse");
}
- if (!nobram && check_label("bram", "(skip if -nobram)"))
+ if (!nobram && check_label("bram", "(skip if -nobram)"))
{
run("memory_bram -rules +/gowin/bram.txt");
run("techmap -map +/gowin/brams_map.v -map +/gowin/cells_sim.v");
@@ -230,7 +230,7 @@ struct SynthGowinPass : public ScriptPass
run("techmap -map +/gowin/cells_map.v");
run("setundef -undriven -params -zero");
run("hilomap -singleton -hicell VCC V -locell GND G");
- run("iopadmap -bits -inpad IBUF O:I -outpad OBUF I:O", "(unless -noiopads)");
+ run("iopadmap -bits -inpad IBUF O:I -outpad OBUF I:O, -toutpad TBUF OEN:I:O", "(unless -noiopads)");
run("dffinit -ff DFF Q INIT");
run("clean");