Utilizing Virtual Platforms for Embedded Software Development

The cost of creating custom hardware for electronic products has escalated to a level out of proportion to the returns on many applications. Embedded software running on efficient, low power processors not only provides a viable alternative, but presents significant functionality and development advantages to the design team. The advent of multicore devices has further improved the performance characteristics of this solution.

This has created an inevitable trend toward the use of general-purpose processor-based platforms with custom functionality realized in embedded software for many electronic product designs. The amount and complexity of embedded code being written has increased significantly, and when combined with extended performance and quality requirements, has placed new emphasis on improved software development processes.

The traditional method of embedded software development, debugging the code directly on the hardware prototype of the system, has become outdated. Driven both by a shortage of time between prototype availability and product ship, as well as multicore processor and software architecture complexities, companies have turned to software tools to improve development. The virtual platform represents one of the most important developments in the world of embedded computing.

In the chip design business, no company would consider building a chip without using simulation first. This is quickly becoming the trend in the development of embedded software with many of the enlightened, leading edge companies developing their software exclusively using virtual platforms (simulation).  Some have gone so far as to say they will not ship embedded software products that have not been validated using a virtual platform based environment.

A virtual platform is a software representation of the hardware platform, modeled at a high enough level of abstraction where software execution may be evaluated without the complexities of low-level hardware. The platform can execute the entire software stack, including the OS, on an Instruction Accurate (IA) model of the processor, which in turn is simulated on a host computer.


This virtual platform approach has a number of significant benefits. For example:

  • The virtual platform can often be created far more quickly than prototype hardware, allowing embedded software development to commence earlier, sometimes by many months.
  •  A virtual platform may be replicated multiple times across many machines, eliminating limits formerly created by hardware prototype availability. Engineers can have their own systems and test capacity can be increased dramatically.
  • The visibility and controllability of a software virtual platform is inevitably much greater than the hardware equivalent, which leads to the potential of more sophisticated tooling.
  • With the right technology, the performance of the virtual platform can be greater than the actual final hardware, again increasing test capacity.

The first generation of virtual platforms became a learning experience for the industry and, although useful, lacked the performance and advanced tooling required to meet the changing needs of the development teams. Nevertheless, the availability and use of a Virtual Platform early in the embedded software development process can enable projects to start and finish sooner, as shown below:

Using virtual platforms allows early start to software development

Imperas has turned the traditional development approach on its head

Imperas has taken a new approach to virtual platforms. The notion of open source modeling and infrastructure was retained for easy open platform creation, and this was combined with industrial strength simulation technology and advanced development tooling. Imperas has created a significant library of high-performance processor models as well as reference platforms and peripherals.

Imperas has turned the common architecture where the development environment is a separate entity to the platform model on its head. New technology developments have allowed the company to include the development environment tooling directly into the models running on the simulator. This has allowed for further performance enhancements and ease of use.

With the platform Developer products (C*Dev/S*DEV/M*DEV) and the Multicore Software Design Kit (M*SDK), highly efficient virtual platforms may be created in a few days (if not already available), and then used in a powerful embedded software development environment set up to enable the highest quality embedded software to be generated with the most efficient engineering schedules.