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.
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
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.The tools it runs for Silicon and FPGA
- gdb
- AddressSanitizer
- Valgrind
- CMake
- make
- clang-tidy
Enterprise
See 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.
