Virtual Prototyping – Develop Fast, Integrate Now
The software design process includes many stages, including specifications, coding and integration. Each stage introduces bugs, and can greatly slip product schedules when performed serially. Virtual prototyping enables continuous iterative design and testing via simulation, allowing the developer to find errors in the system design and implementation earlier. By bringing all the system pieces together early in the design cycle, architects and software developers have the most flexibility to adapt their designs and code to changing requirements, and ensure their products meet requirements for schedule, performance and power consumption.
Virtual prototyping offers a proven breakthrough technology that delivers a software model of the hardware for embedded software development long before any hardware is available. Virtual prototyping enables early development of the software and continuous integration of hardware and software during the complete development cycle.
Full-function System Simulation
Although system simulation is not new, software developers had been slow to adopt it because of its low speed, the time required to create the simulation model, the failure to integrate with existing development tools and the cost of the simulation tools.
Setting the proper abstraction-level of the models employed is essential to adapting simulation technology to suit the needs of software developers. Virtual prototypes can span multiple levels of accuracy; they can combine instruction-accurate or cycle-accurate processor models with functional, timed and cycle-accurate peripheral models, employing appropriate bus functional models where needed.
Software developers require transaction-level, register-accurate functional models for early development and integration to achieve the execution speeds required. Instruction-accurate processor models are combined with abstracted busses, where the bus behavior is modeled as abstract read or write memory transactions. Relatively little detail is incorporated in the peripheral models; the register interface combined with the functional behavior suffices. Timing aspects which contribute to the correct system functioning are modeled, for example time ticks delivered to the OS by a real-time clock peripheral. With this level of detail, the model achieves binary compatibility with respect to both program executables and register interfaces.
Engineers doing embedded ROM code, DSP codec, OS driver, hardware abstraction layer, and application development can do over 80% of their coding and testing using a virtual prototype. The remaining 20% of effort requires timing accurate or hardware-in-the-loop development and testing. However, our experience has shown that software created on the virtual prototype runs on the real hardware with near 100% binary compatibility, and results in the total product software build being completed, integrated and tested months earlier than would be possible using hardware alone.
Components
A virtual prototype builds upon the following components, as depicted in Figure 1:
Fast processor models: or instruction-set simulators, connected to commercial software debuggers, enable the loading and execution of the real software on the virtual prototype.
Hardware / peripheral models: standard processor peripherals, busses and logic accelerators can be captured as high-level C/C++ models, and compiled and executed on top of a system simulator to capture the hardware portion of a design.
Co-simulation APIs and backplane: between the processor models and system simulator enables a seamless communication between the hardware and software domain that takes care of the global coordination of the prototype.
Test-Bench / human-machine interface models: like the keyboard and LCD of a cellular phone or PDA, mimic the real appearance of and interaction with the system being designed.

