@@ -569,6 +569,10 @@ def get_io_buffer(self, buffer):
569
569
raise TypeError ("iCE40 does not support bidirectional differential ports" )
570
570
elif buffer .direction is io .Direction .Output :
571
571
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.
572
576
invert_lut = isinstance (buffer , io .Buffer )
573
577
m .submodules .p = self ._get_io_buffer_single (buffer , port_p , invert_lut = invert_lut )
574
578
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):
579
583
# differs between LP/HX and UP series:
580
584
# * for LP/HX, z=0 is DPxxB (B is non-inverting, A is inverting)
581
585
# * 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 )
583
587
else :
584
588
assert False # :nocov:
585
589
elif isinstance (buffer .port , io .SingleEndedPort ):
0 commit comments