Skip to content
VLSI Mentor

Wishbone · Module 30

Verification Checklist

Coverage hit, defect escaped. And an error counter that reports two simultaneous failures as zero — executed on the current simulator, not remembered.

The question a verification review must answer is not how many tests are there. It is:

Could this environment have detected the defects this design is at risk of containing?

Which decomposes into five things, none of which is a test count:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
VERIFICATION QUALITY =
    OBSERVABILITY + INDEPENDENCE + SENSITIVITY + COVERAGE + NEGATIVE CONTROLS
A verification environment with its independence boundaries marked. Stimulus drives the design under test and also drives a reference model, along a path that must never touch the design's internals. The design's pins are observed by a monitor, which reconstructs transactions passively and drives nothing. The monitor feeds the scoreboard and the coverage collector. The reference model feeds the scoreboard, which compares observation against prediction. Three boundaries are highlighted as the things a review must check: the monitor must be passive, the reference model must be independent of design internals, and the scoreboard must receive two streams that were produced without reference to each other.stimulusmust be SENSITIVE, notmerely presentDUTpins only, in bothdirectionsmonitorPASSIVE — drives nothingcoveragedid the situation occur?reference modelINDEPENDENT of DUTinternalsscoreboardtwo streams, producedseparatelythe counterscan they represent whatthey count?12

1. Coverage Answers A Different Question

VER-04. Is the stimulus sensitive to the defect, or merely present in the bin?

Two sentences that sound the same and are not:

asks
coveragedid this scenario occur?
defect sensitivitywould the observation differ if the implementation were wrong?

The same defect, the same partial-write bin, two stimuli:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
=== SIM D - COVERAGE IS NOT DEFECT SENSITIVITY ===

  the same defect, the same partial-write bin, two stimuli

  stimulus            mask asked  mask delivered  scoreboard  detected?
  zero background              2               f           0   NO
  non-zero background          2               f           1  yes
  control, no defect           2               2           0  n/a

  committed value     blind 0x00000000   sensitive 0x0000aa00   control 0xffffaaff

The defect is armed in both rows. The delivered mask is f where 2 was asked for, in each. The first stimulus wrote zeros into a location holding zeros, so the wrong mask produced the right answer — and a coverage report would show the partial-write bin covered, in green, on a broken design.

The review artifact this produces:

featurecoverage evidencedefect injectionexpected detectoractual detectorsensitive?
partial write, zero databin hitmask widenedscoreboardnoneNO
partial write, seededbin hitmask widenedscoreboardscoreboardyes
full-word writebin hitmask widenedn/a by construction

PASS: every covered feature has an injection that the intended detector catches. FAIL: any bin covered by stimulus that cannot discriminate.

2. Can The Checker Count?

VER-11. Can every PASS-deciding metric represent the number it claims to count?

This item exists because of a defect found in this curriculum's own testbenches, and it is the sharpest thing in this chapter.

Every error counter in Modules 27, 28 and 29 was written like this:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
               // THE ONE-BIT FORM, inline in $display exactly as Modules
               // 27-29 wrote it
               (cond[0]!=0)+(cond[1]!=0)+(cond[2]!=0)+(cond[3]!=0)
              +(cond[4]!=0)+(cond[5]!=0)+(cond[6]!=0)+(cond[7]!=0),

EXECUTED TESTBENCH — the defective form, reproduced deliberately in SIM E.

Verilog sizes a self-determined expression by its widest operand. Each comparison is one bit. The sum is evaluated at one bit and wraps. Run it:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
=== SIM E - CHECKER ARITHMETIC WIDTH ===

  the same conditions, three ways of counting them

  conditions  expected  1-bit sum (bad)  widened sum  module count
  00000000         0              0            0             0
  00000001         1              1            1             1
  00000011         2              0            2             2
  00011111         5              1            5             5

Read the third row. Two simultaneous failures report as zero.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  READ THE 2 AND THE 5.
  Two simultaneous failures report as 0 in the one-bit form.
  Five report as 1. An even count is indistinguishable from
  a clean run, and every gate downstream believes it.

A genuine zero still prints zero, which is why the published results of Modules 27–29 survived and were re-verified after the correction. The method did not survive: a gate that can only distinguish zero from odd is not a counter.

The three properties the replacement has, and a review should demand:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  // $countones returns an integer, so nothing here is evaluated at the
  // width of a single comparison. That is the entire fix.
  logic [WIDTH-1:0] n_now, n_bad;
  assign n_now = WIDTH'($countones(active));
  assign n_bad = WIDTH'($countones(bad));

EXECUTED RTL — wb_rev_count.sv.

It saturates rather than wraps, so an overflow is visible:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  SATURATION
  accumulating 8 failures per clock for 12000 clocks
    count      65535
    saturated  1

And it reports unknowns rather than reading them as false:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  X-SAFETY
  one true condition and one unknown one
    safe count    1
    unknown count 1

The review item: for every metric that decides PASS, record its declared width, the width of the expression that produces it, the maximum value it must represent, and whether a negative control has ever shown it reporting a nonzero number. In this module: 53 widened terms, 0 unwidened, and the negative control covers 0, 1, 2 and 5 simultaneous failures.

A checker nobody has seen report a failure is a checker nobody has tested.

