SkillAgentSearch skills...

Vaporview

Waveform Viewer Extension for VScode

Install / Use

/learn @Lramseyer/Vaporview
About this skill

Quality Score

0/100

Category

Design

Supported Platforms

GitHub Copilot

README

Vaporview

Vaporview is an open source waveform viewer extension for VScode.

VScode Marketplace | Open VSX | Github

Waveform Viewer Features

  • Native support for VCD, FST, and GHW files
  • Smooth panning and zooming using touchpad gestures or mouse scroll
  • Signal customization, grouping, and reordering in the viewer
  • Time markers - main and alt marker
  • Color theme responsive waveform color palette
  • Search for values within a waveform dump
  • Search for variables and scopes in the netlist
  • Custom signals from bit range
  • Terminal Links for timestamps and instance paths
  • Remote waveform viewing via VScode SSH and surfer surver
  • IDE integration with other language extensions

Vaporview Also supports FSDB files where external libraries are present (see build FSDB addon). For use of other waveform dump formats such as LXT, VZT, GTKwave offers conversion tools. Proprietary formats such as WLF and VPD can also be converted, but require you to compile GTKwave. See the GTKwave Manual for details - page 16, and 69 for an overview.

VScode IDE Integration

Terminal Links

VaporView associates timestamps and netlist paths as links in the terminal. These links are activated by Ctrl + Clicking on the link. Timestamp links will place the marker at the designated timestamp and move the viewer to that marker (if necessary) whereas netlist path links will add the designated signal into the viewer. The following formats are recognized by VaporView:

  • UVM timestamp - ie: @ 50000
  • Timestamp with Units - ie: 50,000 ns (comma is optional)
  • Netlist elements - ie: top.submodule.signal

When clicking on instance path links, paths that point to a variable will add that variable to the viewer. However, if the path points to a scope, it will instead reveal and select that scope in the netlist view.

Interoperability With Other Extensions

List of extensions that connect to Vaporview:

API details

Vaporview has a set of commands and event emitters that allow interaction with other extensions. This allows for powerful features like RTL linking, in editor debugging, and firmware tracing while being HDL and simulator agnostic. See the API docs if you are interested in integrating Vaporview into your extension.

Remote Waveform Viewing

Vaporview allows you to connect to a remote machine and open up waveforms remotely via VScode Remote Development or Surfer surver. Remote development should work out of the box, however to connect to a Surfer surver, you will need to enter in the command "> vaporview.openRemoteViewer" and paste in the URL for the Surfer surver. Alternatively, if the URL is in a VScode terminal, it can be connected to automatically by clicking on the link.

Controls

Keyboard Shortcuts

  • Ctrl + Scroll Wheel - Zoom in and out on waveforms
  • Ctrl + 0 - Zoom out to fit
  • Shift + Scroll Wheel - Scroll up and down on waveforms
  • Up/Down Arrow - Select signal above/below selected signal
  • Alt + Up/Down Arrow - Rearrange selected signal
  • Ctrl/Cmd + A - Select all signals
  • Left/Right Arrow - Move marker to previous/next value change of selected signal
  • Alt + Click or Middle Click - Set Alt-Marker
  • Home and End - Scroll to the beginning and end (respectively) of the waveform
  • Delete or Backspace - Remove Selected Signal
  • Ctrl/Cmd + Z or Ctrl/Cmd + Shift + Z - Undo or Redo action
  • F2 - Rename selected item
  • G - Create new group from selected items
  • Escape - Abort click and drag event (Rearranging signals, zoom, scrolling)

Adding and Removing Signals

Signals may be added or removed through VaporView view container. Click on the VaporView Activity Bar icon, and it will show the netlist for the opened waveform file as well as the signals displayed in the tab.

Adding Signals

To Add a signal, double click on it in the netlist view or click the "+" icon on the right.

Signals can also be added by dragging and dropping them from the netlist view to the viewer. Make sure to hold Shift before dropping them into the viewer - note that this is a VScode requirement.

Removing Signals

To remove a signal, you can either select the signal you would like to remove and hit Delete or Backspace, or right click on a signal in the viewer and select remove signal from the menu.

Other less common ways

Multiple signals can be added or removed by selecting the signals you would like to add or remove, and then right click and select Add/Remove selected signals from the menu.

Signals can be added via a terminal link, and they can be added or removed via API commands.

Scrolling

The scroll wheel (or touchpad scroll) is used to pan in time or scroll up or down. By default, auto detect scrolling mode is enabled. To toggle between scrolling modes, click the "Auto detect Mouse/Touchpad Scrolling", "Enable Touchpad Scrolling", or "Enable Mouse Scrolling" Button on the top right.

Mouse Scrolling

Scroll wheel scrolls sideways by default. To scroll up or down, either hold Shift and scroll, or hover the cursor over to the signal name labels on the left and scroll normally.

Touchpad Scrolling

Zooming

Zooming can be done one of 3 ways:

  • Hold Ctrl, and Scroll, or use the pinch gesture in touchpad mode
  • Use the Zoom in/out buttons on the top right
  • Click and drag over the area you wish to zoom in on

Rearranging signals

To rearrange signals, simply click on the label and drag the signal to where you want it.

Alternatively, you can select a signal, hold Alt, and press the Up or Down Arrows to reorder (similar to how you reorder lines in the text editor)

Marker Handling

There are two markers in VaporView: a normal marker, and an alt-marker. To place the marker, simply click where you want it to be placed. Keep in mind that it will snap to edge if applicable. To place the alt-marker, either Middle Click, or Alt + Click where you would like to place it. The alt-marker will also snap to an edge if applicable.

It should also be noted that signals can be selected by clicking on them, You can also use the Up/Down Arrow keys to move the selection.

Next/Previous Edge

To move the marker to the nearest edge of the selected signal, you can either click the control bar buttons, or use the Left/Right Arrow Keys. Alternatively, VaporView also supports the Verdi bindings of using "N" and "Shift + N" to go to the next and previous edge respectively. If no signals are selected, the marker will step forward or backward 1 time unit.

To move to the next positive edge or negative edge, you will have to use the control bar buttons. This only applies to single bit waveforms.

Placing markers as links from log files

When log files are opened in the terminal, VaporView will automatically parse out timestamps. Use Ctrl + Click to place a marker and move to that timestamp. Note that if multiple viewers are open, it will place a marker in the last active viewer.

Finding values and transitions in a particular waveform

Finding a particular transition or a value in a waveform is done in relation to the selected signal and the marker (similar to how Visual Studio Code handles search in relation to the text cursor)

Value Formatting

Vaporview can display values in different number formats. To change the value format, right click on the signal in the viewer and select Format Values -> and select the value format you wish to display. Note that some values have limitations when displaying values with non-2-state bits in them, and will fall back to displaying the value as Binary. For details see the table below:

| Value Format | Non-2-state Supported | Justify Direction | | -------------- | --------------------- | ----------------- | | Binary | ✅ Yes | Right | | Hexadecimal | ✅ Yes | Right | | Octal | ✅ Yes | Right | | Decimal | ❌ No | Left | | Fixed Point | ❌ No | Left | | Floating Point | ❌ No | Left | | ASCII | ❌ No | Left | | Epoch Time (ns)| ❌ No | Left | | Enum | ❌ No | Left |

Waveform Color

Vaporview supports 8 different waveform colors. The colors are based off the [semantic token colors](https://code.visualstudio.com/api/

Related Skills

View on GitHub
GitHub Stars323
CategoryDesign
Updated4h ago
Forks13

Languages

TypeScript

Security Score

100/100

Audited on Mar 31, 2026

No findings