Part 8 · Senior & Interview Prep · Intermediate
Capstone: Verify a Parameterized FIFO
Hub — the full project: spec to plan, interface and harness, stimulus stack, checking stack, assertions and coverage, regression and closure.
Overview
This capstone builds a complete, self-checking, coverage-driven environment for a parameterized synchronous FIFO — every technique from the course applied to one DUT, end to end. It is also the project you can narrate in an interview : a FIFO is small enough to verify completely, yet rich enough to exercise planning, constrained-random stimulus, independent checking, bound assertions, coverage closure, and a sign-off argument.
The DUT: a synchronous FIFO with parameters WIDTH and DEPTH, a valid/ready handshake on both the write (push) and read (pop) sides, and full / empty flags. Each step's page contains the complete, runnable code for that layer.
The six steps
Spec Analysis & Verification Plan — feature extraction, plan table, corner inventory.
Interface & Harness — fifo_if with clocking blocks, tb_top with clock/reset and DUT hookup.
Transactions, Constraints & Generator — fifo_txn with layered constraints, weighted scenario generator.
Monitor, Scoreboard & Model — in/out monitors, queue-based reference model, in-order compare.
Assertions & Coverage — bound assertion module and the closure covergroup.
Tests, Regression & Closure — test variants, seed sweeps, hole analysis, sign-off summary.
CAPSTONE ENVIRONMENT MAP
┌───────────── tb_top ─────────────┐
│ clk/rst gen fifo_if │
│ ┌───────┐ │
gen ──mailbox──► drv ════════════════►│ DUT │ │
│ │ (cb drive) │ fifo │ │
scenario │ └───┬───┘ │
knobs │ ▲ bind: fifo_sva │ │
│ └────────────────┘ │
│ in_mon (push side) out_mon (pop side)
│ │ │ │
│ ▼ ▼ │
│ ┌──────── scoreboard ───────┐ │
│ │ queue model · in-order cmp│ │
│ └───────────┬───────────────┘ │
│ coverage (cov) │
└─────────────────────────────────┘
stimulus stack: gen → mailbox → drv → fifo_if
checking stack: monitors → scoreboard ← reference model
always-on: bound assertions + sampled coverageKey takeaways
One DUT, every course technique — plan, stimulus, checking, assertions, coverage, closure.
Stimulus and checking are independent stacks meeting only at the scoreboard.
Each step's page is complete code — the capstone assembles into a runnable bench.