src | ||
test-vcd-files | ||
.gitignore | ||
Cargo.toml | ||
LICENSE | ||
README.md |
Copyright - Yehowshua Immanuel
A High performance, VCD Parser written in Rust
Current Features
- pretty fast, parses 3.04 GB VCD file in ~67s on M1 Macbook Air with respect to 50s with GTKWave on the same device. FastWave currently offers highly robust error handling which GTKWave doesn't have.
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
- 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.