What types of Virtual Platforms are there?

Virtual Platforms are really just another name for "simulation of your system". They are basically simulations of your design. There are really two main types of Virtual Platforms, those that are targeted as being close representations of the hardware and those that are targeted for major software development.

Hardware Virtual Platforms / Prototypes

These are normally developed by the hardware teams and reflect the cycle accurate nature of the design. They are often written in proprietary languages and libraries or SystemC. They tend to be complex, low level, cycle accurate, and most importantly extremely slow - often in the 10,000 of cycles per second. They need to be developed with an excellent understanding of the intimate details of the hardware, processor pipelines, architecture and optimizations. Typically they can only be validated against the existence of the hardware and most often are developed by the actual design teams. They often are only available after the design is complete and fabricated and are extremely resource intensive to create and validate.

Hardware Virtual Platforms are used to assist in the design of the system in terms of architectural and performance analysis and tradeoffs and for very low level hardware dependent software and firmware. With performance well under even one Million Instructions Per Second (MIPS), Hardware Virtual Platforms can only be practically used for small amounts of software development. With speeds many orders of magnitude less than real time it takes too much time to boot even the simplest Operating Systems and run simple embedded applications.

Cynics have been heard to state that the real benefit of SystemC behavioral models is to get Verilog simulation performance but without the simulator license cost.

Software Virtual Platforms / Prototypes

In contrast to the above, Software Virtual Prototypes are targeted at the software developer, are Instruction Accurate, have only the needed functionality, and can run blisteringly fast enabling true full system simulation at real time speeds. It is easy to get 100s of MIPS performance in a Multi-Core simulation on a standard desktop PC, with speeds over 1,000 MIPS being possible.

When targeting software development it is not necessary to provide all the functionality of all the components; the only essential requirement is that it is possible to run the production binaries unmodified. This means that the simulations must be fully Instruction Accurate, the processors must be modeled with all interrupts and similar commands correct, and the peripherals and behavioral models are register accurate and provide the appropriate functionality. Often models can be created from databooks and most models are very simple to create. For example, a 32 bit RISC processor should take less than 8 weeks to develop.

One great thing about Software Virtual Platforms is that they enable the building of a simulation of the whole system - including the environment - that the embedded system interacts with, thus enabling a truly representative proxy. Software running in a Software Virtual Platform should not see any difference when running virtual than when running in the real embedded system.

The speed of Software Virtual Platforms allows billions upon billions of lines of code to be run on many processors - with full observability, controllability and many more analysis options than available in the real hardware. In many cases a Software Virtual Platform will run much faster than the real hardware. And of course, in contrast to hardware, software models can be deployed around the world instantly.

To understand the rationale behind Open Virtual Platforms go here.

To read more about the OVP Technology go here.

To see what companies are getting involved with OVP go here.