Skip to content

Commit 31459d5

Browse files
wanda-phiwhitequark
authored andcommitted
vendor._siliconblue: fix differential input.
1 parent 8fde7ed commit 31459d5

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

amaranth/vendor/_siliconblue.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,10 @@ def get_io_buffer(self, buffer):
568568
raise TypeError("iCE40 does not support bidirectional differential ports")
569569
elif buffer.direction is io.Direction.Output:
570570
m = Module()
571+
# Note that the non-inverting output pin is not driven the same way as a regular
572+
# output pin. The inverter introduces a delay, so for a non-inverting output pin,
573+
# an identical delay is introduced by instantiating a LUT. This makes the waveform
574+
# perfectly symmetric in the xdr=0 case.
571575
invert_lut = isinstance(buffer, io.Buffer)
572576
m.submodules.p = self._get_io_buffer_single(buffer, port_p, invert_lut=invert_lut)
573577
m.submodules.n = self._get_io_buffer_single(buffer, port_n, invert_lut=invert_lut)
@@ -578,7 +582,7 @@ def get_io_buffer(self, buffer):
578582
# differs between LP/HX and UP series:
579583
# * for LP/HX, z=0 is DPxxB (B is non-inverting, A is inverting)
580584
# * for UP, z=0 is IOB_xxA (A is non-inverting, B is inverting)
581-
return self._get_io_buffer_single(buffer, port_p, invert_lut=invert_lut)
585+
return self._get_io_buffer_single(buffer, port_p)
582586
else:
583587
assert False # :nocov:
584588
elif isinstance(buffer.port, io.SingleEndedPort):

0 commit comments

Comments
 (0)