Hardware Event Tracing Issues and Solutions - 2022.1 English

Vitis Unified Software Platform Documentation: Application Acceleration Development (UG1393)

Document ID
Release Date
2022.1 English

Hardware events are captured in the device FIFO or global memory buffers and sent back (offloaded) to the CPU to generate the timeline traces. Hardware trace events can be dropped in different scenarios as explained in the table.

Table 1. Hardware Trace Event Scenarios
Issue Solution
Once the FIFO or DDR/HBM buffer gets full, all subsequent hardware trace events will be dropped.

Look for a runtime warning and rerun with a larger buffer size, using this setting in xrt.ini

trace_buffer_size=<size>, where size must fit within the global memory limits.

Using the same global memory for compute data transfers can cause congestion leading to dropped hardware trace events.

Use a resource for offloading that is different from what the compute() IO uses. The macro PROFILE_OFFLOAD can be used to specify the profiling offload method in the accelerator class.

PROFILE_OFFLOAD("FIFO" | "DDR[0-3]" | "HBM[0-31]" );

Tip: This cannot be used when targeting compilation for hw_emu, or it will cause a profiling logic insertion error. It will also be ignored for the sw_emu target.
The application testing created too many hardware events.

Lower the number of hardware events generated with any of these setting in the xrt.ini file,

  1. device_trace=coarse : generates the fewest hardware events
  2. device_trace=fine : generates more hardware events and greater detail
  3. stall_trace=true : generates the most hardware events and can quickly fill up any size buffer. Do not use it.