Virtualized Systems Development (VSD) enables “impossible” approaches to the development of electronic systems. The benefits extend across nearly every phase of product life cycle ” all the way from definition, through development and finally deployment.
With VSD, a hands-on investigation of candidate system designs is possible, hardware and software teams can collaborate in new ways from the outset of a project, bugs can be found more quickly than ever, system integration can start much earlier, and customer support and training programs are more effective and easily delivered.
Why adopt VSD?
In just a few years, electronic systems have become exponentially more complex. Now, even comparatively simple designs include multiple processors, a mixture of CPU types, DSPs, ASICs, FPGAs and other devices. Complementing this diverse combination of hardware, today's systems employ a variety of operating systems and application stacks that until recently would not have been combined within a single product or solution.
Unfortunately however, as these systems have grown in complexity, the development tools and processes that were refined when single processors and basic client/server architectures were the rule, have not kept pace.
As a result, today's system developers are challenged to find new ways to define system architectures, to develop and integrate millions of lines of code, and to deploy such complex systems. They must do this in ways that reduce both risk and schedule while simultaneously resulting in a product that is high quality, easy to support and maintain.
The introduction of VSD into the work flow of an electronic project can benefit everyone involved in product definition, development and deployment. These benefits are summarized in Table 1(PDF) according to the position type and role.
What makes a virtual platform so powerful?
“Virtual platforms” are best described as functional models of physical hardware. They are used as the target for software development. A virtual platform can represent a basic board with a processor and memory, or a complete system made up of network-connected boards, chassis and racks.
The accuracy and fidelity of the model is such that the target software is unable to distinguish the virtual platform from physical hardware; it runs the same binaries and behaves exactly like physical hardware.
When these high fidelity virtual platforms are combined with a feature-rich simulation environment, developers can define, develop, deploy and integrate target-specific firmware, operating system kernel and device drivers, and application and communication stacks even while the hardware design and production progresses in parallel.
The use of virtual platforms provides many benefits to the product life cycle resulting from new techniques that become available to developers.
Virtual System Flexibility. A virtual platform will evolve incrementally, aiding software developers all the way from the model's origins as a basic platform, to the final full-system model. It is important for developers to remember that a complete model of the system is no more important to specific software development tasks than a CD player is required to check the brakes on your car.
Often, devices such as specific IO, ASICs, or a specific memory implementation can be simply omitted, stubbed out, or replaced by off-the-shelf models that provide similar functionality.
Executable Specifications. With VSD, hardware and software teams are able to experiment with new system architectures by creating and networking together several virtual platforms. This virtual system can then be used to run real software loads for the purpose of prototyping and design concept testing during the architecture or systems definition phase of a project.
Simplified Build Environments. Because the virtual platform runs the same software binaries that will be run by the physical system, there is no need for a special cross compiling, simulation or development builds. This aspect of VSD can significantly reduce the number of code build variants for a project, reducing maintenance costs and the risk of errors from inconsistent builds.
Re-usable Technology Assets. Today, even the smallest consumer devices are comprised of a diverse combination of processor cores and devices. Support for this level of complexity requires that the underlying simulation infrastructure allow building-block model construction. These building blocks can be re-used, so with VSD, every individual simulation component and platform model (processor cores, devices, custom ASICs, application-specific FPGAs, board or netwok models) becomes a reusable company asset.
Is VSD a good match for your organization?
The first step in analyzing whether your organization can benefit from VSD is as shown in Table 2 (PDF), to list each of the challenges facing your development teams, product and engineering manager, marketing and support teams.
Identify Risk and (Opportunity) Cost. Based on the challenges identified in the first step, managers often analyze the risk and cost of such challenges. Costs should include direct costs as well as opportunity costs. Key areas that have been identified by VSD adopters are shown in Table 3 below :
|Table 3. Risks and challenges vs costs and side effects|
How can organizations implement VSD?
VSD introduces some fundamental process change into existing product life cycle work flows. As a result, its adoption is not an overnight process. It may take some time for the engineering, marketing and support teams to fully realize what can be done, and how it should be done in order to gain the benefits of VSD. Instead, the adoption of VSD should be an evolving process. As it is used, more models are created, developers become more familiar with what can be done and the resultant value and benefit of VSD grows too.
Identify Long-Term Organizational Goals for VSD. The checklist in Table 4 below can be used to help prioritize some of your long-term organizational goals and hopes for VSD. It can also be used to help assess the features and capabilities of candidate solutions.
|Table 4. Long-Term Organizational Goals|
Identify Short-Term Opportunities for VSD. As VSD represents a significant change to the way that engineering, marketing and sales teams have done business, it can be challenging to introduce into an organization. Consequently, it is best to introduce VSD into projects which can immediately benefit from its features and capabilities.
Identify VSD-candidate projects. Often, the projects that offer the easiest path for the introduction of VSD are within the system architecture or software development phases.
However, projects in the deployment phase can also be easy supported if they are based on commodity hardware for which an off-the-shelf model exists or if those models can be easily produced. If the hardware used is sufficiently expensive or hard to configure, creating new VSD models will be profitable even for quite custom hardware setups.
Identify the intersection of physical and virtual platforms. Because it takes some training and effort to create models, those projects that can benefit immediately from VSD will have a good correlation between the physical hardware platform and the available virtual platforms or component models.
Indentify problematic projects or programs. Projects that have progressed far into the software development and even deployment phases have used VSD to capture and resolve bugs that had evaded resolution for months. VSD also provides developers and testers with increased access to hardware so that they can put more resources towards problem solving.
Selecting the simulation-model infrastructure
The simulation-model infrastructure is that software which manages and runs virtual platforms. Some might consider it to be a simulation engine or the simulator itself. Many features and characteristics of this infrastructure are critical to enabling the full benefits of VSD. The model infrastructure must contain key high-level system features, including:
* Fast performance ” the system must be fast enough to run the target software fast enough to satisfy software developers who are used to running software on physical hardware.
Speed is one thing that differentiates a VSD platform from those simulation tools provided by the electronic design automation (EDA) industry. Although EDA tools are extremely accurate from a hardware perspective and they can be used to develop low level initialization and test code, they are too slow to be practical for OS, application or systems software.
* Scalability and High Fidelity (accuracy) ” virtual models must be able to scale from a simple register model to one that precisely duplicates the functionality of the physical hardware component must be supported.
* Host Scalable “ in order to retain adequate performance, the model infrastructure must be capable of utilizing multiple hosts for work sharing on large models.
* Extensive Off-the-Shelf Model Selection ” given the complexity of model development, the selected solution must not only support the ability to run complex, mixed-architecture systems, but it should also provide a range of off-the-shelf models across the various CPU, DSP, and network options. These models can be run standalone, or they can be used as the basis for custom model development.
Technology IP Re-use
Adoption of VSD will suffer if the solution is too difficult to use or if it becomes too difficult to enable different engineering teams to collaborate with their resultant model IP.
* Import of standard model and register languages – e.g. The SPIRIT Consortium's IP-XACT and SystemC TLM-2.0-using models.
* Support for multiple modeling languages – provides flexibility and inter-operational capability.
* Multiple levels of abstraction – the level of required functionality for most model components will vary according to the software task to be completed. The model infrastructure must support everything from omission or simplification of devices all the way up to providing full functionality.
* Model scalability – the ability to create larger, more complex models from a set of smaller subcomponent models – engineering teams must be able to re-use models developed by other teams.
* Interface with physical hardware – the ability to interface virtual platforms with physical hardware via standard communication interfaces or RTL emulators expands use-cases of virtual platforms.
Easy creation of large models from smaller models – the use of basic scripting language to create complex models – modeling some components can be difficult. The creation of complex platforms that incorporate these models should be much easier.
Comprehensive Silicon/Electronic System Support
In order to enjoy the full benefit of VSD, a number of capabilities for the modeling of real-world systems are required:
* Modular and flexible – allow new complex models to be created from smaller subcomponents.
* Multicore and ASIC support – complex systems use complex processors.
* Mixed processor architectures – e.g. Power Architecture+ DSP + x86 + MIPS.
* Mixed Operating System models – e.g. Hypervisor + Linux + RTOS + bare metal.
* Buses and communications networks – e.g. Ethernet, PCI, PCI-Express, RapidIO, MIL-STD-1553, ARINC 429, SpaceWire, FireWire, USB, ATM, serial.
* Virtual to Physical world connection – allows virtual platforms to communicate with physical platforms.
Features for the Software Developer
Features that must be available to developers in order to expedite their development efforts include:
* No software development tool changes – developers should be able to use the same software development tools (e.g., compilers, linkers, debuggers and IDEs,) and development processes that are used with physical hardware.
* Whole system freeze – allows debugging in a system-inactive state.
* Repeatability – allows easy replication of bugs and simulation results across teams, time, and developers, eases collaboration on specific software problems by multiple developers.
* Checkpoints and Snapshots – saves and restores the full system state for future use, save time by creating a particular hardware-software setup once for a large group of developers.
* Advanced debugging – reverse execution, hardware and software breakpoints.
* Full hardware visibility and control – allows developers to see registers and data that would be invisible on physical hardware.
* Script driven automation – for testing and validation.
Building models and virtual platforms for VSD
Just like physical hardware, high fidelity models can be large and complex. When an ASIC, SoC or FPGA model is properly designed, each can be used far beyond the narrow use case for which they had been initially created. When it is poorly designed, it can limit the features and benefits available with VSD.
In order to ensure maximum performance and re-use of virtual models, model builders should follow some standard practices:
* Do not over-model – engineers should evaluate the system from a software functional perspective in order to determine which registers and functions should be modeled.
* Ensure Checkpointing and Reversibility – by ensuring that every model can be checkpointed, your engineers will be able to easily revert to a known system state. Engineering teams will be able to collaborate by sharing that system state with each other. With some additional care, models can also support reverse execution, thus providing a key benefit to software developers during the debug phase.
* Use Common Modeling Interfaces – the simulation infrastructure should offer standard APIs for communications between different model components. When possible, each modeled component, no matter how large or small, should adhere to these standards. The goal is to make sure that all models created can be seamlessly integrated into larger platforms, racks or systems.
* Create Stand-Alone Models – by creating fairly fine-grained stand-alone models that are designed to be combined into larger models, developers ensure that their technology IP is re-usable across many different projects and products in the future. It also ensures that the model itself is easier to debug.
VSD complements traditional hardware-centric development to offer very large benefits in terms of developer efficiency, software quality, and reduction in delivery schedules.
These benefits can only be exploited through the combination of a fully-featured simulation infrastructure with a full set of models and with the ability to create custom models. As more models, use cases and developer experience build, the benefit, value and ROI of VSD adoption builds too.
David Beal is a technical marketing manager at Virtutech, Inc..