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.

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:

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.3

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.3
File Size Uploaded Provenance Actions
wavekit-0.8.3.tar.gz 57.6 kB Without provenance Details for wavekit-0.8.3.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for wavekit 0.8.3
File Actions
wavekit-0.8.3-cp314-cp314-pyemscripten_2026_0_wasm32.whl CPython 3.14 CPython 3.14 PyEmscripten 2026.0+ WebAssembly Details for wavekit-0.8.3-cp314-cp314-pyemscripten_2026_0_wasm32.whl
wavekit-0.8.3-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 for wavekit-0.8.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
wavekit-0.8.3-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for wavekit-0.8.3-cp314-cp314-macosx_11_0_arm64.whl
wavekit-0.8.3-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 for wavekit-0.8.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
wavekit-0.8.3-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for wavekit-0.8.3-cp313-cp313-macosx_11_0_arm64.whl
wavekit-0.8.3-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 for wavekit-0.8.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
wavekit-0.8.3-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for wavekit-0.8.3-cp312-cp312-macosx_11_0_arm64.whl
wavekit-0.8.3-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 for wavekit-0.8.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
wavekit-0.8.3-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for wavekit-0.8.3-cp311-cp311-macosx_11_0_arm64.whl
wavekit-0.8.3-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 for wavekit-0.8.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
wavekit-0.8.3-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for wavekit-0.8.3-cp310-cp310-macosx_11_0_arm64.whl
wavekit-0.8.3-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 for wavekit-0.8.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
wavekit-0.8.3-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details for wavekit-0.8.3-cp39-cp39-macosx_11_0_arm64.whl

Total release size: 5.8 MB

Release files / wavekit-0.8.3.tar.gz

Download URL wavekit-0.8.3.tar.gz
Size 57.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f07f281a59383e70d9fff307b814eb727c3df9dae6b4676146496c6c99353bd5
BLAKE2b-256 checksum
How to use checksums
be90ca854e99610fa5fbc97780cfc6d629eeaa3f2ddedd2bf2fee41c78bec6bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / wavekit-0.8.3-cp314-cp314-pyemscripten_2026_0_wasm32.whl

Download URL wavekit-0.8.3-cp314-cp314-pyemscripten_2026_0_wasm32.whl
Size 123.3 kB
Tags CPython 3.14 PyEmscripten 2026.0+ WebAssembly
SHA-256 checksum
How to use checksums
ec852c3f7f3142a6a780b469351ef47edd369c6efc4ceda9edc296e3e5ad80d3
BLAKE2b-256 checksum
How to use checksums
8e1170b34e801848dbf2a7348df0efe082ae242d535f65a4487fb4d2707380d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 760.2 kB
Tags CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
412f23f91a568212d1b4526f04d25b31eb8763745926679503c4ddf66ba730eb
BLAKE2b-256 checksum
How to use checksums
125e54f7f2418575bc2bcaeddde00ad9a80fce9b73e42c3eaed29b8a50029c63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp314-cp314-macosx_11_0_arm64.whl
Size 179.1 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c1884f887fb4f76e22ef11e785becd92367ae57759c7288a3b0506b1a85ad155
BLAKE2b-256 checksum
How to use checksums
7a2c09384aad5930030b891ae5eb57e3b3d805fcb17b6d16233ad7da3836884c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 765.6 kB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9e829c7a63158bf8489b864d49e3feef1f371e7a3b080123a768da11fc973630
BLAKE2b-256 checksum
How to use checksums
8a74eb219287ad24e46d71fa9fa02c7a40102e8b4777a0d068f4975f282f6816
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp313-cp313-macosx_11_0_arm64.whl
Size 178.6 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ca3a5040f123cd8cce6b17e33e801550ff486dda1c0f8c300e66f59bb518fe38
BLAKE2b-256 checksum
How to use checksums
3ca798a14fd893f4ef3b35a5c234f2221e3a5c8dbf3884214d5bd757a09bac33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 781.5 kB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
845366f5440edd3eddfca8ec96b9e7dc789328cf3d364bce2afbae0032911cd6
BLAKE2b-256 checksum
How to use checksums
922a0ade41f09000a4d929cb63d2e2aaa46772b46dc0f2840cf03d2e181019d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp312-cp312-macosx_11_0_arm64.whl
Size 179.6 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
97e1e56589400e97fb99bcdeb23cc2a00bb5c2087179c69b2dc1bce7090b1605
BLAKE2b-256 checksum
How to use checksums
9620adb22712552e46c278a714f050cf951c3499c14ff20d0476c92012258366
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 758.6 kB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
defdf96265c835199e1ac8e98ff39324726e28d1776f84181c5db06345515f62
BLAKE2b-256 checksum
How to use checksums
badc8e76106fbb00d58b8f607946a420652c94c748a67695a3490f2cc6bdc4e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp311-cp311-macosx_11_0_arm64.whl
Size 179.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
353da221a731d86b70ad594cb447154b2dd0001c982a35d484badd3a05c7c1e9
BLAKE2b-256 checksum
How to use checksums
c8985a125cc2471a12e0e03f6443d86082da768fe622c2b95f5efe03ea08a64d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 726.7 kB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f11ef77d93b00b044bb6299929e706c0f53184f72e52bdea09bd7ce0bd7f943c
BLAKE2b-256 checksum
How to use checksums
67370cad96dbb023e8b648b8f5d3e29d4ccd06c6830b4be97d038d6a5181d279
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp310-cp310-macosx_11_0_arm64.whl
Size 180.4 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6802a559f1105292008314c3c654fabd63ab73611cd995ccfc785e4945d32e51
BLAKE2b-256 checksum
How to use checksums
0c2844a334e4597fddd0826bb5692e9865cea989f011dc53d59340b4f994ac47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 725.3 kB
Tags CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a2ebbba300147a3c0e841ab32c9aa7baa1cd640a1c76064e3fef961aabe8cb35
BLAKE2b-256 checksum
How to use checksums
8a02592c579372d2234c7e73363c5f9f9db294557eeed0417a596bed2240ba77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL wavekit-0.8.3-cp39-cp39-macosx_11_0_arm64.whl
Size 181.1 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1f2ae3a3952020ed5750a52dd1ba6983199751504b56d57e5fc78401b8a59304
BLAKE2b-256 checksum
How to use checksums
792eb6e11ed62d6bfb1ace3330151c74947dbb593dd98c32461ac433bf69159d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for wavekit 0.8.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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