Skip to main content

wavekit

CI PyPI version Python Versions Downloads License

English | 中文

Wavekit is a Python library for high-level digital waveform analysis. It loads signals from waveform files as clock-aligned Waveform objects, allowing users to query and operate on them at the cycle and transaction levels, making complex hardware behavior easier to analyze.

AI integration: wavekit-mcp exposes wavekit analysis through MCP tools for AI-assisted workflows.

Features

  • Flexible signal queries: find and batch-load related signals from hierarchical waveform data using multiple path-matching options.
  • Cycle-level analysis: use a range of waveform operations on clock-sampled data to analyze cycle-based behavior such as interface backpressure and FIFO occupancy.
  • Transaction-level analysis: use temporal pattern matching to describe signal relationships across multiple clock cycles for protocol analysis, transaction extraction, and latency measurement.
  • Multi-format waveform support: load and analyze VCD, FST, and FSDB files using the same API.

Installation

python -m pip install wavekit

wavekit supports Python 3.9 and newer. FSDB support requires the Verdi NPI runtime (libNPI.so); see the installation guide for setup details.

Quick start

Calculate the occupancy of a FIFO from a VCD waveform:

import numpy as np

from wavekit import VcdReader

with VcdReader('simulation.vcd') as r:
    fifo = r['tb.u_fifo']
    with r.clock_domain(clock='tb.clk'):
        w_ptr = fifo['w_ptr'].w
        r_ptr = fifo['r_ptr'].w

    depth = 16
    occupancy = (w_ptr + depth - r_ptr) % depth

    print('Average occupancy:', np.mean(occupancy.value))

See the first waveform tutorial for a complete runnable FIFO example.

Documentation

See the documentation for the full reference and guides:

Development

Install the development dependencies and run the checks with Poetry:

poetry install
poetry run pytest
poetry run ruff check .
poetry run ruff format --check .
poetry run mypy

Build the documentation locally with Python 3.10 or newer:

poetry install --with docs
poetry run zensical build --clean --strict

See Contributing for contribution guidelines.

License

This project is licensed under the MIT License. See LICENSE.

Metadata

Release files for wavekit 0.8.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 wavekit 0.8.0
File Size Uploaded
wavekit-0.8.0.tar.gz 57.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for wavekit 0.8.0
File
wavekit-0.8.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
wavekit-0.8.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
wavekit-0.8.0-cp313-cp313-pyemscripten_2025_0_wasm32.whl CPython 3.13 CPython 3.13 PyEmscripten 2025.0+ WebAssembly Details
wavekit-0.8.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
wavekit-0.8.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
wavekit-0.8.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
wavekit-0.8.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
wavekit-0.8.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
wavekit-0.8.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
wavekit-0.8.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
wavekit-0.8.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
wavekit-0.8.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
wavekit-0.8.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details

Total release size: 5.8 MB

Release files / wavekit-0.8.0.tar.gz

Download URL wavekit-0.8.0.tar.gz
Size 57.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a3f7554c59935d806b93abc34e47aed56f91c447bd4a8302da92b5b98bb9a604
BLAKE2b-256 checksum
How to use checksums
889d536a21cd96d973f7fe4be65bb6b8a3c0c381114092983a56c63ab56feab4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL wavekit-0.8.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 760.6 kB
Tags CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f97a564183bf21e187560d979793b750b968f53571415d508aeb60ed386efa81
BLAKE2b-256 checksum
How to use checksums
1349f20ec0b6e0380d927055a40183f306453419a35453cb6c5f6fdf1a0795d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL wavekit-0.8.0-cp314-cp314-macosx_11_0_arm64.whl
Size 179.5 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
42c9832fad17f6852c906643b386224fa52f0649cb77f04a2ec050d5d0ab8fd9
BLAKE2b-256 checksum
How to use checksums
55fb9ae2454cb880f9aa2d4fc6845f4fc7d2d9f1d37b1a3ff01e26782123fae6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp313-cp313-pyemscripten_2025_0_wasm32.whl

