  To find the cause of a functional or non-functional defect (bug) in software
running on a multi-processor System-on-Chip (MPSoC), developers need insight
into the chip. Tracing systems provide this insight non-intrusively, at the
cost of high off-chip bandwidth requirements. This I/O bottleneck limits the
observability, a problem becoming more severe as more functionality is
integrated on-chip. In this paper, we present DiaSys, an MPSoC diagnosis system
with the potential to replace today's tracing systems. Its main idea is to
partially execute the analysis of observation data on the chip; in consequence,
more information and less data is sent to the attached host PC. With DiaSys,
the data analysis is performed by the diagnosis application. Its input are
events, which are generated by observation hardware at interesting points in
the program execution (like a function call). Its outputs are events with
higher information density. The event transformation is modeled as dataflow
application. For execution, it is mapped in part to dedicated and distributed
on-chip components, and in part to the host PC; the off-chip boundary is
transparent to the developer of the diagnosis application. We implement DiaSys
as extension to an existing SoC with four tiles and a mesh network running on
an FPGA platform. Two usage examples confirm that DiaSys is flexible enough to
replace a tracing system, while significantly lowering the off-chip bandwidth
requirements. In our examples, the debugging of a race-condition bug, and the
creation of a lock contention profile, we see a reduction of trace bandwidth of
more than three orders of magnitude, compared to a full trace created by a
common tracing system.
