# Modeling SerDes CTLE Using Transfer Function Data

Take transfer function data representing the frequency response of a continuous time linear equalizer, or CTLE, and transform it into a gain-pole-zero, or GPZ, matrix that can be used in the SerDes Toolbox™ CTLE block for statistical analysis and time-domain simulation.

Create an accurate behavioral model in SerDes Toolbox that reproduces the results of transistor-level design tools or measurements. The model reproduces the behavior of the CTLE accurately enough that the IBIS-AMI model will predict the silicon behavior in a channel simulator. The SerDes Toolbox CTLE is configured through a GPZ matrix, so a method is required for extracting the poles and zeros from the transfer function information.

The rational function from RF Toolbox™ is used to fit a transfer function to the data. The rational function uses a non-iterative interpolatory algorithm to construct the fit. The result is a rational object that is stable and causal by construction and that can be used for SerDes statistical analysis and time domain simulation.

**Published:
19 Aug 2020**

Welcome to this video about SerDes Toolbox. In this video I will explain how to take transfer function data representing the frequency response of a Continuous Time Linear Equalizer, or CTLE, and transform it into a Gain Pole Zero, or GPZ, matrix that can be loaded into the SerDes Toolbox CTLE block.

In this video I will discuss the goal of the conversion process and why you would want to follow this approach, introduce the SerDes Toolbox CTLE block, then show the process and MATLAB script that can be used to convert a transfer function to a GPZ matrix. Finally, I will talk about some of the things that you may need to do in order to get a good set of poles and zeros.

What is the problem we are trying to solve? We are trying to make a behavioral model in SerDes Toolbox that models the behavior that is captured in the transistor-level design tools. The behavioral model needs to reproduce the behavior of the CTLE accurately enough that the IBIS-AMI model will predict the silicon behavior in a channel simulator. The SerDes Toolbox CTLE is configured through a GPZ matrix, so a method is required for extracting the poles and zeros from the transfer function information.

Here are some things to consider when modeling a CTLE. A good model will be easy to update when changes are made upstream. For example, the CTLE curve data may change during the silicon design and characterization process, so it will be necessary to update the curve data in the model.

When a model is easily updated it is possible to make an IBIS-AMI model early in the design process, which gives system designers and others a convenient way to do preliminary analysis. As new data is available the IBIS-AMI model can be regenerated with the updated information.

The CTLE block in SerDes Toolbox was designed for this process. It is a behavioral model, so it is fast. The GPZ matrix is easy to use for configuration. It is capable of both statistical and time domain analysis. The CTLE can adapt (choose one configuration out of all configurations) by looking at the pulse response of the channel in statistical analysis. It compiles into a portable, fully compliant IBIS-AMI model.

The SerDes Toolbox CTLE is a generic CTLE block. It is user configurable, as you will see. One important point: when setting up your model in the SerDes Designer app, use as many CTLE blocks as you need. If your device has a four stage CTLE then use four CTLE blocks to model it. This will make configuration, updating and model execution easy and efficient.

If you are using the SerDes Designer app, the configuration parameters are accessed by selecting a CTLE block in the floor plan area. The parameters are:

- The name: this makes it easier to match the model with the silicon, especially if you are using multiple CTLE blocks to model a multi-stage CTLE.
- The Mode: there are three modes: Off – the CTLE is disabled and is a pass-through; Adapt – the CTLE selects the configuration that gives the best eye from the pulse response passed to the model during statistical analysis; Fixed – the user specifies the configuration to use.

Next is the control over how the configuration is specified. The first option is DC Gain and Peaking Gain. This is a convenient way to do what-if exploration because there are two gains and one frequency to specify. The default is shown here which is a set of nine configurations. You can modify the vectors so that there are more or fewer configurations.

The DC Gain is the gain at 0 Hz in dB. The Peaking Gain is the difference between the DC Gain and the gain at the Peaking Frequency in dB.

The second option is DC Gain and AC Gain. This is similar to DC Gain and Peaking Gain in that there are two gains and a frequency to specify. The DC Gain is the gain at 0 Hz in dB. The AC Gain is the gain at the peaking frequency in dB.