Figure 1: Components of Virtual Prototyping Technology
Virtual Prototyping Benefits
Virtio's virtual prototyping and the virtual platforms developed with it feature the following benefits:
Modeling ease & productivity – Even though virtual prototyping supports the re-use of existing hardware IP models, it also quickly captures application-specific components . This avoids spending resources on prototype creation rather than on the actual software development.
High execution speed – The choice of the appropriate abstraction level combined with optimized simulation technology renders models which feature between 15-20 MIPS per gigahertz of the simulation host. Equipped with this speed, commercial operating-systems including Windows ® CE and Windows Mobile, Linux, Symbian OS and VxWorks ® boot in less than a minute, making the virtual platform useful as a development target in an iterative ‘edit-compile-debug' cycle.
Binary compatible – When employed with the right modeling accuracy, virtual prototyping supports the development of production-quality software, requiring no change when the physical system becomes available. An extra software-porting step moving the software to the hardware target is not required.
Virtualized physical connections - Virtual platforms offers physical connections to the host computer's network, keyboard, mouse, USB, 802.11, PCMCIA card as well as audio to provide software developers access to all the functionality they need to write applications, middleware or device drivers. For example, this allows to connect remote software debugging tools to the platform over a virtual Ethernet connection or to browse the Web when running a web browser app on the target.
Advanced user interfaces & skins – Virtio's platforms model the actual board's touch screen, configuration switches, and product ‘skins'. This is required for application developers to render screen output on the actual screen form factor, and QA engineers needing to test the complete board with its actual user interface.
Visibility & Controllability – Through employing a graphical modeling language that extends the C programming language, virtual platforms offer complete visibility into and controllability of the hardware, as supported by a hardware debugger that supports hardware tracing, single stepping and break-pointing.
Extensible – Virtio's virtual platforms are different from OS emulators because they are not fixed. End-users can easily to incorporate new library and user-created hardware component models into a virtual platform.
Seamless integration with industry-standard software development environments (IDE) – This is essential not to disrupt developers' current workflow. Virtual platforms integrate through standard debug interfaces (like RDI, MDI and GDI) for low-level control or through virtual physical connections for remote debugging solutions, employed typically for application development.
Virtual Platforms Complement Real Hardware
Although virtual prototyping has a number of unique advantages over its physical counterpart, this approach still makes sense even when the physical target hardware is available. Virtual platforms feature unsurpassed flexibility and avoid board or silicon iterations when coping with change or design derivatives. A virtual prototype allows unlimited observability and controllability of the target hardware, not limited to the available pins or JTAG on the prototype. In addition, users can halt and inspect the virtual prototype at any time , generating profiling information on the fly. This is especially useful when designing complex software components touching the hardware-software boundary, like device drivers, or for testing and QA engineers creating their testing plan.
Furthermore, its electronic nature enables for broad and affordable access to software developers allowing, for the first time, a ‘near-hardware' target on every team member's desk. For hardware vendors, its pervasive distribution ability renders a better collaboration with colleagues, partners and customers and makes it an ideal vehicle to put in one's Software Development Kit (SDK), especially when hardware is not available or scarce.
Example – Virtual Platform for OMAP2420
Virtio and Texas Instruments have created the VPOM2420 Virtual Platform, a high-performance software model of the OMAP2420 Software Development Platform (SDP2420). This pre-silicon virtual platform was used to perform the majority of the software development tasks for this new SoC, all prior to silicon availability. The platform emulates all the major SoC subsystems, including the main ARM1136 application processor, system peripherals, on-chip busses, 2D/3D hardware accelerators, Image and Video Acceleration (IVA), display and memory subsystem, camera subsystem, various connectivity peripherals (MMC, serial, Ethernet, etc.) and the C55x DSP subsystem. The platform integrates with several industry-standard tools, include ARM RealView & AXD, Lauterbach TRACE32 and TI's Code Composer Studio, and supports advanced multi-core debugging between the various on-chip cores.

Figure 2: VPOM2420 Virtual Platform (top left), Software Debugger (bottom left) and User Interface Window (right), running EMUZED MPEG4 Software Decoder on Linux OS.)
Summary
Virtual prototyping is a proven method of developing embedded software; compatible with the development tools a developer is familiar with, fast enough to be used in an iterative ‘edit-compile-debug' development cycle and effectively behaving as a real target hardware board.
Virtual prototyping will not offset classical emulation or prototyping techniques - these still have their place in the development cycle, but rather complement them as an early equivalent in the design cycle and promote an early start of the software development cycle, reducing product risk and time-to-market. Design teams have successfully employed virtual platforms as the first verification point of the hardware-software integration, and the system as a whole. Virtual prototypes are flexible and adaptable to board or silicon spins, are easy to deploy, and support the new trend of platform-based design, where the software makes the competitive edge of a product. With this trend accelerating, the need for virtual prototyping continues to increase, turning this innovative technique into an accepted software development practice.
For more information on virtual prototyping and for downloading free evaluation copies of several advanced virtual platforms, contact sales@sdcsystems.com