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
    • Reads and Writes Are Not Symmetric
    • The Request/Response Model
    • Address Maps and Decoding
    • Register Semantics
    • Combined and Split Transactions
    • Independent Channels
    • Posted and Non-Posted Writes
    • Bursts
    • Alignment, Strobes and Narrow Transfers
    • Boundary Rules
    • Width and Endianness Conversion
    • Transaction Attributes
    • Atomics
    • Sideband or In-Band
    • Interrupts and Notification
    • Descriptors, Rings and Doorbells
    • Bridges and Protocol Conversion
    • Protocols Compared: Transactions
    • Drills: Transactions
  • 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
  • Part 16: Protocols Dissected17
  • Part 17: Capstones5
  • Part 18: Interview Preparation6
Loading lesson

‹Part 5: Transactions
  1. Topics
  2. First Principles of Hardware Protocols
  3. Part 5: Transactions
  4. The Request/Response Model

Part 5 · Transactions · Foundation (F)

The Request/Response Model

A transaction is a request and its response. What each carries, why a response must report status as well as data, and why every request must get exactly one response.

On this page

    Note

    Level: Foundation (F) · Answers: What exactly is being asked?

    Before this: Reads and Writes Are Not Symmetric

    A driver reads a register in a peripheral that has just been powered down. The read never returns. The processor's load instruction waits, the core waits behind it, and the whole system stops with no error message anywhere. The bug was not in the peripheral. It was in a protocol rule the system had not enforced: every request gets exactly one response.

    What must a request carry, what must a response carry, and why is "exactly one response" the rule that keeps a system alive?

    The obvious answer, and why it breaks

    The obvious model is that a request asks for data and the response is the data. That covers the case where everything works. It says nothing about the other cases: the address is wrong, the target is powered down, the data is corrupted, the target is busy. If the only possible response is "here is your data", a target that cannot supply data has two bad choices: send something that looks like data but is not, or send nothing, and leave the requester waiting for ever.

    The idea: a request, a response, and a status

    Carries

    Why

    Request

    Operation (read, write, …), address, size or length, an ID or tag, attributes; for a write, the data

    Everything the target needs to act, and everything the requester needs to match the answer later

    Response

    The ID, a status, and for a read, the data

    The requester must know which request this answers and whether it succeeded

    The status turns failure into an ordinary answer. A target that cannot do the job still answers, with an error status instead of data, and the requester (or its software) decides what to do. Together, a request and its response are often called a transaction; the response is often called a completion.

    Two rules make this safe:

    • Exactly one response per request (for every request that expects one). Zero responses hangs the requester; two responses confuse it, or are matched to the wrong request.

    • The response identifies its request. With one request outstanding that is implicit. With many, the response carries the request's ID or tag (lesson 6.4).

    A target that cannot do the job still answers, with an error status, so the requester never waits for ever.

    What a status can say

    Protocols differ in detail, but the useful statuses fall into a few kinds:

    Kind

    Meaning

    Who usually sends it

    Success

    Done as asked

    The target

    Target error

    The address is real, but the target could not do it (busy, powered down, illegal access)

    The target

    Decode error

    Nothing lives at this address

    The interconnect's default target (lesson 5.3)

    Special success

    Done, with extra meaning (for example, an exclusive access succeeded)

    The target (lesson 5.13)

    How real protocols chose

    Protocol

    Response status

    AXI

    OKAY, EXOKAY (exclusive access succeeded), SLVERR (target error), DECERR (decode error, usually from the interconnect when no target matches).

    APB

    PSLVERR (from APB3) marks a transfer that failed.

    PCI Express

    Non-posted requests get a completion with a status; posted writes get none (lesson 5.7).

    What breaks

    • No response: the opening hang. A target that ignores requests in some state (powered down, in reset, clock-gated) leaves its requester waiting for ever. The fixes are a default responder, a power-aware wrapper that answers on the target's behalf, and a timeout in the requester as a last line of defence.

    • Two responses: a target that sends an error and then, later, the data (illustrative) makes the requester complete the transaction twice. With IDs, the second response may be matched to a newer request that reused the ID, delivering wrong data silently.

    • A silent error: a target that returns zeros instead of an error status hides the failure. Software reads a plausible value and carries on.

    Why this matters

    Senior lens. Make "exactly one response per request" a checked property of every target and interconnect: an assertion counting requests and responses per ID, plus reset, power-down and clock-gating cases in the test plan. Most system hangs that reach the lab are a missing response in an unusual state, and they are cheap to catch in simulation and miserable to debug on silicon.

    Interview

    Asked: "What does a response carry besides data?"

    Weak answer: Nothing, it's just the data.

    Strong answer: A status, and an identifier. The status says whether the request succeeded, failed at the target, or hit no target at all (in AXI: OKAY, EXOKAY, SLVERR, DECERR), so a failure is an ordinary answer instead of a hang. The ID or tag ties the response to its request when several are outstanding. And the rule is exactly one response per request: none hangs the requester, two corrupt its bookkeeping.

    Follow-ups: (1) Who answers a request to an address with no target? (2) How would you verify that every request gets one response?

    Check yourself Why must a target that cannot supply data still respond?

    Because the requester is waiting for exactly one response. Without it, the requester (and whatever waits behind it) hangs for ever; with an error status it can carry on and report the failure.

    Check yourself What goes wrong if a target sometimes sends two responses to one request?

    The requester completes the transaction twice, or matches the extra response to a later request that reused the same ID, delivering wrong data with no error.

    Key takeaways

    • A request carries what the target needs and an ID; a response carries the ID, a status and, for reads, the data.

    • A status makes failure an ordinary answer instead of a hang or a silent wrong value.

    • Every request that expects a response gets exactly one: assert it, including in reset and power-down.

    Keep going

    Next: Lesson 5.3, Address Maps and Decoding. How an address finds its target, and who answers when nothing lives there.

    Related topics

    • Part 5 overview: Transactions

    Previous

    69 / 234

    Next: Address Maps and Decoding

    Up next

    Up nextAddress Maps and Decoding

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Register Semantics
    • Combined and Split Transactions
    • Independent Channels