AMBA AXI · Module 7
Strobe Behavior in Bursts
How WSTRB evolves beat-by-beat across an AXI burst — full strobes for aligned beats, rotating strobes for narrow transfers, a partial first beat for unaligned starts, and constant strobes for FIXED.
This chapter completes Module 7 by tying three threads together — the per-beat addresses (Chapter 7.5), the active byte lanes (Chapter 7.7), and the write strobes (WSTRB, Chapter 6.7) — into one picture: how the strobes change beat by beat across a burst. For an aligned full-width burst the answer is boring (every beat is all-ones), but the moment a burst is narrow or unaligned, WSTRB evolves from beat to beat in exactly the pattern the lane mapping dictates. Seeing that progression concretely is what makes byte-accurate write handling click — and it's where a lot of real RTL and verification bugs live.
1. The Per-Beat Strobe Rule
There is one rule, applied independently to every beat: WSTRB[n] = 1 exactly when byte lane n is within that beat's valid byte range. The valid range is the lane span from Chapter 7.7 — starting lane Address mod Data_Bus_Bytes, spanning Number_Bytes lanes, clipped at the aligned boundary for a partial beat. So the strobes for a beat are simply the visible form of which lanes that beat addresses.
Because each beat has its own address (per the burst type), each beat has its own strobe pattern. The strobes are therefore a per-beat quantity that can change every beat — and tracking how they change across the burst is "strobe behavior."
strobe-progression — unaligned INCR write, partial first beat then full
6 cycles2. Strobe Patterns by Case
The same rule produces a distinct progression for each situation:
| Case | Strobe progression (32-bit bus example) |
|---|---|
| Aligned, full-width INCR | 1111, 1111, 1111, … — every beat all-ones |
| Narrow (1 byte/beat) INCR | 0001, 0010, 0100, 1000, … — single lane rotating with the address |
| Narrow (2 byte/beat) INCR | 0011, 1100, 0011, 1100, … — lane pair alternating |
| Unaligned (4B/beat from 0x02) | 1100, 1111, 1111, … — partial first beat, then full |
| FIXED (4B/beat) | 1111, 1111, 1111, … — same lanes each beat (address constant) |
The aligned full-width case is trivial; narrow makes the strobes rotate (because the active lane(s) move with the incrementing address); unaligned makes the first beat partial; FIXED keeps the pattern constant because the address never moves. WRAP follows the wrapped addresses (the strobe pattern tracks the wrapping lane positions). A burst can combine cases — a narrow and unaligned burst has both a partial leading beat and rotating lanes.
3. Deriving a Beat's Strobes
The derivation chains the Module 7 pieces in order:
The optional last step: a master may further deassert strobes within the addressed range for a genuinely sparse write (writing only some of the addressed bytes). But the addressed lane span is the maximum — a beat must never assert a strobe outside the lanes its address/size select. That over-assertion is the classic protocol violation.
4. Why This Closes the Loop
Strobe behavior is where the whole of Module 7 becomes observable on the wire. The address calculation (7.5) tells you where each beat goes; the lane mapping (7.7) tells you which lanes that implies; and WSTRB (6.7) is how the write side expresses it every beat. A subordinate writes exactly the strobed bytes (Chapter 6.7), so if any link in that chain is wrong — wrong address, wrong lanes, wrong strobes — the bytes land in the wrong place. Getting the strobe progression right is therefore the practical proof that the burst machinery is correct end to end.
5. Common Misconceptions
6. Debugging Insight
7. Verification Insight
8. Interview Questions
9. Summary
Strobe behavior is the per-beat application of one rule — WSTRB[n] = 1 iff lane n is in the beat's valid range (Address mod Data_Bus_Bytes, spanning Number_Bytes, clipped if partial) — across a whole burst. For aligned full-width (and FIXED) the pattern is constant (1111 / same lanes); for narrow bursts it rotates with the address (0001, 0010, 0100, 1000); for unaligned starts the first beat is partial (1100 then 1111); for WRAP it tracks the wrapped lanes. A master may sub-mask within the addressed range (sparse write) but must never strobe outside it.
This closes Module 7: the strobe progression is the observable output of the address (7.5) → lane (7.7) → strobe (6.7) chain, so verifying it beat-by-beat against a golden, lane-aware model — paired with a byte-accurate reference memory — validates the entire burst model at once and catches rotation, clip, and over-assert bugs that aligned full-width traffic hides. With bursts, addressing, boundaries, and strobes fully covered, Module 8 turns to a higher-level capability: outstanding transactions — issuing multiple transactions before earlier ones complete, the key to AXI's latency-hiding throughput.
10. What Comes Next
You've completed the burst model; Module 8 raises the abstraction to concurrency:
- 8.1 — Why Outstanding Transactions Exist (coming next) — how issuing multiple in-flight transactions hides latency and lifts throughput, the foundation of AXI performance.
Previous: 7.7 — Narrow & Unaligned Transfers. Related: 7.5 — Burst Address Calculation and 6.7 — WSTRB Write Strobes — the two models this chapter ties together. For the broader protocol catalog, see the AMBA family overview doc.