Engineers Clinic
IntermediateEngineering trackFP-EC-01

Verification testbench with coverage for a FIFO and UART block

Write a verification plan, a self-checking cocotb testbench with a reference model, functional and code coverage, and a bug-hunt report for a synchronous FIFO and a UART, using only open-source simulators.

Core EngineeringVLSI Design
6 Guided Steps42h Internship TierSubmit: Git repo with RTL, cocotb testbench, coverage model and Makefile + verification plan + coverage report + bug-hunt table + sign-off reportVerified CertificateAI Rubric Graded
Program Overview

Industry project · for Kaveri Silicon Labs, a 60-person fabless start-up in Bengaluru building a sensor-hub chip for wearables

Kaveri Silicon Labs is taping out its second sensor-hub chip in nine months. On the first chip, a pointer-wrap bug in a FIFO slipped through simulation, corrupted one byte in every 4,096 under heavy traffic, and forced a metal respin that cost about ₹1.2 crore and four months. The verification lead's rule for this chip is simple: no block is signed off without a written plan, a self-checking testbench, a coverage report that closes every item in the plan, and proof that the testbench catches injected bugs.

You will verify two small blocks from the chip: - a synchronous FIFO, 8 bits wide and 16 entries deep, with full, empty and almost-full flags (almost-full at 12 entries) and sticky overflow and underflow error flags; - a UART with 8N1 framing, a programmable baud divisor, 16-times oversampling on receive, and the FIFO on its transmit and receive paths.

The company's RTL is confidential, so you will first write a small FIFO yourself from the specification, then verify it as if someone else wrote it. For the UART, you will write a simple RTL model or use an open-source UART core with a permissive licence, and say which.

Everything runs on open tools: Icarus Verilog or Verilator as the simulator, cocotb for the Python testbench, cocotb-coverage for functional coverage, Verilator's coverage for code coverage, and GTKWave for waveforms. No FPGA board or licence is needed.

Done looks like a verification plan, a testbench with a reference model and scoreboard, constrained-random tests with a seed you can replay, a coverage report at 100% of planned functional bins and at least 95% line coverage, a bug-hunt table showing the testbench catches at least 5 of 6 injected bugs, and a short sign-off report the verification lead can review.

Verification planningSelf-checking testbenchesConstrained-random stimulusFunctional coverageCode coverageDebugging with waveforms
What you submit

Git repo with RTL, cocotb testbench, coverage model and Makefile + verification plan + coverage report + bug-hunt table + sign-off report

Stack: Icarus Verilog or Verilator, cocotb, cocotb-coverage, GTKWave, Python 3, Git

How it is graded
  • Plan traces to the spec20

    Every feature in the specification maps to at least one test and one coverage item in the plan, including corner cases such as simultaneous read and write when full.

  • Self-checking testbench25

    A reference model and scoreboard check every transaction automatically, and any mismatch fails the test with a clear message and the seed.

  • Coverage closed20

    All planned functional bins are hit, line coverage is at least 95%, and any uncovered code is explained.

  • Testbench proved strong20

    At least 5 of 6 injected bugs are caught, each with the failing test and seed recorded, and any missed bug leads to a new check.

  • Sign-off quality15

    The sign-off report states what was verified, how, the numbers, open issues and how to rerun everything with one command.

Pass 60% · Merit 75% · Distinction 90%

Learning Outcomes
Turn a block specification into a verification plan with coverage items
build a self-checking cocotb testbench with a reference model and scoreboard
write constrained-random tests that replay from a seed
close functional and code coverage
prove testbench strength by injecting bugs
Target Audience

Engineering Students

Diploma, B.Tech, B.E., BCA, MCA, or M.Tech students seeking practical experience.

Aspiring Developers

Developers who want to build proof-of-work capstone projects for tech resumes.

Job Seekers

Graduates looking for AI-evaluated code review & verified industry credentials.