Skip to content

AMBA AXI · Module 11

TLAST & Packet Boundaries

How AXI4-Stream's TLAST signal frames a continuous stream into packets — what a packet is, where TLAST asserts, framed vs unframed streams, and how receivers, DMAs, and switches use packet boundaries.

A bare AXI4-Stream (Chapter 11.2) is an endless sequence of data words — there's no notion of where one logical unit ends and the next begins. TLAST adds that structure: a single bit the source asserts on the last word of a packet, framing the continuous stream into discrete packets (also called frames or transfers). This is essential whenever data has variable-length logical units — network frames, video lines, DMA descriptors — and the receiver needs to know boundaries. This chapter covers what a packet is, exactly where TLAST asserts, the framed-vs-unframed distinction, and how receivers, DMAs, and switches use the boundary.

1. What TLAST Does

TLAST is a 1-bit signal driven by the source. When asserted on a transferring word (a word where TVALID and TREADY are both high), it marks that word as the last of the current packet. The next transferring word begins a new packet. So a packet is the sequence of words from just after the previous TLAST up to and including the word with TLAST = 1.

Without TLAST, the stream is unframed — a continuous, boundary-less flow (e.g., a never-ending sensor sample stream). With TLAST, the stream is framed into packets of (possibly variable) length. TLAST is the only thing that delimits packets — there's no length field; the boundary is wherever the source asserts TLAST.

A continuous word stream divided into packets by TLAST asserted on the last word of each packet.Continuous wordsno boundaries (unframed)Assert TLASTon last word of unitFramed packetsdelimited unitsPacket 1words … TLASTPacket 2words … TLAST12
Figure 1 — TLAST frames a continuous stream into packets. A bare stream is an endless word sequence; asserting TLAST on the last word of each logical unit divides it into packets. A packet = the words up to and including the TLAST word; the next word starts a new packet. TLAST is the sole packet delimiter — there's no length field.

2. On the Wire

Two packets — D0,D1,D2 then D3,D4 — delimited by TLAST:

tlast-framing — two packets delimited by TLAST

7 cycles
A stream where TLAST asserts on D2 (end of packet 1) and on D4 (end of packet 2), framing the words into two variable-length packets.packet 1: D0–D2packet 2: D3–D4TLAST=1 → end of packet 1TLAST=1 → end of packe…TLAST=1 → end of packet 2TLAST=1 → end of packe…aclktvalidtreadytdataD0D1D2D3D4XXtlastt0t1t2t3t4t5t6
Figure 2 — tlast-framing: TLAST marks each packet's last word. Packet 1 is D0,D1,D2 with TLAST asserted on D2; packet 2 is D3,D4 with TLAST on D4. TLAST only matters on a transferring word (TVALID and TREADY both high); the word after a TLAST begins the next packet. Packets here are different lengths — TLAST, not a counter, sets the boundary.

3. Framed vs Unframed Streams

Not every stream uses TLAST — it depends on whether the data has packet structure:

  • Framed (uses TLAST): data comes in discrete, often variable-length units that the receiver must delimit — network/Ethernet frames, video lines or frames, packetized DMA transfers, message-based protocols. The receiver needs to know where each unit ends.
  • Unframed (no TLAST): a continuous, boundary-less flow with no packet structure — a steady audio/sensor sample stream, a fixed-rate datapath. Every word is equivalent; there's nothing to delimit.

When a stream omits TLAST, it's effectively "one infinite packet" (or boundaries are irrelevant). When it includes TLAST, the receiver and any downstream logic must honor the boundaries. The choice is part of the interface contract between source and sink — both must agree on whether the stream is framed.

Framed streams use TLAST for variable-length packets; unframed streams omit it for continuous flow.Framed (TLAST)packets, variable lengthEthernet, video, packetsreceiver needs boundariesUnframed (no TLAST)continuous flowAudio/sensor samplesno packet structure12
Figure 3 — framed vs unframed. Framed streams use TLAST to delimit variable-length packets (Ethernet frames, video lines, packetized DMA) where the receiver needs boundaries. Unframed streams omit TLAST for continuous, boundary-less flow (audio/sensor samples, fixed-rate datapaths). Whether a stream is framed is part of the source/sink contract.

4. How Boundaries Are Used Downstream

TLAST matters because downstream consumers act on packet boundaries:

  • A receiver/DMA writing a stream to memory uses TLAST to know when a complete packet has arrived — e.g., to finalize a buffer, advance a descriptor, raise an interrupt, or record the packet length (by counting words until TLAST). A "packet DMA" delimits memory buffers by TLAST.
  • A stream switch/router uses TLAST together with TDEST to route whole packets: it commits to a destination for a packet and keeps routing there until TLAST, then re-evaluates for the next packet (so a packet isn't split mid-flight to different destinations).
  • Protocol/packet processing (parsers, classifiers) uses TLAST to know a unit is complete before acting on it.

Because there's no length field, everything downstream that cares about units relies on TLAST being correct. A wrong boundary corrupts the framing for every consumer.

TLAST drives DMA buffer finalization, whole-packet switch routing, and packet-complete processing.completeboundaryunit doneTLAST (packetboundary)DMA: finalizebuffer / advancedescriptor /lengthSwitch: routewhole packet toTDEST untilTLASTProcessor: acton complete unit
Figure 4 — downstream use of packet boundaries. A receiver/DMA finalizes a buffer / advances a descriptor / counts length on TLAST; a stream switch routes a whole packet to one TDEST until TLAST, then re-evaluates; packet processors act on a complete unit. With no length field, all unit-aware logic depends on TLAST being correct.

5. Common Misconceptions

6. Debugging Insight

7. Verification Insight

8. Interview Questions

9. Summary

TLAST frames an otherwise-continuous AXI4-Stream into packets: the source asserts it on the last word of a packet (on a transferring word — both TVALID/TREADY high), and the next transferring word begins a new packet. A packet is the words up to and including the TLAST word, and since there's no length field, TLAST is the sole delimiter — packets are naturally variable-length, their length found by counting words until TLAST. Streams are framed (use TLAST — Ethernet, video, packetized DMA) or unframed (omit it — continuous audio/sensor flow), a choice that's part of the source/sink contract.

Downstream, everything unit-aware relies on TLAST: a DMA finalizes buffers/advances descriptors/records length on it, a switch routes a whole packet to one TDEST until TLAST, and processors act on complete units. Its bugs are framing corruption — missing TLAST merges packets, spurious splits them, misplaced mis-sizes them — and the cure is a packet-reconstruction scoreboard keyed on TLAST (covering single-word packets, back-to-back packets, and intra-packet bubbles, since framing and flow control are orthogonal). Next: the byte qualifiers TKEEP and TSTRB — which bytes of TDATA are valid.

10. What Comes Next

You've got packet framing; next, byte-level qualifiers:

  • 11.4 — TKEEP & TSTRB (coming next) — the byte qualifiers marking which bytes of TDATA are valid data vs position/null bytes, for partial and packed transfers.

Previous: 11.2 — TVALID, TREADY & TDATA. Related: 11.1 — The AXI4-Stream Mental Model for the streaming paradigm. For the broader protocol catalog, see the AMBA family overview doc.