AMBA AXI · Module 14
Asynchronous AXI Bridges
The asynchronous AXI bridge structure — five per-channel async FIFOs crossing a full AXI interface between clock domains, how flow control and the handshake are reconstructed on each side, and the latency/depth and bridge-type trade-offs.
Chapter 14.1 established why AXI needs an async FIFO per channel to cross clock domains safely; this chapter is the concrete bridge structure. An asynchronous AXI bridge crosses a full AXI interface between two clock domains using five per-channel async FIFOs (one for each of AW, W, B, AR, R), presenting a clean AXI port in each domain. We'll cover the bridge's structure and per-channel directions, how the VALID/READY handshake is reconstructed on each side from the FIFO full/empty flags, the latency and depth implications, and the bridge-type choices (full-async vs rational). This is exactly the interconnect's clock converter (Chapter 12.7), made concrete.
1. The Five-Channel Bridge
An async AXI bridge crosses the whole interface with one async FIFO per channel, each crossing in the direction that channel's traffic flows:
- Forward channels —
AW(write address),W(write data),AR(read address) — written in the manager-side domain, read in the subordinate-side domain. - Response channels —
B(write response),R(read data) — written in the subordinate-side domain, read in the manager-side domain.
The bridge presents a complete AXI subordinate interface on the manager side (clocked by the manager's clock) and a complete AXI manager interface on the subordinate side (clocked by the subordinate's clock). Between them, the five FIFOs carry the traffic across the boundary. So from each side's perspective it's a normal AXI port — the clock-domain crossing is hidden inside the bridge.
2. One Channel's Async FIFO
Each channel's crossing is the async FIFO from Chapter 14.1, made concrete for an AXI channel: it carries that channel's payload (e.g., for AW: AWADDR, AWLEN, AWSIZE, AWID, … packed into one FIFO word) across the boundary:
- Write side (source domain): when the source presents a valid beat (channel
VALIDhigh) and the FIFO isn't full, the beat is written into the FIFO. - Read side (destination domain): when the FIFO isn't empty, a beat is available to be read and presented (channel
VALIDhigh) to the destination. - Dual-clock memory + Gray pointers: the payload rides through the memory (read only when present — no metastable sampling), and the write/read pointers cross domains Gray-coded through synchronizers for safe full/empty computation (14.1).
So one FIFO carries one channel's entire payload as a unit — all that channel's signals packed together — guaranteeing the payload stays coherent across the crossing (no VALID-before-data-stable, no bit skew). Packing the channel's signals into a single FIFO word is what keeps them associated, solving the multi-signal-coherence problem of 14.1.
3. Reconstructing the Handshake and Flow Control
The bridge reconstructs the VALID/READY handshake on each side from the FIFO's flags, preserving AXI flow control across the boundary:
- Write side: the FIFO's full flag drives the channel's
READY— when the FIFO is full, the bridge deassertsREADYto the source, backpressuring it (Chapter 11.6). The source holds its data until space frees. So a downstream domain that can't keep up naturally backpressures the upstream through the FIFO. - Read side: the FIFO's not-empty flag drives the channel's
VALID— when the FIFO has a beat, the bridge assertsVALIDto the destination; the destination'sREADYcontrols the read.
So each side sees a normal AXI handshake: the manager-side port backpressures (via READY) when the bridge's forward FIFOs fill, and the subordinate-side port sees VALID as forward data arrives. The handshake's coupling (data stable while VALID held until READY) is satisfied because the FIFO holds the data stable until read. This is how the bridge appears as a transparent AXI port to each domain while safely crossing the boundary — the FIFO full/empty flags are the reconstructed flow control.
4. Latency, Depth, and Bridge Types
Design considerations and variants:
- Latency: each FIFO crossing adds a few cycles each way (write-to-read synchronization + FIFO traversal). This CDC latency adds to the transaction latency (Chapter 13.2), which raises the outstanding depth needed to hide it (Chapter 13.3) — so a master behind an async bridge needs more in-flight transactions to sustain throughput across the added latency.
- FIFO depth: sized for two things at once — to absorb rate mismatch (a faster source filling while a slower destination drains, Chapter 11.6) and to hold enough outstanding transactions to cover the CDC latency (the bandwidth-latency product). Too shallow → backpressure/latency-bound; sized right → sustains throughput up to the slower domain's rate.
- Bridge types: a fully asynchronous bridge handles any clock relationship (arbitrary, unrelated frequencies) using the Gray-pointer async FIFO — the general, safe case. A rational/synchronous bridge, where the clocks have a known integer ratio (or share an edge), can be simpler/cheaper (fewer synchronizer stages, deterministic latency) but only works for that constrained relationship. Use full-async unless the clocks are guaranteed related.
So the bridge is a latency-vs-area-vs-generality trade: full-async FIFOs (general, more latency/area) sized for the rate mismatch and CDC latency, with outstanding depth budgeted accordingly. Reset coordination across the two domains is also required (Chapter 14.3).
5. Common Misconceptions
6. Debugging Insight
7. Verification Insight
8. Interview Questions
9. Summary
An asynchronous AXI bridge crosses a full AXI interface between clock domains with five per-channel async FIFOs: forward channels (AW/W/AR) cross manager→subordinate, response channels (B/R) cross subordinate→manager, and the bridge presents a normal AXI port (subordinate-side on the manager domain, manager-side on the subordinate domain) hiding the CDC inside. Each FIFO packs its channel's payload into one word (keeping the signals coherent), carries it through dual-clock memory (read only when present), and crosses Gray-coded pointers via synchronizers (14.1). The VALID/READY handshake is reconstructed from the FIFO flags — full → READY deasserts (backpressure), not-empty → VALID asserts — so each side sees normal AXI flow control.
The trade-offs: the bridge adds CDC latency (raising the outstanding depth needed to hide it, Module 13), and its FIFO depth is sized for both rate-mismatch absorption and outstanding coverage of that latency. Bridge types: fully-asynchronous (any clock relationship — the safe general case) vs rational/synchronous (known integer ratio — simpler/cheaper but constrained). It must be co-verified structurally (static CDC — metastability safety) and functionally (AXI protocol + data integrity across clock ratios) and for performance (throughput across the crossing) — the convergence of CDC, protocol, and performance, which is why it's usually verified IP. Next: reset sequencing — ARESETn behavior and the synchronous-deassert discipline.
10. What Comes Next
You've got the async bridge; next, coordinating reset across it:
- 14.3 — Reset Sequencing (coming next) —
ARESETnbehavior, synchronous-deassert reset discipline, and coordinating reset across clock domains.
Previous: 14.1 — AXI Across Clock Domains. Related: 12.7 — Clock & Reset in Interconnect for where this sits in the fabric, and 13.3 — Outstanding Depth & Buffering for the depth the CDC latency demands. For the broader protocol catalog, see the AMBA family overview doc.