AMBA AXI · Module 11
TUSER, TID & TDEST
AXI4-Stream's routing and sideband signals — TID (stream/source identifier), TDEST (routing destination), and TUSER (user-defined sideband). How stream interconnects route by TDEST, why these are tags not addresses, and TUSER's interoperability risk.
A point-to-point stream needs only TVALID/TREADY/TDATA (and maybe TLAST). But the moment you build a stream interconnect — multiple sources, multiple sinks, a switch in between — you need to route and identify streams. That's what TID, TDEST, and TUSER provide: TID identifies the stream/source, TDEST says where to route it, and TUSER carries user-defined sideband metadata. Crucially, none of these are addresses (there's no addressable storage in a stream) — they're routing tags and sideband. This chapter covers their roles, how a stream switch routes by TDEST, and the interoperability care TUSER demands.
1. The Three Signals
TID— a stream/source identifier. It tags which stream (or source) a transfer belongs to, letting a sink or interconnect distinguish multiple streams sharing a path and know a transfer's origin. Analogous toAxIDin memory-mapped AXI.TDEST— a routing destination identifier. It tells a stream interconnect/switch which output (destination) the stream should be routed to. This is the steering tag.TUSER— user-defined sideband, carried alongside the data with no protocol-defined meaning (likeAxUSER, Chapter 6.6). Width and semantics are implementation-defined; common uses include per-beat error/status flags, parity, timestamps, or markers like video start-of-frame.
All three are optional and implementation-defined in width. A bare stream omits them; they appear as a system needs identification, routing, or sideband. They follow the stream's handshake and (for per-transfer signals) the same stability rules as TDATA.
2. Stream Routing — The Switch
TDEST exists for the stream interconnect (switch/router). A switch connects several stream sources to several sinks; it reads each stream's TDEST and routes it to the corresponding output port. Because a packet is a unit (Chapter 11.3), the switch commits to a TDEST for the duration of a packet and routes the whole packet there until TLAST, then re-evaluates for the next.
TID is preserved (or remapped) through the switch so the sink knows the stream's source. Just like AXI ID extension (Chapter 8.2), a stream interconnect may extend/remap TID so that streams from different sources stay distinct at a shared sink and can be demultiplexed — TID identifies who sent it, TDEST selects where it goes. Together they let a many-source, many-sink stream fabric steer and tag traffic, the streaming analog of address-decode-plus-ID-routing in memory-mapped AXI.
3. TUSER — Sideband Metadata
TUSER is the stream's user-defined sideband, carrying whatever metadata an application threads alongside the data — with no protocol-defined meaning (exactly like AxUSER, Chapter 6.6). Common uses:
- Video markers — a start-of-frame (SOF) bit on
TUSERof the first pixel, framing a video stream (used heavily in video pipelines alongsideTLASTfor end-of-line). - Per-beat status/error flags — marking a beat as erroneous, a control word, or carrying a tag.
- Parity / ECC — side-band check bits over
TDATA. - Timestamps / metadata — a capture time or classification result accompanying the data.
TUSER can be per-transfer (qualified each beat) or per-packet (meaningful on the first/last beat), depending on the convention. Because its meaning is private, TUSER carries the same interoperability risk as AxUSER: both endpoints must agree on its width and semantics, and an interconnect must propagate it — a mismatch is a silent integration bug.
4. Tags, Not Addresses
A recurring point worth nailing: TID and TDEST are routing/identification tags, not memory addresses (Chapter 11.1). A stream has no addressable storage to point at; TDEST steers the pipe to an output, and TID labels the source. They route the flow; they don't index data. This is the streaming counterpart to memory-mapped routing, but the mechanism is tag-based steering, not address decode.
The practical contract for using these signals: agree the TDEST map (which value routes to which sink) across the fabric; preserve/extend TID so sources stay distinguishable; and treat TUSER as a documented private agreement (width + meaning) that every block on the path must honor and propagate. Get the TDEST map wrong and packets go to the wrong sink; mishandle TID and a sink can't tell sources apart; mismatch TUSER and metadata is silently lost or misinterpreted.
5. Common Misconceptions
6. Debugging Insight
7. Verification Insight
8. Interview Questions
9. Summary
TID, TDEST, and TUSER add identification, routing, and sideband to AXI4-Stream — the signals a stream interconnect needs. TID identifies the stream/source (for demultiplexing; extended/remapped through a switch like AxID); TDEST names the routing destination (a stream switch steers the whole packet to that output until TLAST); TUSER carries user-defined sideband (video SOF, error flags, parity, timestamps) with no protocol meaning. All are optional and implementation-defined in width. The central clarification: TID/TDEST are routing tags, not addresses — a stream has no addressable storage; TDEST steers the pipe and TID labels the source.
The integration contract: agree the TDEST→sink map, preserve/extend TID so sources stay distinct, and treat TUSER as a documented private agreement every block must match and propagate. Bugs are misrouting (TDEST), demux failure (TID), packet-split (mid-packet TDEST change), and silent metadata loss (TUSER mismatch/drop — the AxUSER risk). The mapping to memory-mapped AXI is direct — TID↔AxID, TUSER↔AxUSER — with TDEST the new concept (an explicit routing tag replacing address decode), so your interconnect knowledge transfers. Next: stream backpressure in depth — how TREADY throttles a stream and propagates through a pipeline.
10. What Comes Next
You've got the routing and sideband signals; next, backpressure in depth:
- 11.6 — Stream Backpressure (coming next) — how
TREADYbackpressure throttles a stream and propagates upstream through a pipeline. - 11.7 — DMA, Video & Network Use Cases (coming soon) — grounding AXI4-Stream in real pipelines.
Previous: 11.4 — TKEEP & TSTRB. Related: 8.2 — Transaction IDs for the ID-routing parallel, and 6.6 — AxUSER & Sideband Signals for the TUSER interoperability risk. For the broader protocol catalog, see the AMBA family overview doc.