In a modern SoC design the time and cost of the software development portion of the overall design process can easily exceed the hardware portion. On top of that, design performance is directly impacted by the software running on the device, so it is critical to verify and optimize the embedded software for both performance and power.
But large software teams can’t work in isolation for weeks or months and then attempt to integrate and test the finished product. A key to improved productivity is to give software developers access to their targeted hardware design well before there is any physical silicon available. A successful virtual prototyping strategy requires a model of a hardware device that mimics its functionality at an abstraction level that allows efficient run time and the ability to interactively debug the actual embedded software. The virtual prototype can provide visibility and control over the entire system, including cores, interconnects and peripherals.
For the purposes of software development, a virtual prototype is a software executable and fully functional model of the hardware system that is written at an abstraction level above the detailed hardware description that is used for hardware simulation (RTL, for example). In fact, virtual prototypes are not reliant on the register-transfer level and can be delivered months before the RTL is made available. Virtual prototypes provide both the high performance and in-depth insight to perform detailed software debug and analysis.
Fast, functional models which are accurate from a software programmer’s view are critical for early development of software, including lower level functions such as device drivers and firmware, which are essential to bringing up a new hardware platform. The models can also be used for porting or developing higher levels of the software stack such as middleware and the operating system.
The models do require a high degree of functional accuracy, with functional equivalency being the goal for a software development environment. But cycle-accuracy is not necessarily required since the primary goal is to enable software development rather than system performance analysis. For software performance analysis, only the number of clock cycles are of interest. The more abstract the model, the faster it can simulate, resulting in faster turnaround when running benchmarks.
Software quality can be improved because virtual prototyping systems can allow more lengthy, automated testing of software. Since full-featured virtual prototyping systems can interface with the most popular embedded software debuggers, they provide a comprehensive platform for software developers. As a result, they enable increased developer productivity through more efficient software development of components such as hardware drivers, and boot code, as well as operating system and middleware bring-up. Inevitably, this leads to higher quality software as the hardware and software teams are collaborating during design of each aspect of the product and the parallel development leads to earlier and longer validation cycles.
By using fast, functional models as described above, software developers have enough detail to emulate the hardware and focus on creation of software for their intended use case. Additionally, virtual prototypes can be updated incrementally as the hardware specification stabilizes. As portions of the design are stabilized, the modelling can start. Developers can start from a simple subset of the hardware specification and progressively extend it. This allows software teams to iteratively develop the software well before the design is complete and adjust quickly if necessary.
Once the virtual prototype is developed and working, it can be replicated as many times as required to support a large software development team. It can be distributed worldwide to a large number of users in a matter of minutes rather than weeks and set up to run on regression farms. This scalability helps accelerate software debugging and testing across an organization and more easily facilitates regression testing.
The benefits of pre-silicon access extend across the supply chain as well. The semiconductor group can deliver the virtual protype to their customers, who can begin their development well ahead of having working silicon. Today a virtual prototype can be delivered 12 months prior to silicon availability, providing system developers a significant head start on customizing the design for their specific use case.