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.
Quick links: Online playground · AI integration
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.2
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.2.tar.gz | 56.8 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| wavekit-0.8.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl | CPython 3.14 | CPython 3.14 | PyEmscripten 2026.0+ WebAssembly | Details |
| wavekit-0.8.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| wavekit-0.8.2-cp314-cp314-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 11.0+ ARM64 | Details |
| wavekit-0.8.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| wavekit-0.8.2-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| wavekit-0.8.2-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.2-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| wavekit-0.8.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| wavekit-0.8.2-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
| wavekit-0.8.2-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.2-cp310-cp310-macosx_11_0_arm64.whl | CPython 3.10 | CPython 3.10 | macOS 11.0+ ARM64 | Details |
| wavekit-0.8.2-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.2-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.2.tar.gz
| Download URL | wavekit-0.8.2.tar.gz |
|---|---|
| Size | 56.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a3b27f2747dd6be3099934618d19164c7265d7d14f35938dd4c580bf41e0fc2c
|
|
BLAKE2b-256 checksum How to use checksums |
22df03da3eb33433e7fe99ec23b8d593d6dcdc82167508b9e89cf712cfd2ebf7
|
| 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.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
| Download URL | wavekit-0.8.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl |
|---|---|
| Size | 122.4 kB |
| Tags | CPython 3.14 PyEmscripten 2026.0+ WebAssembly |
|
SHA-256 checksum How to use checksums |
43383c5685bd5eb32b72159d2e0fd1b9bd49fda26f659a779e403490dd3af814
|
|
BLAKE2b-256 checksum How to use checksums |
f5014b09b52fbf70c21d8726a50723f61432e4abdaf523592ada850237cb97fa
|
| 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.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 759.4 kB |
| Tags | CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3268c24596d901ff0d6dd3de667f21d89fd21786fd49699b086183cbc2fbd9a8
|
|
BLAKE2b-256 checksum How to use checksums |
ff968f18910fbb0152b59af3cfa3578e9d2dd2466ca12ae2e57a804749e9bf7e
|
| 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.2-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.2-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 178.3 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
babee8f18f526edf035115879c63f0c75ac8bafa4eb90d0cdddeaf09cd1b1ed4
|
|
BLAKE2b-256 checksum How to use checksums |
d62573ad6e3f5e30a472dbdd1468b7fa2c22591eff9c63777339102c83781531
|
| 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.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 764.8 kB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d8e44e6ada394af14ae323d55b3c0f773b39969a85048783e79de163652f7935
|
|
BLAKE2b-256 checksum How to use checksums |
39c931b22bd0f167a61320e706b723744cc3ae2a7ce4af8db001408510954b98
|
| 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.2-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.2-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 177.7 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
862f58155a1982060ca61f8a34bc92b7eefc62275f7f0a3937346cab92f8171a
|
|
BLAKE2b-256 checksum How to use checksums |
dfd2abaa6537b8a0bb4854964daf29d6c41c8358e92cf2835c6e80f741dbcefa
|
| 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.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 780.7 kB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
34311eb17c93223a34e8ff8edc585b75d669bfe7a21749906008e22106a37644
|
|
BLAKE2b-256 checksum How to use checksums |
e32aed7986d4bc0c7d77342fd408b79ca525b55bf4f9a65778235199a09ea785
|
| 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.2-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.2-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 178.8 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7f56ca1e18d4d3973e469ac70ca53b83a0486948b38a6b87fae91ae0d10a4d7f
|
|
BLAKE2b-256 checksum How to use checksums |
22e8a8b2595c957e93de25597e64f203ce4d500bf62e0ea03fac07d30b45250c
|
| 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.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 757.8 kB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
4cdc02ae54b317362c4421c30df010f693f11cd57be366dd6487c8e116d7d540
|
|
BLAKE2b-256 checksum How to use checksums |
918e3307afe6eb1330d3c1468c21a1d9e3225c2d2dee491504fa3c658aa4f7ac
|
| 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.2-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.2-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 178.4 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0e0fe6f4c80a8bc8aba9ffaeee90d210ce86d17853df8a803bee441b87479a76
|
|
BLAKE2b-256 checksum How to use checksums |
dcc5fab5101dcc620d0c8768b9cb4d982f23d1d984179a9ef95d1bc474609960
|
| 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.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 725.8 kB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
598e06c79fcd1aef98879e76b4cfb8820e0690b0f8c5301df4f059107afad4b1
|
|
BLAKE2b-256 checksum How to use checksums |
92b10c46f773769652ffd02d71492f920e1dbd0892f3834938dd2158c74fbc3f
|
| 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.2-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.2-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 179.6 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
01bf466ab98507f3e7891e9cce2a6b4b9ad674806cdfd07f08443e83c4763888
|
|
BLAKE2b-256 checksum How to use checksums |
153ae6b9555b5f353fe7d4ce532c039b1a8dadb5b1e9ceaf44685e09e518fbf2
|
| 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.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 724.5 kB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9d2c9d05859f7a3f411bbd5c252fca520dde67b38596ff596f9c44ed54eb25ac
|
|
BLAKE2b-256 checksum How to use checksums |
fc5c5ea2cc3e02189193df591ae28040803ab0221e4663c740bbcb57be5457ae
|
| 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.2-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.2-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 180.2 kB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
758fe64638e3c9b6768cc2c08cbe5016ed3199e6d1603f2e991780c669bb9e8f
|
|
BLAKE2b-256 checksum How to use checksums |
b4cd244b1f6844ee14023e06c4c6e119285427e485c2db70bb39ab5e329e8616
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|