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 Paths
  • Concept Map
  • How to Read the Diagrams
  • Part 0: What Is a Protocol?10
  • Part 1: Timing and Clocking11
  • Part 2: Encoding and Framing12
  • Part 3: Handshakes13
  • Part 4: Flow Control17
  • Part 5: Transactions19
  • Part 6: Concurrency and Performance17
  • Part 7: Ordering13
  • Part 8: Sharing and Arbitration12
  • Part 9: Deadlock and Liveness13
  • Part 10: Reliability and Recovery20
  • Part 11: Bring-Up and Link Management10
  • Part 12: Power8
  • Part 13: Shared State and Coherence9
  • Part 14: Security and Isolation7
  • Part 15: Specifying and Verifying11
    • Writing an Interface Contract
    • Safety and Liveness
    • Protocol Assertions
    • Monitors and Transaction Reconstruction
    • Ordering-Aware Scoreboards
    • Protocol Coverage
    • Formal Methods for Protocols
    • Compliance and VIP
    • Observability and Tracing
    • A Waveform Debug Method
    • Drills: Specifying and Verifying
  • Part 16: Protocols Dissected17
  • Part 17: Capstones5
  • Part 18: Interview Preparation6
Loading lesson

‹Part 15: Specifying and Verifying
  1. Topics
  2. First Principles of Hardware Protocols
  3. Part 15: Specifying and Verifying
  4. Observability and Tracing

Part 15 · Specifying and Verifying · Principal (P)

Observability and Tracing

In silicon there is no waveform viewer. What an interconnect must expose to be debuggable once built: status registers, performance counters, transaction trace with timestamps, triggers and protocol analysers, and how to budget them.

On this page

    Note

    Level: Principal (P) · Answers: How do we know it is correct?

    Before this: Monitors and Transaction Reconstruction, Hang Debug

    A chip hangs in the lab once a day under a customer's workload. In simulation, the team would open a waveform and trace backwards. In silicon, they have a few status registers, a debugger that cannot reach the hung interconnect, and nothing else. A week later they find the cause by guessing. The next chip has a small trace buffer on every major interface, and the same class of hang is diagnosed in an afternoon.

    What must an interconnect expose so that it can be debugged and tuned after it is built?

    The obvious answer, and why it breaks

    The obvious answer is that simulation and emulation catch the bugs, so silicon needs little debug logic. But silicon runs real software for billions of cycles, with real timing and real traffic, and some bugs only appear there. Performance problems also only become visible with real workloads. Without visibility, every silicon issue becomes a guessing game, and the cost of the missing logic is paid in weeks.

    The idea: layers of visibility, from cheap to rich

    Layer

    Shows

    Cost

    Status and error registers

    Current state: outstanding counts, credit levels, FSM states, sticky error bits with the failing address and ID

    Very low

    Performance counters

    Events over time: transfers, stall cycles, retries, credit-starved cycles, latency histograms

    Low

    Transaction trace

    A recent history of transactions with timestamps, in a circular buffer or streamed off chip

    Medium: buffer area or trace bandwidth

    Triggers and cross-triggers

    Stop or start tracing when a condition occurs (an error, a timeout), across blocks

    Low

    External protocol analysers

    Full capture of an off-chip link in the lab

    Lab equipment

    Counters and status show the present, the trace buffer holds the recent past, triggers freeze the trace at the moment that matters, and a separate debug path reads it all out even when the interconnect itself is hung.

    Design rules for debuggability

    • A separate debug access path: if reading debug state needs the hung interconnect, it is useless when you need it most.

    • Sticky error capture: record the first error's address, ID, type and time, not just a flag.

    • Timestamps from a common clock: traces from different blocks must line up.

    • Trigger on the interesting moment: a timeout or error freezes the trace so the buffer holds the cycles before the failure.

    • Budget it: a few percent of area for counters and modest trace buffers on critical interfaces is normal; choose where the risk is.

    How real systems do it

    System

    Visibility

    Arm CoreSight

    Execution trace (ETM), software and hardware trace messages (STM) and cross-triggering (CTI) across blocks (fact A29)

    PCI Express

    Advanced Error Reporting logs error types and headers of failing packets; LTSSM state is readable for link debug (facts P30, P32)

    Off-chip links

    Protocol analysers capture and decode traffic in the lab

    What breaks

    The opening hang (illustrative) was diagnosed on the next chip in an afternoon: a timeout trigger froze the interconnect's trace buffer, which showed a write response returned with an ID no request had used, after which the requester waited for ever. The fault was in a bridge's ID remapping table. On the first chip, without the trace, nothing pointed at the bridge.

    Why this matters

    Principal lens. Treat observability as a feature with requirements: for each critical interface, decide what state, counters and trace you need to diagnose its likely failures (hangs, errors, performance collapse), how it is read when the system is hung, and how traces align in time. Review it alongside the architecture, because adding it after tape-out is impossible.

    Interview

    Asked: "What would you add to an interconnect to debug it in silicon?"

    Weak answer: More logging in software.

    Strong answer: Layers of visibility with a debug path that works even when the interconnect is hung. Status registers showing outstanding counts, credit levels and FSM states; sticky error capture with the first failing address, ID and type; performance counters for transfers, stall and credit-starved cycles, retries and latency; a trace buffer of timestamped transactions on the critical ports, frozen by triggers such as a timeout or an error so it holds the cycles before the failure; cross-triggers between blocks and a common timestamp. On Arm systems that's the CoreSight model. Budget a few percent of area where the risk is.

    Follow-ups: (1) Why must debug access not depend on the interconnect? (2) What should trigger a trace freeze?

    Check yourself Why is a sticky first-error register more useful than an error flag?

    It records which transaction failed (address, ID, type), which points at the cause; a flag only says something went wrong.

    Check yourself Why freeze the trace buffer on a timeout rather than read it later?

    A circular buffer keeps overwriting; freezing it at the failure preserves the cycles that led up to it.

    Key takeaways

    • Silicon has no waveform viewer: debug visibility must be designed in.

    • Layer it: status and sticky errors, counters, timestamped trace, triggers, with a debug path that works when hung.

    • Budget it where the risk is, and review it with the architecture.

    Keep going

    Next: Lesson 15.10, A Waveform Debug Method. A step-by-step method for stalls, hangs and corruption on a waveform.

    Related topics

    • Part 15 overview: Specifying and Verifying

    Previous

    204 / 234

    Next: A Waveform Debug Method

    Up next

    Up nextA Waveform Debug Method

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Writing an Interface Contract
    • Safety and Liveness
    • Protocol Assertions