Releases: capn-freako/PyBERT
Fixed user-defined impulse response length.
This is a substantial release.
And you should upgrade to it if you use PyBERT regularly.
In this release:
Function Call Signature Changes
- `calc_jitter()`
- `make_bathtub()`
General Usage Notes
-
A minor bug was fixed, which prevented the user from manually setting the channel impulse response length.
This feature is used when PyBERT's native impulse response trimming is inappropriate for some reason.
-
Adds Rx IBIS-AMI model use testing in all 3 modes:
Init()
,GetWave()
, no clocks, andGetWave()
with clocks.
-
Adds a user selector to the GUI, which allows for use of the clock times returned by
GetWave()
. -
Fixes a crash that occurred when the
Ignore_Bits
field was absent in the AMI file. -
Adds reporting of IBIS-AMI
GetWave()
DFE adaptation, when those parameter names are easily recognized as DFE tap weights. -
Expands the PyBERT native DFE to 20 taps, making use of the new optimizer interface to control their presence and granularity.
-
Cleaned up development infrastructure on Windows 10.
-
Added ${PROJ_INFO} as a
Makefile
target, to fix single-sourced versioning. -
Fixed missing post-DFE eye and faulty bathtub extrapolation.
-
Fixed bathtub curve generation.
-
Altered plot titles, for less visual clutter.
-
Increased lower y-limit of bathtubs to: 1e-12, reflecting the numerical accuracy limits of the code.
-
Fixed wonky bathtub curves in closed eye cases.
-
Changed scaling of impulse response plots to: V/samp.
-
Added Tx analog output impedance to channel calculation.
Notes for Developers
-
Added dual-Dirac Rj means to list of items returned by
calc_jitter()
, for use bymake_bathtub()
. -
Altered
make_bathtub()
to take Rj means as input and to not return extrapolation indices. -
Began capturing all output parameters from each GetWave() call.
-
Updated type stubs for
pyibisami
module.
New Linear EQ Optimizer
This release includes:
-
Pip installable!
- Anaconda / MiniConda are no longer required to install and run PyBERT. :)
-
A completely re-tooled linear EQ optimizer.
- The optimizer now does an exhaustive sweep, according to granularities set by the user, just like COM.
- Optimizer performance has been dramatically improved.
-
Expanded Tx de-emphasis (6 taps).
-
Expanded Rx DFE (20 taps).
-
Direct manual control over frequency domain processing, via:
fmax
andfstep
. -
User control over S-parameter channel file windowing and port number correction.
-
Support for Python 3.9, 10, 11, and 12.
-
Improved development infrastructure.
- Now, exclusively
make
driven.
(Try justmake
for a list of targets.)
- Now, exclusively
Note: With this release, we are dropping support for:
-
Python 3.8 and earlier.
-
Intel-based Macs.
Dual-Dirac Jitter Modeling & Updated GUI Machinery
This release:
- Adds ability to abort a running simulation.
- Fixed the case where no AMI parameters are output by a model.
- Update license to be exactly BSD-3 and correctly recognized by GitHub as such.
- Adapted to recent change to exclusive SI units usage by SciKit-RF.
- Added dual-Dirac Pj/Rj jitter separation.
- Updated to use new releases of Chaco/Enable packages (v6.0.0).
Single Source Versioning
This release creates a single source (the pyproject.toml
file) for version information, for both PyBERT/PyIBIS-AMI and their dependencies.
Before this release, version strings in 3 different places had to be manually kept in synch.:
- the
pyproject.toml
file, - the
meta.yaml
file, and - the
<pkg>/__init__.py
file.
This was a big headache for developers and cost many unnecessary rebuilds.
As of this release, version strings are only maintained in the pyproject.toml
file, both for PyBERT/PyIBIS-AMI and dependencies.
Note: There is one exception to this: the qt
package has its version specifier: ">=5", still in the meta.yaml
files of any packages dependent upon it.
This is because PyPi doesn't provide a binary release for the Qt package.
And, therefore, putting its version specifier in the pyproject.toml
file will break the build.
Many thanks to David Patterson for catching this!
Brought conda-build infrastructure up to date.
For more details, see the release notes.
Modern Python Packaging & Pip Support
This release brings the code structure and package building/distribution methodology of both the PyBERT & PyIBIS-AMI packages up-to-date w/ current Python community best practice standards.
It also adds support for pip
based installation, although this is currently only recommended for new Apple MacBooks w/ the M1/M2 silicon.
Note: As per the bump in the major revision number ("3" to "4"), this release may potentially break pre-existing client code.
Typically, such breakages are easy to fix, by just changing the name of an imported module.
IBIS v7.1 Reserved Parameters
This release brings reserved AMI parameter parsing up to date with version 7.1 of the IBIS specification.
Note that not all reserved parameters are being faithfully implemented, yet.
Release v3.5.5
This release of PyBERT
/PyAMI
fixes some fragilities in the AMI parameter parser, which were originally found by Simon Fau.
v3.5.4
This release just adds a new module for parsing the output of HSPICE simulations: pybert.hspice_parser
.
Rel. v3.5.3
Further improvements to on-die S-parameter handling.