{"id":13775152,"url":"https://github.com/pieter3d/simview","last_synced_at":"2025-05-11T07:32:02.766Z","repository":{"id":44015350,"uuid":"234825396","full_name":"pieter3d/simview","owner":"pieter3d","description":null,"archived":false,"fork":false,"pushed_at":"2024-03-02T03:03:17.000Z","size":914,"stargazers_count":76,"open_issues_count":9,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-11-17T10:39:35.834Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","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/pieter3d.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-19T02:03:30.000Z","updated_at":"2024-08-22T19:23:36.000Z","dependencies_parsed_at":"2023-01-31T19:45:17.364Z","dependency_job_id":"bb89baf8-efac-417d-a4d0-8862845c66c2","html_url":"https://github.com/pieter3d/simview","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pieter3d%2Fsimview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pieter3d%2Fsimview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pieter3d%2Fsimview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pieter3d%2Fsimview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pieter3d","download_url":"https://codeload.github.com/pieter3d/simview/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253533780,"owners_count":21923514,"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":[],"created_at":"2024-08-03T17:01:34.545Z","updated_at":"2025-05-11T07:32:02.312Z","avatar_url":"https://github.com/pieter3d.png","language":"C++","funding_links":[],"categories":["Waveform Viewers"],"sub_categories":[],"readme":"# simview\nSimview is a text-based SystemVerilog design browser and waveform viewer. As an\n[ncurses](https://en.wikipedia.org/wiki/Ncurses) TUI application, it has very\nlittle library dependencies and can be easily run over an SSH connection in\nyour favorite terminal emulator. Control of the UI is intuitive and fully\nkeyboard shortcut driven. While that may sound contradictory, there is nice\ncontextual help for every function.\n\nSimview is generally meant to debug and analyze hardware designs written in\nSystemVerilog. Support for non-synthesizable testbench code is limited.\n\n![Screenshot](simview.png)\n\n## Features\n* Full design parsing and elaboration, powered by [Surelog](https://github.com/chipsalliance/Surelog).\n* Trace signal drivers or loads.\n* Waveform format support for VCD and FST, the most common formats written by [Verilator](https://github.com/verilator/verilator).\n* Automatic (or manual) matching of wave file hierarchy to design hierarchy.\n* Send signals from source code to the wave viewer and vice versa.\n* Search source code and signal lists.\n\n## Usage\nSimview can be launched with either a VCD/FST wave file, a SystemVerilog\ndesign, or both. To load a wave file use the `-waves \u003cfile\u003e` command line\noption. All other command line options are passed to the Surelog parser. These\ngenerally match most EDA tools, with things like `-timescale`, `+incdir`,\n`+define=val` etc. Use `-help` to get the full list of parsing options from\nSurelog.\nTips for UI navigation:\n  * Use Tab to cycle through the available panes.\n  * Keep an eye on the bottom tooltip bar for available commands.\n  * Ctrl-arrow keys to resize UI panes.\n  * Enter/space to expand collapse tree items.\n  * vim-style hjkl keys generally work. Also $^ for horizontal and gG for vertical movement.\n\n## Build\nSimview is written with C++17 and uses CMake as the build system. Linux or Linux under WSL are\ncurrently the only supported platforms, no native Windows or MacOSX support at the\nmoment.\n\n1. Install pre-requisite packages (Ubuntu 20.04 LTS)\n  * `sudo apt install build-essential cmake git pkg-config tclsh swig uuid-dev\n      libgoogle-perftools-dev python3 python3-orderedmultidict python3-dev default-jre lcov libncurses-dev`\n1. Build and install [Surelog](https://github.com/chipsalliance/Surelog)\n  * `git clone git@github.com:chipsalliance/Surelog.git`\n  * `cd Surelog`\n  * `git submodule update --init --recursive`\n  * `make`\n  * `sudo make install`\n1. Build simview:\n  * `git clone git@github.com:pieter3d/simview.git`\n  * `cd simview`\n  * `mkdir build`\n  * `cd build`\n  * `cmake ..`\n  * `make`\n\n## TODO\nA list of features that have not yet been implemented.\n* Source viewer: Navigate include files\n* Settings file (libconfig)\n  * Sort instances by name or by position in file\n  * Customizable colors.\n  * Source search: whole file or active scope?\n  * Save UI layout dimensions?\n* A colorscheme that works with white backgrounds.\n* Polish: Syntax highlighting of macros\n* Source window: Need a clean way to add multiple signals from the source to the waves at once.\n* alternate layout maybe: left has waves and signals stacked vertically\n* Expose local nets in functions and tasks\n* Expose local variables in always blocks?\n* tracing loads does not trace things on the left side, e.g idx isn't traced in `net[idx] = val;`\n* Time multiplier for waves (e.g. wave 1 unit is really X us/ns/ps/)\n* Wave + source should be able to figure out enums in waves.\n* Reload waves, and possibly live updates.\n* Search for value in wave.\n* Analog signals.\n* Detect unrolled arrays in waves, make them expandable in the waveforms\n* Lazy / on-demand loading of VCD wave data. Not clear if this is useful since\n  loading anything requires parsing the whole file anyway.\n* Someday: Support FSDB via dynamically loading the necessary .so's on systems\n  that have them installed with a valid license.\n* Command line option to load a saved signal list file at startup.\n* Investigate including Surelog as a git submodule, to avoid breakages.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpieter3d%2Fsimview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpieter3d%2Fsimview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpieter3d%2Fsimview/lists"}