AMBA AXI · Module 4
The Write Response (B) Channel
Why an AXI write needs an explicit response — the B channel, BRESP and BID, one response per transaction, the B-after-W ordering, and the B handshake.
A write isn't finished when the last data beat goes out — it's finished when the B (write response) channel confirms it. AW declared the write and W delivered the bytes, but neither tells the manager whether the write actually landed. That's the B channel's job: a single response per write, carrying BRESP (success or failure) and BID (which write it answers). This chapter explains why a write needs a separate response (when a read doesn't), what B carries, the one-response-per-transaction rule, and the B-after-W ordering. The full BRESP code decode and arrival timing is Chapter 4.5; here it's the B channel and its role as the write's acknowledgement.
1. Why a Write Needs an Explicit Response
Recall the asymmetry from Chapter 2.3: a read gets its acknowledgement for free — when the data returns on R, the read happened, and RRESP rides along per beat. A write sends data out and gets nothing back as a natural by-product. Without a dedicated channel, the manager would have no way to know the write reached its target, was accepted, and succeeded. So the write needs an explicit, separate B channel to carry that verdict.
This is the structural reason a write has three channels and a read has two. The B channel exists precisely because there is no returning data to serve as the acknowledgement — so AXI provides a one-beat response channel instead.
2. What B Carries
The B channel is small — one beat per write, two payload signals plus the handshake:
BRESP— a 2-bit response code for the whole write:OKAY,EXOKAY,SLVERR, orDECERR. (Same encoding as the read'sRRESP. The full decode and when each applies is Chapter 4.5.)BID— the transaction identifier, matching theAWIDof the write being answered, so the manager knows which outstanding write this response belongs to.BVALID/BREADY— the handshake: the subordinate drivesBVALIDwith the response; the manager accepts withBREADY.
3. One Response Per Write — Not Per Beat
A crucial contrast with the read path: B carries exactly one response for the entire write transaction, no matter how many W beats it had. A 256-beat write gets one BRESP. This differs from a read, where RRESP is reported per R beat.
The reason is structural. A read's status travels with the data (many beats, each possibly meeting a different condition), so per-beat makes sense. A write is acknowledged as a single completed operation — the subordinate takes all the data, then issues one verdict — so one BRESP suffices and is all you get. Don't look for a response per W beat; there isn't one.
4. B Must Follow W
The B channel obeys the mandatory ordering from Chapter 3.5: the subordinate must not assert BVALID until it has accepted the write data — specifically, after the W-channel handshake of the last beat (WLAST). A response before the data is a protocol violation, and a dangerous one: the manager would see OKAY and believe a write landed that the subordinate never actually took.
So the causal chain is fixed: AW (and W) → all W beats accepted (WLAST) → then B. The subordinate may legally wait for the address too, but the hard rule is B-after-the-write-data. And only when the manager accepts B (BVALID && BREADY) is the write truly complete — not when WLAST went out, but when the response is consumed.
5. The B Handshake
After the write data is accepted, the subordinate drives BVALID with BRESP/BID; the manager accepts with BREADY.
B response — completing the write
8 cyclesThe handshake rules from Module 3 all apply: BVALID must not wait for BREADY (cardinal rule), the response must stay stable while waiting (stability), and a manager that never asserts BREADY jams the channel (the drain bug from 3.6). Many simple masters tie BREADY high to always drain responses.
6. BID Pairs the Response to Its Write
When a manager has multiple writes outstanding, the responses come back on the single B channel — and BID is how it knows which is which. Each BVALID carries the BID of the write it completes, matching the AWID the manager issued. Responses for different IDs may return out of order; BID lets the manager pair each one correctly.
In code, consuming a response means checking BRESP and retiring the matching transaction:
// Conceptual — consume the write response and pair it to its transaction.
if (bvalid && bready) begin
if (bresp != OKAY) note_write_error(bid, bresp); // SLVERR/DECERR: it did NOT land
retire_write(bid); // BID matches the AWID issued
end7. Common Misconceptions
8. Debugging Insight
9. Verification Insight
10. Interview Questions
11. Summary
The B channel is a write's acknowledgement — it exists because, unlike a read, a write returns no data to confirm itself. B carries BRESP (one success/failure code — OKAY/EXOKAY/SLVERR/DECERR — for the whole transaction, not per beat) and BID (matching the write's AWID, so responses pair to their writes even when several are outstanding and return out of order), moved by the BVALID/BREADY handshake. It obeys B-after-W: the subordinate may assert BVALID only after accepting the write data (WLAST), and the write is complete only when B is accepted — not when the last beat went out.
Treat B as the source of truth for a write: read BRESP (a non-OKAY means the write did not land — ignoring it is a real bug class), check BID pairing, and watch for the drain hang (BVALID high, BREADY low forever). Verify by closing each write on B — one expected response per transaction, correct codes including negative cases, and B-after-W ordering. With AW, W, and B all detailed, Module 4 turns next to the ordering and WLAST rules that tie the write path together.
12. What Comes Next
The three write channels are covered; next is how they're ordered and bounded:
- 4.4 — Write Ordering & WLAST (coming next) — WLAST, AW↔W ordering, and the AXI3→AXI4 WID change in depth.
- 4.5 — BRESP & Write Response Timing (coming soon) — decoding BRESP and exactly when B may arrive.
Previous: 4.2 — The Write Data (W) Channel. For the broader protocol catalog, see the AMBA family overview doc.