Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Start Here4
  • UVM Foundations14
  • UVM Phases & Simulation Lifecycle26
  • Factory & Configuration15
  • Transaction-Level Modeling (TLM)13
  • UVM Sequences & Stimulus21
  • UVM Agents & Protocol VIP21
  • Environment & Test Classes11
  • Checking & Coverage in UVM21
  • UVM Register Abstraction Layer (RAL)22
  • Advanced UVM in Practice13
    • Callbacks, Command Line, Seeds and Versions
    • Synchronisation and Reporting
      • Events, Barriers and Pools
      • Report Catchers and Waivers
      • Custom Report Servers and the Verdict Line
      • Heartbeats and Watchdogs
      • Transaction Recording
    • Testbenches at Scale
  • Debug & Regression10
  • Coding Practice47
  • Verification in Industry Practice10
  • Senior Prep: Architecture, Leadership and Interviews32
Loading lesson

‹Advanced UVM in Practice
  1. Topics
  2. UVM Verification
  3. Advanced UVM in Practice
  4. Synchronisation and Reporting

Part 10 · Advanced Topics · Intermediate

Synchronisation and Reporting

Events, barriers and pools; report catchers and waivers; custom report servers and the verdict line; heartbeats and watchdogs; transaction recording.

  • 5topics
  • 5lessons
On this page

    Two kinds of plumbing run under every testbench and are invisible until they fail. Synchronisation decides who waits for whom: a test waiting for an interrupt, three agents meeting after configuration, a watchdog deciding that silence means a hang. Reporting decides what a message means: whether an error counts, whether a known issue is waived, and what single line tells the regression system that a test passed. This topic covers both, on the course DMA bench, with every library behaviour checked against the 1800.2 reference source.

    What you will be able to do

    • Pick between uvm_event, uvm_barrier, the global pools, TLM and config_db for a given coordination problem, and avoid the same-time-step race that makes a waiter miss a trigger.

    • Write a report catcher that waives exactly one known issue, with a ticket, a scope and an expiry, and explain why a broad one causes false passes.

    • Extend the report server so every run ends with one verdict line and a machine-readable summary, even when it stops on a fatal or on the quit count.

    • Choose between a global timeout, uvm_heartbeat and an activity watchdog, and configure the heartbeat so it actually fires.

    • Turn on transaction recording for a debug rerun, know what it costs, and keep it out of regressions.

    How the pieces meet in one run

    Flowchart: monitors trigger events that tests wait on, feed a heartbeat and watchdog, and record transactions; checker errors and watchdog fatals pass through report catchers to the report server, which writes the verdict line and JSON summary read by the regression system.
    One simulation run. Monitors feed the waits, the watchdogs and the recording; every message passes the catchers on its way to the server, which writes the verdict the regression reads.

    The lessons, in order

    #

    Lesson

    The question it answers

    1

    Events, Barriers and Pools

    How do two components that share no handles wait for each other, and why does a waiter sometimes miss a trigger?

    2

    Report Catchers and Waivers

    How do you waive one known error without hiding the next real one?

    3

    Custom Report Servers and the Verdict Line

    What single line should a regression trust, and how do you guarantee it is printed?

    4

    Heartbeats and Watchdogs

    How do you end a hung test in microseconds instead of hours?

    5

    Transaction Recording

    How do you see transactions, not just wires, in the waveform viewer, and when is it worth the cost?

    Tip

    The basics of severities, verbosity and the quit count live in Reporting and Verbosity Control and run_test, Timeouts and How a Simulation Ends. This topic assumes them and goes one level down.

    Related topics

    • Up: Advanced UVM Topics

    • Next topic: Testbenches at Scale

    PreviousNext: Events, Barriers and Pools

    Up next

    Up nextEvents, Barriers and Pools

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Callbacks, Command Line, Seeds and Versions
    • Testbenches at Scale