Main Content

Simulate Crosstalk Cancellation in IBIS AMI Receiver Models

This example shows how to simulate crosstalk cancellation in a SerDes Rx AMI model. You can disable crosstalk cancellation or select a specific aggressor column in the impulse_matrix to cancel. You can also replace the filter used in the example cancellationFilter.m with a CTLE that represents the filter implemented in the hardware.

Open the SerDes Designer app. Crosstalk cancellation is implemented in a Pass-Through block inserted at the beginning of the Rx model. Any additional equalization (e.g., CTLE, AGC, DFE) is added after this pass-through block.


Export the model with default values to Simulink®.


Add Model_Specific parameters Column, Gain and Delay to the Rx XtalkCancel pass-through block in the SerDes IBIS-AMI Manager.

Crosstalk Cancellation applies a filter to an aggressor waveform. This filtered aggressor waveform is then amplified by Gain and shifted by Delay to maximize the amount of cancellation of the crosstalk applied to the victim waveform.

Column is the column in the impulse_matrix to be cancelled. Column is Usage In, Type Integer and Format Range. The first column in the impulse_matrix is the victim through impulse response. If Column is <= 1 then no aggressor will be cancelled. If Column = 2, then the first aggressor in the impulse_matrix will be cancelled. The Min value of Range should be zero, the Max value should be set to the value of Max_init_Aggressors +1.

Gain is Usage Out, Type Float and Format Value. Gain is unitless.

Delay is Usage Out, Type Float and Format Value. The unit of Delay is seconds.

Crosstalk Cancellation is implemented in the custom user code of the Initialize Function.


Lines 34:35 limits cancelation to a single aggressor column in the impulse matrix

Lines 39:40 limits the cancellation matrix to 20 UI past the cursor location of the through channel (peak value of the through impulse response).

Lines 41:43 calls crosstalkCancel to calculate the cancelled step response of the column iAgr of the LocalImpulse matrix.

Lines 51:53 converts the returned cancel step response to a cancelled impulse response and replaces that section of the iAgr column in the impulse matrix. Function crosstalkCancel applies the cancellationFilter to the aggressor through step response. In this example cancellationFilter takes the derivative of the victim impulse response. The best Gain and Delay is determined by doing a coarse and fine grid search. The first/coarsest grid has Gain=.001, 4,8,16. Subsequent searches reduce the grid size by a factor of 4. For each Gain the function fitDelay determines the best delay by sweeping the delay from -½ to +½ UI in increments of sampleInterval. The cancelled crosstalk step response is the aggressor step response minus the filtered through step response with the Gain and Delay applied. The objective function is the sum of the squares of the cancelled crosstalk step response from (1:1UI) past the peak magnitude of the aggressor step response.

The actual shape and magnitude of cancellationFilteris implementation specific. thruSRfiltered is the cancellationFilter applied to victim through step response. FEXT (far-end crosstalk) assumes that the aggressor through step response is the same as the victim through step response.


Lines 7:9 take the derivative of the through step response. This represents the shape of the crosstalk step response. Multiplying this derivative filter by sampleInterval makes the magnitude in the range of what might be expected in a real filter.

The crosstalk cancellation example is tested with a simple loss channel and idealize FEXT crosstalk.


The near end crosstalk (NEXT) to 0, and the far end crosstalk (FEXT) is set to 0.1.


The impulse_matrix has three columns in this example. The first column contains the victim through impulse response. The second column contains the FEXT aggressor crosstalk impulse response. In the XtalkCancel Column parameter is set to 2, to cancel the second column aggressor crosstalk impulse response.

Run the simulation to view the results.

The agr1 Pulse Response is totally cancelled. Compare the Unequalized agr1 Pulse Response with the Equalized agr1 Pulse Response. The channel crosstalk model is ideal, it assumes the crosstalk applied to the victim is the derivative of the aggressor waveform. The filter applied to the victim through step response is also ideal. Therefore, the crosstalk cancelation is totally effective in this example. Real crosstalk channel channels and real crosstalk cancellation filters will be less effective.

IBIS AMI supports crosstalk cancelation in the statistical flow because the input to the AMI_Init function contains both the victim through and aggressor impulse responses. Crosstalk cancellation cannot be supported in IBIS time domain simulations because AMI_GetWave only has the victim waveform as input. The IBIS standard needs to be enhanced to add aggressor waveforms to the AMI_GetWave function.