Virtual platforms bring the people behind hardware and software design closer together, says Jakob Engblom, technical marketing manager at Virtutech (Stockholm, Sweden). In this guest blog, he shows how virtual platforms can bring new capabilities to both hardware and software designers, and notes the significance of a new collaboration between Cadence and Virtutech.
The integration of the Cadence Incisive Software Extensions tool with Virtutech Simics virtual platforms, announced May 18, applies a proven hardware verification methodology – with planning and metric-driven verification – to software testing. The integration shows how the powerful tools and methods developed for hardware design can be applied to software design tasks such as device-driver testing.
Due to the high cost of mistakes in hardware design, verification tools and methods -- and a strong culture of using them -- have been developed in the hardware design world. These tools have relied on simulation to control and impose states on hardware designs. With virtual platforms, the same kind of control becomes available for software.
Virtual platforms also facilitate methodology innovation in hardware design. Since a virtual platform is much easier to change than traditional hardware design artifacts, virtual platforms make it possible to use modern software development paradigms such as agile development, iterative development, and rapid prototyping in the hardware design flow. The key point is that virtual platforms allow a higher level of abstraction. By moving away from describing the precise implementation of hardware to describing the design intent and software-visible behavior of hardware, the amount of information and therefore time needed to “build” a piece of hardware is reduced by orders of magnitude.
So, virtual platforms can be used to both “harden the software” and “soften the hardware.” But even more importantly, they bring the people behind the hardware and the software closer together. A virtual platform models the hardware-software interface, and is thus a natural mechanism for communications between hardware and software teams.
For example, virtual platforms make it much easier to explore architectures that straddle the hardware-software boundary. Hardware interfaces to the software stack can be explored quickly and deeply, long before the hardware design is frozen. The analysis is not just about bandwidths, performance, and bus load, but also about the usability of driver interfaces, and the viability of hardware designs given the complexity of a modern embedded software stack.
The best published description of this process that I have found is an article called “Application of Full-System Simulation in Exploratory System Design and Development” in the IBM Journal of Research and Development, March/May 2006. In this article, the authors describe how they explored various programming models and architectures for the Cell BE microprocessor.
The authors describe their decision to avoid using cache locking as a performance enhancement technique, after trying to implement it in a software stack consisting of a hypervisor, operating system, and application programs. Their analysis proved that cache locking is too complex to be used effectively by software. Exploring such issues obviously requires very close collaboration between software and hardware design teams, and doing that can be greatly facilitated by using a virtual platform as the common point of communication. Virtual platforms also facilitate an iterative development of hardware and software.
A virtual platform can also help in resolving tricky hardware-software debug issues and communicating problems between teams. If we look at the kinds of driver problems currently addressed by the Cadence-Virtutech collaboration, once an error has been found, we can easily package it up for further examination either by replaying the target control sequence leading to the error, or simply taking a snapshot of the system state just before the error. This can be handed to driver team for investigation, or to the hardware team in case the issue appears to be with the hardware side of the interface. Using the traceability of the virtual platform, it is also easy to log all hardware accesses and determine whether the driver is doing the wrong thing, or the hardware is responding in an unexpected way.
In summary, we see that virtual platforms are really about people and communication. By bringing hardware and software people closer together, we enable innovation in tools. The Cadence-Virtutech collaboration is one example of what can happen when a virtual platform opens up the perspective of software to hardware people -- it lets good ideas and tools flow from one world to another.