In short: An AXI interconnect in an FPGA is the switched fabric that routes read/write transactions between one or more AXI masters and many memory-mapped slaves, using address decoding and a crossbar so independent masters can reach different slaves at the same time without stalling each other.
If you have ever dropped a Zynq processing system, a DMA engine, and a handful of BRAM controllers into a Vivado block design and connected them with that friendly green AXI Interconnect IP, you have used one of the most important pieces of on-chip plumbing in modern FPGA design. Understanding what actually happens inside that block is the difference between a design that meets timing at 250 MHz and one that silently drops throughput to a crawl.
What AXI Is and Why FPGAs Live on It
AXI (Advanced eXtensible Interface), part of ARM's AMBA specification, is a point-to-point, memory-mapped protocol. A single AXI4 connection is not one bus but five independent channels: write address (AW), write data (W), write response (B), read address (AR), and read data (R). Each channel uses a simple VALID/READY handshake. Because the channels are decoupled, a master can issue a read address while a previous write is still draining, which is where AXI gets its pipelined throughput.
In an FPGA this matters because every channel is just a bundle of wires and registers synthesized into fabric. There is no shared tri-state backplane as in old microprocessor buses, so "the bus" is really a mesh of dedicated paths. The interconnect IP is what turns many such paths into a coherent address space.
Address Decoding: The Interconnect's First Job
When a master drives an address onto AW or AR, the interconnect must decide which slave owns that address. This is address decoding. In Vivado's Address Editor you assign each slave a base address and a range — say DDR at 0x0000_0000 (size 512 MB), a BRAM controller at 0xC000_0000 (8 KB), and an AXI GPIO at 0x4120_0000 (64 KB). The tool synthesizes comparators that examine the upper address bits and assert a one-hot select to the matching slave port.
Two rules bite beginners constantly. First, ranges must be a power of two and naturally aligned, because the decoder only compares a prefix of the bits. A 48 KB window is illegal; round up to 64 KB. Second, overlapping ranges are a design error — the decoder's behaviour becomes undefined, and Vivado will flag it, but only if you validate the design.
A transaction to an address that no slave claims is routed to the interconnect's built-in DECERR responder, which returns a SLVERR/DECERR on the B or R channel. A master that ignores BRESP/RRESP will hang forever waiting for data that is never coming — a classic cause of "my design just freezes."
The Crossbar and Arbitration
Once decoding picks a target, the crossbar physically connects the chosen master channel to the chosen slave channel. A full N×M crossbar lets any of N masters talk to any of M slaves. Crucially, if two masters target different slaves, both transactions run in parallel — this is the concurrency that makes AXI fabrics fast. Conflict only arises when two masters want the same slave; then an arbiter (typically round-robin, or QoS-weighted in AXI4) grants access one at a time.
FPGA crossbars are not free. Each extra master or slave port adds multiplexers, registers, and routing. On a Xilinx 7-series or UltraScale device, a wide crossbar with several 256-bit ports can easily consume thousands of LUTs and, more painfully, become the critical path. The choice between block RAM and distributed RAM for internal buffering directly affects whether these FIFOs fit and how deep they can be.
| Topology | Concurrency | Resource cost | Typical use |
|---|---|---|---|
| Shared-Access (SASD) | One xfer at a time | Lowest | Low-speed config/control |
| Shared-Address, Multi-Data | Parallel data | Medium | Balanced SoC fabric |
| Full Crossbar | N×M parallel | Highest | High-bandwidth DMA/DDR |
Watch the Signal Move: A Write Handshake
AXI4 vs AXI4-Lite vs AXI-Stream
Not every port needs the full protocol. AXI4-Lite drops bursts (one beat per transaction, no AWLEN) and is ideal for control/status registers — it keeps decode logic tiny. AXI4 (full) supports bursts up to 256 beats, giving high throughput to DDR. AXI4-Stream has no addresses at all; it is a pure dataflow channel for video, ADC samples, or DSP pipelines, and does not pass through a memory-mapped interconnect. A common mistake is connecting a Lite master to a slave expecting bursts; the SmartConnect IP will insert a protocol converter, but it costs latency.
On Xilinx devices, the modern AXI SmartConnect supersedes the legacy AXI Interconnect: it auto-inserts width converters, clock-domain crossings, and register slices, and it is optimized for the specific masters/slaves it sees, often saving LUTs versus the generic block.
Building It in a Block Design
In practice you rarely hand-wire AXI. In Vivado IP Integrator you instantiate the interconnect, run Run Connection Automation, and then open the Address Editor to assign ranges. The tool infers data widths, clock domains, and reset polarity from the connected IP. Always run Validate Design before synthesis — it catches overlapping addresses, unconnected clocks, and width mismatches that would otherwise cost you a half-day on the bench. For teams building custom accelerators, firms such as Avecas VLSI design services wrap these fabrics around proven DMA and DDR controllers so the interconnect topology is right the first time.
If your throughput is still disappointing, profile the arbiter. Give your DMA engine a higher AXI QoS value than the CPU, add outstanding-transaction depth, and insert register slices to break long combinational paths across the die. These three knobs recover most lost bandwidth. For a deeper look at buffering the data that flows through the fabric, see our note on AXI DMA and scatter-gather descriptors.
Want to design AXI fabrics that actually meet timing? CourseTron's FPGA SoC track walks you through Zynq block design, DMA, and DDR bring-up on real hardware. Explore the CourseTron course catalog →
Frequently Asked Questions
Can two AXI masters write to the same slave simultaneously?
No. The crossbar connects one master to a given slave port at a time; the arbiter serializes contending masters. They can proceed in parallel only when targeting different slaves.
Why does my AXI design hang with no error?
Most often the master issued a transaction to an unmapped address and the interconnect returned a DECERR, but the master logic never checks BRESP/RRESP. Always inspect the response channels, or add an ILA to watch them.
Should I use AXI Interconnect or AXI SmartConnect?
Prefer SmartConnect on UltraScale and 7-series designs. It self-configures converters and register slices and generally uses fewer resources. Use the legacy Interconnect only when you need its specific shared-bus modes.
Does AXI-Stream go through the interconnect?
No. AXI-Stream is non-memory-mapped dataflow. You connect it point-to-point or through an AXI4-Stream Interconnect/Switch, not the memory-mapped crossbar that decodes addresses.