Crumbs: Utilizing Functional Programming for Hardware Trace Data Analysis

As modern system-on-chip devices are getting more complex, so does their software. Luckily, the observational capabilities of such devices has also increased by providing interfaces for non-intrusive hardware tracing. With these tracing facilities, it is possible to record the device’s state over time. The acquired trace data is very helpful for debugging and system validation. However, it is tedious to analyze trace data by hand as it consists of numerous trace messages without high-level information of the system. Due to this hardware-related information, we need better tools and descriptions for its analysis. Therefore, we propose Crumbs, a formalism that can be used to specify trace data and algorithms for trace data analysis. Moreover, it can easily be translated to a functional programming language, providing an easy execution of the formally designed algorithm. The paper is accompanied by three different use cases designed with Crumbs and implemented in Haskell.