
Virtual Prototyping to Innovate Software on Software
Virtual prototyping technology enables the creation of a software model of a
embedded platform that can fully mirror the functionality of an embedded system.
These virtual platforms combine high-speed processor instruction-set simulators
and high-level, fully functional C/C++ models of the hardware building blocks,
to provide a high-level model of the hardware to the software developer.
By integrating a commercial embedded IDE with a virtual platform, the software
developer has a complete software environment to develop and debug software functionality
and the hardware-software interaction. With an execution speed of over a million
instructions per second, the platform is capable of executing a wide range of
application code including operating systems such as Windows® CE, Linux and
VxWorks®. The virtual platform truly enables software engineers to start their
software development as early as possible and to clear problems related to
hardware-software integration up-front, long before the hardware is in place and
without any expensive instrumentation tools.
Virtual Prototyping Components
A virtual platform builds upon the following components, as depicted in
the figure below:
- Fast processor models: or instruction-set simulators, connected to
commercial software debuggers, enable the loading and execution of the
real software on the 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 interface models: like the keyboard and LCD of a
cellular phone or PDA these models mimic the real appearance of, and
interaction with, the system being designed.
Benefits
Virtual prototyping has a number of unique advantages over its physical
counterpart. It features unsurpassed flexibility and avoids board or silicon iterations
when coping with change or design derivatives. It is cost-effective compared to
physical solutions and much easier to distribute and deploy. A major benefit to
software developers is that a virtual platform allows unlimited observability and
controllability of the target hardware, not limited to the available pins on the
prototype. In addition, the virtual platform can be stopped at any time and inspected,
as desired. This is especially useful when designing complex software components
touching the hardware-software boundary, like device drivers.
Virtual platform can effectively contribute to lowering the risk and decreasing the
TTM, through early software development and integration. The major benefits of virtual
system prototyping include:
- Executable system specification: decreases the chance for errors due to
ambiguity in documentation or miscommunication between customers and design
teams.
- High impact marketing tool: a virtual platform can communicate effectively
what IP or platform a vendor is offering, demonstrate exactly the functionality
of what is being offered, and the experience-base being offered.
- Simplifies extended team collaboration: the virtual platform can assume the role of
an effective communication mechanism to reach out to development teams, partners, and existing and potential
customers. Not only does the platform allow for all team members to participate in
the system validation - designing the right system - but also it builds
confidence and lowers the risk of engagement.
- Concurrent hardware/software design: the resulting platforms are capable
of executing application software on top of the virtual hardware at speeds of
millions of cycles per second. Hence, they enable early software development, in
advance of a first silicon prototype, and concurrent with hardware development.
Virtual platforms changes the way embedded software is developed by
providing easy configuration, flexible debug and modification, complete visibility
into both the hardware and software functionality, full controllability, early
hardware-software integration and electronic distribution.
|