Skip to content

Commit cbc78ab

Browse files
committed
build: io: make oe2 of DDRTristate optional
make oe2 of DDRTristate optional. Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
1 parent abc8f9b commit cbc78ab

File tree

4 files changed

+7
-6
lines changed

4 files changed

+7
-6
lines changed

litex/build/efinix/common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ def lower(dr):
252252

253253
class EfinixDDRTristateImpl(Module):
254254
def __init__(self, platform, io, o1, o2, oe1, oe2, i1, i2, clk):
255-
assert oe1 == oe2
255+
assert oe2 is None
256256
io_name = platform.get_pin_name(io)
257257
io_pad = platform.get_pin_location(io)
258258
io_prop = platform.get_pin_properties(io)

litex/build/io.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,18 +184,18 @@ def __init__(self, io, o1, o2, oe1, oe2, i1, i2, clk):
184184
_oe = Signal()
185185
_i = Signal()
186186
self.specials += DDROutput(o1, o2, _o, clk)
187-
self.specials += DDROutput(oe1, oe2, _oe, clk)
187+
self.specials += DDROutput(oe1, oe2, _oe, clk) if oe2 is not None else SDROutput(oe1, _oe, clk)
188188
self.specials += DDRInput(_i, i1, i2, clk)
189189
self.specials += Tristate(io, _o, _oe, _i)
190190

191191
class DDRTristate(Special):
192-
def __init__(self, io, o1, o2, oe1, oe2, i1, i2, clk=ClockSignal()):
192+
def __init__(self, io, o1, o2, oe1, oe2=None, i1=Signal(), i2=Signal(), clk=ClockSignal()):
193193
Special.__init__(self)
194194
self.io = io
195195
self.o1 = o1
196196
self.o2 = o2
197197
self.oe1 = oe1
198-
self.oe2 = oe2
198+
self.oe2 = oe2 if not (oe2 == oe1) else None
199199
self.i1 = i1
200200
self.i2 = i2
201201
self.clk = clk

litex/build/lattice/common.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,11 +305,12 @@ def lower(dr):
305305

306306
class LatticeNXDDRTristateImpl(Module):
307307
def __init__(self, io, o1, o2, oe1, oe2, i1, i2, clk):
308+
assert oe2 is None
308309
_o = Signal()
309310
_oe = Signal()
310311
_i = Signal()
311312
self.specials += DDROutput(o1, o2, _o, clk)
312-
self.specials += SDROutput(oe1 | oe2, _oe, clk)
313+
self.specials += SDROutput(oe1, _oe, clk)
313314
self.specials += DDRInput(_i, i1, i2, clk)
314315
self.specials += Tristate(io, _o, _oe, _i)
315316
_oe.attr.add("syn_useioff")

litex/build/xilinx/common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ def __init__(self, io, o1, o2, oe1, oe2, i1, i2, clk):
164164
_oe_n = Signal()
165165
_i = Signal()
166166
self.specials += DDROutput(o1, o2, _o, clk)
167-
self.specials += DDROutput(~oe1, ~oe2, _oe_n, clk)
167+
self.specials += DDROutput(~oe1, ~oe2, _oe_n, clk) if oe2 is not None else SDROutput(~oe1, _oe_n, clk)
168168
self.specials += DDRInput(_i, i1, i2, clk)
169169
self.specials += Instance("IOBUF",
170170
io_IO = io,

0 commit comments

Comments
 (0)