vendor.*: fix [io]_domain
propagation when creating buffers.
Closes #1347.
This commit is contained in:
parent
9e82d54302
commit
25c3531e93
|
@ -475,9 +475,13 @@ class AlteraPlatform(TemplatedPlatform):
|
|||
if isinstance(buffer, io.Buffer):
|
||||
result = IOBuffer(buffer.direction, buffer.port)
|
||||
elif isinstance(buffer, io.FFBuffer):
|
||||
result = FFBuffer(buffer.direction, buffer.port)
|
||||
result = FFBuffer(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
elif isinstance(buffer, io.DDRBuffer):
|
||||
result = DDRBuffer(buffer.direction, buffer.port)
|
||||
result = DDRBuffer(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
else:
|
||||
raise TypeError(f"Unsupported buffer type {buffer!r}") # :nocov:
|
||||
if buffer.direction is not io.Direction.Output:
|
||||
|
|
|
@ -543,9 +543,13 @@ class GowinPlatform(TemplatedPlatform):
|
|||
if isinstance(buffer, io.Buffer):
|
||||
result = IOBuffer(buffer.direction, buffer.port)
|
||||
elif isinstance(buffer, io.FFBuffer):
|
||||
result = FFBuffer(buffer.direction, buffer.port)
|
||||
result = FFBuffer(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
elif isinstance(buffer, io.DDRBuffer):
|
||||
result = DDRBuffer(buffer.direction, buffer.port)
|
||||
result = DDRBuffer(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
else:
|
||||
raise TypeError(f"Unsupported buffer type {buffer!r}") # :nocov:
|
||||
if buffer.direction is not io.Direction.Output:
|
||||
|
|
|
@ -998,18 +998,28 @@ class LatticePlatform(TemplatedPlatform):
|
|||
result = IOBuffer(buffer.direction, buffer.port)
|
||||
elif isinstance(buffer, io.FFBuffer):
|
||||
if self.family in ("ecp5", "machxo2"):
|
||||
result = FFBufferECP5(buffer.direction, buffer.port)
|
||||
result = FFBufferECP5(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
elif self.family == "nexus":
|
||||
result = FFBufferNexus(buffer.direction, buffer.port)
|
||||
result = FFBufferNexus(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
else:
|
||||
raise NotImplementedError # :nocov:
|
||||
elif isinstance(buffer, io.DDRBuffer):
|
||||
if self.family == "ecp5":
|
||||
result = DDRBufferECP5(buffer.direction, buffer.port)
|
||||
result = DDRBufferECP5(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
elif self.family == "machxo2":
|
||||
result = DDRBufferMachXO2(buffer.direction, buffer.port)
|
||||
result = DDRBufferMachXO2(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
elif self.family == "nexus":
|
||||
result = DDRBufferNexus(buffer.direction, buffer.port)
|
||||
result = DDRBufferNexus(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
else:
|
||||
raise NotImplementedError # :nocov:
|
||||
else:
|
||||
|
|
|
@ -1168,16 +1168,26 @@ class XilinxPlatform(TemplatedPlatform):
|
|||
if isinstance(buffer, io.Buffer):
|
||||
result = IOBuffer(buffer.direction, buffer.port)
|
||||
elif isinstance(buffer, io.FFBuffer):
|
||||
result = FFBuffer(buffer.direction, buffer.port)
|
||||
result = FFBuffer(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
elif isinstance(buffer, io.DDRBuffer):
|
||||
if self.family in ("virtex2", "virtex2p", "spartan3"):
|
||||
result = DDRBufferVirtex2(buffer.direction, buffer.port)
|
||||
result = DDRBufferVirtex2(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
elif self.family in ("spartan3e", "spartan3a", "spartan3adsp", "spartan6"):
|
||||
result = DDRBufferSpartan3E(buffer.direction, buffer.port)
|
||||
result = DDRBufferSpartan3E(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
elif self.family in ("virtex4", "virtex5", "virtex6", "series7"):
|
||||
result = DDRBufferVirtex4(buffer.direction, buffer.port)
|
||||
result = DDRBufferVirtex4(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
elif self.family in ("ultrascale", "ultrascaleplus"):
|
||||
result = DDRBufferUltrascale(buffer.direction, buffer.port)
|
||||
result = DDRBufferUltrascale(buffer.direction, buffer.port,
|
||||
i_domain=buffer.i_domain,
|
||||
o_domain=buffer.o_domain)
|
||||
else:
|
||||
raise TypeError(f"Family {self.family} doesn't implement DDR buffers")
|
||||
else:
|
||||
|
|
Loading…
Reference in a new issue