\begin{figure}[] \centering \includegraphics[width=\textwidth]{./media/eval/eval_idea.pdf} \caption[Mapping validation concept]{The general idea for the validation of the software event to \gls{btf} event mapping. A model that represents a certain system is created. Based on the model, a simulation, and a hardware trace are generated. By comparing those traces errors in the transformation process can be detected.} \label{fig:eval_idea} \end{figure} In this chapter the software to system mappings are validated as depicted in \autoref{fig:eval_idea}. A timing model of an application is created and a \gls{btf} trace is generated from this model via discrete event simulation. The simulated trace represents the expected result for the trace recorded from hardware. Next, C code is generated from the model. The code is compiled, executed on hardware, and the runtime behavior is recorded via hardware tracing. The resulting software level trace is transformed to system level according to the respective mappings. The \gls{btf} trace recorded from hardware is then compared to the simulated trace. Since both traces result from the same timing model they are expected to represent the same system behavior. Nevertheless, two kinds of deviations are expected. Firstly, timestamps of otherwise identical events might differ. This is unavoidable because simulation is an abstraction of reality and is not capable of taking all subtle effects influencing the timing on real hardware into consideration. Secondly, events may indicate a different software behavior. For example, a task starts a runnable in one trace but not in the other. In this case, the deviation must be examined because it might point to a mapping error.