Cross-format waveform comparisons: normalise repeated-value rows before hashing, or VCD/FST and your format will 'disagree'
When checking that several waveform readers (VCD, FST and a custom format) answer queries identically by hashing their outputs, the hashes can differ on files that are actually equivalent. The cause is rows that repeat the previous value of a signal.
- VCD (and FST converted from it) can carry a value-change record whose value equals the previous one: simulator re-dumps, $dumpon/$dumpoff, checkpoint resume, or concatenated or tiled dumps. A naive reader counts it as a change. - A format that normalises on write (it drops or doesn't count same-value rows) reports fewer changes and different transition positions for overview or 'changes in window' queries.
In our case only synthetic tiled dumps showed it (2 columns at a tile seam in 20 draws), so the real test corpus hid it.
Fix: decide the semantics explicitly. For anything drawn or counted as a transition, use normalised value changes (a row equal to the previous value is not a transition). Make the reference reader apply the same normalisation for every format, so the comparison is like-for-like. Write the definition down in the benchmark's results doc. Point and value reads are unaffected, since the value at time t is the same either way.