Metadata-Version: 2.1
Name: pyDigitalWaveTools
Version: 1.1
Summary: Library for operations with VCD and other digital wave files
Home-page: https://github.com/Nic30/pyDigitalWaveTools
Author: Michal Orsak
Author-email: Nic30original@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
Classifier: Topic :: System :: Hardware
Classifier: Topic :: System :: Emulators
Classifier: Topic :: Utilities
Description-Content-Type: text/markdown
License-File: LICENSE

# pyDigitalWaveTools
[![CircleCI](https://circleci.com/gh/Nic30/pyDigitalWaveTools.svg?style=svg)](https://circleci.com/gh/Nic30/pyDigitalWaveTools)
[![Coverage Status](https://coveralls.io/repos/github/Nic30/pyDigitalWaveTools/badge.svg?branch=master)](https://coveralls.io/github/Nic30/pyDigitalWaveTools?branch=master)
[![PyPI version](https://badge.fury.io/py/pyDigitalWaveTools.svg)](http://badge.fury.io/py/pyDigitalWaveTools)
[![Documentation Status](https://readthedocs.org/projects/pydigitalwavetools/badge/?version=latest)](http://pydigitalwavetools.readthedocs.io/en/latest/?badge=latest)
[![Python version](https://img.shields.io/pypi/pyversions/pyDigitalWaveTools.svg)](https://img.shields.io/pypi/pyversions/pyDigitalWaveTools.svg)

python library for operations with VCD and other digital wave files

## Feature list
* parse VCD (std 2009) files to intermediate format
* write VCD files, user specified formatters for user types, predefined formatters for vectors, bits and enum values
* dump intermediate format as simple json

## Hello pyDigitalWaveTools

Here is a simple example how to use the VCD parser:

```python
#!/usr/bin/env python3
import json
import sys
from pyDigitalWaveTools.vcd.parser import VcdParser

if len(sys.argv) > 1:
    fname = sys.argv[1]
else:
    print('Give me a vcd file to parse')
    sys.exit(-1)

with open(fname) as vcd_file:
    vcd = VcdParser()
    vcd.parse(vcd_file)
    data = vcd.scope.toJson()
    print(json.dumps(data, indent=4, sort_keys=True))
```


## Output json format
```
scope
{ "name": "<scope name>"
  "children" : {"<children name>" : child}
}

child can be scope or signal record

signal record
{ "name": "<signal name>"
  "type": {"sigType": "<vcd signal type>",
           "width": <bit width of signal (integer)>},
  "data": [<data records>],
}

data record format
[<time (number)>, <value (string, format dependent on datatype)>]
```


## Related open source

* [verilog-vcd-parser](https://github.com/ben-marshall/verilog-vcd-parser) - Python, A parser for Value Change Dump (VCD) files as specified in the IEEE System Verilog 1800-2012 standard.
* [pyvcd](https://github.com/SanDisk-Open-Source/pyvcd) - Python, vcd writer, GTKWave config writer
* [vcdvcd](https://github.com/cirosantilli/vcdvcd) - Python, vcd parser, dump pretty printer


