build/io: Allow passing clk as str on DDRInput/Output, wrap DDROutput IOs and minor ident fixes.
This commit is contained in:
parent
6dff371835
commit
c0ab4ed1c1
|
@ -20,7 +20,7 @@ class DifferentialInput(Special):
|
|||
def iter_expressions(self):
|
||||
yield self, "i_p", SPECIAL_INPUT
|
||||
yield self, "i_n", SPECIAL_INPUT
|
||||
yield self, "o", SPECIAL_OUTPUT
|
||||
yield self, "o" , SPECIAL_OUTPUT
|
||||
|
||||
@staticmethod
|
||||
def lower(dr):
|
||||
|
@ -35,7 +35,7 @@ class DifferentialOutput(Special):
|
|||
self.o_n = wrap(o_n)
|
||||
|
||||
def iter_expressions(self):
|
||||
yield self, "i", SPECIAL_INPUT
|
||||
yield self, "i" , SPECIAL_INPUT
|
||||
yield self, "o_p", SPECIAL_OUTPUT
|
||||
yield self, "o_n", SPECIAL_OUTPUT
|
||||
|
||||
|
@ -61,8 +61,8 @@ class SDRIO(Special):
|
|||
self.clk_domain = None if not hasattr(clk, "cd") else clk.cd
|
||||
|
||||
def iter_expressions(self):
|
||||
yield self, "i", SPECIAL_INPUT
|
||||
yield self, "o", SPECIAL_OUTPUT
|
||||
yield self, "i" , SPECIAL_INPUT
|
||||
yield self, "o" , SPECIAL_OUTPUT
|
||||
yield self, "clk", SPECIAL_INPUT
|
||||
|
||||
@staticmethod
|
||||
|
@ -80,26 +80,26 @@ class InferedSDRTristate(Module):
|
|||
_o = Signal()
|
||||
_oe = Signal()
|
||||
_i = Signal()
|
||||
self.specials += SDROutput(o, _o, clk)
|
||||
self.specials += SDRInput(_i, i, clk)
|
||||
self.specials += SDROutput(o, _o, clk)
|
||||
self.specials += SDRInput(_i, i, clk)
|
||||
self.submodules += InferedSDRIO(oe, _oe, clk)
|
||||
self.specials += Tristate(io, _o, _oe, _i)
|
||||
self.specials += Tristate(io, _o, _oe, _i)
|
||||
|
||||
class SDRTristate(Special):
|
||||
def __init__(self, io, o, oe, i, clk=ClockSignal()):
|
||||
assert len(i) == len(o) == len(oe)
|
||||
Special.__init__(self)
|
||||
self.io = wrap(io)
|
||||
self.o = wrap(o)
|
||||
self.oe = wrap(oe)
|
||||
self.i = wrap(i)
|
||||
self.clk = wrap(clk)
|
||||
self.io = wrap(io)
|
||||
self.o = wrap(o)
|
||||
self.oe = wrap(oe)
|
||||
self.i = wrap(i)
|
||||
self.clk = wrap(clk)
|
||||
|
||||
def iter_expressions(self):
|
||||
yield self, "io", SPECIAL_INOUT
|
||||
yield self, "o", SPECIAL_INPUT
|
||||
yield self, "oe", SPECIAL_INPUT
|
||||
yield self, "i", SPECIAL_OUTPUT
|
||||
yield self, "io" , SPECIAL_INOUT
|
||||
yield self, "o" , SPECIAL_INPUT
|
||||
yield self, "oe" , SPECIAL_INPUT
|
||||
yield self, "i" , SPECIAL_OUTPUT
|
||||
yield self, "clk", SPECIAL_INPUT
|
||||
|
||||
@staticmethod
|
||||
|
@ -114,12 +114,12 @@ class DDRInput(Special):
|
|||
self.i = wrap(i)
|
||||
self.o1 = wrap(o1)
|
||||
self.o2 = wrap(o2)
|
||||
self.clk = wrap(clk)
|
||||
self.clk = clk if isinstance(clk, str) else wrap(clk)
|
||||
|
||||
def iter_expressions(self):
|
||||
yield self, "i", SPECIAL_INPUT
|
||||
yield self, "o1", SPECIAL_OUTPUT
|
||||
yield self, "o2", SPECIAL_OUTPUT
|
||||
yield self, "i" , SPECIAL_INPUT
|
||||
yield self, "o1" , SPECIAL_OUTPUT
|
||||
yield self, "o2" , SPECIAL_OUTPUT
|
||||
yield self, "clk", SPECIAL_INPUT
|
||||
|
||||
@staticmethod
|
||||
|
@ -130,15 +130,15 @@ class DDRInput(Special):
|
|||
class DDROutput(Special):
|
||||
def __init__(self, i1, i2, o, clk=ClockSignal()):
|
||||
Special.__init__(self)
|
||||
self.i1 = i1
|
||||
self.i2 = i2
|
||||
self.o = o
|
||||
self.clk = clk
|
||||
self.i1 = wrap(i1)
|
||||
self.i2 = wrap(i2)
|
||||
self.o = wrap(o)
|
||||
self.clk = clk if isinstance(clk, str) else wrap(clk)
|
||||
|
||||
def iter_expressions(self):
|
||||
yield self, "i1", SPECIAL_INPUT
|
||||
yield self, "i2", SPECIAL_INPUT
|
||||
yield self, "o", SPECIAL_OUTPUT
|
||||
yield self, "i1" , SPECIAL_INPUT
|
||||
yield self, "i2" , SPECIAL_INPUT
|
||||
yield self, "o" , SPECIAL_OUTPUT
|
||||
yield self, "clk", SPECIAL_INPUT
|
||||
|
||||
@staticmethod
|
||||
|
@ -170,13 +170,13 @@ class DDRTristate(Special):
|
|||
self.clk = clk
|
||||
|
||||
def iter_expressions(self):
|
||||
yield self, "io", SPECIAL_INOUT
|
||||
yield self, "o1", SPECIAL_INPUT
|
||||
yield self, "o2", SPECIAL_INPUT
|
||||
yield self, "io" , SPECIAL_INOUT
|
||||
yield self, "o1" , SPECIAL_INPUT
|
||||
yield self, "o2" , SPECIAL_INPUT
|
||||
yield self, "oe1", SPECIAL_INPUT
|
||||
yield self, "oe2", SPECIAL_INPUT
|
||||
yield self, "i1", SPECIAL_OUTPUT
|
||||
yield self, "i2", SPECIAL_OUTPUT
|
||||
yield self, "i1" , SPECIAL_OUTPUT
|
||||
yield self, "i2" , SPECIAL_OUTPUT
|
||||
yield self, "clk", SPECIAL_INPUT
|
||||
|
||||
@staticmethod
|
||||
|
|
Loading…
Reference in New Issue