Skip to main content

wavekit

CI PyPI version Python Versions Downloads License

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:

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

wavekit-0.7.3.tar.gz (55.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

wavekit-0.7.3-cp314-cp314-manylinux_2_39_x86_64.whl (754.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ x86-64

wavekit-0.7.3-cp313-cp313-manylinux_2_39_x86_64.whl (756.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

wavekit-0.7.3-cp312-cp312-manylinux_2_39_x86_64.whl (769.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

wavekit-0.7.3-cp311-cp311-manylinux_2_39_x86_64.whl (745.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ x86-64

wavekit-0.7.3-cp310-cp310-manylinux_2_39_x86_64.whl (714.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

wavekit-0.7.3-cp39-cp39-manylinux_2_39_x86_64.whl (713.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.39+ x86-64

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

Hashes for wavekit-0.7.3.tar.gz
Algorithm Hash digest
SHA256 f53ed309f79893f107b716e1357a10f69a965a49260c6c822ef10337e4b597c2
MD5 5258e689a93bb21e2b12eb1eaf1fffe7
BLAKE2b-256 8159c2de9974c6df3abb35c2af039bdaa1d9bfb3385d9468649ad82e60b7a196

See more details on using hashes here.

File details

Details for the file wavekit-0.7.3-cp314-cp314-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for wavekit-0.7.3-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 e3a1e0bfb1c1bbaa1d6b0b27bc79ba15bb93a64f09e964c30875b97c4fb58f72
MD5 77d08028a3534757adccaf8d854bf799
BLAKE2b-256 b9d58e5351b2e9e630b06c36209e606a6322f837bedbacae21d8b61f35df7003

See more details on using hashes here.

File details

Details for the file wavekit-0.7.3-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for wavekit-0.7.3-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 b00885d8557c2f99e32137b0c43690bea6fac047e5cf04be02955e7e58cc8163
MD5 52ab92f68fc5a0a097759b184c28813f
BLAKE2b-256 e795ba74a729ce05751e1668ad0d95a46423da9b42977b0c78a9ea7b9fafbd65

See more details on using hashes here.

File details

Details for the file wavekit-0.7.3-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for wavekit-0.7.3-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 a12dff515da68041a9a5a10563d49a7d43db652bd736920eb5b981400b3dff8f
MD5 f37a1c71e7806de4ecb3bbbc11980e4f
BLAKE2b-256 f62d348b71a14a8564c8f5bef675534c864f3f7de01661e254fba3bfda1e5d31

See more details on using hashes here.

File details

Details for the file wavekit-0.7.3-cp311-cp311-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for wavekit-0.7.3-cp311-cp311-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 027dee552ac0e6deb1caf0f554518a3417691de7c6c7d97b6c4fc1c155d32258
MD5 ae3b1c6e2035c75336fa79d4739aef7b
BLAKE2b-256 4076f9d290f46fb236f00ac752a9869867f058e75741600060b86c1099b94fbe

See more details on using hashes here.

File details

Details for the file wavekit-0.7.3-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for wavekit-0.7.3-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 f8cd4167f5b0d3c05e163ea54adc6b3a1f6dd754fa99a1f478309beb865ed542
MD5 335ed081f53ac9f7df9ca4d592cdb076
BLAKE2b-256 a5e73be492d6e72d3cc610d72e8b912517f8c3d5384c132e5fc3d2fe2a89b149

See more details on using hashes here.

File details

Details for the file wavekit-0.7.3-cp39-cp39-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for wavekit-0.7.3-cp39-cp39-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 fd169e749db75febbd0bdd7161e0e45fa84721afd2a7eed13c5d35d5d9a17cda
MD5 81f57e2ff481ef3bd371fd989b1700bf
BLAKE2b-256 19dfcbc5a1ddf0dc63051fb08920b8a2b752c5cf4df163166718429db58576c1

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.7.3 This release

7 files

0.7.2

7 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.6

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

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