{"id":13822654,"url":"https://github.com/psurply/dwfv","last_synced_at":"2025-05-16T17:31:33.568Z","repository":{"id":36744561,"uuid":"127757507","full_name":"psurply/dwfv","owner":"psurply","description":"A simple digital waveform viewer with vi-like key bindings.","archived":false,"fork":false,"pushed_at":"2023-02-20T19:51:18.000Z","size":184,"stargazers_count":128,"open_issues_count":1,"forks_count":7,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-07-18T06:43:56.551Z","etag":null,"topics":["digital-waveform-viewer","vcd","waveforms"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/psurply.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-04-02T13:07:19.000Z","updated_at":"2024-05-26T13:01:54.000Z","dependencies_parsed_at":"2024-01-18T04:07:13.921Z","dependency_job_id":"d62106eb-b2ea-418e-ba8d-f03363b7ccca","html_url":"https://github.com/psurply/dwfv","commit_stats":{"total_commits":46,"total_committers":4,"mean_commits":11.5,"dds":0.5652173913043479,"last_synced_commit":"6e8199b42f3601036c7f95cc087f5017e7a3218b"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psurply%2Fdwfv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psurply%2Fdwfv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psurply%2Fdwfv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psurply%2Fdwfv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/psurply","download_url":"https://codeload.github.com/psurply/dwfv/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":213893314,"owners_count":15653524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["digital-waveform-viewer","vcd","waveforms"],"created_at":"2024-08-04T08:02:11.252Z","updated_at":"2024-08-04T08:08:50.070Z","avatar_url":"https://github.com/psurply.png","language":"Rust","readme":"DWFV\n====\n\n[![Build Status](https://travis-ci.com/psurply/dwfv.svg?branch=master)](https://travis-ci.com/psurply/dwfv)\n[![Crates.io](https://img.shields.io/crates/v/dwfv)](https://crates.io/crates/dwfv)\n[![Docs Status](https://docs.rs/dwfv/badge.svg)](https://docs.rs/crate/dwfv/)\n\nA simple digital waveform viewer with vi-like key bindings.\n\n```shell\n$ dwfv sample.vcd\n```\n\n![screenshot](docs/screenshot.png)\n\nThe tool takes a Value Change Dump (VCD) file (as defined by IEEE Standard\n1364-1995) as input and displays the waveforms using\n[tui-rs](https://github.com/fdehau/tui-rs).\n\nThe backend API which facilitates the manipulation of digital signals in Rust\nis also exposed and can be used independently of the TUI.\n\nInstallation\n------------\n\n```shell\n$ cargo install dwfv\n```\n\nFrom sources:\n\n```shell\n$ cargo install --path .\n```\n\nKey Bindings\n------------\n\n### Global\n\n- `q`: quit\n\n### Cursor movement\n\n- `h`/Left: move cursor left\n- `j`/Down: move cursor down\n- `k`/Up: move cursor up\n- `l`/Right: move cursor right\n- `w`: jump forward to the next rising edge\n- `e`: jump forward to the next falling edge\n- `b`: jump backward to the previous rising edge\n- `0`: jump to timestamp 0\n- `^`/Home: jump to the first event\n- `$`/End: jump to the last event\n- `gg`: jump to first signal\n- `G`: jump to last signal\n\n### Frame\n\n- `zi`/`+`: zoom in\n- `zo`/`-`: zoom out\n- `zc`/`=`: zoom fit\n- `zz`: center cursor on screen\n\n### Editing\n\n- `o`: edit layout\n- `dd`/Delete: delete the selected signal\n- `yy`: copy the selected signal\n- `p`: paste the clipboard after cursor\n- `P`: paste the clipboard before cursor\n- `u`: undo\n- `r`: redo\n- `c`: show clipboard\n\n### Search\n\n- `f`: search for event in the selected signal\n- `/`: search for pattern in the signal's names\n- `n`: repeat search forward\n- `N`: repeat search backward\n\n### Visual mode\n\n- `v`: start visual mode\n- `\u003center\u003e`: zoom fit the selected time frame\n\n### Mouse\n\n- Left click: move cursor\n- Right click: zoom out\n- Wheel up: zoom in\n- Wheel down: zoom out\n- Hold/release left click: zoom fit the selected time frame\n\nCommand-Line Interface\n----------------------\n\n### Show some stats about the VCD file\n\n```shell\n$ dwfv examples/sample.vcd --stats\ntest\n  ! (value) - width: 8, edges: 37, from: 0s, to: 1010s\n  \" (clk) - width: 1, edges: 102, from: 0s, to: 1010s\n  # (reset) - width: 1, edges: 5, from: 0s, to: 620s\n  c1\n    \" (clk) - width: 1, edges: 102, from: 0s, to: 1010s\n    # (reset) - width: 1, edges: 5, from: 0s, to: 620s\n    $ (out) - width: 8, edges: 37, from: 0s, to: 1010s\n```\n\n### Display values of the signals at a given time\n\n```shell\n$ dwfv sample.vcd --at 1337\ntest\n  ! (value) = h14\n  \" (clk) -\u003e h1\n  # (reset) = h0\n  c1\n    \" (clk) -\u003e h1\n    # (reset) = h0\n    $ (out) = h14\n```\n\n### Search in the waveforms\n\nEvents in the waveforms can be searched using the '--when' option. Examples:\n\n- Searching when the `value` signal is equal to `2`:\n\n```shell\n$ dwfv sample.vcd --when '$! = 2'\n310s-330s\n650s-670s\n$ dwfv sample.vcd --when '$! equals h2'\n310s-330s\n650s-670s\n```\n\n- Searching when the `value` signal transitions to `4`:\n\n```shell\n$ dwfv sample.vcd --when '$! \u003c- 4'\n350s\n690s\n$ dwfv sample.vcd --when '$! becomes b100'\n350s\n690s\n```\n\n- Searching when the `value` signal transitions to `4` after 400s:\n\n```shell\n$ dwfv sample.vcd --when '$! \u003c- 4 and after 400'\n690s\n```\n\n- Searching when the `value` signal transitions to `4` before 400s:\n\n```shell\n$ dwfv sample.vcd --when '$! \u003c- 4 and before 400'\n350s\n```\n\nLICENSE\n-------\n\n[MIT](LICENSE)\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsurply%2Fdwfv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpsurply%2Fdwfv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsurply%2Fdwfv/lists"}