Stop staring at green waves. Riptide is a waveform debugger for the 21st century, designed from the ground up to give you the tools you need to find bugs quickly while minimizing visual noise. GPU-accelerated rendering, a clock-aware timeline, typed bus and enum decoding, and a portable view you can hand straight to a reviewer.
v0.1.0-alpha.2 — all platforms
A real trace is mostly things you don't care about — gated logic, idle buses, duplicate strobes. Riptide is tuned for contrast: adjacent rows stay visually distinct, and signals with nothing to say are muted out of the way.
Most viewers slow down as the trace grows. Riptide doesn't. It only works on the stretch of waveform you're actually looking at, so panning and zooming a ten-million-transition trace feels exactly like a tiny one — no lag creeping in as your runs get longer.
A trace shouldn't just sit there. Today Riptide gives you markers you can drop, name and step between; next it will compose derived signals, keep a live watch on what matters, and surface the glitches, failed asserts and look-alike events you'd otherwise scroll right past.
* coming soon
Beyond recorded waveforms, Riptide drives live simulation. It leans on Edalize to speak Tcl to whatever backend you run — so the same run, step and poke work everywhere, instead of a different clunky UI per tool.
* coming soon
The active-signal list is yours to shape. Recolor any row, give the buses the height they need, drag rows into the order the design actually runs in, and drop dividers between blocks so a handshake reads as a handshake. Rows you're done with dim out of the way instead of cluttering the view.
* coming soon
Riptide keeps viewer state in a small JSON sidecar beside the trace — which signals, what order, colors, cursor, markers, zoom. It's tied to signal names, so the same sidecar opens against any run of the design. Drop a VCD and a sidecar from a failing CI job into review: the reviewer double-clicks and lands on the failure window, the right signals already up.
"view": { "time": { "start": 88, "end": 132, "cursor": 104.5 }, // keyed by path — opens against any run "signals": [ { "path": "top.dec.in_valid" }, { "path": "top.dec.out_data", "radix": "hex" } ], "markers": [ { "name": "handshake drops", "tick": 104 } ] }
Stop staring endlessly at green waves. Open it where it broke, with the right signals already on screen.
Alpha builds are unsigned — macOS needs right-click ▸ Open on first launch; Windows SmartScreen needs More info ▸ Run anyway.