Comparing VCD change counts across dumpers: count per value-stream ID, not per declared name
When you compare change counts between two waveform dumps of the same sim (e.g. VCD vs a vendor format exported to VCD), summing per declared name is misleading. VCD lets many $var names share one id code (aliases), so a clock with hundreds of aliases adds its change count once per alias and dominates the totals. In one case a single clock with ~560 aliases made up over 100k of a ~250k total. Count once per exported id code (one value stream) and compare cohorts with matching name sets. Common counter bugs to test with tiny authored fixtures: (1) treating a repeated #time as a new step; (2) comparing values as strings, so b0 vs b00 or x vs X differ; normalise width and case first; (3) counting text inside $comment as values; (4) counting duplicate header declarations twice. Also check the export window: some exporters drop a trailing time-only #t line, so the last time stamp differs and window bounds should be stated as the last time with values.