AMBA AXI · Module 7
INCR Bursts
The AXI INCR burst (AxBURST=01) — the incrementing workhorse for memory access. How each beat's address advances by 2^AxSIZE, the per-beat address formula, length up to 256 beats, and the 4 KB-boundary constraint.
The INCR burst (AxBURST = 2'b01) is the one you'll meet most: an incrementing burst where each beat's address advances by the transfer size, so the burst sweeps a contiguous range of memory. Essentially all memory traffic — DMA to/from RAM, instruction fetch, buffer copies, structure reads — is INCR. Where FIXED reused one address, INCR walks forward; that single difference makes it the workhorse of the protocol. This chapter pins down how the address progresses, the per-beat formula, why INCR gets the long-burst extension, and the one rule that bounds it: the 4 KB boundary.
1. What an INCR Burst Is
In an INCR burst, each beat's address is the previous beat's address plus the number of bytes transferred — i.e., it increments by 2^AxSIZE every beat. The manager issues a single start address (AxADDR) and AxBURST = 2'b01; the addresses then walk forward:
beat n address = AxADDR + n × 2^AxSIZE, for n = 0 … AxLEN
So a burst with base 0x1000, AxSIZE = 2 (4 bytes/beat), and AxLEN = 3 (4 beats) touches 0x1000, 0x1004, 0x1008, 0x100C — a contiguous 16-byte span. Everything else is the standard burst machinery (AxSIZE bytes per beat, per-beat WSTRB, LAST on the final beat); the defining feature is the forward-marching address.
2. An INCR Read on the Wire
Here a 4-beat INCR read sweeps four words from base 0x1000 (AxSIZE = 2, 4 bytes/beat). One address handshake, four data beats, each returning the word at the next address:
incr-burst — 4-beat INCR read from 0x1000, 4 bytes/beat
6 cycles3. The Workhorse — Where INCR Is Used
INCR is the default for anything that touches a contiguous memory range:
- DMA to/from RAM — streaming a buffer in or out, address marching through the buffer.
- Cache line fills / evictions — pulling or writing back a contiguous line (when not using
WRAP, Chapter 7.4). - Instruction fetch — sequential code is a forward sweep of addresses.
- Structure / array access — reading or writing a contiguous block.
If the data lives across a span of addresses rather than at one port, it's INCR. That covers the overwhelming majority of high-bandwidth traffic, which is why INCR — not FIXED or WRAP — is the type that received AXI4's long-burst extension.
4. Length up to 256 — and the 4 KB Bound
INCR is the only burst type that reaches AXI4's 256-beat maximum (AxLEN up to 255); AXI3 caps it at 16, and FIXED/WRAP stay at 16 in both. Long INCR bursts are what let a DMA move a large contiguous block in one transaction.
But there is one hard limit that bites INCR specifically: a burst must not cross a 4 KB address boundary (Chapter 7.6). Because INCR's address marches forward, a long enough burst can reach a 4 KB boundary — and the manager must split the transfer at that boundary into separate bursts. (The 4 KB rule exists so that any single burst stays within one minimum-page region, so it can't span two regions that might map to different slaves.) FIXED never moves so it can't cross; WRAP wraps within its own aligned block; only INCR's forward progression makes the 4 KB rule an active design concern.
5. Common Misconceptions
6. Debugging Insight
7. Verification Insight
8. Interview Questions
9. Summary
The INCR burst (AxBURST = 2'b01) is AXI's workhorse: each beat's address advances by 2^AxSIZE, so beat n targets AxADDR + n·2^AxSIZE and the burst sweeps a contiguous memory range. That maps directly onto how memory is laid out, which is why essentially all high-bandwidth traffic — DMA to/from RAM, cache-line fills, instruction fetch, array/structure access — is INCR, and why INCR is the only type that gets AXI4's 256-beat extension (AXI3 and the other types stay at 16). Only the base address rides the bus; the per-beat addresses are derived arithmetic.
The defining constraint, unique among burst types, is the 4 KB boundary: because INCR's address marches forward, a burst can reach a 4 KB boundary it must not cross, so masters split transfers there. Its bugs are address-arithmetic (wrong stride if you don't step by 2^AxSIZE), boundary crossings (tail-of-transfer corruption), and unaligned-edge handling. Debug and verify by reconstructing AxADDR + n·2^AxSIZE and checking the 4 KB boundary. Next: the third type, WRAP — where the address increments but wraps within an aligned block, the natural fit for cache-line fills.
10. What Comes Next
You've got the incrementing workhorse; next, the wrapping variant:
- 7.4 — WRAP Bursts (coming next) — bursts whose address increments then wraps within an aligned block, the natural fit for critical-word-first cache-line fills.
- 7.5 — Burst Address Calculation (coming soon) — worked per-beat address derivations for every burst type.
Previous: 7.2 — FIXED Bursts. Related: 7.6 — The 4KB Boundary Rule for the constraint INCR must respect, and 7.1 — Burst Length, Size & Beats for the underlying arithmetic. For the broader protocol catalog, see the AMBA family overview doc.