The efficient implementation of an application as an embedded hardware/software system requires the design of an adequate hardware architecture and well-adapted and optimized software including choosing the right runtime system and appropriate programming model.
For complex applications the needed design space exploration is rather complex and requires in-depth analysis of the application and its implementation alternatives. Profiling tools provide this information and aid during design, optimization and scheduling of hardware and software.
Besides the arithmetical demands of the application, memory accesses can have a huge influence on performance and power consumption. This is especially the case for data intensive applications, such as multimedia systems, due to the huge amount of data to be transferred in these applications. The problem is even increased if the given data bandwidth is not used efficiently.
The next challenge in state of the art embedded system design arises from the massive use of heterogeneous multi processor architectures with a number of different programming models ranging from standard RISC instruction sets to application specific processor cores combined in one system. This gives a multidimensional design space that needs to be carefully explored and tuned to achieve the best performance vs. power vs. area/complexity tradeoff.
Our research in this field aims at the development of tools to support the designer in an early design stage to choose the right system architecture.
NoCTrace implements a tracing methodology for virtual SystemC platform simulation models to be used during the HW/SW co-design and co-optimization phase. The methodology works non-intrusive and does not require to instrument the platform simulation model. Instead the tracing has been embedded into the SystemC simulation kernel and is controlled by an automatic design analysis, which combines a dynamic SystemC design analysis at runtime with a static debug symbol analysis.
Besides the functionality to record and analyze profiling data, the tool provides a comprehensive GUI with the ability to visualize profiling data.
The tool has been partly developed in the course of the FP7 funded european project 2Parma and can be downloaded for evaluation.
MemTrace is a non-intrusive profiler, which analyzes the memory accesses and real time performance of an application, without the need of instrumentation code limited to a single processor core embedded system. The analysis is controlled by information about variables and functions in the user application, which is automatically extracted from the application.
Furthermore, the user can specify the system parameters, e.g. the processor type and the memory system. During the analysis, MemTrace utilizes the ARM instruction set simulator ARMulator for executing the application. The ARMulator provides Memtrace with the information required for the analysis, e.g. the program counter, the clock cycle counter and the memory accesses. Memtrace creates detailed results on memory accesses and timing for each function and variable in the code.
MemTrace is the ancestor of the NoCTrace tool and methodology.