Why Are People Using Virtual Platforms?

The embedded software contained in modern electronic products has evolved dramatically in recent years along three dimensions:

  • Scale: The use of embedded software operating on standardized hardware platforms has become increasingly common as the cost of IC hardware production increases. This has driven up the sheer volume of code required for each project, and the effort to produce it.
  • Complexity: The new 64 bit and multi-core processor architectures have been continually improved, providing the necessary performance and capability to meet modern product requirements. However, coding for these new processors has become exponentially more complex than previous generations.
  • Quality: Modern electronic product functionality and quality requirements continue to increase dramatically, suggesting a zero tolerance for post-production bugs. In addition, embedded software has become harder to change as a product moves into production.

In the past, embedded software development and verification was typically performed by running code on a prototype of the hardware platform until the project team was satisfied that a working system had been achieved. This solution is time-consuming, unreliable in terms of quality and hard to use, making it impractical for next generation embedded software development. Similarly to hardware verification 15 years ago, new thinking must be applied if high quality embedded software is to be produced in a timely fashion.

Virtual platforms offer an alternative to hardware prototypes. Software models of the key components in a processor platform are combined to form an executable sub-system. The models must have enough functionality to execute the code correctly, but retain a level of abstraction that provides the performance necessary for rigorous testing.

Benefits of using virtual platforms

The benefits of using Virtual Platforms include:

  • Early Development: Virtual Platforms can usually be made available far more quickly than their hardware equivalent, allowing for embedded software development to commence often months earlier than previously possible, shaving that same amount of time off a product’s time-to-market.
  • Visibility and Controllability: Hardware prototypes offer limited access to view internal registers and signals, and no opportunity to change or control the hardware or software execution. All nodes within well-constructed Virtual Platforms may be viewed and a range of controls applied during execution. This is essential to enable the powerful tooling necessary for effective verification.
  • Performance and Accessibility: Hardware platforms often have limited availability during early production stages, which restrict the amount of testing that can be performed. Virtual Platforms can be replicated on all available compute platforms, allowing concurrent use by individual members across large teams, or many test platforms operating in parallel. Furthermore, if constructed carefully, virtual platforms can execute faster than the actual final hardware, allowing extended testing cycles.

The construction of a virtual platform can vary greatly, and this can have a significant affect on their effectiveness.

Who uses virtual platforms?

If you are feeling pressurized to get your next project delivered and it contains a large software component – then you probably need to look at a methodology that uses virtual platforms.

Virtual platforms are used by software developers as the key development environment to work with.

Virtual platforms are used by integration engineers to speed up hardware / software integration.

Virtual platforms are used by verification engineers to validate that software meets its functional specifications.

Virtual platforms are used by verification engineers to run regressions to ensure that product direction and quality is improving and in the right direction.

Virtual platforms are used by hardware verification engineers to run full software suites as part of the hardware verification effort. This can include using running embedded software to perform part of the hardware verification process.

There is more information on Imperas solutions here.


Currently available Imperas / OVP Virtual Platforms / Virtual Prototypes for Embedded Software Development and Test Automation.

FamilyVirtual Platform / Virtual Prototype
ARM Based Platforms    BareMetalArm7Single BareMetalArmCortexADual BareMetalArmCortexASingle BareMetalArmCortexASingleAngelTrap BareMetalArmCortexMSingle AlteraCycloneV_HPS ArmIntegratorCP ArmVersatileExpress ArmVersatileExpress-CA15 ArmVersatileExpress-CA9 AtmelAT91SAM7 ArmCortexMFreeRTOS ArmCortexMuCOS-II HeteroArmNucleusMIPSLinux FreescaleKinetis60 FreescaleKinetis64 FreescaleVybridVFxx AlteraCycloneV_HPS ArmIntegratorCP ARMv8-A-FMv1 ArmVersatileExpress ArmVersatileExpress-CA15 ArmVersatileExpress-CA9 AtmelAT91SAM7 ArmCortexMFreeRTOS ArmCortexMuCOS-II ArmuKernel iMX6S Zynq_PS
MIPS Based Platforms    BareMetalM14KSingle BareMetalMips32Dual BareMetalMips32Single BareMetalMips64Single BareMetalMipsDual BareMetalMipsSingle HeteroArmNucleusMIPSLinux MipsMalta MipsMalta
Vendor Platforms    BareMetalNios_IISingle AlteraCycloneIII_3c120 AlteraCycloneV_HPS AlteraCycloneIII_3c120 AlteraCycloneV_HPS BareMetalArcSingle BareMetalArm7Single BareMetalArmCortexADual BareMetalArmCortexASingle BareMetalArmCortexASingleAngelTrap BareMetalArmCortexMSingle ArmIntegratorCP ArmVersatileExpress ArmVersatileExpress-CA15 ArmVersatileExpress-CA9 ArmIntegratorCP ARMv8-A-FMv1 ArmVersatileExpress ArmVersatileExpress-CA15 ArmVersatileExpress-CA9 AtmelAT91SAM7 AtmelAT91SAM7 FreescaleKinetis60 FreescaleKinetis64 FreescaleVybridVFxx Or1kUclinux ArmCortexMFreeRTOS ArmCortexMuCOS-II HeteroArmNucleusMIPSLinux ArmCortexMFreeRTOS ArmCortexMuCOS-II ArmuKernel ArmuKernelDual Quad_ArmVersatileExpress-CA15 RiscvRV32FreeRTOS BareMetalM14KSingle BareMetalMips32Dual BareMetalMips32Single BareMetalMips64Single BareMetalMipsDual BareMetalMipsSingle MipsMalta MipsMalta iMX6S BareMetalOr1kSingle BareMetalM16cSingle BareMetalPowerPc32Single BareMetalV850Single ghs-multi RenesasUPD70F3441 ghs-multi RenesasUPD70F3441 virtio FaultInjection Zynq_PL_DualMicroblaze Zynq_PL_NoC Zynq_PL_NoC_node Zynq_PL_NostrumNoC Zynq_PL_NostrumNoC_node Zynq_PL_RO Zynq_PL_SingleMicroblaze Zynq_PL_TTELNoC Zynq_PL_TTELNoC_node XilinxML505 XilinxML505 zc702 zc706 Zynq Zynq_PL_Default Zynq_PS