The third option is AC Gain and Peaking Gain. This is similar to DC Gain and Peaking Gain in that there are two gains and a frequency to specify. The AC Gain is the gain at the peaking frequency in dB. The Peaking Gain is the difference in the gain at the peaking frequency and the gain at DC in dB.

The fourth option is the one I will be talking about from here on out: GPZ matrix. It is the most general, but typically requires some scripting to put the data into the correct format.

In summary: there are three specifications that are good for quick what-if analysis: DC Gain and Peaking Gain, DC Gain and AC Gain, AC Gain and Peaking Gain. There is a fourth option that is more general: GPZ matrix. From here on out the focus is on the GPZ matrix option for the specification of configurations.

The GPZ matrix has one row per configuration.

The Gain is the gain in dB.

The poles and zeros are in Hz.

Complex poles and zeros must have conjugates.

For stability there must be more poles than zeros.

If necessary, the array can be padded with 0Hz poles and zeros to make all rows the same length.

Here is an overview of the process for creating a GPZ matrix from transfer function data.

- The transfer function data for the CTLE configurations are obtained from design data, preferably in csv format.
- The data is imported into MATLAB.
- The data is transformed (if necessary) to frequency points and real/imaginary complex response data.
- A rational function is fit to the data.
- Gain, poles and zeros are extracted from the fit.

For transfer function data, the easiest format to deal with is a csv file with column one containing the frequency points and columns 2 and 3 being the real/imaginary transfer function data.

MATLAB has multiple useful functions that can be used to reformat data that is in other formats.

There are multiple ways to import data into MATLAB. The function readmatrix() works well to read csv format data into a matrix.

Once imported, the data is separated into a vector of frequencies and a vector of complex data. This is where the data may need to be converted from other formats, such as magnitude/phase.

The example script here assumes that the imported data has the frequency points in column one and the real/imaginary data in columns two and three.

The result is a vector of frequency points and a vector of complex data.

The next step is to use the rational function from RF Toolbox to fit a rational function to the data. The rational function uses a non-iterative interpalotory algorithm to construct the fit. The result is a rational object.

The zpk function is used to extract the gain, poles and zeros from the rational object. The SerDes Toolbox CTLE requires the gain to be in dB and the poles/zeros to be in Hz. The zpk function outputs are converted to dB and Hz in constructing the gpz matrix. The result is a gpz matrix in a MATLAB workspace variable.

To check the accuracy of the fit, the frequency response is extracted from the rational object.

The magnitude in dB and the phase of the original data and the response from the fit are both plotted.

The gpz matrix is in a MATLAB workspace variable. It can be copied and pasted into the SerDes Designer app or Simulink. It can also be directly referenced from the SerDes Designer app.

Here is an example of referencing the MATLAB workspace variable from the SerDes Designer app. If the value in the Gain pole zero matrix field is the name of a MATLAB workspace variable SerDes Designer will use it for the GPZ matrix.

When configuring the CTLE the CTLE Transfer Function plot is a convenient way to see how the curves are interpreted by the CTLE.

Here are some considerations to keep in mind when creating a GPZ matrix:

The GPZ matrix must be numerically stable over the entire analysis bandwidth. The bandwidth is one over two times the sample interval. The sample interval is the symbol time divided by samples per symbol. This means that the bandwidth can be very wide. For example, if the symbol time is 40ps and samples per symbol is 16, the bandwidth is 200 GHz.

The best approach is to keep the number of poles and zeros to 10 or fewer. Very high frequency poles and very low frequency poles can cause instabilities and should be avoided.

Here are some tips to help achieve a good GPZ matrix:

Use the controls to the rational function to change the maximum number of poles and adjust the error tolerance. Both options can help get the best fit with the fewest poles.

If there are high or low frequency poles it can help to truncate the original data. Very low frequency data and data above 2- times the Nyquist frequency do not impact the equalized data and can often be truncated.

Trial and error may be required to obtain the best fit with the fewest poles and zeros.

Thank you for watching this video.

Featured Product

#### SerDes Toolbox

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list

How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

Americas

- América Latina (Español)
- Canada (English)
- United States (English)

Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)

Asia Pacific

- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)