StatOpt: A Statistical Eye Analysis and Link Optimization Tool
Department of Electrical and Computer Engineering University of Toronto Contributors: |
Matlab Version of StatOpt:
The StatOpt simulator performs a statistical channel eye analysis to determine the quality of a wireline communication link. It generates a bit error rate plot showing the optimal performance of the link for a given set of impairment sources. Sources of impairment include cross-talk, jitter, noise and non-linearity. Any M-PAM modulation scheme can be simulated (including 1+D and 1+0.5D) for any channel transfer function at any data rate. To increase the speed of the simulation, reduce the number of impulse response pre and postcursors. However, this will decrease the accuracy of the final results. This script uses parallel threading to increase speed. Due to thread initialization, the first simulation may take longer than anticipated. The program also has the ability to use a genetic algorithm to automatically equalize any link within ~15 minutes. To enable this feature, turn on the adapt setting in the simulation settings file. By default, an equalized PAM-4 link has been created. This link is ready to simulate out of the box.
Download the Matlab Version of StatOpt.
Welcome Tutorial Video (6 minutes) of the Matlab StatOpt Tool
Walkthrough Tutorial Video (8 minutes) of the Matlab StatOpt Tool
System Requirements:
- Matlab R2018b or later (may work on previous virsions as well).
- MathWorks Control System Toolbox (TM).
- MathWorks Parallel Computing Toolbox (TM).
Instructions:Notes:
- Download and unzip "StatOpt.zip" in a local folder.
- Ensure all files are located in the same folder.
- Open Matlab R2018b or later.
- Open "RunStatOpt.m" (the top-level script)
- Five example settings are provided:
- GenerateUserSettingsExample0: an example of importing a keystone file, generating a pulse response, applying impairments, and generating an eye diagram.
- GenerateUserSettingsExample1: an example of using a pre-defined pulse response to generate an eye diagram.
- GenerateUserSettingsExample2: an example 1+D link.
- GenerateUserSettingsExample3: an example clock signal.
- GenerateUserSettingsExample4: an example of using the genetic engine to optimize a link.
- Uncomment one example script.
- Begin the simulation by running "RunStatOpt.m".
- An option will be given to "update the channel frequency response". This is only required when importing new channels and can be skipped.
Knob Definitions
- To change user settings including noise, data-rate, modulation...etc, open and edit the GenerateUserSettings.m file.
- In this file, you can select which plots you would like to display. By default, many figures are skipped.
- To turn on the automatic adaption, set true the "adaption.adapt" setting in the settings file.
Refer to _Readme_.txt file in the download directory.
Credit/AcknowledgementOriginally written in MATLAB by Jeremy Cosson-Martin and Jhoan Salinas under the supervision of Prof. Ali Sheikholeslami. Porting to Python was done by Savo Bajic as a project for Ali Sheikholeslami's wireline course (ECE1392) at the University of Toronto, based on version 1.11 in MATLAB, although it has been updated since in parallel with the MATLAB version.
The Touchstone files used for examples were provided by Samtec as part of the IEEE 802.3ck 100 Gb/s per Lane Electrical Study Group. More information is available in the Touchstone folder readme.