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.1
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.1.tar.gz | 56.8 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| wavekit-0.8.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl | CPython 3.14 | CPython 3.14 | PyEmscripten 2026.0+ WebAssembly | Details |
| wavekit-0.8.1-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.1-cp314-cp314-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 11.0+ ARM64 | Details |
| wavekit-0.8.1-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.1-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| wavekit-0.8.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| wavekit-0.8.1-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| wavekit-0.8.1-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.1-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
| wavekit-0.8.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| wavekit-0.8.1-cp310-cp310-macosx_11_0_arm64.whl | CPython 3.10 | CPython 3.10 | macOS 11.0+ ARM64 | Details |
| wavekit-0.8.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| wavekit-0.8.1-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.1.tar.gz
| Download URL | wavekit-0.8.1.tar.gz |
|---|---|
| Size | 56.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e3eee4be58715b71714c445b1449378cc430989da1b736104f64b48b279b9cda
|
|
BLAKE2b-256 checksum How to use checksums |
471e20a2e81e8eef1e4d85b389690b45ba90f440fa31af6a3201150736e42ad6
|
| 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.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
| Download URL | wavekit-0.8.1-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 |
e3bd3f7f453f5afd026082d6f8efe35e3ccefcced9143111d49f18be05363cf3
|
|
BLAKE2b-256 checksum How to use checksums |
eeae2a15c4b9c10ed26bf4ddd2fc2e654e81bda54bb83bd87d4805a5bfeb6234
|
| 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.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.1-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 |
08ebc5123320cef9676e7109366f729258ae13627dd3a83638b63ea8ca639693
|
|
BLAKE2b-256 checksum How to use checksums |
67b8e997669be703e2cb1f16b87276db0dff384162927c860ca0054875bfde54
|
| 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.1-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.1-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 |
c7b623ca569f24c983641af866e27d1a02e9b7de3dcb369dcd36e5f99f18bfe1
|
|
BLAKE2b-256 checksum How to use checksums |
44ae21609457981b699d541ae613d8b3baa384c785782c4c2fcc59ae05ef664c
|
| 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.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.1-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 |
93094ad9bc3199a116bae3635d928aea8f1c58cec68411e85a6105d70f68f6fa
|
|
BLAKE2b-256 checksum How to use checksums |
183d7125c341b5d35576491f8ae701242d4f602b93f12406423efc4ac52fd516
|
| 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.1-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.1-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 |
20f81f11ae842d1871079cd38d6b6b93785c1e7f3305d52a4d366368d0210153
|
|
BLAKE2b-256 checksum How to use checksums |
adb3f1bdc5f975c9e46c5576d1f6cb7dd68f99d4f90192e4fa80388f4d489923
|
| 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.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 780.6 kB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e428f35ae3f7d7724d0ec8e7b998d8fa95cad4bd90143b62b93dbd7c7e409811
|
|
BLAKE2b-256 checksum How to use checksums |
d7300935f4149128f399f32033f127cd200208cf1655cd7d6ff41afe0d8d4d81
|
| 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.1-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.1-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 |
8446060da218eaf3b923b6e56425090fa84a18a7358fd900efe4ad09b53c544e
|
|
BLAKE2b-256 checksum How to use checksums |
95e6aadf84b4f3c2fa2b965772b8a307522d71d08d2b761fd1b05c1e84c9ff79
|
| 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.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 757.7 kB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
77b975dd7c7bf30ff063d4d8023260c5d28b1fff6edf025c2179400da924270e
|
|
BLAKE2b-256 checksum How to use checksums |
17c6c7f96c25fb8c47682c79adb38a457ba20c516916fa133a8aa4bebc3cde68
|
| 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.1-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.1-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 |
435b8ebff101927216b479bdef6712d8d3a441e916de44fae51efcbc2b05f5ce
|
|
BLAKE2b-256 checksum How to use checksums |
760013e1716741897bf29784343f0b4b0974c14f410962b0638bce6e29564a2c
|
| 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.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.1-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 |
84471ef712fc121588bc1c9ccb2f44cab88c2a10c4745e34c60d519146c5f1f1
|
|
BLAKE2b-256 checksum How to use checksums |
853a144d5a5ae3608bf3a8aac1397f6cc9f9315c8fc13598bb111d701c72f340
|
| 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.1-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.1-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 179.5 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
23446e24353dfad92c6dd3966c2b29b26e9134854be2c88ea0d53b1bd3a99eae
|
|
BLAKE2b-256 checksum How to use checksums |
e402bcdb6c6a4297d263b2252bc92d0252a5ea0a64bf6828528c3e8d97519938
|
| 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.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wavekit-0.8.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 724.4 kB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1d0d873f30243cc826b0eec3502d41e86088de54e1fb7c90020f3265aa7a9ed1
|
|
BLAKE2b-256 checksum How to use checksums |
94e67de4ea1cf68b340fa9782fb1a0d0d4ceb735e37fd0e5aa9fb3d3e7087bbf
|
| 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.1-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | wavekit-0.8.1-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 |
c0bfd87445d7699a2bc604664bd103936bd70cc320cff44e3f659717b0598c72
|
|
BLAKE2b-256 checksum How to use checksums |
ba51d032c0ca47db017a85d65717c745740c15a7cf6c2bc5d78d1706ad4c15a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|