Updated 18 October 2026
Count accepted transfers.
On the rising clock edge, AWVALID with AWREADY accepts the address; WVALID with WREADY accepts the data. Those handshakes can happen on different edges. Keep separate records of accepted address and data, then pair them in order.
A write response must follow the required accepted inputs. Checking only whether AWVALID and WVALID happen to be high together can miss accepted transfers, reuse a stale address or count a transaction twice.
Exercise both arrival orders.
- Assert AWVALID first. Hold it and its address until accepted. Introduce WVALID several cycles later.
- Repeat with WVALID first, keeping its data and strobes stable until accepted.
- Present both together, then vary response backpressure and repeat.
A subtle distinction: a subordinate may wait until both channels are presented before asserting READY. The test should allow that. Separate channel arrivals do not mean the subordinate must accept the address before data appears.
Check the register effect as well.
Use distinct addresses and recognizable data patterns. Confirm that each accepted address/data pair creates exactly one response and the declared register update. A clean handshake with data written to the wrong register is still a useful failure.
Keep a response watchdog if your project needs one, but label its deadline as a project expectation. Do not turn an arbitrary cycle budget into a protocol requirement.
Reference: AMD AXI protocol-check descriptions, including channel stability and write-response dependencies.
Make the separate-arrival case part of your regression.
This is one of the first scenarios planned for the AXI4-Lite Integration Kit.
Explore the planned kit