Skip to main content

Wal - Wavefile Analysis Language

Project description

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. In WAL, hardware-specific things such as signals and simulation time are treated as first-class citizens of the language.

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 the fst filetype to WAL, 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'.

Documentation

The WAL Programmer Manual is available on wal-lang.org.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wal_lang-0.8.8.tar.gz (62.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wal_lang-0.8.8-py3-none-any.whl (74.5 kB view details)

Uploaded Python 3

File details

Details for the file wal_lang-0.8.8.tar.gz.

File metadata

  • Download URL: wal_lang-0.8.8.tar.gz
  • Upload date:
  • Size: 62.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wal_lang-0.8.8.tar.gz
Algorithm Hash digest
SHA256 67dea046ae7846e4c2e6185d2a964d9f742a0c42ca500558c87f7c589fb0b4dc
MD5 d32ba98925431767000df1dcf38eac1b
BLAKE2b-256 c1b6230642ff669b18c0422f99ca88d9845c0542f6dec42c7ef93a62758c8012

See more details on using hashes here.

File details

Details for the file wal_lang-0.8.8-py3-none-any.whl.

File metadata

  • Download URL: wal_lang-0.8.8-py3-none-any.whl
  • Upload date:
  • Size: 74.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wal_lang-0.8.8-py3-none-any.whl
Algorithm Hash digest
SHA256 ef0a8295ba2d2e1aef229169de58b3544581140401e5c266a2fe05f72212c8fb
MD5 f904ed9a4457c3859c6f9b19dde652ef
BLAKE2b-256 f4672a7b7b0f84f1e0ba389a81a0b275f3232f94a3baab61202fc22d25af036c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page