Skip to content

Commit 25c3531

Browse files
wanda-phiwhitequark
authored andcommitted
vendor.*: fix [io]_domain propagation when creating buffers.
Closes #1347.
1 parent 9e82d54 commit 25c3531

File tree

4 files changed

+42
-14
lines changed

4 files changed

+42
-14
lines changed

amaranth/vendor/_altera.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -475,9 +475,13 @@ def get_io_buffer(self, buffer):
475475
if isinstance(buffer, io.Buffer):
476476
result = IOBuffer(buffer.direction, buffer.port)
477477
elif isinstance(buffer, io.FFBuffer):
478-
result = FFBuffer(buffer.direction, buffer.port)
478+
result = FFBuffer(buffer.direction, buffer.port,
479+
i_domain=buffer.i_domain,
480+
o_domain=buffer.o_domain)
479481
elif isinstance(buffer, io.DDRBuffer):
480-
result = DDRBuffer(buffer.direction, buffer.port)
482+
result = DDRBuffer(buffer.direction, buffer.port,
483+
i_domain=buffer.i_domain,
484+
o_domain=buffer.o_domain)
481485
else:
482486
raise TypeError(f"Unsupported buffer type {buffer!r}") # :nocov:
483487
if buffer.direction is not io.Direction.Output:

amaranth/vendor/_gowin.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -543,9 +543,13 @@ def get_io_buffer(self, buffer):
543543
if isinstance(buffer, io.Buffer):
544544
result = IOBuffer(buffer.direction, buffer.port)
545545
elif isinstance(buffer, io.FFBuffer):
546-
result = FFBuffer(buffer.direction, buffer.port)
546+
result = FFBuffer(buffer.direction, buffer.port,
547+
i_domain=buffer.i_domain,
548+
o_domain=buffer.o_domain)
547549
elif isinstance(buffer, io.DDRBuffer):
548-
result = DDRBuffer(buffer.direction, buffer.port)
550+
result = DDRBuffer(buffer.direction, buffer.port,
551+
i_domain=buffer.i_domain,
552+
o_domain=buffer.o_domain)
549553
else:
550554
raise TypeError(f"Unsupported buffer type {buffer!r}") # :nocov:
551555
if buffer.direction is not io.Direction.Output:

amaranth/vendor/_lattice.py

+15-5
Original file line numberDiff line numberDiff line change
@@ -998,18 +998,28 @@ def get_io_buffer(self, buffer):
998998
result = IOBuffer(buffer.direction, buffer.port)
999999
elif isinstance(buffer, io.FFBuffer):
10001000
if self.family in ("ecp5", "machxo2"):
1001-
result = FFBufferECP5(buffer.direction, buffer.port)
1001+
result = FFBufferECP5(buffer.direction, buffer.port,
1002+
i_domain=buffer.i_domain,
1003+
o_domain=buffer.o_domain)
10021004
elif self.family == "nexus":
1003-
result = FFBufferNexus(buffer.direction, buffer.port)
1005+
result = FFBufferNexus(buffer.direction, buffer.port,
1006+
i_domain=buffer.i_domain,
1007+
o_domain=buffer.o_domain)
10041008
else:
10051009
raise NotImplementedError # :nocov:
10061010
elif isinstance(buffer, io.DDRBuffer):
10071011
if self.family == "ecp5":
1008-
result = DDRBufferECP5(buffer.direction, buffer.port)
1012+
result = DDRBufferECP5(buffer.direction, buffer.port,
1013+
i_domain=buffer.i_domain,
1014+
o_domain=buffer.o_domain)
10091015
elif self.family == "machxo2":
1010-
result = DDRBufferMachXO2(buffer.direction, buffer.port)
1016+
result = DDRBufferMachXO2(buffer.direction, buffer.port,
1017+
i_domain=buffer.i_domain,
1018+
o_domain=buffer.o_domain)
10111019
elif self.family == "nexus":
1012-
result = DDRBufferNexus(buffer.direction, buffer.port)
1020+
result = DDRBufferNexus(buffer.direction, buffer.port,
1021+
i_domain=buffer.i_domain,
1022+
o_domain=buffer.o_domain)
10131023
else:
10141024
raise NotImplementedError # :nocov:
10151025
else:

amaranth/vendor/_xilinx.py

+15-5
Original file line numberDiff line numberDiff line change
@@ -1168,16 +1168,26 @@ def get_io_buffer(self, buffer):
11681168
if isinstance(buffer, io.Buffer):
11691169
result = IOBuffer(buffer.direction, buffer.port)
11701170
elif isinstance(buffer, io.FFBuffer):
1171-
result = FFBuffer(buffer.direction, buffer.port)
1171+
result = FFBuffer(buffer.direction, buffer.port,
1172+
i_domain=buffer.i_domain,
1173+
o_domain=buffer.o_domain)
11721174
elif isinstance(buffer, io.DDRBuffer):
11731175
if self.family in ("virtex2", "virtex2p", "spartan3"):
1174-
result = DDRBufferVirtex2(buffer.direction, buffer.port)
1176+
result = DDRBufferVirtex2(buffer.direction, buffer.port,
1177+
i_domain=buffer.i_domain,
1178+
o_domain=buffer.o_domain)
11751179
elif self.family in ("spartan3e", "spartan3a", "spartan3adsp", "spartan6"):
1176-
result = DDRBufferSpartan3E(buffer.direction, buffer.port)
1180+
result = DDRBufferSpartan3E(buffer.direction, buffer.port,
1181+
i_domain=buffer.i_domain,
1182+
o_domain=buffer.o_domain)
11771183
elif self.family in ("virtex4", "virtex5", "virtex6", "series7"):
1178-
result = DDRBufferVirtex4(buffer.direction, buffer.port)
1184+
result = DDRBufferVirtex4(buffer.direction, buffer.port,
1185+
i_domain=buffer.i_domain,
1186+
o_domain=buffer.o_domain)
11791187
elif self.family in ("ultrascale", "ultrascaleplus"):
1180-
result = DDRBufferUltrascale(buffer.direction, buffer.port)
1188+
result = DDRBufferUltrascale(buffer.direction, buffer.port,
1189+
i_domain=buffer.i_domain,
1190+
o_domain=buffer.o_domain)
11811191
else:
11821192
raise TypeError(f"Family {self.family} doesn't implement DDR buffers")
11831193
else:

0 commit comments

Comments
 (0)