AXI4 / AXI-Lite / AXI-Stream Cheatsheet

The signals, the handshake rules, and the mistakes everyone makes once.

The one rule that is 90% of AXI

Every channel moves data when VALID && READY on the same rising edge.

The three flavors

AXI4-Lite AXI4 (full) AXI4-Stream
Purpose control registers memory, DMA unidirectional data flow
Channels 5 (AW W B AR R) 5, with bursts 1 (T*)
Burst none (1 beat) 1-256 beats unlimited stream
Typical use CSR blocks DDR access samples, packets, video

AXI4-Lite signal set (the whole thing)

Write:  AWADDR AWVALID AWREADY | WDATA WSTRB WVALID WREADY | BRESP BVALID BREADY
Read:   ARADDR ARVALID ARREADY | RDATA RRESP RVALID RREADY

AXI4 (full) additions

AXI4-Stream essentials

TDATA TVALID TREADY TLAST [TKEEP TUSER TID TDEST]

Handshake bugs hall of fame

  1. Combinational READY→VALID loop between two modules: works in sim with one ordering, deadlocks in another.
  2. Changing WDATA while WVALID is high because "READY was low anyway" — the interconnect may have already sampled a lane.
  3. Assuming AW before W. Xilinx DMA IP sends them together; some masters send W first.
  4. Forgetting WLAST on a custom master: the slave waits forever for the beat that never comes.
  5. One outstanding transaction assumed: full-AXI masters can issue several AR before the first R returns.
  6. Reset: VALIDs must be low the cycle after reset deasserts — ARESETn is active-low and asynchronous assert is common, so synchronize the deassert.

Debug checklist