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 Foundations18
  • UVM Phases & Simulation Lifecycle94
  • Factory & Configuration37
  • Transaction-Level Modeling (TLM)42
  • UVM Sequences & Stimulus44
  • UVM Agents & Protocol VIP71
  • Environment & Test Classes55
    • Environment Architecture
    • Environment Composition Hub: Scaling Reusable Env Topologies
    • Scoreboard + Coverage Hub: Integrated Checking Pipelines
    • Tests: Base Classes, Selection and Startup
      • Base Test Pattern: One Contract for Every Scenario
      • Scenario Inheritance: Specialize Intent, Not Infrastructure
      • Factory Overrides in Tests: Explicit, Local, Reviewable
      • Shared run_phase: One End-of-Test Policy for Every Test
      • +UVM_TESTNAME and Plusargs: Runtime Test Selection
      • Top Module and run_test Startup
      • Designing a Test Library
      • Test Library Organization: Scalable Structure and Naming
      • Test Base Debug: Symptom-First Hierarchy Triage
    • Config Distribution Hub: Test-to-Env Policy Propagation
    • Virtual Sequencer Hub: Env-Level Multi-Agent Coordination
    • Plusargs & Test Selection Hub: Runtime Control Without Recompile
    • End-of-Test Hub: Objections, Readiness, and Fail-Fast Shutdown
    • Top Module Hub: Startup Contracts from HDL to UVM
  • Checking & Coverage in UVM37
  • UVM Register Abstraction Layer (RAL)53
  • Advanced UVM in Practice44
  • Debug & Regression10
  • Coding Practice47
  • Senior Prep: Architecture, Leadership and Interviews92
  • Verification in Industry Practice10
Loading lesson

‹Tests: Base Classes, Selection and Startup
  1. Topics
  2. UVM Verification
  3. Environment & Test Classes
  4. Tests: Base Classes, Selection and Startup
  5. Test Library Organization: Scalable Structure and Naming

Part 7 · Environment & Tests · Intermediate

Test Library Organization: Scalable Structure and Naming

Folder layout, naming conventions, and registry strategy for large UVM test libraries that remain easy to navigate and maintain.

On this page

    Repository structure

    A clean structure helps engineers find the right test quickly and lowers onboarding time.

    Diagram
    [TEST][ENV] recommended layout
    
    tb/
      env/
        my_env.sv
        cfg/
      tests/
        base/base_test.sv
        smoke/smoke_test.sv
        protocol/protocol_error_test.sv
        stress/high_bw_test.sv
        debug/repro_bug123_test.sv
      sequences/
        virtual/
      testlists/
        smoke.list
        nightly.list
        weekly.list
    design.sv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package tests_pkg;
      import uvm_pkg::*;
      `include "uvm_macros.svh"
    
      `include "base/base_test.sv"
      `include "smoke/smoke_test.sv"
      `include "protocol/protocol_error_test.sv"
      `include "stress/high_bw_test.sv"
    endpackage

    Key takeaways

    • Structure directories around scenario purpose, not author names.

    • Keep base classes in dedicated folders with ownership.

    • Testlists should map directly to CI stages.

    Common pitfalls

    • Flat folders with hundreds of test files.

    • Inconsistent naming that hides scenario intent.

    • No separation between reusable base tests and scenario tests.


    Naming and metadata conventions

    Consistent naming enables scriptable test selection and faster triage dashboards.

    Class naming guide

    • `*_test` suffix for runnable tests.

    • `base_*` prefix for non-runnable shared classes.

    • `repro_*` prefix for temporary debug tests.

    • Include protocol mode in stress test names when relevant.

    Diagram
    [TEST] examples
    
    base_test
    smoke_sanity_test
    protocol_illegal_len_test
    stress_backpressure_mix_test
    repro_crc_timeout_test

    Metadata pattern

    design.sv
    1
    2
    3
    4
    5
    6
    7
    virtual function string scenario_group();
      return "protocol";
    endfunction
    
    virtual function string scenario_goal();
      return "exercise illegal packet length handling";
    endfunction
    Diagram
    [UVM] reporting use
    
    UVM_INFO @ start:
      group=<scenario_group()>
      goal=<scenario_goal()>
    
    dashboard can bucket failures by group automatically

    Common pitfalls

    • Using abbreviations that differ across teams.

    • No metadata API for grouping tests in reports.

    • Keeping obsolete repro tests in main nightly lists.

    Previous

    334 / 658

    Next: Test Base Debug: Symptom-First Hierarchy Triage

    Up next

    Up nextTest Base Debug: Symptom-First Hierarchy Triage

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Base Test Pattern: One Contract for Every Scenario
    • Scenario Inheritance: Specialize Intent, Not Infrastructure
    • Factory Overrides in Tests: Explicit, Local, Reviewable