Main Content

Select Slices of Input Data for SerDes System Blocks

This example uses how to select a family of input data from multiple available input data families using the Slice Select parameter of the CTLE and Saturating Amplifier blocks in the SerDes Toolbox™. You can use a single AMI parameter to synchronize the selection of input data between the two blocks.

Background

Many CTLE implementations consist of hundreds, or even thousands of equalization configurations. You may want to group several of these configurations together for various reasons, such as:

  • You need different groups of settings for different channel protocols. For example, PCIe, UCIe, or USB all may require different settings.

  • You need different settings to model process variation.

  • You need different settings based on the speed of operation of the system.

  • You need to vary the available settings based on a combination of other control settings.

In addition, the selection criteria may be common across multiple blocks. For example multiple CTLE blocks that use a common set of control parameters, or a CTLE block followed by a Saturating Amplifier block that will vary together over process.

By using a 3-D matrix to store all these values, the Slice Select input to the CTLE and Saturating Amplifier blocks allows you to index these parameters. You can then select a subset of parameter values suitable for your application.

Model Setup in the SerDes Designer App

Slice Select is only used on the CTLE and Saturating Amplifier (SatAmp) data path equalization blocks, so the first part of this example sets up both these blocks using the SerDes Designer app. Launch the app with the following command:

>> serdesDesigner

Configuration Setup

Keep the default values in the Configuration panel:

  • Set the Symbol Time to 100ps (10GHz).

  • Set the Modulation to NRZ.

  • Set the Signaling to Differential.

Tx Model Setup

The CTLE and Saturating Amplifier blocks are typically only used in a Rx model, so we will not touch the Tx model in this example. Keep the default settings for the AnalogOut model.

Analog Channel Setup

  • Verify the Channel loss is set to 8 dB and the Differential impedance is set to 100 ohms.

  • Set the Target Frequency to 5 GHz, which is the Nyquist frequency for 10 GHz.

Rx Model Setup

Keep the default settings for the AnalogIn model, then add a CTLE and SatAmp block to the Rx.

The SerDes system should look like this:

ss_serdesDesigner.jpg

Add a family of GPZ values to the CTLE

To demonstrate using slice select to choose different sets of CTLE GPZ values, three sets of GPZ arrays are included in this example based on the PCIe values used in the example PCIe6 Transmitter/Receiver IBIS-AMI Model. These three arrays are intended to model the CTLE at 3 different process nodes:

  • gpz_typ uses a DCgain of 5dB to 15dB

  • gpz_slow uses a DCgain of 4dB to 14dB

  • gpz_fast uses a DCgain of 6dB to 16dB

Begin by extracting the three arrays included with this example:

load('slice_select_gpz.mat')

Next, combine the 3 slices into a single 3D matrix. Note that since CombineSlices only supports 2 arguments at a time, this process needs to be run twice:

gpz_temp = serdes.CTLE.CombineSlices(gpz_typ, gpz_slow);
gpz_all = serdes.CTLE.CombineSlices(gpz_temp, gpz_fast);

gpz_all should now be a 11x8x3 matrix.

Finally, point the CTLE to the newly created matrix by setting the Specification to GPZ Matrix, and entering gpz_all for the Gain pole zero matrix value.

ss_app_ctle_block_setup.jpg

You should now see that 3 values, 0, 1 and 2, are available under the Slice select drop-down menu.

You can now plot the CTLE Transfer Function and see how the plot changes as different values of Slice select are selected.

ss_app_ctle_transfer_function_slice1.jpg

Add a Family of VinVout values to the SatAmp.

To demonstrate using slice select to choose different sets of Saturation Amplifier VinVout values, three sets of VinVout arrays were generated based on the default VinVout values. These three arrays are intended to model the SatAmp at 3 different process nodes.

  • sat_typ uses the default VinVout values directly

  • sat_slow uses the default VinVout values multiplied by 0.9

  • sat_fast uses the default VinVout values multiplied by 1.1

Begin by extracting the three arrays included with this example:

load('slice_select_sat.mat')

Next, combine the 3 slices into a single 3D matrix. Note that since CombineSlices only supports 2 arguments at a time, this process needs to be run twice:

sat_temp = serdes.SaturatingAmplifier.CombineSlices(sat_typ, sat_slow);
sat_all = serdes.SaturatingAmplifier.CombineSlices(sat_temp, sat_fast);

sat_all should now be a 11x2x3 matrix.

Finally, point the SatAmp to the newly created matrix by setting the Specification to VinVout, and entering sat_all for the VinVout matrix value.

ss_app_satamp_block_setup.jpg

Note: Since the Saturating Amplifier is not used in impulse processing, changing the Slice Select value here will have no impact on the simulation results in SerDes Designer.

Export SerDes System to Simulink

Save and then click the Export button to export the configuration to Simulink, where you will customize the CTLE and SatAmp blocks to use a common parameter to synchronize the value of Slice Select across the two blocks.

Note: You should get a pop-up dialog letting you know that the base workspace variables used by the model (gpz_all and sat_all) have been copied to the model workspace in the Simulink model. This means that the Simulink model is not dependent on the parameters in the base workspace and those parameters will be saved inside the Simulink model moving forward.

Model Setup in Simulink

