Hardware/Software Event Tracing

The systems produced by the SDSoC environment are high-performance, complex, hardware/software systems. It can be difficult to understand the execution of applications in such systems. With portions of software running in a processor, hardware accelerators executing in the programmable fabric, and many simultaneous data transfers occurring there is a lot happening all at once. The SDSoC environment tracing feature provides the user, through the use of event tracing, a detailed view of what is happening in the system during execution of an application.

This detailed view helps the user understand the performance of their application given the workload, hardware/software partitioning, and system design choices. Such information helps the user optimize and improve system implementation. This view enables event tracing of software running on the processor, as well as hardware accelerators and data transfer links in the system. Trace events are produced and gathered into a timeline view, showing the user a detailed perspective unavailable anywhere else about how their application executes.

Tracing an application produces a log that records information about system execution. Compared to event logging, event tracing provides correlation between events for a duration of time (i.e., events have a duration, rather than an instantaneous event at a particular time). The goal of tracing is to help debug execution by observing what happened when, and how long events took. Tracing shows the performance of execution with more granularity than overall runtime.

Tracing requires a design to have at least one function marked for hardware. There is no way for the user to customize what is traced and what is not. All possible trace points are included automatically, including standard HLS-produced hardware accelerators, AXI4-Stream interfaces that serve data to or from an accelerator core, and the accelerator control code in software (stub code). Future releases will support tracing most hardware entities in a design and other designated events in software.

As with application debugging, for event tracing, you must connect a board to the host PC via JTAG for standalone and Ethernet for Linux. The application must be executed by the SDSoC GUI from the host using a debug or run configuration. It cannot be run manually by the user.