Virtualized Software Development incorporates the use of virtual target hardware for software and system development.
What is Virtualized Software Development?
Virtualized Software Development (VSD) is software development without the use of, or
need of, the target hardware platform that the software will eventually run on. For example, if software is being developed for a target system that contains a PowerPC processor, an Ethernet controller, RapidIO, a UART and other peripherals, each developer of the software team would typically need this target hardware configuration in order to debug and test their software. When target hardware is in short supply, or not available,
this obviously becomes a bottleneck for the software development team.

With virtualized software development, the target hardware is virtualized (i.e., simulated)
and runs on each developer’s development workstation. To the target software, the
virtualized target hardware behaves exactly the same as the physical target hardware.

Target application code, the real-time operating system, drivers, firmware, all can be debugged, tested, and executed using the virtualized target hardware instead of
the physical target hardware. Furthermore, a virtualized software development environment allows one to run the exact same binary that they would run on the physical target. This means there is no need for RTOS/OS API abstraction layers, stubbed out drivers or firmware, nor multiple build scripts that build the software one way for production environment and another way for a stubbed-out environment.
To accomplish this, a virtualized software development environment provides the following things:
- an instruction set simulator for the microprocessor(s) in the target hardware;
- behavioral simulation of all devices in the target hardware that the target software
interacts with; - connections between, and among, simulated targets and the real-world (e.g., networks like Ethernet, MIL-STD-1553, ARINC 429, SpaceWire, FireWire, USB, ATM, and other mechanisms like disk images, memory images, etc.); and
- the ability to use the same tools (e.g., compilers, linkers, debuggers, IDEs, and RTOSs) and processes that the software developer would use with the physical hardware.
Furthermore, to be truly useful for software development and testing of the entire target
software stack, a virtualized software development platform must be fast enough to execute the target software. This is what differentiates a virtualized software development platform from simulation tools provided by the electronic design automation (EDA) industry. These tools, while extremely accurate from a hardware implementation perspective, often are not fast enough to run the entire target software stack.
Learn more
Learn more about how virtualization can help you.