Definition

Traditional tools and methods for embedded software development are insufficient to address today’s complex embedded systems, especially multicore chips and SoCs, as well as their aggressive development timelines.

A virtual prototype is an executable software model that runs on a host system. It emulates the hardware, including CPU instruction sets, memory maps, registers, and interrupts, at a sufficient level that can be tailored for software development. From a software perspective it is binary-compatible with the hardware being emulated, allowing users to run unmodified binary images of the entire software stack that includes everything from low-level device and firmware to operating systems to middleware and, finally, to the application being developed. It is a complete functional representation of the target system on which to develop software.


How Does Virtual Prototyping Work?

A virtual prototype abstracts away hardware details that are irrelevant to software developers. Using instruction set simulators, the virtual prototype executes embedded target code on standard PCs. System peripherals are modeled at the transaction level with just enough detail to run unmodified software images; for example, register behavior is accurate, whereas timing is not.

The simulation speed is very high to enable the interactive execution of large software stacks, such as applications running on top of AUTOSAR or Android OS. Virtual prototypes use virtual and real-world I/O to connect to real-world interfaces like USB, PCIe, Ethernet, and serial devices.


The Advantages and Benefits of Virtual Prototyping

Early availability, binary compatibility, and high performance enable virtual prototypes to be used to develop, debug, integrate, and validate system software long before actual physical hardware is available, and in many cases even before the chip design is complete.

  • Early Software Development. Virtual prototypes enable early software development, reducing the total time necessary to develop and test new products in what is now known as a “shift left” approach.
  • Hardware/Software Integration. From a software perspective, virtual prototypes allow the hardware/software integration that has traditionally relied on FPGA prototypes to start earlier.
  • Global Development. As no physical hardware is required, virtual prototypes can be shared and accessed among teams globally, increasing software team development efficiency and throughput.
  • Debuggability. Unique, correlated visibility of system software and hardware; access to hardware internals for visibility and fault injection; and compatibility with software design paradigms such as CI and TDD facilitate debugging.
  • Compatibility. Can be used with your existing set of software tools – compilers, debuggers, and simulators.
Virtual Prototyping Experience

Experience Synopsys’ best-selling virtual prototyping software in action with easy, on-demand access from your web browser.

Try it Today


When to Use Virtual Prototyping?

 

Virtual prototypes are best deployed as soon as possible in the development cycle, such as during:

  • Debugging and test
  • Validation and verification 
  • Regression set-ups
  • Hardware prototyping for a speed boost

Virtual Prototyping and Synopsys

Synopsys offers the full spectrum of virtual prototyping solutions, including Platform Architect™ for early architecture analysis,  Virtualizer™ for creation of virtual prototypes for software development with the industry's largest portfolio of transaction-level models (TLMs), ready-to-use Virtualizer Development Kits (VDKs) for many automotive platforms, as well as turn-key and ramp-up services to ensure project success.

Continue Reading