Version 0.1.0 (pre-release)
Pulse Deck is a multi-file VCD waveform viewer for Windows. It opens Value Change Dump (.vcd) files from any tool and shows signals from several files together on one shared time axis.
Loading captures from different simulation runs side by side lets you see what difference a change made to the logic states. It is also useful for working with multiple Wokwi VCD files.
- Multiple files in one view. Add any number of VCD files; their signals share one time axis. Each file gets a short alias you can edit, and an "END OF FILE" marker shows where each capture's data stops.
- Auto-reload. A file is reloaded shortly after it changes on disk, so re-running a simulation updates the view. Signals that appear are tagged
NEW; signals that vanish are kept and shown as missing, so your layout survives. - Signal browser. The file and scope hierarchy is shown as a tree. Tick signals to display them, filter by name, and set a colour per signal.
- Your own display order. Displayed signals are a flat list you reorder with up/down buttons, independent of the file hierarchy.
- Aliases. Rename any signal, choose how names are shown (name + file, name + file + alias, or alias only) globally or per signal, and save or load alias sets as
.vcdaliasesfiles. - Cursor and values. Click the waveform to place a cursor; a values column shows each signal's value at that time.
- Markup. Drop vertical time markers, add text notes, and draw arrows between two points that are labelled with the time gap. Markers snap to nearby signal transitions.
- Workspaces. Save the loaded files, signal settings, display order, markup, and view window to a
.pulsedeckfile and reopen it later. - Readable at any zoom. Signals changing faster than the screen can resolve are drawn as solid bars, so short pulses never disappear.
- Windows 10 or 11
- .NET 10 SDK to build, or the .NET 10 Desktop Runtime to run a build
Ready-to-run builds are on the Releases page. Unzip and run PulseDeck.App.exe.
Clone the repository, then build from its root:
git clone https://github.com/fluxfocus/pulse-deck.git
cd pulse-deck
dotnet build PulseDeck.slnx -c Release
dotnet run --project src/PulseDeck.App -c ReleaseThe executable is written to:
| Configuration | Path |
|---|---|
| Debug | src/PulseDeck.App/bin/Debug/net10.0-windows/PulseDeck.App.exe |
| Release | src/PulseDeck.App/bin/Release/net10.0-windows/PulseDeck.App.exe |
You can pass one or more .vcd paths on the command line to open them at startup:
PulseDeck.App.exe C:\captures\run1.vcd C:\captures\run2.vcdIn VS Code, the included .vscode folder provides a build task and two debug configurations (press F5).
Some PCs (commonly HP machines) set a system-wide Platform environment variable that MSBuild picks up. Either clear it for the session or override it:
Remove-Item Env:Platform
# or
dotnet build PulseDeck.slnx -c Release -p:Platform="Any CPU"- File > Add VCD File(s)... or the toolbar button. You can select several files at once.
- Each loaded file appears as a chip under the toolbar with a status dot, an editable alias, a reload button, and a remove button.
- Reload All re-reads every file. Auto-reload on file change (on by default) does this for you.
| Action | How |
|---|---|
| Zoom in or out | Mouse wheel over the waveform (zooms around the pointer), or Zoom In / Zoom Out |
| Fit everything | Zoom Fit |
| Pan | Drag the waveform with the Select tool, use the scrollbar, or the pan buttons either side of it (1/4 or 3/4 of a screen) |
| Place the cursor | Click the waveform with the Select tool |
The status bar shows the cursor time and the visible time window.
- Tick or untick a signal in the Signals tree to show or hide it.
- Click a signal's colour dot to change its colour.
- Use the up/down arrows in the Displayed column to reorder, and the cross to hide a signal.
- Type in Filter to narrow both lists by name.
- Right-click a signal name to rename it or choose how its name is displayed.
- Signal Aliases... opens a table of every signal for bulk alias editing, with Save Aliases... and Load Aliases....
Choose a tool from the Markup group, then:
- V-Line: click to drop a vertical time marker, with an optional label.
- Text: click to add a note.
- Arrow: drag between two points; the arrow is labelled with the time difference.
- Right-click a markup to remove it, or use Clear Markups to remove them all.
A- / A+ change the timestamp text size, Vertical labels rotates the timestamps, and Grid toggles grid lines.
File > Save Workspace stores the session in a .pulsedeck file (JSON). It records the paths of the loaded VCD files rather than their contents, so the VCD files need to stay where they were.
The parser reads the standard four-state VCD format: $timescale, nested $scope hierarchies, $var declarations of all standard variable types, and scalar, vector (b), and real (r) value changes. It tolerates some non-conformant dumps, such as a space between a scalar value and its identifier.
PulseDeck.slnx Solution
Directory.Build.props Version, author, and licence metadata for all projects
src/
PulseDeck.Core/ VCD parser, session model, workspace and alias file formats (no UI)
PulseDeck.App/ WPF application
PulseDeck.Core.Tests/ xUnit tests for the core library
dotnet test PulseDeck.slnxThe tests currently load sample VCD files from a fixed folder on the author's machine, which is not part of this repository, so they will fail elsewhere until sample files are added to the repository.
Pulse Deck is pre-1.0. File formats and behaviour may change between versions.
Created by John Dowdell — github.com/fluxfocus
A significant portion of the code and documentation was written by Claude, Anthropic's AI model, working through Claude Code under John's direction.
Source: github.com/fluxfocus/pulse-deck
Pulse Deck is released under the MIT License. You may use, copy, modify, and distribute it freely, including commercially, provided the copyright and licence notice is kept with any copy or substantial portion of the software. It is supplied without warranty.
Copyright © 2026 John Dowdell
The application itself depends only on .NET and WPF, which are MIT licensed. The test project additionally uses:
| Component | Licence |
|---|---|
| xunit, xunit.runner.visualstudio | Apache-2.0 |
| Microsoft.NET.Test.Sdk | MIT |
| coverlet.collector | MIT |
These are used only for running tests and are not part of the application.

