A regression of three hundred tests is green. In review, someone asks two questions. How do you know every output word was right? And how do you know the tests tried the cases that matter? The first is a checking question: a model must predict each result and a scoreboard must compare it with what the DUT really did. The second is a coverage question: a model of the test plan must record which cases ran and point at the ones that never did. A bench that cannot answer both is not finished, however green it is.
This part answers both on the course's DMA bench. Its checking env, dma_env_check, runs the original scoreboard, a separate predictor feeding a built-in comparator, and a coverage collector side by side. On the same three random jobs, the scoreboard and the comparator agree on 14 of 14 words, and coverage still reports 8 plan holes. That gap between "everything matched" and "everything was tried" is the thread through all three topics.
Design a scoreboard for the traffic your DUT really produces: in order or out of order by ID, with a check at end of test that fails when work is missing or nothing was compared.
Build the reference model as its own component, in SystemVerilog or in C through DPI-C, and keep it independent of the RTL it judges.
Choose between UVM's built-in comparators and a hand-written scoreboard, and avoid the class comparator that calls every pair a match.
Turn a test plan into a coverage model, read the holes it reports, and close them with directed tests or better constraints.
# | Topic | What it covers |
|---|---|---|
1 | The expected-versus-actual model and how a scoreboard is wired into the env; in-order and ID-based out-of-order matching; and the end-of-test checks that turn a silent zero-compare run into a failure. | |
2 | The predictor as its own component with one virtual | |
3 | Coverage collectors and sampling discipline, bins, crosses and plan traceability, reporting, and the closure loop, shown on the DMA's coverage model and the holes it really reports. |
Read them in order. Scoreboard Architecture sets up the compare that the other two build on. Reference Models moves the prediction out of the scoreboard so it can be swapped, written in C or fed to a built-in comparator. Coverage & Closure comes last because coverage only means something once the checks are trustworthy: a covered case that nobody checked is a case you merely watched.