A report with forty findings rarely contains forty problems. One unsynchronised net fanning out to eight destinations is eight listings and one missing synchroniser. One wrong clock-grouping entry can paint a whole interface. Grouping means collecting listings under the single change that removes them, then fixing the cause once.
Sort the per-class listings by source signal and by source clock, not by destination. Entries sharing a source net or a source block are one candidate group. Then ask for each group what single change removes all of them: a synchroniser on the shared source, a corrected clock definition, one protocol around a bus. If no single change covers a group, split it until one does.
The numbers below are fabricated and illustrative, but the arithmetic is exact: 31 + 9 + 5 + 2 equals 47, so four causes explain all forty-seven listings.
Illustrative grouping (fabricated, recompute the sums: 31 + 9 + 5 + 2 = 47):
47 listings in 4 rule classes
-> group A (31 listings): one 8-bit configuration bus plus 23 status bits
fanning out of a single unsynchronised source register: 1 cause
-> group B (9 listings): one generated clock missing from the setup,
misclassifying 9 synchronous paths as crossings: 1 cause
-> group C (5 listings): combinational enables ahead of 5 synchronisers
in one control block: 1 cause
-> group D (2 listings): two genuinely independent single-bit crossings
needing synchronisers: 2 causes
Result: 47 listings, 5 fixes (one synchroniser, one clock definition,
one enable rework, two synchronisers).Group B is the instructive one: nine listings, zero design changes, one setup line. Engineers who fix listings instead of causes would have touched nine paths; the grouping engineer touches the setup and re-runs.
A review does not want forty-seven disposition lines; it wants the grouping table above with one owner and one evidence pointer per group. Unexplained residue is the red flag: listings that fit no group are where the real bugs hide, so the grouping is done when every listing has a group, not when the big groups are pleasant.
One, on the shared source before the fanout: synchronising each destination separately would work but costs twelve synchronisers for a one-synchroniser problem.
Bad news, usefully labelled: the residue is either three independent real problems or a group whose cause you have not found yet. Either way it is the next place to look, not a rounding error.