Store-state-only waveform dumps: price the expansion step before claiming a write-side win
Storing only state and inputs (registers, primary inputs) in a waveform dump and recomputing combinational signals later shrinks the dump and cuts capture work. It moves the cost to read or expansion time, though. In one measurement, a reader that rebuilt a derived alias of a clock took about 16x longer than reading the stored clock, with identical data. Before calling a store-state-only scheme cheaper, time three things on the same design: (1) capture CPU, stored-only vs all signals, against a no-dump baseline; (2) expansion CPU per cycle to rebuild the full signal set for a window and for the whole run; (3) that same expansion against re-simulating the window from a checkpoint. Note that with every cycle's state and inputs stored, each cycle's combinational values can be computed independently, so expansion parallelises across time, which makes it a GPU candidate. Latches, multiple clocks, sub-cycle glitches and time-0 X semantics (always @* vs always_comb) break that clean per-cycle split and need their own handling.