AMBA AXI · Module 7
The 4KB Boundary Rule
AXI's hard rule that no burst may cross a 4 KB address boundary — why it exists (minimum page size and address decode), how to check whether a burst crosses, and how masters split transfers at the boundary.
There is one placement rule in AXI that is absolute and that every master must respect: a burst must not cross a 4 KB address boundary. The entire address range a burst touches has to fall within a single 4 KB-aligned region. This isn't a performance guideline — it's a correctness requirement rooted in how memory is paged and decoded, and violating it produces some of the nastiest, hardest-to-trace bugs in a system. This chapter explains the rule, why 4 KB specifically, how to test whether a burst crosses, and how masters (and interconnects) split a transfer at the boundary to obey it.
1. The Rule
A single AXI burst's address range — from its first byte to its last — must lie entirely within one 4 KB (4096-byte) region aligned to a 4 KB boundary. 4 KB boundaries sit at every multiple of 0x1000. Formally, for a burst starting at Start_Address and covering Total_Bytes:
The burst is legal only if
INT(Start_Address / 0x1000) == INT((Start_Address + Total_Bytes − 1) / 0x1000)— i.e., the first and last bytes are in the same 4 KB region.
If the first and last byte fall in different 4 KB regions, the burst crosses a boundary and is illegal. This applies to the burst's full byte span ((AxLEN+1) × 2^AxSIZE for INCR), so it's really a joint constraint on the start address and the length.
2. Why 4 KB — Pages and Address Decode
The rule exists because 4 KB is the minimum page size in essentially all memory-management units, and therefore the smallest granularity at which the address map can change. Two consequences:
- A burst could otherwise span two slaves. Address decode (which subordinate an address routes to) can differ on either side of any 4 KB boundary, because two adjacent 4 KB pages may map to entirely different physical destinations. A single AXI transaction has one
AxADDRand routes to one subordinate with one response path — it cannot be half at slave A and half at slave B. Confining a burst to one 4 KB region guarantees the whole burst decodes to a single slave. - It bounds the work an interconnect must do. Because no burst crosses a 4 KB boundary, an interconnect's decode/routing logic only ever has to send a burst to one place — it never has to split or fork a transaction mid-flight to two destinations. The rule pushes that responsibility to the side that shapes the burst.
So 4 KB is not arbitrary: it's the architectural unit at which mapping changes, and the rule keeps every burst inside one mappable unit.
3. Checking and Splitting at the Boundary
To check a burst: compute its last byte Start_Address + Total_Bytes − 1 and see if it lands in the same 4 KB region as the start. If it doesn't, the transfer must be split at the 4 KB boundary into two (or more) bursts, each within one region.
Worked example. Suppose a master wants to transfer 16 bytes starting at 0xFF8, 4 bytes/beat. The range is 0xFF8 … 0x1007 — it crosses 0x1000. Split at the boundary:
- Burst 1: start
0xFF8, covering0xFF8 … 0xFFF= 8 bytes (2 beats) — fills up to the boundary. - Burst 2: start
0x1000, covering0x1000 … 0x1007= 8 bytes (2 beats) — the remainder, in the next region.
Each sub-burst is legal (within one region), and together they cover the same 16 bytes. The split point is always the 4 KB boundary; the bytes before it go in one burst, the bytes from it onward in the next.
4kb-split — one crossing transfer issued as two boundary-aligned bursts
6 cycles4. Who Enforces It
The rule is the issuing side's responsibility — a manager must not drive a burst that crosses a 4 KB boundary; doing so is a protocol violation. In practice the split happens in one of these places:
- The manager / DMA shapes its bursts to respect the boundary (the common case — burst-generation logic checks the boundary and splits).
- An interconnect / bridge may split a crossing burst it receives (some do, as a safety/convenience feature), but relying on this is risky — not all do, and the spec puts the obligation on the master.
- A protocol checker / VIP flags any burst whose range crosses a 4 KB boundary as an error.
The safe design stance: shape bursts at the source so they never cross, and verify it. Never assume something downstream will fix a crossing burst.
5. Common Misconceptions
6. Debugging Insight
7. Verification Insight
8. Interview Questions
9. Summary
The 4 KB boundary rule is AXI's one absolute placement constraint: no burst may cross a 4 KB boundary — its full byte range (Start … Start + Total_Bytes − 1) must lie within a single 0x1000-aligned region. The reason is architectural: 4 KB is the minimum page size, so the address map — and which slave an address decodes to — can change at any 4 KB boundary. Keeping each burst inside one region guarantees it routes to a single slave with one response path, which a single-AxADDR transaction requires. The check is INT(Start/0x1000) == INT((Start+Total−1)/0x1000); a transfer that would cross is split at the boundary into legal sub-bursts (e.g., 16 bytes at 0xFF8 → 0xFF8..0xFFF + 0x1000..0x1007).
Enforcement is the master's job — a crossing burst is a protocol violation, and downstream splitting must not be assumed. Only INCR can actually cross (FIXED can't move; WRAP stays in its block). Its bug signature is unmistakable: tail-of-transfer corruption or DECERR, often intermittent with buffer placement — diagnosed by the same region arithmetic and fixed by boundary-aware burst shaping. Verify with the always-on "no crossing" assertion plus directed split tests right at the boundary. Next: narrow and unaligned transfers — the partial-beat behavior that the unaligned cases from Chapter 7.5 set up.
10. What Comes Next
You've got the placement rule; next, the partial-beat mechanics:
- 7.7 — Narrow & Unaligned Transfers (coming next) — narrow transfers (
AxSIZEbelow bus width) and unaligned start addresses, and the partial beats they produce. - 7.8 — Strobe Behavior in Bursts (coming soon) — how
WSTRBevolves across narrow and unaligned burst beats.
Previous: 7.5 — Burst Address Calculation. Related: 7.3 — INCR Bursts, the only type that can cross a boundary. For the broader protocol catalog, see the AMBA family overview doc.