How to run an IBIS-AMI simulation in PyBERT

Article By : David Banas

How much will it cost to have an IBIS-AMI compliant simulator, which is not only free of any licensing costs, but also makes its source code freely available?

You may have heard of IBIS-AMI (algorithmic modelling interface) and thought, “Hey, I should learn all about this.” But, when you asked around, you found that your company didn’t have a licence for any of the commercially available IBIS-AMI simulators. You may have even made some initial inquiries of vendors only to find that those licences are rather expensive. And at that point you may have concluded that it just wasn’t in the cards that you would learn about IBIS-AMI modelling. Well, don’t give up hope just yet, because have I got a deal for you!

How much would you pay for an IBIS-AMI compliant simulator, which was not only free of any licensing costs, but also made its source code freely available to you so you could study/modify it, as you pleased? But, wait, don’t answer yet. Because, if you go to the Instant Gratification page of the PyBERT Wiki, right now, you can be up and running with just such a simulator in less than 30 minutes. Now, how much would you pay? But wait, don’t answer yet. Because, if you… (Actually, go ahead and answer, because I can’t find Ginsu steak knives anywhere.)

A brief history of IBIS-AMI

The IBIS-AMI modelling standard is an extension to IBIS, which predates it by many years. It was intended to provide the same sort of behavioural approach to high speed serial link modelling that IBIS brought to parallel I/O modelling. IBIS was chosen to host this new algorithmic approach to serial link modelling, for several reasons:

  • The metaphor maps very nicely; in both cases the intent is to abandon a circuit level description and instead embrace a behavioural approach. This shift of metaphor has several advantages, including:
  • faster simulations, and
  • potential IP protection for silicon/model makers.
  • IBIS has been very successful at obviating the need for PCB designers to learn SPICE in order to get their jobs done. The hope was that, in a similar vein, IBIS-AMI would obviate the need for high speed serial communication link designers to learn MATLAB—or any of the other equivalent numerical modelling platforms—which have historically been used for this purpose.

Indeed, with an IBIS-AMI compliant simulator in hand, as well as the necessary IBIS-AMI models, a system designer is now able to produce a production worthy high speed serial communication link design, without having to understand the details of channel equalisation. And that has been a very empowering paradigm shift for the telecommunications industry. All that remains is to get this new capability into the hands of more designers, not just the privileged few, whom happen to work for a company willing to shell out $40,000 for a licence to one of the commercial tools. Enter PyBERT.

A brief introduction to PyBERT

PyBERT was originally just a learning tool intended to help the curious telecommunications engineer better understand the wizardly topic of channel equalisation. When I first started writing PyBERT (ca. 2014), the topic of channel equalisation was still considered to be a "black art." And those who had demonstrated some proficiency at it enjoyed a certain wizardly status, and were profiting from that status handsomely. Worse, some of these wizards were actively discouraging other engineers from developing their own understanding of this topic, hoping no doubt to extend the lifespan of this new racket they’d discovered and milk it for all it was worth.

This really bothered me, because I understood channel equalisation and knew that the mathematics behind it weren’t really all that mysterious. I really wanted to pull the curtain aside on these self-proclaimed wizards and show people that the wizards’ machine was operable by them too. So, I wrote PyBERT, intending for it to function as a community owned and maintained resource for the curious telecommunications engineer interested in learning about channel equalisation. Last year, over the holiday break, I decided to give PyBERT the ability to use IBIS-AMI models—as an alternative to its own native algorithms—for modelling the effects of channel equalisation.

Your first PyBERT IBIS-AMI simulation

Getting up and running with PyBERT is easy. Just go to the Instant Gratification page of the PyBERT Wiki and follow the instructions there. If you bump into any trouble, I’ll be happy to help you navigate around it.

Running your first IBIS-AMI simulation in PyBERT is pretty straightforward. Just click on the Config. tab and start working your way from the top-left section (Simulation Control) to the right (Channel Parameters) and then down to the Tx_Equalization and Rx_Equalization sections.

You’ll notice that some sections contain two subsections: IBIS-AMI and Native. Native equalisation modelling is the default in PyBERT. You’ll need to explicitly activate IBIS-AMI mode, by:

  • Selecting a DLL file.
  • Selecting an AMI file.
  • Clicking on the Use AMI checkbox.

Decide whether you want to run the simulation in Init()-only or GetWave() mode and check or leave unchecked the Use GetWave checkbox accordingly. Finally, click the Configure button, to set up each of your AMI models. When you’re done, click the Run button at the bottom of the PyBERT main window. (You can safely ignore the options in the following three sections, all located in the bottom row of the Config. tab: CDR Parameters, DFE Parameters and Analysis parameters.)

You should see the status (located near the bottom-left corner of the PyBERT main window) change state several times. And, when it returns to "Ready," your simulation has completed and you are ready to view the results. You do this, by clicking on the other tabs of the PyBERT main window, generally working your way from left to right, depending upon what you’re most interested in seeing.

Some (hopefully) helpful tips:

  • The IBIS-AMI mode of PyBERT has not been thoroughly tested in either the Duo-binary, or PAM-4, modulation mode. For now, only NRZ is recommended.
  • If you choose to load your channel response from a file, you may use either an impulse or a step response. PyBERT will automatically figure out which you have given it.
  • If the meaning and/or intent of a particular configuration item is unclear, hover your pointer over the data entry field for that item for a few seconds and a helpful tip will pop up explaining the purpose of that item.
  • The checkboxes to the immediate left of the “AMI File” and “DLL File” labels are not user selectable. They appear checked, when PyBERT has validated your selected file. If you select a file and the associated checkbox remains unchecked, something is wrong with your file (at least, from PyBERT’s perspective). If this happens, and you’re sure you have a valid file, please send the file in question to me (capn.freako AT and I will debug the issue.

That’s about all there is to running an IBIS-AMI simulation in PyBERT.

David Banas is Principal SERDES Applications Engineer at eASIC.

First published by EDN.

Leave a comment