Main Content

PCIe5 Transmitter/Receiver IBIS-AMI Model

This example shows how to create generic PCIe Generation 5 (PCIe5) transmitter and receiver IBIS-AMI models using the library blocks in SerDes Toolbox. The IBIS-AMI models generated by this example conform to the PCIe Gen5 Base-Specification published by the PCIE-SIG.

PCIe5 Tx/Rx IBIS-AMI Model Setup in SerDes Designer App

The first part of this example sets up the target transmitter and receiver AMI model architecture using the blocks required for PCIe5 in the SerDes Designer app. The model is then exported to Simulink® for further customization.

This example uses the SerDes Designer model pcie5_ibis-ami. Type the following command in the MATLAB® command window to open the model:

>> serdesDesigner('pcie5_ibis-ami');

Configuration Setup

  • Symbol Time is set to 31.25 ps, since the maximum allowable PCIe5 datarate is 32 GT/s with a Nyquist frequency of 16GHz.

  • Target BER is set to 1e-12.

  • Samples per Symbol is set to 32.

  • Modulation is set to NRZ (non-return to zero).

  • Signaling is set to Differential.

Transmitter Model Setup

  • The Tx FFE block is set up for one pre-tap, one main tap, and one post-tap by including three tap weights. Specific tap presets will be added in later in the example when the model is exported to Simulink.

  • The Tx AnalogOut model is set up so that Voltage is 1V, Rise time is 12 ps, R (output resistance) is 50 Ohms (Table 8-10 note 3) , and C (capacitance) is 0.5 pF according to the PCIe5 specification.

Channel Model Setup

  • Channel loss is set to 34 dB (37dB is maximum loss for Base channel plus CEM card).

  • Differential impedance is set to 85 Ohms (see PCIe5 Base Spec, section 8.4.1.2, Figure 8-28 and 8-29).

  • Target Frequency is set to the Nyquist frequency for 32GT/s data rate, which is 16 GHz.

Receiver Model Setup

  • The Rx Analogin model is set up so that R (input resistance) is 50 Ohms (Table 8-10 note 3), and C (capacitance) is 0.5 pF according to the PCIe5 specification.

  • There are two Rx CTLE blocks to separate the PCIe Gen5 repeated poles since the SerDes toolbox CTLE does not allow for repeated or overlapping poles.

  • The first Rx CTLE block has a single transfer function with two poles and one zero.

  • The second Rx CTLE set up for 11 configurations (0 to 10) from the CTLE specification.

  • The combined CTLEs and their associated GPZ Matricies meet the Poles and Zeros given in the PCIe5 Base Specification (Equation 8-7).

  • The Rx DFE/CDR block is set up for three DFE taps. The limits for each tap have been individually defined according to the PCIe5 specification to +/-80 mV for tap 1, +/-20 mV for tap 2, and +/-20 mV for tap 3.

Plot Statistical Results

Use the SerDes Designer plots to visualize the results of the PCIe5 setup.

You can confirm the TX FFE is functional by setting the value of the Tx FFE TapWeights from [0 1 0] and Rx CTLE2 Mode to adapt. Add the BER plot from ADD Plots and observe the results.

Change the Rx CTLE2 Mode to fixed and Rx CTLE2 ConfigSelect to 3 and observe the BER plot changes:

Before continuing, change the Rx CTLE2 Mode at Adapt. Resetting the values for TX FFE and RX CTLE2 here will avoid the need to set them again after the model has been exported to Simulink. These values will become the defaults when the final AMI models are generated.

Select Jitter Parameters for TX and RX

On the toolstrip, click on the button for Tx/Rx Jitter. You can enable which jitter parameters are exported to Simulink. You can also add jitter parameters at a later time using the IBIS-AMI manager in Simulink. In the Tx Jitter section, check the boxes for Tx_DCD, Tx_Rj, Tx_Dj. In the Rx Jitter section, check the boxes for Rx_DCD, Rx_Rj, and Rx_Dj.

Add Tx Jitter Parameters

You can add Jitter parameters to the Tx from PCIe Gen5 Base specification, table 8-6, "Data Rate Dependent Transmitter Parameters." As you add parameters, the BER plot will show their effect on the signal. Note: these parameters will export as type "Float" with format "Value." After exporting to Simulink, you can change these to format "Range" using the IBIS-AMI Manager.

Set Tx DCD Jitter Value (Ttx-upw-tj from Table 8-6 in the PCIe5 Base Spec)

  • Set the value to 6.25e-12

  • Change the units from UI to seconds.

Set Tx Rj Jitter Value (Ttx-rj from table 8-6 in the PCIe5 Base Spec)

  • Set the value to 0.45e-12

  • Change the units from UI to seconds.

Set Tx Dj Jitter Value (Ttx-upw-djdd from Table 8-6 in the PCIe5 Base Spec)

  • Set the value to 2.5e-12

  • Change the units from UI to seconds.

