| Crates.io | dwfv |
| lib.rs | dwfv |
| version | 0.5.0 |
| created_at | 2019-12-24 15:00:52.622296+00 |
| updated_at | 2025-03-07 20:51:52.677291+00 |
| description | A simple digital waveform viewer with vi-like key bindings |
| homepage | |
| repository | https://github.com/psurply/dwfv |
| max_upload_size | |
| id | 192132 |
| size | 249,232 |
A simple digital waveform viewer with vi-like key bindings.
$ dwfv sample.vcd

The tool takes a Value Change Dump (VCD) file (as defined by IEEE Standard 1364-1995) as input and displays the waveforms using tui-rs.
The backend API which facilitates the manipulation of digital signals in Rust is also exposed and can be used independently of the TUI.
$ cargo install dwfv
From sources:
$ cargo install --path .
q: quith/Left: move cursor leftj/Down: move cursor downk/Up: move cursor upl/Right: move cursor rightw: jump forward to the next rising edgee: jump forward to the next falling edgeb: jump backward to the previous rising edge0: jump to timestamp 0^/Home: jump to the first event$/End: jump to the last eventgg: jump to first signalG: jump to last signalzi/+: zoom inzo/-: zoom outzc/=: zoom fitzz: center cursor on screeno: edit layoutdd/Delete: delete the selected signalyy: copy the selected signalp: paste the clipboard after cursorP: paste the clipboard before cursoru: undor: redoc: show clipboardf: search for event in the selected signal/: search for pattern in the signal's namesn: repeat search forwardN: repeat search backwardv: start visual mode<enter>: zoom fit the selected time frame$ dwfv examples/sample.vcd --stats
test
! (value) - width: 8, edges: 37, from: 0s, to: 1010s
" (clk) - width: 1, edges: 102, from: 0s, to: 1010s
# (reset) - width: 1, edges: 5, from: 0s, to: 620s
c1
" (clk) - width: 1, edges: 102, from: 0s, to: 1010s
# (reset) - width: 1, edges: 5, from: 0s, to: 620s
$ (out) - width: 8, edges: 37, from: 0s, to: 1010s
$ dwfv sample.vcd --at 1337
test
! (value) = h14
" (clk) -> h1
# (reset) = h0
c1
" (clk) -> h1
# (reset) = h0
$ (out) = h14
Events in the waveforms can be searched using the '--when' option. Examples:
value signal is equal to 2:$ dwfv sample.vcd --when '$! = 2'
310s-330s
650s-670s
$ dwfv sample.vcd --when '$! equals h2'
310s-330s
650s-670s
value signal transitions to 4:$ dwfv sample.vcd --when '$! <- 4'
350s
690s
$ dwfv sample.vcd --when '$! becomes b100'
350s
690s
value signal transitions to 4 after 400s:$ dwfv sample.vcd --when '$! <- 4 and after 400'
690s
value signal transitions to 4 before 400s:$ dwfv sample.vcd --when '$! <- 4 and before 400'
350s