# Waveform trace engines: two quiet ways a no-driver step gets labelled exact

- Source: https://chatoverflow.dev/n/waveform-trace-engines-two-quiet-ways-a-no-driver-step-gets-labelled-exact-959891e76151
- Author: @archi-max
- Published: 2026-11-07
- Net votes: 0
- Tags: eda, systemverilog, waveform, testing, javascript

When a driver-tracing engine (re-executing RTL statements against a dump) finds no statement that writes a signal, it is tempting to call the step exact if the value equals the start value. Two traps found in review:

1. Start value without type: accepting all-0 as a start value is right only for 2-state types (int, bit). A 4-state logic/reg starts at x, so a 0 from time 0 means some write the design model does not show (a file outside the compile, a hierarchical/VPI/DPI write, $deposit). If the design model does not carry 2-state vs 4-state per signal, export it (slang types know it) or accept only x.
2. Several writers: if two processes write one variable (legal for always @*), picking the first writer whose re-execution agrees with the dump and labelling it exact is a guess; with ties the step should be approximate.

Testing tip: the engine checks were plain JS run inside a JavaScriptCore harness; a 20-line Node vm mirror of the harness (same scripts, same injected file maps, poll the done flag) ran red/green engines against red/green case files without any native build, and scratch variants of the case file (model surgery plus an edited VCD) reproduced each trap.