3. Independence

VER-06. Does the checker derive expected behaviour from the design's internals?

A reference model that copies the design's arithmetic agrees with the design's bugs. Classify every input to the predictor:

input classacceptable?
interface observation (pins)yes
specification or configuration constantyes
testbench-side stimulus intentyes
DUT internal signalno

PASS: zero design-internal signals feed the expected-behaviour computation. FAIL: any, unless explicitly justified — and the justification has to survive the question what bug would this model now agree with?

4. Who Checks The Checker

VER-08. Have testbench-side defects been exercised?

A scoreboard mismatch is a statement that two things disagree. It contains no information about which of them is wrong.

Two rigs, identical symptom:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
  DISCRIMINATING OBSERVATION - the delivered mask
    rig 1: asked 2, delivered f
    rig 2: asked 2, delivered 2

Rig 1 is a design defect. Rig 2 is a reference model with the wrong byte-lane semantics, on a design that did exactly what it was asked. Same mismatch count, same failing transfer, same expected and observed values — with the roles of expected and observed swapped, which no report prints.

Required negative controls, testbench side: at minimum a monitor that samples early and a predictor with wrong semantics. Chapter 30.5 runs the full discrimination.

5. Detector Discrimination

Every detector in the environment should have a known defect it is supposed to catch, and evidence that it did.

defectexpected detectorobserved detectormissed?false positive?
moving requestprotocol check at the slave boundaryprotocol check at the slave boundarynono
duplicate commitside-effect censusside-effect censusnono
widened byte mask, seededscoreboard (data)scoreboard (data)nono
widened byte mask, zero datascoreboard (data)noneYESno
address aliasdecode censusdecode censusnono
response misrouteprovenance checkprovenance checknono
model ignores SELlineage, not the scoreboardlineagenono
counter widththe negative control itselfthe negative controlnono

Intended detections missed: 1, and it is the point of SIM D — the row exists to show that the miss is a property of the stimulus, not of the detector. With seeded data the same detector catches the same defect.

6. False Confidence

"Coverage is 100%." Proves: every bin you wrote was entered. Does not prove: that entering them could have failed. SIM D's first row is a covered bin on a broken design. Missing evidence: an injection per covered feature.

"The scoreboard passed." Proves: two streams agreed. Does not prove: that either was right, or that anything was compared. A scoreboard with no input agrees with everything — Chapter 27.4 measured zero mismatches from zero comparisons. Missing evidence: the comparison count beside the mismatch count.

"No protocol assertion fired." Proves: the handshakes were well-formed. Does not prove: anything about destination, payload, ownership or commit count — nine of the eleven defects in this module produce zero protocol violations. Missing evidence: the system-invariant checks that no rule encodes.

7. The Verification Checklist

idreview questionclassification
VER-01Is every test deterministic and reproducible from a recorded configuration?VERIFICATION QUALITY
VER-02Is the monitor passive — does it drive anything reaching the design?VERIFICATION QUALITY
VER-03Does the monitor emit per completion, not per presented clock?VERIFICATION QUALITY
VER-04Is stimulus sensitive, not merely covering?VERIFICATION QUALITY
VER-05Is every functional test run at more than one slave latency?VERIFICATION QUALITY
VER-06Does the predictor use zero design-internal signals?VERIFICATION QUALITY
VER-07Is the comparison count reported beside the mismatch count?REVIEW HYGIENE
VER-08Have testbench-side defects been injected and caught?VERIFICATION QUALITY
VER-09Does every checker have a negative control that made it fire?VERIFICATION QUALITY
VER-10Are checker activation counts reported, not only failure counts?VERIFICATION QUALITY
VER-11Can every PASS-deciding metric represent its maximum count?REVIEW HYGIENE
VER-12Does an unknown value fail the check rather than skip it?VERIFICATION QUALITY
VER-13Is published evidence mechanically traceable to a fresh run?REVIEW HYGIENE
VER-14Are error and retry paths exercised where the design implements them?VERIFICATION QUALITY
VER-15Are partial writes tested over a non-zero background?VERIFICATION QUALITY
VER-16Are address boundaries swept rather than sampled?VERIFICATION QUALITY

8. What To Carry Forward

  • Coverage says the situation occurred. Sensitivity says the observation would have differed. Only the second is evidence.
  • Audit the arithmetic that decides PASS. Two failures reporting as zero is not hypothetical; it happened here.
  • A checker that has never fired is untested. Give every detector a defect it should catch, and record that it did.
  • A predictor fed from design internals agrees with design bugs.
  • Report comparisons beside mismatches. Zero over zero is not a pass.
  • An unknown must fail the check, never skip it.

Chapter 30.3 reviews the one invariant no Wishbone rule encodes at all.

Continue learning

Standards & specifications

Governing standard
Wishbone SoC Interconnection Architecture (OpenCores)(opens OpenCores in a new tab)

Defines the Wishbone signal set, the bus cycles built from it and the interface rules a portable IP core must follow. It deliberately leaves interconnect topology, address map and arbitration policy to the integrator, so those are system decisions rather than requirements of the specification.

This page also covers RTL structure, verification approach and debugging technique. Those are engineering practice built on the standard, not requirements the standard itself imposes.

Where this fits

Part of the Wishbone curriculum.