wavekit
English | 中文
Wavekit is a Python library for high-level digital waveform analysis. Wavekit supports common digital waveform formats; by combining batch signal queries with analysis at the cycle and transaction levels, it helps users interpret recorded signal changes in terms of per-cycle state and temporal relationships.
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:
clock = 'tb.clk'
depth = 16
w_ptr = r.load_waveform(
'tb.u_fifo.w_ptr',
clock=clock,
)
r_ptr = r.load_waveform(
'tb.u_fifo.r_ptr',
clock=clock,
)
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wavekit-0.7.3.tar.gz.
File metadata
- Download URL: wavekit-0.7.3.tar.gz
- Upload date:
- Size: 55.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f53ed309f79893f107b716e1357a10f69a965a49260c6c822ef10337e4b597c2
|
|
| MD5 |
5258e689a93bb21e2b12eb1eaf1fffe7
|
|
| BLAKE2b-256 |
8159c2de9974c6df3abb35c2af039bdaa1d9bfb3385d9468649ad82e60b7a196
|
File details
Details for the file wavekit-0.7.3-cp314-cp314-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: wavekit-0.7.3-cp314-cp314-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 754.2 kB
- Tags: CPython 3.14, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e3a1e0bfb1c1bbaa1d6b0b27bc79ba15bb93a64f09e964c30875b97c4fb58f72
|
|
| MD5 |
77d08028a3534757adccaf8d854bf799
|
|
| BLAKE2b-256 |
b9d58e5351b2e9e630b06c36209e606a6322f837bedbacae21d8b61f35df7003
|
File details
Details for the file wavekit-0.7.3-cp313-cp313-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: wavekit-0.7.3-cp313-cp313-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 756.1 kB
- Tags: CPython 3.13, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b00885d8557c2f99e32137b0c43690bea6fac047e5cf04be02955e7e58cc8163
|
|
| MD5 |
52ab92f68fc5a0a097759b184c28813f
|
|
| BLAKE2b-256 |
e795ba74a729ce05751e1668ad0d95a46423da9b42977b0c78a9ea7b9fafbd65
|
File details
Details for the file wavekit-0.7.3-cp312-cp312-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: wavekit-0.7.3-cp312-cp312-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 769.0 kB
- Tags: CPython 3.12, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a12dff515da68041a9a5a10563d49a7d43db652bd736920eb5b981400b3dff8f
|
|
| MD5 |
f37a1c71e7806de4ecb3bbbc11980e4f
|
|
| BLAKE2b-256 |
f62d348b71a14a8564c8f5bef675534c864f3f7de01661e254fba3bfda1e5d31
|
File details
Details for the file wavekit-0.7.3-cp311-cp311-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: wavekit-0.7.3-cp311-cp311-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 745.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
027dee552ac0e6deb1caf0f554518a3417691de7c6c7d97b6c4fc1c155d32258
|
|
| MD5 |
ae3b1c6e2035c75336fa79d4739aef7b
|
|
| BLAKE2b-256 |
4076f9d290f46fb236f00ac752a9869867f058e75741600060b86c1099b94fbe
|
File details
Details for the file wavekit-0.7.3-cp310-cp310-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: wavekit-0.7.3-cp310-cp310-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 714.7 kB
- Tags: CPython 3.10, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8cd4167f5b0d3c05e163ea54adc6b3a1f6dd754fa99a1f478309beb865ed542
|
|
| MD5 |
335ed081f53ac9f7df9ca4d592cdb076
|
|
| BLAKE2b-256 |
a5e73be492d6e72d3cc610d72e8b912517f8c3d5384c132e5fc3d2fe2a89b149
|
File details
Details for the file wavekit-0.7.3-cp39-cp39-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: wavekit-0.7.3-cp39-cp39-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 713.8 kB
- Tags: CPython 3.9, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd169e749db75febbd0bdd7161e0e45fa84721afd2a7eed13c5d35d5d9a17cda
|
|
| MD5 |
81f57e2ff481ef3bd371fd989b1700bf
|
|
| BLAKE2b-256 |
19dfcbc5a1ddf0dc63051fb08920b8a2b752c5cf4df163166718429db58576c1
|