Never miss a story from Breakfast Bytes. Subscribe for in-depth analysis and articles.
We announced Helium in September last year, and I wrote about the product in my post Announcing Helium, Hybrid and Virtual Platforms with Multiple Gears. Helium's full name is Helium Virtual and Hybrid Studio. Helium allows for debugging software and hardware with a mixture of virtual models and RTL. Its almost magical capability is that it can switch from virtual to RTL on the fly. This allows you to, for example, boot an operating system and then switch to RTL to debug a device driver in gory detail.
At CadenceLIVE Silicon Valley, NVIDIA presented their experience adopting the Cadence verification flow, including Helium. A big challenge for any design group doing the type of complex systems that NVIDIA creates is that software makes up a large part of the system, and as much as possible, the software needs to be checked out before tapeout.
Three big challenges to doing this are:
Adopting a virtual platform approach using Helium allows for a "shift left" in the software schedule. This addresses two of the big items in the above list of challenges: the RTL of the CPU is too slow and, in the worst case, might not be available at all.
The best approach is to combine Palladium/Protium with Helium. Palladium Z2 is Cadence's emulation product, and Protium X2 is the FPGA prototyping product. They have a common compiler front end so that it is seamless to switch from Palladium to Protium, one of the reasons that we sometimes refer to them as the dynamic duo. Protium is both cheaper and faster than Palladium, and so easily moving from one to the other maximizes the value of the hardware investment. This mix then allows for the virtual platform model to replace the unstable or late RTL to provide a complete platform. The virtual models run fast, which accelerates the test cases.
Helium Virtual and Hybrid Studio was used to build out a hybrid platform combining virtual platform level models of CPU cores and the few IP blocks that were still under development with RTL for the units that were ready and available for verification. See the above block diagram.
The kernel boot on this platform was substantially faster, resulting in quicker bring-up and execution of various test plans.
One unexpected value of this hybrid verification environment was that a single build of a given netlist could be used with different target loads simply by configuring with different parameters, such as:
All this meant that the project was delivered ahead of schedule, and zero errata have been found to date.
Sign up for Sunday Brunch, the weekly Breakfast Bytes email