You can set many more Jitter Parameters in the SerDes Designer App. Note: after exporting to Simulink, you can edit their Type, Usage, Format, and Value using the IBIS-AMI manager.

Export SerDes System to Simulink

Click on the Export button to export the above configuration to Simulink for further customization and generation of the AMI model executables.

PCIe5 Tx/Rx IBIS-AMI Model Setup in Simulink

The second part of this example takes the SerDes system exported by the SerDes Designer app and customize it as required for PCIe5 in Simulink.

Review Simulink Model Setup

The SerDes System imported into Simulink consists of Configuration, Stimulus, Tx, Analog Channel and Rx blocks. All the settings from the SerDes Designer app have been transferred to the Simulink model. Save the model and review each block setup.

  • You can confirm settings are carried over from the SerDes Designer app by double clicking the Configuration block and the Analog Channel block. Then open the Block Parameters dialog box and check their values.

  • Double click the Stimulus block to open the Block Parameters dialog box. You can set the PRBS (pseudorandom binary sequence) order and the number of symbols to simulate. This block is not carried over from the SerDes Designer app.

  • You can double click the Tx block and the Rx block to look inside each of their subsystems which are inherited from the SerDes Designer app.

Set Ignore Bits

Before running the simulation, open the IBIS-AMI manager. You can set the bits to ignore for the Tx to 3, because the FFE has 3 taps. Set the bits to ignore for the Rx to 1000, so the DFECDR can converge during time domain simulation.

Update Tx Jitter Parameters

You can change the Format to "Range" for the Jitter Parameters by clicking on the AMI - Tx tab, select Tx_DCD and press the Edit button.

The following ranges allow you to fine-tune the jitter values to meet PCIe5 jitter mask requirements. For example, see table 8-6, "Data Rate Dependent Transmitter Parameters" in the PCIe Gen5 Base specification.

Set Tx DCD Jitter Values (Ttx-upw-tj from Table 8-6)

  • Select Tx_DCD, then click the Edit... button to bring up the Add/Edit AMI Parameter dialog.

  • Verify the Type to Float.

  • Change the Format to Range.

  • Set the Current Value to 0.

  • Set the Typ value to 0.

  • Set the Min value to 0.

  • Set the Max value to 6.25e-12

  • Click OK to save the changes.

Set Tx Rj Jitter Values (Ttx-rj from table 8-6)

  • Select Tx_Rj, then click the Edit... button to bring up the Add/Edit AMI Parameter dialog.

  • Follow the steps for Tx_DCD, above.

  • Set the Max value to 0.45e-12

  • Click OK to save the changes.

Set Tx Dj Jitter Values (Ttx-upw-djdd from Table 8-6)

  • Select Tx_Dj, then click the Edit... button to bring up the Add/Edit AMI Parameter dialog.

  • Follow the steps for Tx_DCD, above.

  • Set the Max value to 2.5e-12

  • Click OK to save the changes.

Update Receiver AMI Parameters

Open the AMI-Rx tab in the SerDes IBIS/AMI manager dialog box. Following the format of a typical AMI file, the reserved parameters are listed first followed by the model specific parameters.

Update Rx Jitter Parameters

Select the Rx_DCD, Rx_Dj and Rx_Rj and follow the steps above from Tx_DCD. The following ranges allow you to fine-tune the jitter values to meet PCIe5 jitter mask requirements.

Set Rx DCD Jitter Values

  • Select Rx_DCD, then click the Edit... button to bring up the Add/Edit AMI Parameter dialog.

  • Change the Type to Float.

  • Change the Format to Range.

  • Set the Current Value to 0.

  • Set the Typ value to 0.

  • Set the Min value to 0.

  • Set the Max value to 0.

  • Click OK to save the changes.

Set Rx Rj Jitter Values (Trx-st-rj from Table 8-9)

  • Select Rx_Rj, then click the Edit... button to bring up the Add/Edit AMI Parameter dialog.

  • Follow the steps for Rx_DCD.

  • Set the Max value to 0.5e-12

  • Click OK to save the changes.

Set Rx Dj Jitter Values

  • Select Rx_Dj, then click the Edit... button to bring up the Add/Edit AMI Parameter dialog.

  • Follow the steps for Rx_DCD.

  • Click OK to save the changes.

Run the Model

Run the model to simulate the SerDes System.

Many plots are generated, including a live time-domain (GetWave) eye diagram that is updated as the model is running.

The second plot contains views of the statistical (Init) results and persistent time domain (GetWave) results, similar to what is available in the SerDes Designer App.

Review Tx FFE Block

  • Inside the Tx subsystem, double click the FFE block to open the FFE Block Parameters dialog box.

  • Verify that the current value of Mode is set to Fixed.

