Simics® QSP Virtual Platform

What is Simics®?

The Simics simulator is the functional virtual platform technology used in Intel® Integrated Simulation Infrastructure with Modeling (Intel® ISIM). The Simics simulator has been designed to let virtual platforms run target binaries in a fast, deterministic, and controllable way. This provides an ideal environment for early software development and debugging, analysis, tracing, and instrumentation of software running on the platform.

Here is an interesting article for further reading about Simics: Simics® 6 A Deeper Look at How Software Uses Hardware

Note

In this guide, we will focus on how to boot up on Simics Quick-Start Platform (QSP).
The QSP is a simple model of a standard PC, and is part of the Simics base product.

Setting up Simics® Simulator

Please head over to this link to understand and setup Simics® Simulator:

Simics® Simulator Public Release

Please refer to the guide bwlow to get your Simics Simulator setting up!

Simics® Simulator Installation and Get Started

Here is a snapshot of Simics Simulator after setting up:

../_images/simics6simulator.jpg

Building SBL for Simics QSP

Time to get ready with SBL!

Note

Before trying on SBL, you are strongly recommended to at least go through the Tutorial section in Simics Simulator to get yourself familiarized with it.

Please refer to Get Started section here

To build SBL for Simics QSP (it is the same image as QEMU, SBL will auto detect the platform at runtime):

python BuildLoader.py build qemu

Note

QSP SBL shares the same image as QEMU SBL, SBL will auto detect the platform at runtime via Host Bridge Device ID.

The output images are generated under Outputs/qemu/SlimBootloader.bin directory.

Note

QSP SBL does not require stitching the SBL into an IFWI.

Boot to Shell on QSP Simics

Start Simics Simulator. You should be able to see the Simics Control Panel pop up:

../_images/simicscontrol.jpg

Now proceed to load SlimBootloader.bin using Simics CLI method (in Simics terminal):

simics> run-command-file targets/qsp-x86/firststeps.simics bios_image = "/home/(SlimBootloader.bin path)"

A graphics console and a serial console will pop up:

../_images/simicsloadsbl.jpg

Then ‘turn on’ the platform:

simics> run

Booted to SBL Shell!:

../_images/sblbootonsimicsqsp.jpg

A snapshot of Console outputs:

============= Intel Slim Bootloader STAGE1A =============
SBID: SB_QEMU
ISVN: 001
IVER: 000.005.001.001.00581
SVER: 8BB52DAACA47D50A
FDBG: BLD(D IA32) FSP(R)
FSPV: ID($QEMFSP$) REV(00001000)
Loader global data @ 0x00001D44
Run  STAGE1A @ 0x00070000
Load STAGE1B @ 0x00040000
HASH verification for usage (0x00000001) with Hash Alg (0x2): Success

============= Intel Slim Bootloader STAGE1B =============
Host Bridge Device ID:0x3400
Board ID:0x2 - Loading Simics QSP!
Loading Component KEYH:_HS_
Registering container KEYH
HASH verification for usage (0x00000100) with Hash Alg (0x2): Success
SignType (0x2) SignSize (0x180)  SignHashAlg (0x2)
RSA verification for usage (0x00000100): Success
HASH verification for usage (0x00000000) with Hash Alg (0x2): Success
Append public key hash into store: Success