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

  • How to Use This Course
  • Reading Path
  • CDC/RDC Glossary
  • CDC/RDC Metrics Reference
  • CDC/RDC Interview Prep
  • CDC/RDC Signoff Cheatsheet
  • Clock Domains and Failure Modes8
  • Metastability and Synchronizers16
  • CDC Protocols and Handshakes16
  • Reconvergence and Gray Coding16
  • Reset Domain Crossing16
  • Architecture and Design Rules16
  • CDC Signoff Methodology24
    • CDC Tool Flow
      • The Generic CDC Flow
      • Setup: Clocks, Resets and Intent
      • Violation Classes
      • Hierarchical versus Flat Analysis
    • CDC Constraints and STA
    • CDC Waiver Policy
    • CDC Review Gate
    • CDC Signoff Dashboard
    • Formal and Simulation CDC Verification
  • RDC Signoff16
  • Debug and Case Studies11
  • CDC and RDC Interview Prep30
  • Capstone: Sign Off a Multi-clock Peripheral4
Loading lesson

‹CDC Tool Flow
  1. Topics
  2. CDC & RDC
  3. CDC Signoff Methodology
  4. CDC Tool Flow
  5. Hierarchical versus Flat Analysis

Part 7 · CDC Signoff Methodology · Advanced

Hierarchical versus Flat Analysis

Block-level analysis with abstracted models versus flat chip analysis: what each proves and the integration risks.

On this page

    A chip is too large to analyse flat every day, so blocks are analysed on their own against abstracted models of their neighbours, and the full chip is analysed flat at milestones. Both directions are needed because each proves something the other cannot.

    What each direction is

    Hierarchical (block-level)

    Flat (chip-level)

    Scope

    One block with abstracted models at its boundary

    The whole design with real connectivity

    Speed

    Fast; runs on every block change

    Slow; reserved for milestones

    Proves

    The block is clean under its stated boundary assumptions

    Boundary assumptions actually hold between real blocks

    Cannot prove

    Anything about the neighbour's real behaviour

    Which block owns a boundary finding without block context

    Typical miss

    A clean block integrated against a changed neighbour

    Owner ambiguity: every team waits for another to fix it

    Integration risks

    The boundary is where hierarchical signoff fails. The recurring risks are worth naming because each has a cheap guard.

    • A crossing with the synchroniser on the wrong side of the boundary: each block assumes the other synchronises, and neither does. Guard: the integration checklist names the owning side of every boundary crossing.

    • A block model that hides crossings: an over-abstracted model presents clean pins while the internals cross freely. Guard: models are generated from the analysed block, never hand-written, and regenerated on every block change.

    • Version skew: the top level integrates a newer block than the one that was signed off. Guard: the dashboard records which block revision each run used, and a revision change re-opens the boundary findings.

    • Constraint mismatch: the block was signed off under boundary timing exceptions the top level does not apply. Guard: boundary constraints travel with the block and are reviewed at integration.

    The practical rule: sign off every block hierarchically so developers get fast answers, then prove the integration flat before each milestone so assumptions get checked against reality. A flat run that only repeats block results is not wasted; it is the evidence the boundaries hold.

    Common pitfall

    Excluding a hard macro or an encrypted block from flat analysis recreates hierarchical analysis without the model discipline. An excluded region needs a documented model and an owner, not silence.

    Check yourself Block A and block B are each clean hierarchically, but the flat run flags a crossing between them. What most likely happened?

    A boundary assumption failed: the synchroniser each block assumed on the other side is missing, a model hid the crossing, or the integrated revisions differ from the signed-off ones. The fix is at the boundary, with an explicit owner.

    Check yourself Why run an expensive flat analysis if every block is already clean?

    Because block runs prove cleanliness only under boundary assumptions. Only the flat run checks those assumptions against the real neighbours.

    Related topics

    • The Generic Flow

    • Pre-Tapeout Gates

    • Trend and Regression

    Previous

    98 / 179

    Next: CDC Constraints and STA

    Up next

    Up nextCDC Constraints and STA

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • The Generic CDC Flow
    • Setup: Clocks, Resets and Intent