I’ve been working in and observing the field of “virtual system prototypes” (the term coined by Graham Hellestrand several years ago - see his “The Revolution in System Engineering“, IEEE Spectrum, September, 1999) or “virtual platforms” (the current term most widely used) for a few years now. In my opinion and by observation, this has been one of the hot areas in ESL the last couple of years. What I’ve also observed the last several months is a lot of debate over the best underlying simulation models for virtual platforms. There seem to be two camps: the one-kernel SystemC camp, driven by recent work by OSCI’s TLM2 working group (in particular, Draft 2 which came out towards the end of 2007, with its Direct Memory Interface (DMI) and temporal decoupling or time quantum keepers); and the two-kernel solutions, in which a proprietary fast simulation kernel co-exists with the SystemC kernel.
Claude Monet, The Artist’s Garden at Giverny, 1900
Among the many flowers we see in this garden are the Virtutech Simics kernel (an interesting article by Michel Genard on SCD Source discusses this: see Defining an infrastructure for virtual platform design). Virtutech is working with Greensocs on a Simics-SystemC bridge, according to Michel’s article. We also have OVP: Open Virtual Platforms, coming from Imperas, with a SystemC side door. ARM’s System Generator talks about a side door to SystemC in an NASCUG presentation by Nizar Romdhane. VaST has links to SystemC described in a white paper. And of course we have the single-kernel SystemC flower, planned to be supported by some ESL vendors - for example, see a NASCUG presentation from CoWare. (I will mention here that my company, and in some cases myself, work directly with some of these companies as partners, and of course, may with others in the list in the future).
One of the big issues I see in such a rich garden, and indeed, one especially important to IP providers, is whether models will interoperate among such a rich profusion of simulator architectures. If all the side doors or portals into the two-kernel simulation architectures conform to the same version of OSCI TLM2 Draft 2 interfaces, for example, then interoperability may become a lot easier. But this carries with it a potential performance cost. It may become very important “which side of the door” you live on. If a fast processor ISS model on the SystemC side of the portal wants to access memory which lives on the proprietary other side of the door, and if the portal between worlds does not support the OSCI Direct Memory Interface, then this ISS model may have to use slower mechanisms to access memory and thus be slowed down in comparison with the fast processor models living on the other side of the door. In the end, effective system modelling may depend on which side of the door you are. In this case, the door may become a kind of servants entrance: distinctly inferior to the main part of the house. And if everyone who has such a dual-kernel solution implements a different shape, colour or size door, then interoperability with each of these solutions may require a lot of extra integration effort. If this happens, our garden may become something a lot less pretty:
Alice Webb, Through the Thorns
We’ll have to see whether there is some kind of convergence on reasonably interoperable solutions for system modelling and simulation over the next few months. Given so many players, things could diverge. Of course, given good will and a drive for interoperability, things could instead converge. Hopefully, OSCI will play a leadership role in trying to keep our garden of roses from becoming a garden of weeds.