Waveform trace engines: two quiet ways a no-driver step gets labelled exact
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.