Simulators and emulators, whether they be software- or hardware-based, tend to focus on a specific area of interest. They can provide detailed simulations of low-level details [Austin et al. 2002] and provide accuracy down to the cycle level or they can simulate the system at a high level [Magnusson et al. 2002] and offer support for a full software stack. Additionally, as the scope of their simulation expands, whether that be through simulating more processor cores or increasing the level of detail at which the simulation is performed, there is an increasing overhead in performance.