https://github.com/systemvll/csv2vcd
CSV to VCD Converter - Transform CSV data into industry-standard VCD format for digital waveform visualization in hardware design and verification workflows.
https://github.com/systemvll/csv2vcd
csv2vcd
Last synced: 3 months ago
JSON representation
CSV to VCD Converter - Transform CSV data into industry-standard VCD format for digital waveform visualization in hardware design and verification workflows.
- Host: GitHub
- URL: https://github.com/systemvll/csv2vcd
- Owner: SystemVll
- License: mit
- Created: 2025-05-12T00:47:53.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-05-12T00:53:52.000Z (about 1 year ago)
- Last Synced: 2025-10-09T18:45:12.534Z (8 months ago)
- Topics: csv2vcd
- Language: Python
- Homepage: https://pypi.org/project/csv2vcd/
- Size: 4.88 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CSV to VCD Converter
[](https://opensource.org/licenses/MIT)
A robust Python utility that converts CSV (Comma-Separated Values) files to VCD (Value Change Dump) format for digital waveform visualization in hardware design and verification workflows.
## Description
This tool bridges the gap between simple tabular data and industry-standard waveform viewers by transforming CSV data into VCD files. It's particularly useful for hardware engineers, FPGA developers, and digital circuit designers who need to visualize signal changes over time.
## Features
- Convert multi-signal CSV data to standard VCD format
- Configurable time units (s, ms, us, ns, ps, fs) and timesteps
- Support for various signal types (wire, reg, integer, parameter)
- Customizable signal widths (single-bit or multi-bit)
- Input validation and robust error handling
- Header row skipping option
- Automatic or custom signal identifiers
## Installation
```bash
git clone https://github.com/SystemVll/csv2vcd.git
cd csv2vcd
```
No additional dependencies required beyond Python's standard library.
## Usage
### Basic Usage
```bash
python main.py input.csv output.vcd --signal-names signal1 signal2 signal3
```
### Advanced Usage
```bash
python main.py input.csv output.vcd \
--signal-names clock data valid \
--timestep 1e-9 \
--time-unit ns \
--signal-width 1 8 1 \
--signal-type wire \
--skip-header
```
## Arguments
| Argument | Description |
|----------|-------------|
| `csv_file` | Input CSV file path |
| `vcd_file` | Output VCD file path |
| `--signal-names` | List of signal names |
| `--timestep` | Time between samples in seconds (default: 1e-6) |
| `--skip-header` | Skip first row of CSV file (header) |
| `--time-unit` | Time unit for VCD file: s, ms, us, ns, ps, fs (default: us) |
| `--signal-width` | List of bit widths for each signal (default: 1) |
| `--signal-type` | Type of signals: wire, reg, integer, parameter (default: wire) |
## Example
**Input CSV:**
```
0,01101100,1
1,01101101,1
0,01101101,0
...
```
**Command:**
```bash
python main.py signals.csv output.vcd --signal-names clk data valid --signal-width 1 8 1
```
**Output:**
A VCD file compatible with waveform viewers like GTKWave, ModelSim, etc.
## License
This project is licensed under the MIT License - see the LICENSE file for details.