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

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
Skip to lesson

Course contents

  • Start Here5
  • SystemVerilog Language Foundations28
  • Object-Oriented SystemVerilog for Verification30
  • Constraint Randomization — Interview-Critical Deep Dive39
  • SystemVerilog Assertions — Interview-Critical Deep Dive41
  • Functional Coverage in SystemVerilog25
  • Testbench Architecture in SystemVerilog24
  • Advanced Language & Integration26
    • DPI-C: Calling C from SystemVerilog
    • bind: Attaching Verification to RTL
    • Macros, Defines & Compilation
    • Plusargs, Files & Runtime Configuration
    • Simulation Performance & TB Memory
    • RTL/TB Boundaries, Races & Timing
      • Anatomy of a TB/RTL Race
      • Clocking Blocks as the Cure
      • Scheduling Regions: the Full Map
      • Hierarchical References & Force/Release
    • What the Open Simulators Run
  • Senior & Interview Preparation23
  • Principal-Level Verification34
Loading lesson

←Advanced Language & Integration
  1. Topics
  2. SystemVerilog
  3. Advanced Language & Integration
  4. RTL/TB Boundaries, Races & Timing

Part 7 of 9Part 7 of 9/Advanced & IntegrationIntermediate

RTL/TB Boundaries, Races & Timing

Where testbench meets RTL: races, clocking blocks, scheduling regions and safe cross-boundary access.

  • 4topics
  • 4lessons

The boundary between testbench and RTL decides which value a same-edge access sees. A driver can win or lose its race, a monitor can report the old or the new value, and an assertion can disagree with a display, all from the same code.

Symptom

Cause

Lesson

Value off by exactly one cycle

Same-region drive or sample race

Anatomy of a TB/RTL Race

Same test, different result per tool

Simulator-chosen process order

Anatomy of a TB/RTL Race

Assertion disagrees with display

Different scheduling-region snapshots

Scheduling Regions: the Full Map

Need to reach inside the DUT

Uncontrolled cross-boundary access

Hierarchical References & Force/Release

Lesson

What changes

Path

Anatomy of a TB/RTL Race

A same-edge race walked cycle by cycle, with the off-by-one checklist.

Required

Clocking Blocks as the Cure

Skewed sample and drive points that remove the race by construction.

Required

Scheduling Regions: the Full Map

The full region pipeline and where each kind of code runs.

Recommended

Hierarchical References & Force/Release

Controlled rule-breaking: XMR discipline and audited force and release.

Optional

Required is the core first pass for this part's goal, Recommended is for most learners, and Optional is reference, specialist or revision material. Hierarchical References and Force/Release is a specialist page: read it when you must reach inside a design you cannot change.

Check yourself A monitor reports the new data while the DUT captured the old data on the same edge. Is one of them wrong?

Neither read is illegal, but the monitor's report is wrong for checking: it saw a different region of the time step than the DUT did. That is a TB/RTL race. Sample through a clocking block (Preponed) so the monitor sees what the flop captured.

Same question, two answers. “Your test passes on VCS and fails on Questa. What now?” The junior answer files a tool bug. The senior answer suspects a same-region race, routes the access through a clocking block, and expects the test to pass on both.

PreviousNext: Anatomy of a TB/RTL Race

Up next

Up nextAnatomy of a TB/RTL Race

Sign in to save progress

Practice this lessonPrevious lessonReport an error

See also

  • DPI-C: Calling C from SystemVerilog
  • bind: Attaching Verification to RTL
  • Macros, Defines & Compilation