User Metadata Interface - 2022.2 English

Vitis Networking P4 User Guide (UG1308)

Document ID
2022.2 English

There are no separate back-pressure signals for the user metadata interfaces. These interfaces follow the corresponding packet TREADY signals of the packet AXIS interfaces, for example:

If s_axis_tvalid and user_metadata_in_valid are asserted for the first word of a packet, and s_axis_tready = 0, then s_axis_tvalid and user_metadata_in_valid should remain asserted until at least the cycle after s_axis_tready = 1, as shown in the following timing diagram.
Figure 1. TREADY Timing Diagram

Similarly, if m_axis_tready = 0 during the first word of a packet, then m_axis_valid and user_metadata_out_valid should remain asserted until the cycle after m_axis_tready = 1, at which time user_metadata_out_valid is deasserted if there are further data words for the same packet.

There is an option to allow metadata to be output for dropped packets. When this option is enabled, the dropped packet becomes a “zero-length” or “null” packet. This is a single-beat packet with m_axis_tvalid = 1, m_axis_tlast = 1 and m_axis_tkeep = 0. The metadata output shall be aligned with this single-beat packet as shown in the following timing diagram.
Figure 2. Metadata Output Timing Diagram

If this option is disabled, there are no m_axis_tvalid or user_metadata_out_valid signals for the dropped packet.

If the keywords axis_tuser, axis_tid or axis_tdest are used in the metadata structure, the signals are mapped to/from the TUSER/TID/TDEST ports. In this case there are still placeholders for these fields in the user_metadata_in structure but these are ignored by Vitis Networking P4. The values are output in both the user_metadata_out structure and the TUSER/TID/TDEST ports.