Giter VIP home page Giter VIP logo

dwfv's Introduction

DWFV

Build Status Crates.io Docs Status

A simple digital waveform viewer with vi-like key bindings.

$ dwfv sample.vcd

screenshot

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 to 2:
$ 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 to 4:
$ dwfv sample.vcd --when '$! <- 4'
350s
690s
$ dwfv sample.vcd --when '$! becomes b100'
350s
690s
  • Searching when the value signal transitions to 4 after 400s:
$ dwfv sample.vcd --when '$! <- 4 and after 400'
690s
  • Searching when the value signal transitions to 4 before 400s:
$ dwfv sample.vcd --when '$! <- 4 and before 400'
350s

LICENSE

MIT

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.