A Rust VCD parser intended to be the backend of a Waveform Viewer(built using egui) that supports dynamically loaded rust plugins.
Find a file
Yehowshua Immanuel 557f385336 update README
2022-08-01 12:29:25 -04:00
src things are much faster now, but x/z values not yet supported 2022-08-01 10:11:05 -04:00
test-vcd-files saving progress so far 2022-07-25 21:16:15 -04:00
.gitignore seems to be able to parse signal tree 2022-07-14 16:46:11 -04:00
Cargo.toml date parser needs some more work 2022-06-08 21:45:47 -04:00
LICENSE Create LICENSE 2022-07-19 13:49:39 -04:00
README.md update README 2022-08-01 12:29:25 -04:00

Copyright - Yehowshua Immanuel

A High performance, VCD Parser written in Rust

Current Features

  • pretty fast, parses 3.04 GB VCD file in ~62s on M1 Macbook Air.

Current Limitations

Unable to handle VCD files that have signals with more than 2^32 - 1 = 4,294,967,295 deltas/changes.

Running

This repository comes with several smaller VCD files emitted from various EDA tools. If you want a larger VCD file, grab one from here.

The first build of the program may take some time.

cargo run --release test-vcd-files/aldec/SPI_Write.vcd

You can run all the tests with cargo test

TODO

Features

  • handle signals with x or z as string - the one bit parsers may also need to handle string
  • move parse_orphaned_vars to scopes.rs
  • Print out git commit or release number.
  • Should be able to load waveform whilst viewing it live. - could be quite challenging to implement for various reasons
  • Take a look at GTKWave parser to compare efficiency.
  • re-order all signal timelines as binary balanced trees with respect to timestamps - support multithreaded re-ordering

Repairs

  • make a custom date parser for possibly up to 18 different versions(that is, for each possible tool).
  • Consolidate error messages and add cursors throughout.
  • Fix warnings especially usage and restriction warnings once I'm able to successfully parse all sample VCDs.

Code Consistency

  • Change error messages to line and filenames. Go through all calls to format! whilst also keeping performance in mind.

Marketing

  • Send survey to community channel.