pyvcd
Value change dump (VCD) file support for Python
What it is and what it does
PyVCD is a Python library for creating and reading Value Change Dump (VCD) files, a standard format used in digital design and verification to record how signal values change over time during simulations. It implements the VCD specification from IEEE 1800-2023 and provides an API for registering signals, recording value changes at specific timestamps, and writing waveform data to files.
The package is commonly used in hardware verification workflows, simulation environments, and educational settings where you need to capture and inspect signal behavior. It depends only on typing-extensions for runtime compatibility and supports Python 3.10 and later across CPython and PyPy implementations.
Use it for:
- Export simulation waveforms from digital design simulators to standard VCD format for analysis in external viewers.
- Capture and log signal changes during hardware verification test benches for post-simulation debugging.
- Generate VCD files programmatically from Python-based test frameworks or verification environments.
- Archive and compare waveform data across multiple simulation runs in design validation workflows.
- Integrate waveform recording into educational tools for teaching digital logic and circuit simulation.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PyVCD writes and reads Value Change Dump (VCD) files as specified in IEEE 1800-2023, enabling capture and analysis of signal changes over time in digital simulations.
Yes. PyVCD is actively maintained, has no known vulnerabilities, installs with minimal friction, and is licensed permissively under MIT. It fills a specific and well-defined role in the EDA and simulation ecosystem. Install it if you need to generate or consume VCD waveform files in Python.
Install
pyvcd on PyPI
pip
pip install pyvcduv
uv add pyvcdpoetry
poetry add pyvcdInstalling pyvcd
Before you install
Low friction installation with a single lightweight runtime dependency (typing-extensions). The package is actively maintained with a recent release (3 days old) and has been in development since 2016, indicating stable long-term support.
License in practice
MIT license is permissive and places minimal restrictions on use, modification, or distribution—suitable for both open-source and proprietary projects.
Quickstart
pip install pyvcd
from vcd import VCDWriter
import sys
with VCDWriter(sys.stdout, timescale='1 ns', date='today') as writer:
counter_var = writer.register_var('scope', 'counter', 'integer', size=8)
writer.change(counter_var, 0, 10)
Requires Python 3.10 or later.
Verify before relying
- Performance characteristics when handling large VCD files or high-frequency signal changes.
- Extent of read support for VCD files beyond the write functionality demonstrated.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — typing-extensions |
| Maintenance | actively maintained — 3 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 173,427/month — #10,308 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyvcd-0.5.0-py3-none-any.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
vcdvcdParses Verilog value change dump (VCD) files…
unclear · top 15,000 on PyPI
mutf8Encodes and decodes MUTF-8 (Modified UTF-8), a…
permissive · top 5,000 on PyPI
pyorcPyORC reads and writes Apache ORC files using…
permissive · top 15,000 on PyPI
pygexfPygexf writes network graph data to GEXF (Graph…
unclear · top 15,000 on PyPI
ruamel.yaml.stringAdds a `dump_to_string` method to…
permissive · top 15,000 on PyPI
peakrdl-cheaderGenerates C header files from SystemRDL…
copyleft · top 15,000 on PyPI
ansible-vaultReads and writes Ansible vault-encrypted YAML…
copyleft · top 15,000 on PyPI
javapropertiesReads and writes Java .properties files in both…
permissive · top 5,000 on PyPI
pyudevpyudev is a pure Python binding for libudev…
copyleft · top 5,000 on PyPI
dvsimDVSim is a Python-based build and run system…
permissive · top 15,000 on PyPI