Skip to content

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 to AxID in 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.
  • TUSERuser-defined sideband, carried alongside the data with no protocol-defined meaning (like AxUSER, 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.

TID is the source/stream identifier, TDEST is the routing destination, TUSER is user-defined sideband.TIDstream/source identifierTDESTrouting destinationTUSERuser-defined sideband12
Figure 1 — the three roles. TID identifies the stream/source (which stream is this, where from). TDEST identifies the routing destination (where should it go). TUSER carries user-defined sideband metadata (no protocol meaning). All optional, implementation-defined width — added when a system needs identification, routing, or sideband.

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.

Two sources route through a stream switch by TDEST to two sinks; TID identifies the source at the sink.Source ATID=A, TDEST=0Source BTID=B, TDEST=1Stream switchroute by TDEST (wholepacket)Sink 0gets TDEST=0 (knows TID)Sink 1gets TDEST=1 (knows TID)12
Figure 2 — a stream switch routes by TDEST. Multiple sources feed a switch; it routes each stream to the output port named by its TDEST, committing to that destination for a whole packet (until TLAST). TID identifies the source and is preserved/remapped so the sink can demultiplex streams. TDEST = where it goes; TID = where it came from.

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 TUSER of the first pixel, framing a video stream (used heavily in video pipelines alongside TLAST for 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.

TUSER carries video SOF markers, per-beat error flags, parity/ECC, or timestamps, with user-defined meaning.Video SOFstart-of-framemarkerStatus/errorper-beat flagsParity/ECCside-band checkbitsTimestampmetadata12
Figure 3 — TUSER sideband uses. Video start-of-frame markers, per-beat error/status flags, parity/ECC check bits, and timestamps/metadata — all carried alongside TDATA with no protocol-defined meaning. Like AxUSER, its width and semantics are a private agreement between endpoints (interoperability risk).

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.

Agree TDEST map, preserve TID, and match/propagate TUSER across the stream fabric to avoid misroute, demux failure, and metadata loss.Agree TDEST →sink mapPreserve/extend TID(source distinct)Match + propagateTUSER(width/meaning)Correct routing,demux, metadata
Figure 4 — the integration contract. TID/TDEST are routing tags (not addresses): agree the TDEST→sink map across the fabric and preserve/extend TID so sources stay distinct. TUSER is a private sideband agreement: every block must match its width/semantics and propagate it. Wrong TDEST map → misroute; mishandled TID → can't demux; TUSER mismatch → silent metadata loss.

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 — TIDAxID, TUSERAxUSER — 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:

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.