The second part of this example takes the SerDes system exported by the SerDes Designer app and customizes it in Simulink®.

Review Simulink Model Setup

This Simulink SerDes system contains the standard configuration: Stimulus, Configuration, Analog Channel, Tx, and Rx blocks, with all values carried over from the SerDes Designer app. Review each of these blocks to verify the setup is as expected.

sim_serdes_system.jpg

View the SatAmp VinVout Curves

Now that you are in Simulink, the SatAmp has the ability to plot the VinVout curves. To view the curves with different values of Slice Select, double-click on the SatAmp block and select Visualize Response.

ss_sim_satamp_response.jpg

You can change the value of Slice select, then click on the Visualize Response button again to update the figure and see how the VinVout plot changes.

Create a Custom Control for Slice Select

While the Rx model is now ready to be used in simulations, since both the CTLE and the SatAmp blocks use a separate slice select parameter to select the correct values for each process corner, they must each be set individually. A more user-friendly approach would be to link these two parameters together so that the user would only need to set the slice select value in one place. There are multiple ways to accomplish this:

  • Replace the SaturatingAmplifierParameter.SliceSelect Constant block in the SatAmp block with a copy of the CTLEParameter.SliceSelect Constant block. This allows the CTLE SliceSelect parameter to control both the CTLE and SatAmp slice selects at the same time.

  • Put both the CTLE and SaturatingAmplifier system objects inside a Pass Through block, then create a new common AMI parameter control for both slice select inputs.

  • Create a new AMI parameter for the CTLE called Process, then use this AMI parameter to control both the CTLE and SatAmp slice selects at the same time. This is shown below.

This example creates a new AMI parameter since a single Process parameter is more intuitive.

Add New AMI Parameter

Open the IBIS-AMI Manager from the Configuration Block. On the AMI-Rx tab, highlight CTLE and select Add Parameter... to add a new AMI parameter. In the Add/Edit AMI Parameter dialog:

  • Set the Parameter Name to: Process

  • Set Description to: Process Corner for CTLE and Saturating Amplifier operation.

  • Set Usage to: In

  • Set Type to: Integer

  • Set Format to: List

  • Set Default to: 0

  • Set List values to: [0 1 2]

  • Set List_Tip values to: ["Typical" "Slow" "Fast"]

  • Set the Current value to: Typical

Press OK to add the new parameter to the CTLE.

Hide Slice Select

Since you are replacing the Slice Select AMI Parameters with the new Process AMI Parameter, you need to hide the SliceSelect parameters so they do not show up in the .ami file and are not visible to the end user.

On the AMI-Rx tab of the IBIS-AMI Manager, edit the CTLE SliceSelect parameter and check the box for Hidden and press OK. In the Rx AMI tree, you should now see a ^ character after SliceSelect to show that it has been marked as hidden.

Repeat this process for the SatAmp SliceSelect parameter.

Connect the new AMI Parameter to Each Block

A new Constant block named CTLEParameter.Process was automatically added to the CTLE when the Process parameter was added. Look under the mask of the CTLE block, delete the CTLESliceSelect Constant block, then connect the new Process constant block to the SliceSelect input on the CTLE block.

Next, copy the CTLE Process constant block, look under the mask of the SatAmp block, and paste the Process block. After deleting the SatAmpSliceSelect Constant block, connect the new Process constant block to the SliceSelect input on the SatAmp block.

Run Refresh Init

Run Refresh Init on the Rx block to automatically connect the new Process parameter to the CTLE Slice Select.

%% BEGIN: Custom user code area (retained when 'Refresh Init' button is pressed)
CTLEInit.SliceSelect = CTLEParameter.Process; % User added AMI parameter from SerDes IBIS-AMI Manager
CTLEParameter.SliceSelect; % Disconnected default AMI parameter
SatAmpParameter.SliceSelect; % Disconnected default AMI parameter
% END: Custom user code area (retained when 'Refresh Init' button is pressed)

Note that since the SatAmp block is not used in Init, the new Process parameter does not need to be connected to the SatAmp.

Test the Model

Run the simulation and check that there are no errors or warnings.

You can verify proper operation by logging the input values for ConfigSelect and SliceSelect on the CTLE. You should see that as you change the value of Process and re-run the simulation, that the ConfigSelect value changes.

Generate IBIS-AMI Models

The final part of this example takes the customized Simulink model and generates IBIS-AMI compliant model executables, IBIS and AMI files for the Slice Select-enabled receiver.

Export Models

Open the SerDes IBIS-AMI Manager and select the Export tab. On the Export tab:

  • Keep the Tx model name as serdes_tx since it is unmodified

  • Update the Rx model name to sliceselect_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 Rx AMI Model Settings. This will create a model executable that supports both statistical (Init) and time domain (GetWave) analysis

  • Set the Rx model Bits to ignore value to 1000 to allow enough time for the external clock waveform to settle during time domain simulations

  • Set Models to export to Both Tx and Rx

  • Set the IBIS file name to be sliceselect.ibs

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

Test Generated IBIS-AMI Model Executables

The Slice Select capable IBIS-AMI models are now complete and ready to be tested in any industry standard AMI model simulator such as Signal Integrity Toolbox.

See Also

| | |

Related Examples

More About