Download URL wavekit-0.8.0-cp313-cp313-pyemscripten_2025_0_wasm32.whl
Size 123.5 kB
Tags CPython 3.13 PyEmscripten 2025.0+ WebAssembly
SHA-256 checksum
How to use checksums
1f3a555bd970191416d880954b4b6b0bf26cfda00d1c24d618449e81757f6b55
BLAKE2b-256 checksum
How to use checksums
e4cd04692de2c38d260663bb68047872e28c7fd70df4e6c25192d08d42db5cef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL wavekit-0.8.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 766.0 kB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7c54bccf52c21c36b9d5f24ad5599133198d427084dd4aff319235ce1c7a91a6
BLAKE2b-256 checksum
How to use checksums
f95f9e7a3daf06d0de3d0ce8d7aa546aed23f4fa2a2ecaa2810c2adf014f1916
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL wavekit-0.8.0-cp313-cp313-macosx_11_0_arm64.whl
Size 178.9 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7acc508067d05210caa24cf9fb096e60d36c0dac2ecaa61b54cc93a90edc6159
BLAKE2b-256 checksum
How to use checksums
60df8bc66e94458978802857bd4733858e1db3745b42d44bdcee239e43edabc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL wavekit-0.8.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 781.8 kB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7b07683a6fb22aa574449e883db6b1151d645404e16d0c43c3627d91061de634
BLAKE2b-256 checksum
How to use checksums
72e7aa8a9c7cb995b1427adbd907e228856a8bb19681291d0090e7b525c4868d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL wavekit-0.8.0-cp312-cp312-macosx_11_0_arm64.whl
Size 180.0 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ef7dfcf90a3cade0bb6b2c7f50980158c43ee40f7a3d74b8304d9dae55fd173d
BLAKE2b-256 checksum
How to use checksums
e65a177bc13af698369fe05951ced152a40593835d888cac8c872ef3f097e860
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL wavekit-0.8.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 758.9 kB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1b2c5dce81c5a916b58974d426683b4ee3eb292aefa8b60ee47efc16c2323e02
BLAKE2b-256 checksum
How to use checksums
101dc2769f0ece8004ad7646fa322e74283b7ea1780e83badf81833e71c5d266
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL wavekit-0.8.0-cp311-cp311-macosx_11_0_arm64.whl
Size 179.6 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d1832b9ccf872ba26221af633781c63406a08eba9f20350946ff753faaf3cc30
BLAKE2b-256 checksum
How to use checksums
aac77217c8c3e91a22be3de176c180ec0a6f0a071cdf76894821c1528e6a818a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL wavekit-0.8.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 727.0 kB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
61f928fe998488e84053f929dbbca0f8f9ec4ad6179b9c93cb3407818d0c0f77
BLAKE2b-256 checksum
How to use checksums
17c79634a670bd3cc530eb6edde7b1382ee342a96be80a245c4b4e78212c2902
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL wavekit-0.8.0-cp310-cp310-macosx_11_0_arm64.whl
Size 180.7 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
097d72889a78c7f56640014235b95e9952567cb9d299446cec441c788682ae13
BLAKE2b-256 checksum
How to use checksums
a1641373d6647e6729f2ae268917bb4b46738b9bb3b190a4c4546cf51c56a976
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL wavekit-0.8.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 725.6 kB
Tags CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
87f5c98661e9837c76ba02112f391ad68123fb28bca39eef1d41f76cd6ac5949
BLAKE2b-256 checksum
How to use checksums
c5e8e28047eceb38689449d8560d435f8ebe972c53760319b77668cdf886af3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / wavekit-0.8.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL wavekit-0.8.0-cp39-cp39-macosx_11_0_arm64.whl
Size 181.4 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
63dbc4bbe8894a3ed7aecacd7d8add5cb0b1eb54cf87ce2f1f74ae79eb4ead30
BLAKE2b-256 checksum
How to use checksums
25f3cfdccd438bb6e5bda0b62c9a1e9d5b9ec3db6dcb3be932c343469adfda35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.8.2

14 release files

0.8.1

14 release files

This release

0.8.0 This release

14 release files

0.7.3

7 release files

0.7.2

7 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

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