AMBA AXI · Module 6
RESP & LAST Signals
Consolidate AXI's response and burst-terminator signals — BRESP/RRESP (OKAY/EXOKAY/SLVERR/DECERR), the write-aggregate vs read-per-beat asymmetry, and WLAST/RLAST and their consistency with AxLEN.
This chapter consolidates two signal groups that have surfaced across the channel chapters and deserve a single, precise treatment: the response codes (BRESP on the write-response channel, RRESP on the read-data channel) and the burst terminators (WLAST, RLAST). The responses tell the manager whether each access succeeded — and the encoding is shared between reads and writes, but how many responses you get differs. The LAST signals mark the final beat of a burst — and their timing must agree exactly with AxLEN. Both are correctness-critical and a frequent source of hangs and misreported errors, so this is the chapter to nail them down.
1. RESP — The Response Encoding
BRESP (write) and RRESP (read) share the same 2-bit encoding:
xRESP | Name | Meaning |
|---|---|---|
2'b00 | OKAY | Normal access success. |
2'b01 | EXOKAY | Exclusive access success — only valid for an exclusive access (AxLOCK=1, Chapter 6.4). |
2'b10 | SLVERR | Slave error — the access reached the subordinate, but it could not complete it correctly (unsupported transfer, internal error, write to a read-only location, etc.). |
2'b11 | DECERR | Decode error — no subordinate exists at that address; the interconnect's default slave returns it when address decode finds no target. |
The crucial distinction is SLVERR vs DECERR: SLVERR means "I'm the right slave and I failed"; DECERR means "there is no slave here" (an address-decode miss, generated by the interconnect, not by a real endpoint). EXOKAY is special — it appears only for exclusive accesses and signals the atomic sequence succeeded; a normal access never returns it.
2. One Response vs One Per Beat
A subtle but important asymmetry: a write burst gets a single response; a read burst gets a response per beat.
BRESPis driven once per write transaction on theBchannel — a single aggregate result for the whole burst, after allWbeats are accepted.RRESPis driven on everyRbeat — each returned data beat carries its own response, so different beats of the same burst can report different statuses (e.g., most beatsOKAY, oneSLVERR).
This follows from the channel structure: the write-response channel B is single-beat by nature (one response closes the write), while the read-data channel R is multi-beat (data and its status arrive together, beat by beat). An error on one read beat does not cancel the rest of the burst — the subordinate still returns the remaining beats and asserts RLAST normally; the manager decides how to handle the flagged beat.
3. LAST — Marking the End of a Burst
WLAST and RLAST mark the final beat of a data burst:
WLAST— the manager asserts it on the last write-data (W) beat, telling the subordinate "this is the final beat of the write burst."RLAST— the subordinate asserts it on the last read-data (R) beat, telling the manager "this is the final beat of the read burst."
LAST exists only on the data channels (W, R) because only they are multi-beat. The address channels (AW, AR) carry a single address transfer, and the B channel is a single response — none of them needs a terminator. The directions mirror who drives the data: the manager produces write data (so it drives WLAST); the subordinate produces read data (so it drives RLAST).
resp-last — 4-beat read burst, per-beat RRESP, RLAST on the final beat
6 cycles4. LAST Must Agree With AxLEN
LAST is not free-running — its position is determined by AxLEN. A burst has exactly AxLEN + 1 beats, so LAST must assert on beat number AxLEN + 1 and on no other:
A receiver uses LAST to know the burst is complete and to release/match resources (e.g., an outstanding-transaction slot, or the next transaction's ordering). If WLAST/RLAST disagrees with AxLEN, the burst is malformed: assert early and beats are lost or the next transaction is misframed; assert late or never and the receiver waits indefinitely — a classic hang.
5. Common Misconceptions
6. Debugging Insight
7. Verification Insight
8. Interview Questions
9. Summary
RESP and LAST close out the AXI signal set. The response codes — shared 2-bit encoding on BRESP and RRESP — are OKAY (success), EXOKAY (exclusive success only), SLVERR (the addressed slave failed), and DECERR (no slave at the address, from the interconnect default slave); the key contrasts are SLVERR vs DECERR (right-slave-failed vs no-slave-there) and the write/read asymmetry — BRESP is one aggregate response per write transaction, while RRESP is per beat, so read beats can differ and an error beat never aborts the burst. The terminators — WLAST (manager-driven) and RLAST (subordinate-driven) — mark the final beat and exist only on the multi-beat data channels; their timing must match AxLEN exactly (beat AxLEN+1), or the burst is short (loss) or open (hang).
Their bugs are the bread-and-butter of AXI bring-up: misattributed errors (confusing SLVERR/DECERR), "missing" write errors (looking at W instead of B), overlooked per-beat read errors, and — most painfully — hangs and corrupted transaction tracking from mis-framed LAST. Debug and verify them by checking every response against a reference model and every LAST against AxLEN. This completes Module 6 — the AXI signal reference. Next, Module 7 builds on these signals to treat bursts as first-class: how beats, length, and size compose real data transfers.
10. What Comes Next
You've finished the per-signal reference; Module 7 turns to bursts as a whole:
- 7.1 — Burst Length, Size & Beats (coming next) — formalizing the beat, burst length (
AxLEN+1), and transfer size (AxSIZE) as the basis of every AXI data transfer.
Previous: 6.7 — WSTRB Write Strobes. Related: 6.4 — AxLOCK & AxCACHE for EXOKAY and exclusive access. For the broader protocol catalog, see the AMBA family overview doc.