Review Rx CTLE Blocks

  • Inside the Rx subsystem, double click the CTLE2 block to open the Block Parameters dialog box.

  • Gain pole zero data is carried over from the SerDes Designer app. This data, combined with the gain pole zero data of CTLE1, applies the overall transfer function of the behavioral CTLE given by the PCIe5 Base Specification.

  • CTLE Mode is set to Adapt, which means an optimization algorithm built into the CTLE system object selects the optimal configuration at run time.

Review Rx DFECDR Block

  • Inside the Rx subsystem, double click the DFECDR block to open the DFECDR Block Parameters dialog box.

  • Expand the IBIS-AMI parameters to show the list of parameters to be included in the IBIS-AMI model.

  • The DFE tap value(s) are carried over from the SerDes Designer app.

Generate PCIe5 Tx/Rx IBIS-AMI Model

The final part of this example takes the customized Simulink model, modifies the AMI parameters for PCIe5, then generates IBIS-AMI compliant PCIe5 model executables, IBIS and AMI files.

Open the Block Parameter dialog box for the Configuration block and click on the Open SerDes IBIS/AMI Manager button. In the IBIS tab inside the SerDes IBIS/AMI manager dialog box, the analog model values are converted to standard IBIS parameters that can be used by any industry standard simulator. In the AMI-Rx tab in the SerDes IBIS/AMI manager dialog box, the reserved parameters are listed first followed by the model specific parameters following the format of a typical AMI file.

Update Transmitter AMI Parameters

Open the AMI-Tx tab in the SerDes IBIS/AMI manager dialog box. Following the format of a typical AMI file, the reserved parameters are listed first followed by the model specific parameters.

Inside the Model_Specific parameters, you can set the TX FFE tap values by creating new AMI parameters and implementing an algorithm in the Init customer specific code section to select PCIe5 Preset values P0 through P10.

When you directly specify the preset coefficients, you change the format of the three TapWeights and specify the exact value to use for each preset. Only these eleven defined presets will be allowed, and all three taps must be set to the same preset to get the correct values.

Modify Init to Select Presets for Preshoot Tap, Main Tap, and De-emphasis Tap

Modify the Initialize MATLAB function inside the Init block in the Tx subsystem to use the newly added ConfigSelect*parameter. The ConfigSelect* parameter controls the existing three transmitter taps. To accomplish this, add a switch statement that takes in the values of ConfigSelect* and automatically sets the values for all three Tx taps, ignoring the user defined values for each tap. If a ConfigSelect value of -1 is used, then the user-defined Tx tap values are passed through to the FFE datapath block unchanged.

Inside the Tx subsystem, double-click the Init block to open the Block Parameters dialog box and click the Refresh Init button to propagate the new AMI parameter to the Initialize sub-system.

Type Ctrl-U to look under the mask for the Init block, then double-click on the initialize block to open the Initialize Function.

Double-click on the impulseEqualization MATLAB function block to open the function in MATLAB. This is an automatically generated function which provides the impulse response processing of the SerDes system block (IBIS AMI-Init). The %% BEGIN: and % END: lines denote the section where custom user code can be entered. Data in this section will not get over-written when Refresh Init is run:

%% BEGIN: Custom user code area (retained when 'Refresh Init' button is pressed)

FFEParameter.ConfigSelect; % User added AMI parameter

% END: Custom user code area (retained when 'Refresh Init' button is pressed)

To add the custom ConfigSelect control code, scroll down the Customer user code area, comment out the FFEParameter.ConfigSelect line, then enter the following code:

%% BEGIN: Custom user code area (retained when 'Refresh Init' button is pressed)

%FFEParameter.ConfigSelect; % User added AMI parameter

switch FFEParameter.ConfigSelect

case -1 % User defined tap weights

FFEInit.TapWeights = FFEParameter.TapWeights;

case 0 % PCIe Configuration: P0

FFEInit.TapWeights = [0.000 0.750 -0.250];

case 1 % PCIe Configuration: P1

FFEInit.TapWeights = [0.000 0.830 -0.167];

case 2 % PCIe Configuration: P2

FFEInit.TapWeights = [0.000 0.800 -0.200];

case 3 % PCIe Configuration: P3

FFEInit.TapWeights = [0.000 0.875 -0.125];

case 4 % PCIe Configuration: P4

FFEInit.TapWeights = [0.000 1.000 0.000];

case 5 % PCIe Configuration: P5

FFEInit.TapWeights = [-0.100 0.900 0.000];

case 6 % PCIe Configuration: P6

FFEInit.TapWeights = [-0.125 0.875 0.000];

case 7 % PCIe Configuration: P7

FFEInit.TapWeights = [-0.100 0.700 -0.200];

case 8 % PCIe Configuration: P8

FFEInit.TapWeights = [-0.125 0.750 -0.125];

case 9 % PCIe Configuration: P9

