Skip to content
Learnings · SystemVerilog · Labs

SystemVerilog labs.

Verification-focused labs that exercise the SystemVerilog idioms working DV teams use every day — typing, randomization, queues, and SVA.

0of 7 labs live3 phases · grouped by difficulty
Lab Philosophy

Small, working pieces of silicon-grade code.

Each lab takes one SystemVerilog idiom and forces you to use it under realistic pressure — reproducible bugs, real coverage targets, real waveforms. The point is to internalise when each construct is the right tool, not to recite its syntax.

Lab Roadmap

3-phase progression.

  1. 01Data Types2
  2. 02RTL Modeling2
  3. 03Verification3

All Labs

Grouped by difficulty

Foundation

2 labs
  1. Lab 01

    4-State vs 2-State Debugging Lab

    Reproduce a real X-propagation bug, then port the same RTL to `bit` and observe how the bug disappears — and why that is dangerous.

    Skills practiced
    • X propagation
    • `logic` vs `bit`
    • Reset hygiene
    Deliverable
    A failure-then-fix waveform pair plus a one-page write-up of when 2-state hides bugs.
    FoundationPlannedData Types
  2. Lab 02

    Packed vs Unpacked Arrays Lab

    Model the same register file two ways and benchmark synthesis area + simulation memory footprint.

    Skills practiced
    • Packed dimensions
    • Unpacked memories
    • Array slicing
    Deliverable
    Side-by-side synthesis report + a rule of thumb for when each layout is right.
    FoundationPlannedData Types

Intermediate

3 labs
  1. Lab 03

    Enum FSM Modeling Lab

    Refactor a numeric-encoded FSM to a typed `enum` state and prove the waveform names are now self-documenting.

    Skills practiced
    • typedef enum
    • $cast
    • FSM coverage
    Deliverable
    Before/after waveforms plus a state-coverage report from a single test run.
    IntermediatePlannedRTL Modeling
  2. Lab 04

    Struct-Based Packet Modeling Lab

    Model an Ethernet-like header as a packed struct and reuse the same definition in RTL, monitor, and scoreboard.

    Skills practiced
    • Packed structs
    • Bit-field aliasing
    • Verification reuse
    Deliverable
    A struct definition referenced by three independent components, with a packet decode log.
    IntermediatePlannedRTL Modeling
  3. Lab 05

    Queue / Mailbox Transaction Buffer Lab

    Build a producer/consumer scoreboard that uses queues for ordering and a mailbox for cross-thread hand-off.

    Skills practiced
    • Queues
    • Mailboxes
    • Process synchronisation
    Deliverable
    A self-checking transaction buffer with a stress test driving 1000+ packets through it.
    IntermediatePlannedVerification

Advanced

2 labs
  1. Lab 06

    Constrained Random Intro Lab

    Write a randomized stimulus class with three layered constraints (legal, biased, corner) and observe coverage convergence.

    Skills practiced
    • rand / randc
    • constraint blocks
    • Coverage convergence
    Deliverable
    A coverage report showing how each constraint layer changes the bin-hit distribution.
    AdvancedPlannedVerification
  2. Lab 07

    Assertion-Based Protocol Checker Lab

    Write SVA properties for a simple handshake protocol and prove they catch three pre-seeded RTL bugs.

    Skills practiced
    • SVA properties
    • Cover properties
    • Assertion debug
    Deliverable
    An assertion file with cover/assert pairs and a failure log showing each seeded bug being caught.
    AdvancedPlannedVerification