Skip to content

Commit cf4a29d

Browse files
wanda-phiwhitequark
authored andcommitted
vendor._siliconblue: fix differential input.
1 parent 9f9ea2c commit cf4a29d

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

amaranth/vendor/_siliconblue.py

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

0 commit comments

Comments
 (0)