FFEInit.TapWeights = [-0.166 0.834 0.000];

otherwise

FFEInit.TapWeights = FFEParameter.TapWeights;

end

% END: Custom user code area (retained when 'Refresh Init' button is pressed)

To test that the new FFE control parameter is working correctly, open the SerDes IBIS-AMI Manager dialog box from the Configuration block. In the AMI-Tx tab, edit the ConfigSelect* parameter to set Current value to P7. This corresponds to PCIe Configuration P7: Pre = -0.100, Main = 0.700 and Post = -0.200.

Modify GetWave to Select Presets for Preshoot Tap, Main Tap, and De-emphasis Tap

To modify GetWave, add a new MATLAB function that operates in the same manner as the Initialize function.

Inside the Tx subsystem, type Ctrl-U to look under the mask of the FFE block.

You can see that a new constant block has been added called FFEParameter.ConfigSelect. This is created automatically by the IBIS-AMI Manager when a new Reserved Parameter is added. Next, you can follow these steps to re-configure the selection of tap weight presets for time domain (GetWave) simulation:

  • Add a MATLAB Function block to the canvas from the Simulink/User-Defined library.

  • Rename the MATLAB Function block to PCIe5FFEconfig.

  • Double-click the MATLAB Function block and replace the template code with the following:

% PCIe5 tap configuration selector

% Selects pre-defined Tx FFE tap weights based on PCIe5 specified

% configurations.

%

% Inputs:

% TapWeightsIn: User defined floating point tap weight values.

% ConfigSelect: 0-9: PCIe4 defined configuration (P0-P9).

% -1: User defined configuration (from TapWeightsIn).

% Outputs:

% TapWeightsOut: Array of tap weights to be used.

%

function TapWeightsOut = PCIe5FFEconfig(TapWeightsIn, ConfigSelect)

switch ConfigSelect

case -1 % User defined tap weights

TapWeightsOut = TapWeightsIn;

case 0 % PCIe Configuration: P0

TapWeightsOut = [0.000 0.750 -0.250];

case 1 % PCIe Configuration: P1

TapWeightsOut = [0.000 0.833 -0.167];

case 2 % PCIe Configuration: P2

TapWeightsOut = [0.000 0.800 -0.200];

case 3 % PCIe Configuration: P3

TapWeightsOut = [0.000 0.875 -0.125];

case 4 % PCIe Configuration: P4

TapWeightsOut = [0.000 1.000 0.000];

case 5 % PCIe Configuration: P5

TapWeightsOut = [-0.100 0.900 0.000];

case 6 % PCIe Configuration: P6

TapWeightsOut = [-0.125 0.875 0.000];

case 7 % PCIe Configuration: P7

TapWeightsOut = [-0.100 0.700 -0.200];

case 8 % PCIe Configuration: P8

TapWeightsOut = [-0.125 0.750 -0.125];

case 9 % PCIe Configuration: P9

TapWeightsOut = [-0.166 0.834 0.000];

otherwise

TapWeightsOut = TapWeightsIn;

end

Re-wire the FFE sub-system so that the FFETapWeights and FFEConfigSelect constant blocks connect to the inputs of the newly defined PCIe4FFEconfig MATLAB function block. The TapWeightsOut signal from the PCIe4FFEconfig block connects to the TapWeights port of the FFE block.

To test that the new FFE control parameter is working correctly, open the SerDes IBIS-AMI Manager dialog box from the Configuration block. In the AMI-Tx tab, edit the ConfigSelect* parameter to set Current value to P7. This corresponds to PCIe Configuration P7: Pre = -0.100, Main = 0.700 and Post = -0.200. Observe the output waveforms.

Export Models

Open the Export tab in the SerDes IBIS/AMI manager dialog box.

  • Update the Tx model name to pcie5_tx.

  • Update the Rx model name to pcie5_rx.

  • Note that the Tx and Rx corner percentage is set to 10. This will scale the min/max analog model corner values by +/-10%.

  • Verify that Dual model is selected for both the Tx and the Rx AMI Model Settings. This will create model executables that support both statistical (Init) and time domain (GetWave) analysis.

  • Set the Tx model Bits to ignore value to 3 since there are three taps in the Tx FFE.

  • Set the Rx model Bits to ignore value to 1000 to allow sufficient time for the Rx DFE taps to settle during time domain simulations.

  • Set Models to export as Both Tx and Rx so that all the files are selected to be generated (IBIS file, AMI files and DLL files).

  • Set the IBIS file name to be pcie5ami.

  • Press the Export button to generate models in the Target directory.

Test Generated IBIS-AMI Models

The PCIe Gen5 transmitter and receiver IBIS-AMI models are now complete and ready to be tested in any industry standard AMI model simulator.

References

[1] PCI-SIG, https://pcisig.com.

See Also

| | |

Related Topics

External Websites