Skip to main content

WAL the Waveform Analysis Language

Test and Build

The Waveform Analysis language logo

WAL, the Waveform Analysis Language, enables automated and fast analysis of hardware waveforms. It is the most advanced Python package to read, analyze, and debug VCD, FST, or CSV waveforms. WAL is perfect for finding a bug at the millionth clock cycle, decoding AXI or other protocols, or calculating performance metrics such as bandwidth or latency. Use WAL interactively, as a standalone scripting language, or embed it in Python as the waveform analysis layer of your own tool.

In WAL, hardware-specific things such as signals and simulation time are treated as first-class citizens of the language. This makes writing WAL scripts quick and easy. You can focus on expressing your problem, the interpreter handles the boilerplate of handling the waveforms for you.

Documentation

The WAL Documentation is available on wal-lang.org.

Interactive Tutorial

Try out WAL without installation using our interactive tutorial.

Installation from PyPi

WAL is available from PyPi!

pip install wal-lang --user

On some systems, pip does not add WALs installation path to the PATH variable. If the "wal" command is not available after installation please add the installation path, e.g. ~/.local/bin on Ubuntu, to your PATH variable.

To get the latest development version of WAL you can clone this repository. After that, follow the instructions for your OS below inside the cloned directory.

Installation from Source

For Ubuntu:

sudo apt install git cmake python3-cffi python3.10-venv python3-pip build-essential -y
git clone https://github.com/ics-jku/wal.git
cd wal
PYTHON=python3 make install
echo "export PATH=\$PATH:$HOME/.local/bin" >> ~/.bashrc

For Fedora:

sudo dnf install git cmake g++ zlib-devel python3-devel -y
git clone https://github.com/ics-jku/wal.git
cd wal
make install

For OpenSuse Tumbleweed:

sudo zypper install git cmake gcc-c++ zlib-devel python3-devel
git clone https://github.com/ics-jku/wal.git
cd wal
make install

Support for FST waveforms

To add support for FST files, install the pylibfst package.

pip install --user pylibfst

PyPy and Pyston Support

WAL also supports the alternative Python implementations PyPy and Pyston. Both alternative implementations can lead to substantial speedups in a lot of scenarios. To install WAL with an alternative implementation change the PYTHON variable in the Makefile or install with PYTHON=pypy3 make install.

If you are using PyPy you must also have the python-dev package installed for PyPy3. On Ubuntu this package can be installed with 'sudo apt install pypy3-dev'.

Examples

To get an impression of WAL you can check out basic examples. Also, this ASCII cast ASCII Cast, shows how the WAL REPL is used to compare two RISCV cores.

WAWK

WAWK is a project building on top of the WAL language. It combines the waveform analysis of WAL with the programming Style of AWK. Internally, WAWK is transpiled to WAL expressions, showcasing how new languages can be build on top of WAL.

Publications

The initial paper on WAL was presented at ASPDAC'22 and can be downloaded here. The examples from the paper can be found in the examples folder.

An extended open-access journal article about WAL is available here.

If you found WAL useful for your research, please consider citing on of our papers:

@ARTICLE{10496480,
  author={Klemmer, Lucas and Große, Daniel},
  journal={IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems},
  title={WAVING Goodbye to Manual Waveform Analysis in HDL Design With WAL},
  year={2024},
  volume={43},
  number={10},
  pages={3198-3211},
  doi={10.1109/TCAD.2024.3387312}}
@InProceedings{KG:2022,
  author        = {Lucas Klemmer and Daniel Gro{\ss}e},
  title         = {{WAL:} A Novel Waveform Analysis Language for Advanced Design Understanding and Debugging},
  booktitle     = {ASP Design Automation Conf.},
  year          = 2022
}

WAL was also used in other publications for processor analysis, Spade HDL integration, pipeline visualization, and for a novel debug methodology.

Emacs Mode

A basic major mode for Emacs is available here.

Metadata

Release files for wal-lang 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wal-lang 0.9.0
File Size Uploaded
wal_lang-0.9.0.tar.gz 62.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wal-lang 0.9.0
File Interpreter ABI Platform
wal_lang-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 137.7 kB

Release files / wal_lang-0.9.0.tar.gz

Download URL wal_lang-0.9.0.tar.gz
Size 62.9 kB
Tags Source
SHA-256 checksum
How to use checksums
90396e285dc9f5553f96d06f5f9a2a548ccaddec423db90689364b3365ce17aa
BLAKE2b-256 checksum
How to use checksums
753c0e074d6edb5fdfb77b301af3fb5e96632fd80a781248a554f3dcee58775e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wal_lang-0.9.0-py3-none-any.whl

Download URL wal_lang-0.9.0-py3-none-any.whl
Size 74.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
099408d854ba318c8615932491af7c69067ffaac552199425af2d7bd93606796
BLAKE2b-256 checksum
How to use checksums
7ca3e5d6fb3e5855349314e1c1c44ef60716e9869ec891e6a337c8eea88872af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.9.1

2 release files

This release

0.9.0 This release

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.0

2 release files

0.6.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page