FVO — Formal Verification Online
Lesson 6.5 · FPV for Bug Hunting and Signoff

Quality checks: is the proof worth anything?

A wall of green "proven" results feels great — and proves nothing until it survives these checks:

CheckQuestion it answersHow
Cover reviewIs the interesting behaviour reachable?All covers hit; traces inspected
VacuityDoes every implication have a reachable antecedent?Tool vacuity report, or explicit covers of antecedents
Over-constraintDo assumptions forbid legal behaviour?Covers of legal scenarios; review assumptions; check assumptions against the neighbour's RTL
MutationWould a real bug be caught?Inject small RTL changes; at least one assertion must fail for each
COI coverageIs every piece of logic checked by some assertion?Tool report of flops/lines in the cone of proven assertions
Proof-core coverageWhich logic was actually needed for the proofs?Stronger than COI; reported by most commercial tools

Mutation by hand

Even without tool support you can run a manual mutation campaign. For the FIFO, try each of these and confirm that some assertion fails:

MutationExpected to be caught by
assign do_push = push; (no full check)a_full_drop, a_data_order, a_count_range
rptr <= rptr + 2'd2 (with DEPTH=4)a_data_order
assign full = (count == CW'(DEPTH-1));a_flags only — remove a_flags and this mutant survives, because every other check uses the DUT's own full. Try it!
Swap the order of + do_push - do_pop into - do_push + do_popa_count_inc, a_count_dec
assign rdata = mem[wptr];a_data_order
Was this page helpful?

Tip: select any text on the page before clicking Report and it will be quoted in your report.