Cloud native EDA tools & pre-optimized hardware platforms
In our last prototyping post we looked at the big picture of the verification continuum, and how prototyping, of both the virtual and FPGA-based physical variety, fits into an overall verification strategy. In this post, we will look deeper into virtual prototyping specifically, particularly as a means to accelerate the increasingly important system-on-chip (SoC) software development process.
Virtual prototyping has been used for many years as a method to develop products where a model of the product under development is built and simulated to validate the design before committing to making a physical prototype of the end-product. This method has been well accepted in many domains. For example, automotive companies develop virtual prototypes of physical engine parts.
Similarly, the use of virtual prototyping for the development of semiconductor SoCs is a valuable strategy. In this context, the virtual prototype is used as an alternative to the electronic hardware with the objective to develop the embedded software that will execute on the electronic system and fulfill its expected functions (as opposed to developing the electronic hardware itself). The methodology has been adopted in extremely fast-paced markets such as mobile and consumer SoC applications and is now being used in areas such as automotive, networking and wireless modems. Virtual prototyping can be applied to any vertical market where the effort and time associated with software development, integration and test is increasing.
The overarching objective of any verification methodology is to reduce development time. Enabling as much parallel design and verification across the various aspects of the SoC design process offers significant opportunity to compress design time effectively. That’s where the true value of chip-level virtual prototyping lies.
Specifically, virtual prototyping delivers some key benefits to the SoC software development process:
From a verification standpoint, virtual prototypes provide the most flexible, scalable and accessible means to prove out designs earlier and enable companies to parallelize hardware and software development.
Virtual prototyping is not a new technique, but the methodologies have become more sophisticated with the advent of more powerful and integrated design environments from EDA tools (such as those we supply) and the increasing complexity of SoCs. We have years of development and real-world expertise putting together the industry’s most complete virtual prototyping solutions, which include authoring tools, model libraries, software debug and analysis tools, design methodologies and services.
Our focus is on delivering an enhanced development environment to allow SoC development teams to take full advantage of the benefits of virtual prototyping as well as provide seamless integration within the entire SoC development flow, including software development, verification and hardware/software integration.
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.
We provide a robust development environment to model and assemble virtual prototypes, anchored by our Virtualizer solution, a platform comprised of a suite of closely integrated tools and technologies which enable the development and deployment of virtual prototypes.
Virtualizer can generate Virtualizer Development Kits (VDKs), which are software development kits containing design-specific virtual prototypes as well as debug/analysis tools and sample software. Since these VDKs are based on software models and have no dependency on hardware availability, they can be created much earlier in the design cycle, up to 12 months before hardware availability. VDKs are like receiving a hardware development board, except a virtual and scalable version of a prototyping platform.
The VDKs interface seamlessly with familiar embedded software debuggers, providing debug data and control beyond any other simulation and debug targets. This allows software developers to start software bring-up much earlier without changing their existing software development environment. The kits enable concurrent hardware/software engineering and more productive software development, integration and test throughout the design flow from specification to deployment. Virtual prototypes and VDKs can represent systems ranging from a processor core, SoC or hardware board to electronic devices or a network of devices.
Product development teams using virtual prototyping require a comprehensive set of transaction-level models (TLMs) that serve as the building blocks of virtual prototypes. Virtual prototypes typically consist of connected component models written in a special purpose language such as SystemC. Using a standard language permits component models from a variety of sources to be combined in a virtual prototype suitable for running real world software workloads.
Our virtual prototyping solution includes the largest portfolio of processors, interconnects, peripherals and reference designs, enabling developers to quickly start assembling virtual prototypes. We also offer a wide range of models including ARM, Tensilica, CEVA and Synopsys ARC Processor models, Synopsys DesignWare models and many other semiconductor proprietary models.
With Synopsys virtual prototyping solutions, designers can model a physical system and use this representation for multiple tasks, including architecture design, software development, and system testing. For embedded software, development time compression can be achieved thanks to fast, fully functional software models of complete systems that execute unmodified production code and provide unparalleled debug efficiency. As a result, this approach enables faster software development, improved software quality and better hardware/software design co-design.
In addition, integration with adjacent design and verification flows for physical prototyping (FPGA), physical emulation, HDL simulation, other simulators for hardware verification and system validation make virtual prototyping an important link in the verification continuum.