AMBA AXI · Module 11
Stream Backpressure
How TREADY backpressure throttles an AXI4-Stream — the source holding data when the sink can't accept, backpressure propagation upstream through a pipeline, FIFO decoupling, and backpressure-tolerant vs real-time sources.
We met TREADY as half the handshake (Chapter 11.2); this chapter treats backpressure as a first-class topic — because in real streaming systems, how stalls propagate determines throughput, buffering, and whether data is ever lost. Backpressure is the sink's ability to say "not now" by deasserting TREADY, forcing the source to hold its data. In a pipeline of stages, a stall at the end propagates backward up the chain, and FIFOs between stages absorb transient stalls to keep things flowing. The one situation that breaks this — a source that can't be backpressured (a real-time sensor) — is the key design hazard. This chapter covers the mechanism, propagation, FIFO decoupling, and the tolerant-vs-real-time source distinction.
1. The Backpressure Mechanism
Backpressure is simply: when the sink can't accept a word, it deasserts TREADY, and the source must hold TVALID and TDATA stable until TREADY returns (Chapter 11.2's stability rule). No data is lost — the transfer just waits. The source is stalled, not dropped.
This is the stream's entire flow-control story: the consumer paces the producer. A sink backpressures when its buffer is full or it's busy processing; the source waits, holding the current word, and resumes the instant TREADY is high again. The data rate naturally settles to whatever the slower side can sustain.
2. On the Wire
The source has data every cycle (TVALID held), but the sink backpressures mid-stream:
stream-backpressure — sink stalls TREADY, source holds data
8 cycles3. Backpressure Propagates Upstream
The important systemic behavior: in a pipeline of stages connected by streams, backpressure propagates backward. When the final sink stalls (TREADY low), the stage feeding it can't push, so its input fills, so it deasserts TREADY to its upstream — and the stall ripples up the chain toward the source. Each stage backpressures the one before it as it fills.
This is correct and necessary — it's how the pipeline avoids losing data when the end can't keep up. The effect is that the whole pipeline throttles to the rate of its slowest (bottleneck) stage: if any stage can only accept a word every other cycle, backpressure propagates that limit upstream, and the source ends up running at half rate too. So a pipeline's sustained throughput is set by its bottleneck, communicated upstream via backpressure.
4. FIFOs and the Real-Time Source Hazard
Two design realities shape how backpressure plays out:
FIFOs decouple stages. A FIFO between two stages absorbs transient stalls: while the downstream is briefly stalled, the FIFO keeps accepting from the upstream (until it fills), and while the upstream is briefly starved, the FIFO keeps supplying the downstream (until it empties). So backpressure only propagates upstream when a FIFO actually fills — short stalls are hidden, and the pipeline stays full despite local rate jitter. Sizing FIFOs to cover the stall durations is how you sustain throughput across bursty stages (the streaming analog of outstanding depth).
Real-time sources can't be backpressured. Some sources cannot stall — a live ADC, sensor, or camera produces a sample every cycle whether or not anyone is ready. If such a source is backpressured and has nowhere to put the data, data is lost (overflow). These sources need either a sink that never backpressures (guaranteed-ready, real-time path) or enough buffering (a FIFO deep enough to absorb worst-case stalls). Connecting a non-stallable source to a stallable consumer without adequate buffering is a classic data-loss bug.
5. Common Misconceptions
6. Debugging Insight
7. Verification Insight
8. Interview Questions
9. Summary
Backpressure is AXI4-Stream's flow control: a sink that can't accept deasserts TREADY, and the source holds TVALID/TDATA stable until it returns — no data lost, the flow just stalls, and the rate settles to the slower side. In a pipeline, backpressure propagates upstream — a stall at the end ripples back stage by stage as buffers fill, so the whole pipeline throttles to its bottleneck stage's rate. FIFOs decouple stages by absorbing transient stalls (backpressure only propagates when a FIFO fills), and sizing them to the stall durations sustains throughput across bursty stages.
The defining hazard is the real-time source (ADC/sensor/camera) that cannot stall: backpressured without enough buffering, it overflows and loses data — so it needs a never-backpressuring sink or a FIFO deep enough for the worst-case stall, with overflow detected if possible. Debug splits into performance (find the bottleneck) and correctness (real-time overflow, or a source not honoring TREADY). Verify with adversarial random backpressure (data integrity under all flow patterns) and the real-time overflow boundary (no silent loss), plus FIFO-decoupling and propagation behavior. Next: real-world AXI4-Stream — DMA, video, and network pipelines that put all these signals together.
10. What Comes Next
You've mastered stream flow control; next, real-world pipelines:
- 11.7 — DMA, Video & Network Use Cases (coming next) — grounding AXI4-Stream in real DMA, video, and packet pipelines that combine every stream signal.
Previous: 11.5 — TUSER, TID & TDEST. Related: 11.2 — TVALID, TREADY & TDATA for the handshake this builds on, and 8.1 — Why Outstanding Transactions Exist for the analogous buffering/latency reasoning. For the broader protocol catalog, see the AMBA family overview doc.