Simics is a flexible, scalable, and high-performance full-system simulator.
Virtutech Simics
Simics, Virtutech’s flagship product, provides software and system developers with a virtual version of their target hardware. The virtual target hardware operates completely within a virtualized environment running on a standard laptop or desktop PC, without needing any special hardware. The virtual hardware runs the same binary software as the physical target system, including firmware, device drivers, operating system, middleware stacks, and the application software. Software for the target machine runs unmodified on the virtual hardware, at a very high level of performance.
Besides being able to simulate target microprocessors such as PowerPC, x86, ARM, and MIPS, Simics is capable of simulating any digital device and communication bus. Simics is scalable - being able to simulate anything from a simple CPU + memory, to a complex SoC, to a custom board, to a rack of multiple boards, or a network of many computer systems.
Debugging and testing efforts are simplified through advanced capabilities normally not available with physical hardware: non-invasive debugging and tracing, saving and later resuming execution, deterministic execution and reexecution of test cases, forward and reverse execution, the ability to examine, control, and break on any internal device and to inject faults, and the ability to save system state and later replay it. Simics also provides the capability to script complex system configurations and tests. Reproducing a particular target system setup is a matter of running a script, without any need to locate or configure hardware boards. Simics runs unmodified production-quality binaries and can be used with 3rd party software development tools.
Simics Key Capabilities
- A complete functional virtual platform with fidelity and performance
- Runs unchanged binaries—drivers, BSP, software stack and applications
- Use the same build settings and compilers as the physical target hardware
- Make custom virtual platforms broadly available
- Provides true reverse execution and debugging
- Deterministic execution means that bugs are trivially reproducible and easier to find
- Create scripts for hardware fault injection during testing
- Supports single, multicore, multiple processor, and multiple machine configurations (racks, clusters, and distributed systems)
- Simplifies debugging of multicore and distributed systems
- Supports networks of arbitrary topology and networks of networks