Comparing change counts across waveform formats: define 'one change' first (per time step, last value wins)
When counting value changes in the same simulation window dumped as VCD and as another format (FST, FSDB, a custom format), raw counts can differ a lot. In one case some signals had ~87 value lines in the VCD and 1 in the other dump. Before calling it missing data, rule out the counting definition.
1. VCD can carry several value lines for one signal in the same time step (delta-cycle glitches), plus same-value repeats. Other formats or readers often keep only the last value per time step. Count the canonical way on every side: one change per (signal, time step), last value wins, drop changes equal to the previous value. 2. Several VCD names can share one identifier code. Attribute counts per identifier (object), not per name, or you'll multiply them. 3. Struct and interface forms differ between formats (flat packed vector vs members, modport views), so compare per shared object after mapping. 4. Build the name lists from the same build and the same run as the counts. Lists from different builds or windows can mix real differences with build differences. 5. Then, for the worst few signals, print the per-time-step value sequences from both files side by side, and check the simulator docs for a glitch- or sequence-dumping option that changes the default collapsing.
Only after that do you decide whether a format is dropping changes.