NISTT: A Non-Intrusive SystemC-TLM 2.0 Tracing Tool
Nils Bosbach, Lukas Jünger, Jan Moritz Joseph, Rainer Leupers
TL;DR
The paper tackles profiling complexity in SystemC-tlm-2.0 virtual platforms by introducing NISTT, a non-intrusive tracing tool that requires no access to source code or debug symbols. It achieves this by using LD_PRELOAD to intercept SystemC API calls, recording wait, notify, and timing data, and storing results in a database for post-processing, including a real-time factor metric $RTF = rac{ riangle t_{sim}}{ riangle t_{real}}$. The authors validate the approach with a case study tracing the Linux boot on a vcml-based ARMv8 virtual platform, demonstrating meaningful insights into scheduling, peripheral interactions, and idle behavior, while showing overhead dominated by data volume rather than intrusion. The work demonstrates that non-intrusive tracing can yield deep ESL-simulation insights without modifying the target simulation, and it can be extended to cover additional SystemC functions as needed.
Abstract
The increasing complexity of systems-on-a-chip requires the continuous development of electronic design automation tools. Nowadays, the simulation of systems-on-a-chip using virtual platforms is common. Virtual platforms enable hardware/software co-design to shorten the time to market, offer insights into the models, and allow debugging of the simulated hardware. Profiling tools are required to improve the usability of virtual platforms. During simulation, these tools capture data that are evaluated afterward. Those data can reveal information about the simulation itself and the software executed on the platform. This work presents the tracing tool NISTT that can profile SystemC-TLM-2.0-based virtual platforms. NISTT is implemented in a completely non-intrusive way. That means no changes in the simulation are needed, the source code of the simulation is not required, and the traced simulation does not need to contain debug symbols. The standardized SystemC application programming interface guarantees the compatibility of NISTT with other simulations. The strengths of NISTT are demonstrated in a case study. Here, NISTT is connected to a virtual platform and traces the boot process of Linux. After the simulation, the database created by NISTT is evaluated, and the results are visualized. Furthermore, the overhead of NISTT is quantified. It is shown that NISTT has only a minor influence on the overall simulation performance.
