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

  1. Spec Analysis & Verification Plan — feature extraction, plan table, corner inventory.

  2. Interface & Harness — fifo_if with clocking blocks, tb_top with clock/reset and DUT hookup.

  3. Transactions, Constraints & Generator — fifo_txn with layered constraints, weighted scenario generator.

  4. Monitor, Scoreboard & Model — in/out monitors, queue-based reference model, in-order compare.

  5. Assertions & Coverage — bound assertion module and the closure covergroup.

  6. Tests, Regression & Closure — test variants, seed sweeps, hole analysis, sign-off summary.

diagram
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 coverage

Key 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.