wavekit
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:
- Installation
- First waveform
- Reader guide
- Signal queries
- Waveform analysis
- Pattern matching
- API reference
- Complete examples
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)
| File | Size | Uploaded | |
|---|---|---|---|
| wavekit-0.8.0.tar.gz | 57.7 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| 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
|