Programmatic Interpretations of Cadence Virtuoso Waveform VCSV files
Project description
VCSV Genie
This repo details methods for parsing transient simulation VCSV files from Cadence Virtuoso.
Installation
- Clone this repo
git clone https://github.com/FSharp4/vcsvgenie.git
cd vcsvgenie
- Build this repo
pip install build
python -m build
- Install the repo
pip install -e .
- Copy over a vcsv file of your choice, and use
vcsvgenieto process the file, extracting propagation delays, printing traces, etc.
Example files can be seen in vcsvgenie/_dev.
Remark: In order for VCSV genie to automatically parse your file for propagations, you need to specify which signals are 'outputs' and which signals are inputs.
- Signals must be 'outputs' for propagation delay calculations to be performed on them with respect to inputs.
- Within Virtuoso Schematics/Layouts, these signals may be inputOutput or intermediate.
To specify which signals are inputs/outputs, supply lists of signal names to the input and output constructor arguments for TransientResultSpecification. (See Usage for an example).)
Functionality
VCSV Genie is presently limited to processing VCSV files produced from transient simulaitons in Cadence Virtuoso. Users can:
- Create pandas dataframes from VCSV files
- Create $(x, y)$ dataseries of individual waveforms (note that all timestamp $x$ vectors are the same in a VCSV file, and are not uniformly spaced)
- Create collections of waveforms from specifications (
vcsvgenie.transient_waveform.TransientResult) - Recognize signal buses using caret notation (i.e., A<3:0>) by specifying the individual signals in the
TransientResultSpecification - Digitize and tabulate signal bus data
Usage
from pathlib import Path
from pprint import pprint
from vcsvgenie.read import read_vcsv
from vcsvgenie.transient_waveform import TransientResultSpecification, average_propagation_delays_by_category, maximum_propagation_delays_by_category, construct_waveforms
path = Path("example.vcsv")
dataframe, titles = read_vcsv(path)
waveforms = construct_waveforms(dataframe, titles)
specification = TransientResultSpecification(
inputs = [
'/A<3>', '/A<2>', '/A<1>', '/A<0', '/B<3>', '/B<2>', '/B<1>', '/B<0>', 'Clk'
],
outputs = ['/z<7>', '/z<6>', '/z<5>', '/z<4>', '/z<3>', '/z<2>', '/z<1>', '/z<0>'],
clock_period = 1e-9,
logic_threshold = 0.5 # volts
)
results = specification.interpret(waveforms)
results.find_transitions()
results.find_propagations()
averages = average_propagation_delays_by_category(results.propagations)
pprint(results.propagations)
pprint(averages)
maxima = maximum_propagation_delays_by_category(results.propagations)
pprint(maxima)
results.digitize()
results.resolve_buses()
bus_data = results.tabulate_bus_data()
bus_data.to_csv("bus_data.csv")
results.plot(separate=True)
Dependencies
- numpy
- matplotlib
- pandas
- (optional): jupyter
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 vcsvgenie-0.4.0.tar.gz.
File metadata
- Download URL: vcsvgenie-0.4.0.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f7832ce73b333c2dc3c94c59bd5fac0e41ae928c66aabd950c1f28c4ba7c9f2
|
|
| MD5 |
e82a720f1fb7ee879840a142e8ac5e9e
|
|
| BLAKE2b-256 |
60bfc17eab03f7beea96a0c6fad1de63386138c391b40983ace3697d8191cdad
|
File details
Details for the file vcsvgenie-0.4.0-py3-none-any.whl.
File metadata
- Download URL: vcsvgenie-0.4.0-py3-none-any.whl
- Upload date:
- Size: 20.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5321d88e20dee301d335f28ccc6687240902265d7f63d2225faa7ab72d1dce8e
|
|
| MD5 |
42ceb81d6246f1fc6fc7b8e0d7b79779
|
|
| BLAKE2b-256 |
fb05f48fc9ae8b61a05a653b424911bf2037a0968658c0f79129d55cc14eab78
|