dwfv
dwfv copied to clipboard
A simple digital waveform viewer with vi-like key bindings.
DWFV
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.
Installation
$ cargo install dwfv
From sources:
$ cargo install --path .
Key Bindings
Global
-
q
: quit
Cursor movement
-
h
/Left: move cursor left -
j
/Down: move cursor down -
k
/Up: move cursor up -
l
/Right: move cursor right -
w
: jump forward to the next rising edge -
e
: jump forward to the next falling edge -
b
: jump backward to the previous rising edge -
0
: jump to timestamp 0 -
^
/Home: jump to the first event -
$
/End: jump to the last event -
gg
: jump to first signal -
G
: jump to last signal
Frame
-
zi
/+
: zoom in -
zo
/-
: zoom out -
zc
/=
: zoom fit -
zz
: center cursor on screen
Editing
-
o
: edit layout -
dd
/Delete: delete the selected signal -
yy
: copy the selected signal -
p
: paste the clipboard after cursor -
P
: paste the clipboard before cursor -
u
: undo -
r
: redo -
c
: show clipboard
Search
-
f
: search for event in the selected signal -
/
: search for pattern in the signal's names -
n
: repeat search forward -
N
: repeat search backward
Visual mode
-
v
: start visual mode -
<enter>
: zoom fit the selected time frame
Mouse
- Left click: move cursor
- Right click: zoom out
- Wheel up: zoom in
- Wheel down: zoom out
- Hold/release left click: zoom fit the selected time frame
Command-Line Interface
Show some stats about the VCD file
$ 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
Display values of the signals at a given time
$ dwfv sample.vcd --at 1337
test
! (value) = h14
" (clk) -> h1
# (reset) = h0
c1
" (clk) -> h1
# (reset) = h0
$ (out) = h14
Search in the waveforms
Events in the waveforms can be searched using the '--when' option. Examples:
- Searching when the
value
signal is equal to2
:
$ dwfv sample.vcd --when '$! = 2'
310s-330s
650s-670s
$ dwfv sample.vcd --when '$! equals h2'
310s-330s
650s-670s
- Searching when the
value
signal transitions to4
:
$ dwfv sample.vcd --when '$! <- 4'
350s
690s
$ dwfv sample.vcd --when '$! becomes b100'
350s
690s
- Searching when the
value
signal transitions to4
after 400s:
$ dwfv sample.vcd --when '$! <- 4 and after 400'
690s
- Searching when the
value
signal transitions to4
before 400s:
$ dwfv sample.vcd --when '$! <- 4 and before 400'
350s
LICENSE
MIT