Skip to content

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.

INCR burst addresses: beat 0 at A, beat 1 at A plus s, beat 2 at A plus 2s, final beat at A plus AxLEN times s.Beat 0ABeat 1A + sBeat 2A + 2sBeat AxLENA + AxLEN·s (LAST)12
Figure 1 — INCR address progression. From base A, each beat advances by 2^AxSIZE (here s): A, A+s, A+2s, … A+AxLEN·s. The burst covers a contiguous range of (AxLEN+1)·2^AxSIZE bytes from one address transaction — the natural fit for memory.

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 cycles
Address 0x1000 issued once with ARBURST INCR; four read-data beats return the words at 0x1000, 0x1004, 0x1008, 0x100C, RLAST on the fourth.addr += 4 each beatARBURST=INCR, base 0x1000, AxSIZE=2ARBURST=INCR, base 0x1…beat 3 → 0x100C, RLASTbeat 3 → 0x100C, RLASTaclkaraddr100010001000100010001000arburst01 INCR01 INCR01 INCR01 INCR01 INCR01 INCRrvalidrdataXM[1000]M[1004]M[1008]M[100C]M[100C]rlastt0t1t2t3t4t5
Figure 2 — incr-burst: a 4-beat INCR read (AxLEN=3, ARBURST=01) from base 0x1000, 4 bytes/beat. The address is issued once; the four R beats return the words at 0x1000, 0x1004, 0x1008, 0x100C in order, RLAST on the last. The per-beat addresses are implicit — derived by the increment, not re-sent.

3. 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.

INCR is used for DMA to RAM, cache line fills, instruction fetch, and array or structure access — all contiguous-memory traffic.DMA ↔ RAMbuffer streamingCache fillcontiguous lineInstr fetchsequential codeArray accesscontiguous block12
Figure 3 — INCR's domain: contiguous-memory traffic. DMA buffers, cache-line fills, instruction fetch, and array/structure access all sweep a range of addresses, so they use INCR. The forward-marching address maps directly onto how memory is laid out — one transaction covers a whole block.

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.

An INCR burst scales to 256 beats but must split at any 4 KB boundary it would otherwise cross.noyesINCR burst (upto 256 beats)Would itcross a 4 KBboundary?Issue as oneburstSplit intobursts at theboundary
Figure 4 — INCR length and the 4 KB bound. INCR scales to 256 beats (AXI4), but its forward-marching address means a long burst can hit a 4 KB boundary — which it must not cross. The manager splits the transfer at the boundary into two bursts. This is unique to INCR among the burst types; FIXED can't move and WRAP stays within its block.

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.