Virtual Platform

What is a Virtual Platform?

A virtual platform is a functional representation of a digital system written entirely in software. This software is written to implement the modeled platform’s specification rather than the detailed implementation of the circuits at HDL or RTL levels. Virtual platforms are superficially similar to virtual machines used in IT organizations. The key distinguishing feature is that the latter are optimized for the production use of existing software. In contrast, virtual platforms are optimized to support design verification and software development. The creation of a virtual platform is sometimes referred to as virtual prototyping, as that term has different meanings across the industry, Cadence primarily uses the term virtual platform.

In hardware design, you cannot make changes to the design to fix issues once the final silicon has been taped out. This is a major problem because designing, developing, and manufacturing a digital circuit costs millions of dollars. A single hardware bug could cost your company millions or even billions of dollars. For example, Intel lost market share and reputation because of a series of bugs in their processors. These bugs, if exploited, could pose a grave security threat to anyone using Intel CPUs. Intel had to issue a software patch that slowed affected processors down dramatically. Users had to choose between having a faster computer or a less secure one.

Another challenge with hardware design is that you cannot start working on the software is critical to the success of the hardware if the hardware itself is not finished. This is where virtual platforms comes into play. Instead of starting software development only after the first batches of silicon have been produced, you can begin as soon as your design specifications have been finalized. This enables you to develop software and hardware simultaneously, reducing the time spent in integration and bring up that can cause delays to product release. This is because the virtual platform is derived from the same specification the hardware designer uses rather than from the hardware design itself. Thus, the software can be run on the same virtual platform that the hardware can be verified against to ensure they implement the same specification definition. However, the virtual platform doesn't have the same detail as RTL, so it can be created more quickly. You can start your software development earlier in the process than waiting for the design to be complete or for the design to be manufactured.

Virtual Platforms are often compared to simulations of the design used in verification. A virtual platform is generally substantially faster than simulation but won’t be faster than the hardware for a high-end design.

Smartphone software developers are just one example of those who benefit from virtual platforms. If you are creating your own Android distribution for a new smartphone, it makes sense to start working on software as early as possible. In addition to the early start a virtual platform allows you to co-develop the hardware and software, ensuring better performance and functionality when the hardware is ready for release. The same applies to people in video game console development and other areas where high-performance software runs on an embedded platform.

 

Why is a virtual platform important?

An example of where virtual platforms are valuable is found in the world of GPUs. One of the biggest problems in the GPU world is day one driver quality. Buggy drivers are typically a significant reason certain users choose one manufacturer over another. Thus, having good software on release day can be the difference between a sale and losing market share. A virtual platform allows driver developers to test and optimize their software not only before product launch, but also before product manufacture. With the competitiveness of the electronics market, it is crucial to get every advantage possible.

Using a virtual platform is one of the easiest and fastest ways to boot up software code early in the product development process. Most other options for early bring up, including simulating or emulating a hardware product, are both difficult and quite slow. Even with the fastest workstations, you won't have the computing power to run application software on simulation before your design is manufactured. While emulation is much faster it requires the design to be substantially mature and thus delaying bug discovery until it is too late to fix before product launch. Without a virtual platform the low performance of other options can mean that teams creating software for the product must wait for a prototype starting the development process. For products with complex software this can be too late to achieve high quality before launch and people buy the product for the quality of the software. Additionally, starting software development much earlier during the process is an excellent way of testing key design choices in a system context. This early start to software development makes optimizing your software and hardware design possible before the product reaches the market rather than part of a post launch update.

A virtual platform allows you to create hybrid platforms that combine elements of the virtual platform with simulation, emulation or FPGA prototyping to get even more functionality and flexibility. This hybrid approach addresses the limitation of virtual platforms to address situations where detailed performance accuracy is necessary to create and debug complex software before manufacturing the hardware. Software and hardware engineers can learn how the potential design would work in the real world. Just as a virtual platform enables software engineers to learn how complex code will run on the device, hybrid platforms enable hardware engineers to learn how circuit implementations work with the software and the rest of the design. They can then iterate and update without having to build many prototype versions. This is extra valuable in today’s world of global supply chains where shipping a hardware device to programmers worldwide can quickly get expensive. With no hardware to ship, teams worldwide can quickly get the virtual or hybrid platform up and running quickly without the risk of shipping and customers delays. It also makes it easy for them to debug their own code and determine whether problems are from them or the hardware.

Furthermore, debugging is much easier when using a virtual platform than even having the actual hardware. You can debug to a level you never could when working with real hardware. Therefore, understanding whether your software works well will be more thorough without having access to the actual hardware your software is supposed to run on. It makes it easy to create a set of tools for everyone that is compatible with every configuration.

How does a virtual platform work?

A key aspect of a virtual platform is that it will run the same software images the final hardware implementation. The peripherals that the system uses are modeled so that the hardware system and the virtual prototype will function the same. Additionally, virtual platforms have the flexibility to connect to both RTL, in simulation, emulation, or FPGA based prototyping, and to real-world devices. The flexibility allows the virtual platform to support verification of the software running on the platform and of any connected RTL.

In order to run real world software for meaningful amounts of time a virtual platform must be of high performance, this is typically achieved using the SystemC programming language. In order to achieve this performance and to meet the gola of being ready before the RTL the SystemC is written such that it doesn't go into the details of how the hardware operates. Therefore, instead of writing code at an HDL or RTL level to implement certain functionality, you focus on implementing the specifications. For example, when creating a virtual prototype of a certain integrated circuit you would implement the same interface including the number of pins, but you wouldn’t implement how that functionality is implemented inside the circuit. Instead you use standard software techniques to achieve the same function as the hardware implementation. One common example is a complex hardware accelerator for a software function. In a virtual platform, simply call the software function that is being accelerated rather than trying to devise a clever way of implementing it in hardware.

Ultimately, as you have the same inputs, outputs, and storage of state, your virtual platform is useful for verification of correct function and, you get higher performance than the RTL by not having all the detail.

Virtual platform with Cadence

Cadence understands the importance of deploying virtual platform on a massive scale as early in the hardware design process as possible. That is why Cadence offers the Helium Virtual and Hybrid Studio software solution that gives you the power to create the high performance virtual and hybrid platforms you need.

This tool allows you to create powerful pre-silicon virtual platforms of your SOC platform in an easy-to-use GUI. These virtual platforms enable software development and hardware and software co-verification through integration with Cadence Xcelium, Palladium, and Protium verification engines. A key to ease of use is a broad collection of industry relevant reference platforms with the latest Android or Linux images preloaded. You can also create from scratch using the powerful virtual model library.

You won't a more powerful virtual platform creation environment and the unified debug features provide industry leading multi-core, multi-process debugging that works from RTL to virtual CPU models.

Learn more about how Cadence Helium Virtual and Hybrid Studio can help you bring your product to market faster today.