Skip to content

Repository files navigation

PAM4 Reference-Receiver Filter Explorer

An interactive explorer for understanding how the measurement response changes high-speed PAM4 waveforms and eye diagrams. It compares:

  • fourth-order Bessel–Thomson (BT4),
  • fourth-order Butterworth,
  • an idealized brick-wall response, and
  • a scope-bandwidth-limited BT4 implementation.

The application includes presets for:

  1. PCIe Gen6 64 GT/s SNDR,
  2. PCIe Gen6 64 GT/s transmitter jitter,
  3. IEEE 802.3ck 53.125 GBd PAM4, and
  4. IEEE P802.3dj 106.25 GBd PAM4 (draft).

Move the sliders for noise, deterministic jitter, random jitter, BT4 cutoff, and oscilloscope bandwidth. The controls, Keysight-inspired persistence eye diagrams, filter response, group delay, time-domain edge comparison, and live metrics remain together in the browser.

Live app:

https://<GITHUB_USER>.github.io/<REPOSITORY>/voici/render/pam4-filter-explorer.html

Replace the placeholders after publishing.

The complete application is generated from one notebook and rendered as a static, client-side dashboard with Voici and JupyterLite using a Pyodide kernel. There is no application server; all simulation and plotting run in the visitor's browser.

What the explorer demonstrates

  • Why an ideal brick-wall response, a Butterworth response, and BT4 are not interchangeable even when they share a nominal cutoff.
  • Why BT4's group-delay behavior and time-domain response matter to PAM4 eyes.
  • Why a scope's native bandwidth must extend far enough to reproduce the gradual BT4 tail before digital correction is applied.
  • How noise bandwidth, DDJ, RJ, overshoot, ringing, and minimum eye height move as the filter response changes.

Important scope

This is an educational model, not PCI-SIG or IEEE compliance software. It does not implement every required pattern, clock-recovery, de-embedding, reference equalizer, noise-compensation, jitter-decomposition, statistical, or pass/fail procedure.

The supplied standards remain copyrighted and are not copied into the site. The notebook provides clause locations and short paraphrases only. IEEE P802.3dj remains a draft; re-check the controlled version before compliance work.

Run and build locally

Install uv, then run:

uv sync
uv run python scripts/build_notebook.py
uv run pytest
uv run voici build --contents notebooks/pam4-filter-explorer.ipynb
uv run python -m http.server -d _output 8000

Open:

http://localhost:8000/voici/render/pam4-filter-explorer.html

To edit or run the notebook interactively:

uv run jupyter lab notebooks/pam4-filter-explorer.ipynb

The first browser visit can take roughly 30–60 seconds while Pyodide starts. Subsequent visits are normally faster because static assets are cached.

Publish to GitHub Pages

Deployment is automated. Pushing to main runs the included workflow, which:

  1. regenerates the notebook,
  2. runs the numerical and content tests,
  3. builds the Voici static site,
  4. uploads _output as a GitHub Pages artifact, and
  5. deploys the artifact.

Follow DEPLOYMENT.md for the complete repository setup, GitHub Pages, About panel, QR-code, update, and troubleshooting procedure.

Repository description, website, and topic suggestions are in ABOUT.md.

Generate the QR code

After the live application URL works:

uv run python scripts/make_qr.py \
  "https://<GITHUB_USER>.github.io/<REPOSITORY>/voici/render/pam4-filter-explorer.html"

The output is:

assets/pam4-filter-explorer-qr.png

Project structure

.github/workflows/deploy.yml          GitHub Pages build and deployment
notebooks/pam4-filter-explorer.ipynb  Generated reader-facing notebook
scripts/build_notebook.py             Notebook content and layout builder
scripts/make_qr.py                    QR-code generator
src/filter_explorer_core.py           Signal and filter model
src/filter_explorer_ui.py             Interactive dashboard
tests/                                Numerical and presentation checks
ABOUT.md                              GitHub About text and topics
DEPLOYMENT.md                         Step-by-step publishing guide
LICENSE                               All-rights-reserved notice

Sources

Additional primary and vendor references appear inside the explorer.

License

No open-source license is granted. The deployed application may be viewed and used interactively, but the source is not licensed for reuse, modification, or redistribution without prior written permission. See LICENSE.

Author

Created by Jiexin Zhu.

© 2026 Jiexin Zhu. All rights reserved.

About

Interactive PAM4 reference-receiver filter explorer for PCIe Gen6, IEEE 802.3ck, and IEEE P802.3dj. Runs entirely in the browser with Voici, JupyterLite, and Pyodide.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages