SimEng uses a configuration file and a program binary to produce a cycle-accurate simulation of a modern processor. These options are passed to SimEng through the following command line arguments:
<simeng_install_directory>/bin/simeng <config file> <binary>
If no arguments are passed to SimEng, default options are used. The default configuration file is tuned to a ThunderX2 processor. The default program binary is defined in
SimEng/src/include/simeng/CoreInstance.hh under the
hex array which contains a set of raw instructions in a hexadecimal format.
Paths to binaries must be in full, and not relative.
Whilst a configuration file can be specified without a program (will use default program), a specified program must be accompanied by a configuration file.
For a successful simulation, SimEng’s output can be split into 4 parts;
- Build Metadata
- A summary of the build options set and general information about the SimEng framework built.
- Workload Output
- All outputs from the supplied workload under simulation.
- Exit Clause
- The reason why the simulation has halted. Most commonly this is due to the invoking of the
exit()system call by the workload under simulation.
- A selection of simulation statistics describing the emergent simulated PMU-style hardware events.
All non-workload outputs from SimEng are prefixed with a tag of the format
[SimEng:ExceptionHandler]). If the output came from the root of the framework, the
Object field is omitted.
SimEng provides several configuration files that parameterise the simulated model. These can be found in
<simeng_repository>/configs and more information about their content can be found here.
The following examples illustrate the use of both the ThunderX2 and A64FX configurations:
- ThunderX2 processor
<simeng_install_directory>/bin/simeng <simeng_repository>/configs/tx2.yaml <binary>
- A64FX processor
<simeng_install_directory>/bin/simeng <simeng_repository>/configs/a64fx.yaml <binary>