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.