The flexibility of the User Metadata structure can be helpful for debugging a VitisNetP4 design. It is possible to effectively “probe” different parts of the P4 program by assigning variables of interest to new fields of the user_metadata structure at various stages of the P4 program, so that they become visible at the output ports of the VitisNetP4 IP. Those field ports can then be viewed in an RTL simulation waveform or they can be captured by an ILA if running in hardware. These user_metadata fields can later be removed after debug is complete for more efficient utilization.