WP_Term Object
(
    [term_id] => 25181
    [name] => Undo
    [slug] => undo
    [term_group] => 0
    [term_taxonomy_id] => 25181
    [taxonomy] => category
    [description] => 
    [parent] => 157
    [count] => 4
    [filter] => raw
    [cat_ID] => 25181
    [category_count] => 4
    [category_description] => 
    [cat_name] => Undo
    [category_nicename] => undo
    [category_parent] => 157
)
            
undo semiwiki banner ad 800x100 v01
WP_Term Object
(
    [term_id] => 25181
    [name] => Undo
    [slug] => undo
    [term_group] => 0
    [term_taxonomy_id] => 25181
    [taxonomy] => category
    [description] => 
    [parent] => 157
    [count] => 4
    [filter] => raw
    [cat_ID] => 25181
    [category_count] => 4
    [category_description] => 
    [cat_name] => Undo
    [category_nicename] => undo
    [category_parent] => 157
)

Revolutionizing Hardware Design Debugging with Time Travel Technology

Revolutionizing Hardware Design Debugging with Time Travel Technology
by Daniel Nenni on 01-02-2026 at 6:00 am

Key takeaways

DVCon Europe 2025 Undo.io debugging time travel

In the semiconductor industry High-Level Synthesis (HLS) and SystemC have become essential tools, allowing engineers to model complex hardware designs using familiar C/C++ constructs. Yet, despite the widespread adoption of these languages, the debugging workflows in hardware development lag far behind those in software engineering. Traditional methods rely heavily on print statements, logs, waveform viewers, and iterative trial-and-error, often leading to frustration when bugs appear intermittently or in third-party libraries. This is where time travel debugging changes everything.

Time travel debugging, as pioneered by tools like Undo, introduces a powerful paradigm: record, replay, and resolve. Instead of repeatedly rerunning a failing simulation in hopes of reproducing a bug, engineers record the entire execution of a Linux process from the process level down to individual CPU instructions. This recording captures every deterministic and nondeterministic event, including system calls, I/O, timing functions, and multithreaded interactions. Once a crash or failure occurs, the tool automatically stops recording, preserving the exact state at the point of failure.

The magic happens during replay. Engineers load the portable recording into the debugger and navigate freely forwards and backwards in time. If a crash is at the end of the recording, simply jump there and step backward from symptom to root cause. Traditional forward-only debuggers like GDB force users to restart runs repeatedly, but time travel eliminates guesswork. Commands mirror GDB’s familiar syntax with reverse counterparts: reverse-step, reverse-next, reverse-finish, and reverse-continue. A particularly powerful feature is “last,” which instantly jumps to the exact moment a variable or memory location was last modified—ideal for tracking memory corruption or race conditions.

In a live demonstration involving a SystemC testbench with multiple libraries, a subtle off-by-one error caused a failure: code intended to read the zero-index bit of a string incorrectly accessed the first bit, yielding garbage output. Using the recording, an AI assistant (Claude) interfaced with Undo via a custom library, autonomously navigated backward, set bookmarks, executed reverse commands, and pinpointed the exact faulty array access in minutes—without any manual intervention.

This approach shines in complex scenarios common to hardware modeling:
  • Race conditions: Multithreaded SystemC simulations often exhibit nondeterministic behavior. The “last” command, combined with reverse-continue, reveals which thread overwrote shared memory and when, exposing missing locks without recompilation.
  • Deadlocks: Recordings capture all thread states, allowing engineers to trace blocking calls across time.
  • Intermittent failures: By integrating recording into regression pipelines, failing tests automatically generate recordings only when assertions fail, ensuring reproducible evidence is ready the next morning.

Undo also addresses hardware engineers’ needs with a waveform viewer that generates standard waveforms from recordings. Clicking any signal jumps directly to the corresponding source code line in the debugger, bridging the gap between high-level C++ models and low-level signal behavior.

Performance overhead is minimal for computational code, often near full speed, though I/O-heavy or highly nondeterministic workloads incur some slowdown due to logging external inputs. The tool requires Linux with modern Intel/AMD processors but needs no code changes, debug builds, or instrumentation.

Compared to alternatives like the open-source rr project (great for academic use) or Microsoft’s Time Travel Debugging in Visual Studio, Undo offers production-grade reliability, multithreading support, and seamless integration with modern EDA workflows.

Engineers report that debugging complex SystemC models traditionally takes at least a day, often involving consultations with library vendors or code owners. Time travel debugging reduces this by 4x or more, democratizing debugging: junior engineers can trace issues in unfamiliar codebases by simply following data flow backward. This accelerates verification, improves coverage, shortens time-to-market, and preserves team sanity.

Bottom line: In an industry racing toward ever-more-complex designs, adopting time travel debugging isn’t just an upgrade, it’s a necessity. Tools like Undo bring software’s most powerful debugging techniques to hardware, empowering engineers to resolve bugs faster, more reliably, and with less frustration.

Contact Undo

Also Read:

Taming Concurrency: A New Era of Debugging Multithreaded Code

Video EP7: The impact of Undo’s Time Travel Debugging with Greg Law

CEO Interview with Dr Greg Law of Undo

Share this post via:

Comments

There are no comments yet.

You must register or log in to view/post comments.