Skip to content
Industries · Silicon and FPGA

For FPGA and SoC teams

ByteAsk looks up the AXI4-Stream rule in the Arm spec before it answers, and cites the section and page.

byteask execin AXI4-Stream what's the difference between TKEEP and TSTRB, and is TKEEP allowed to be low in the middle of a packet?
I’m checking the AXI4-Stream spec text directly so the answer is based on the wire-level definition, not memory.📚 fpga_ref · AXI4-Stream TKEEP TSTRB null byte position data byte pos…I found the byte-qualifier definitions. I’m checking the packet rule next, because AXI4-Stream distinguishes generic packets from the stricter continuous-packet model.📚 fpga_ref · AXI4-Stream packet boundaries null bytes within packet c…📚 ref_context · D2_AMBA_AXI4Stream_IHI0051B:2.5:19:0__Not found: D2_AMBA_AXI4Stream_IHI0051B:2.5:19:0__I have the main rule already; I’m pulling the exact valid `TKEEP/TSTRB` combinations so I can answer the first part precisely.📚 fpga_ref · AXI4-Stream Table 2-3 HIGH LOW position byte LOW HIGH re…`TKEEP` and `TSTRB` answer different questions:- `TKEEP=1, TSTRB=1` -> data byte- `TKEEP=1, TSTRB=0` -> position byte- `TKEEP=0, TSTRB=0` -> null byte- `TKEEP=0, TSTRB=1` -> invalid/reservedOn `TKEEP` being low in the middle of a packet: in generic AXI4-Stream, null bytes exist, so `TKEEP=0` is not inherently illegal. But in the `Continuous_Packets` subset, it is not allowed before the last transfer. From `fpga_ref`, the decisive rule is: `"If TLAST is LOW, all bits of TKEEP must be HIGH."` On the final beat, zeros are only allowed in the upper unused byte lanes.

Recorded ByteAsk session (byteask exec): a TKEEP and TSTRB question answered from the Arm AXI4-Stream spec.

Standards it can cite

AMBA AXI · UltraScale

fpga_ref: Xilinx UltraScale · AMBA AXI

fpga_refAXI4-Stream TKEEP TSTRB null byte position data byte position allowed middle of packet packet stream packet boundary TKEEP LOW middle
Arm AMBA 4 AXI4-Stream Protocol Specification (ARM IHI 0051B)§2.5 Byte qualifiers · p.25
2.5 Byte qualifiers
2.5.3    TKEEP and TSTRB combinations
                 Table 2-3 lists the valid combinations for TKEEP and TSTRB byte qualifications. Not all components require
                 TKEEP and TSTRB byte qualifiers. See Optional TKEEP and TSTRB on page 3-34.
                                                                           Table 2-3 TKEEP and TSTRB byte qualifications
                   TKEEP        TSTRB         Data Type        Description
                   HIGH         HIGH          Data byte        The associated byte contains valid information that must be
                                                               transmitted between source and destination.
                   HIGH         LOW           Position byte    The associated byte indicates the relative position of the data bytes
                                                               in a stream, but does not contain any relevant data values.
                   LOW          LOW           Null byte        The associated byte does not contain information and can be
                                                               removed from the stream.
ref D2_AMBA_AXI4Stream_IHI0051B:2.5:19:0 · captured 2026-09-18

The tools it runs for Silicon and FPGA

  • gdb
  • AddressSanitizer
  • Valgrind
  • CMake
  • make
  • clang-tidy
Enterprise

Your code stays inside your walls

On-prem, air-gapped and bring-your-own-key deployments, with the controls your security team will ask for.

See Enterprise