Module 1: What AXI4 Is Really Doing
AXI4 Channels and Handshake
Learning objectives
- Explain the core mental model behind AXI4 Channels and Handshake
- Apply AXI4 Channels and Handshake within What AXI4 Is Really Doing
- Identify important boundaries, trade-offs, and failure modes
- Produce concrete evidence from the practice exercise
Related: AXI4 Overview and Architecture | AXI4 Write Transactions | AXI4 Read Transactions | AXI4 Verification and Debug
Why the Handshake Rules Matter
Most AXI4 bugs are not "wrong signal list" bugs. They are handshake bugs:
- dropping payload before transfer
- waiting for READY before asserting VALID
- combinational loops between VALID and READY
- forgetting that each channel is independent
Once the VALID/READY contract is internalized, the rest of AXI4 becomes much easier.
The Universal AXI4 Handshake
Every AXI4 channel uses the same rule:
A transfer occurs on a rising clock edge when both VALID and READY are HIGH.
That means:
- the source drives
VALIDwhen payload is available - the destination drives
READYwhen it can accept payload - neither side needs a separate acknowledge signal beyond the shared handshake
Source and Destination Responsibilities
Source
The source:
- asserts
VALIDwhen payload is available - presents the payload signals at the same time
- keeps payload stable while
VALID=1and transfer has not yet occurred
Examples:
- master is source for
AW,W,AR - slave is source for
B,R
Destination
The destination:
- asserts
READYwhen it can accept a transfer - may assert or deassert
READYfreely as system conditions change
Examples:
- slave is destination for
AW,W,AR - master is destination for
B,R
The Most Important Rule Newcomers Miss
The source must not wait for READY before asserting VALID.
If both sides wait:
- source waits for READY
- destination waits for VALID
then nothing ever happens.
This is why AXI4 documentation explicitly calls out dependency rules such as:
- master must not wait for
AWREADYbefore assertingAWVALID - master must not wait for
WREADYbefore assertingWVALID - slave must not wait for
BREADYbefore assertingBVALID
Payload Stability Rule
If VALID=1 and READY=0, the source must hold payload stable until the handshake completes.
For example:
- if
AWVALID=1andAWREADY=0, thenAWADDR,AWLEN,AWSIZE, and the other AW payload fields must stay stable - if
RVALID=1andRREADY=0, thenRDATA,RRESP,RID, andRLASTmust stay stable
This rule is one of the best candidates for assertions.
Channel Independence
Each AXI4 channel handshakes independently.
Consequences:
AWcan stall whileWmovesARcan continue whileBis stalled- read and write channels can progress in parallel
Do not assume one channel's transfer implies anything about another channel in the same cycle unless the protocol explicitly says so.
Backpressure
Backpressure is simply the receiver deasserting READY.
Examples:
- a slave drops
WREADYbecause its write buffer is full - a master drops
RREADYbecause downstream logic cannot accept another beat
Backpressure is normal AXI4 behavior. The protocol is built to tolerate it cleanly.
Write-Specific Dependency That AXI4 Tightens
AXI4 adds an important write-response dependency:
- a slave must not assert
BVALIDuntil after the write address has been accepted - and until the last write data beat has been accepted
So a write response depends on both:
AWVALID && AWREADY- final
WVALID && WREADY && WLAST
This tightened a legacy corner case from AXI3.
See AXI4 AXI3 vs AXI4 and AXI4 Write Transactions.
Timing Intuition
Three common legal patterns:
READY first
The destination keeps READY=1 and waits. When source raises VALID, the handshake completes immediately.
VALID first
The source raises VALID with stable payload and waits until destination raises READY.
Same-cycle assertion
Both sides raise their signals in the same cycle and transfer completes immediately.
All three are legal.
Common Bad Assumptions
- "Address must always come before data on the same cycle."
- "READY should stay high all the time."
- "If VALID goes high for one cycle, the transfer happened."
- "A master can change address while waiting for READY."
All four are wrong or incomplete.
High-Value Assertions
Useful protocol checks include:
- if
VALID && !READY, payload stays stable - source never depends combinationally on READY in a way that breaks the protocol
- beat counters advance only on handshake
WLASTandRLASTalign with burst completion
See AXI4 Verification and Debug for more verification patterns.
Practice lab
Draw or encode one legal transaction trace for AXI4 Channels and Handshake. Annotate fields, channel events, ordering points, and completion conditions; then construct one illegal or adversarial trace and define the checker that should catch it.
Review questions
- What problem does AXI4 Channels and Handshake solve, and what assumptions does it rely on?
- Which boundary or failure case is easiest to miss, and how would you expose it?
- What alternative design would you consider, and what trade-off would change the decision?
- What artifact, trace, test, or metric proves that your implementation is correct?
Completion evidence
- A working artifact, annotated trace, or reproducible experiment
- At least one normal case and one deliberately failing or boundary case
- A concise explanation of the design choice and its trade-offs
- Saved output showing how correctness was evaluated