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. Drills: Transactions

Part 5 · Transactions · All levels

Drills: Transactions

Interview questions, a whiteboard exercise and a ten-question checkpoint for Part 5.

On this page

    Answer each question out loud before opening it. If you miss more than three in the checkpoint, revisit the lessons linked at the end.

    Interview questions

    Check yourself Why is a read harder to make fast than a write?

    A read must wait a full round trip for its data and nothing in between can answer for the target; a write carries its data and can be accepted by a buffer at once.

    Check yourself What happens on an access to an unmapped address?

    A default target accepts it and returns a decode error (AXI DECERR), so the requester gets its one response and software gets a precise fault.

    Check yourself Why is read-to-clear dangerous?

    Any extra read (a debugger, a retry, a duplicate) destroys events. Prefer W1C status, with set winning over a same-cycle clear.

    Check yourself Why does AXI have five channels?

    Each kind of information gets its own valid/ready channel: reads and writes move together, addresses run ahead of data, and each channel can be pipelined alone.

    Check yourself Compute WRAP4 at 0x38 with 4-byte beats.

    Boundary 16, block 0x30–0x3F: 0x38, 0x3C, 0x30, 0x34.

    Check yourself How is a 3-byte write at 0x5 carried on a 64-bit bus?

    One beat to word 0x0 with strobes for lanes 5–7 (11100000).

    Check yourself Why can't an AXI burst cross 4 KB?

    Decoders and address translation look at the start address once; a crossing burst's tail could belong to another target or another page.

    Check yourself How does an exclusive access know it failed?

    A monitor tracks the exclusive read's address per requester; any other write clears it; the exclusive write's response reports success (EXOKAY) or failure (OKAY).

    Whiteboard exercise

    Task. A DMA engine on a 64-bit AXI port copies 1,000 bytes from 0x0FF4 to a peripheral FIFO behind an AXI-to-APB bridge (32-bit APB4). Describe the bursts on the read side, what reaches the FIFO, and what could go wrong.

    Check yourself Open a model answer

    Read side: the copy runs from 0x0FF4 to 0x13DB and crosses the 4 KB boundary at 0x1000, so it needs two bursts. First, 2 beats covering words 0x0FF0 and 0x0FF8 (the engine ignores bytes 0x0FF0–0x0FF3, which it did not ask for). Second, an INCR burst of 124 beats from 0x1000, within the 256-beat limit, its last beat half used. Write side: the FIFO sits behind one address, so FIXED bursts (or single writes), never INCR, which would walk past the FIFO into other registers. The bridge turns each 64-bit beat into two 32-bit APB4 transfers, uses PSTRB for a partial last word, and returns one AXI response per burst that reports any PSLVERR. Risks: the FIFO address marked bufferable or modifiable (writes merged or delayed), a partial word written without strobes, and an INCR burst aimed at the FIFO.

    Checkpoint: ten questions

    Check yourself 1. What two things does every response carry besides read data?

    The request's ID (when several are outstanding) and a status.

    Check yourself 2. What is an address alias?

    A target that answers at several addresses because its decoder ignores some address bits.

    Check yourself 3. Why must a W1C register let a set win over a same-cycle clear?

    Otherwise an event arriving in the clearing cycle is lost.

    Check yourself 4. What does a split transaction need that a combined one does not?

    IDs or tags, buffering in targets and requesters, and ordering and deadlock rules.

    Check yourself 5. What does a posted write give up?

    A status back to the requester, and knowing when the write landed.

    Check yourself 6. What is a FIXED burst for?

    A FIFO or data register behind one address: every beat goes to the same address.

    Check yourself 7. Give the strobes for 2 bytes at 0x07 on an 8-byte bus.

    Two beats: word 0x00 lane 7 (10000000), word 0x08 lane 0 (00000001).

    Check yourself 8. Where should byte-order conversion happen?

    Where bytes are interpreted as a number (software or the device), not on the bus.

    Check yourself 9. Why does a 100 Gb/s NIC poll under load?

    At ~149 million small packets per second an interrupt per packet is impossible; polling the ring has no per-event cost.

    Check yourself 10. How do free-running ring indices tell full from empty?

    Empty when tail = head; full when tail − head = ring size.

    Revisit

    • 5.1 Reads and Writes Are Not Symmetric

    • 5.2 The Request/Response Model

    • 5.3 Address Maps and Decoding

    • 5.4 Register Semantics

    • 5.5 Combined and Split Transactions

    • 5.6 Independent Channels

    • 5.7 Posted and Non-Posted Writes

    • 5.8 Bursts

    • 5.9 Alignment, Strobes and Narrow Transfers

    • 5.10 Boundary Rules

    • 5.11 Width and Endianness Conversion

    • 5.12 Transaction Attributes

    • 5.13 Atomics

    • 5.14 Sideband or In-Band

    • 5.15 Interrupts and Notification

    • 5.16 Descriptors, Rings and Doorbells

    • 5.17 Bridges and Protocol Conversion

    Keep going

    Next: Part 6: Concurrency and Performance. How many requests can be in flight, and how fast can the link go?

    Previous

    86 / 234

    Next: Part 6: Concurrency and Performance

    Up next

    Up nextPart 6: Concurrency and Performance

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Reads and Writes Are Not Symmetric
    • The Request/Response Model
    • Address Maps and Decoding