China 简体中文 Japan 日本语 United States English
International Office Locations
  HOME    COMMUNITY    BLOGS & FORUMS    A View from the Top: A System-Level Blog
A View from the Top: A System-Level Blog

Busting Virtual Platform Myths – Part 1: “Virtual Platforms are for application software only”

Posted by Frank Schirrmeister on January 22nd, 2009

This is the first part of a multi part series of Blog posts. There are simply too many misperceptions about virtual platforms out there. The most common ones are about speed, accuracy and development effort. I will comment on those in upcoming posts. However, some misperceptions are about the type of software development which virtual platforms support.

A recent article called “Unified Verification for Hardware and Embedded Software Developers” Lauro Rizatti of Eve talks about the advantages of hardware assisted verification. And I fully agree … hardware assisted verification is an important process in the design flow. That’s why Synopsys acquired Synplicity and, more recently, the ChipIt business unit of ProDesign. There is one important but infortunately common misperception in the article, which needs correction:

“In recent years, a new breed of tools, collectively called virtual prototyping platforms based on a high-level of design abstraction, have been introduced in an attempt to start software validation well ahead of silicon availability. While some may have achieved the scope of jump-starting software development, they only address application programs that do not require an accurate representation of the underling hardware design. They fall short when testing the interaction of the embedded software with hardware, such as firmware, device drivers, operating systems and diagnostics. For this testing, embedded software developers need an accurate model of the hardware to validate their code, while hardware designers need fairly complete software to fully validate their application specific integrated circuit (ASIC) or SoC.”

So we could mince words here and look at the wording as referring to the “testing” aspect only, i.e. separating the development of embedded software from its testing. Perhaps that is meant. However, that would not properly represent the importance of virtual platforms in pre-silicon software development. While there is no “physical” proof for one or the other side here, our experience of more than 60 commercial virtual platforms in active use and developed using Synopsys’ tools (Innovator), models (DesignWare System-Level Library) and services, shows the situation as completely reverse to the quoted statement. While there is some application development, the majority of the software development on virtual platforms is spent on firmware, device drivers, operating system porting and diagnostics. And that is not – as one could assume – on cycle accurate models, but on functionally accurate models with only essential timing, the type of models called loosely timed (LT) in SystemC. In contrast, application software is developed more often than not using completely hardware independent techniques, including cross compilation from the host development machine using development kits like Apple’s iPhone development kit.

Types of Software for a Mobile Chipset

As indicated in this figure, the software layers closer to the hardware essentially provide an efficient abstraction layer, which allows to provide middle ware functions like codec calls and APIs which make the application development completely independent from the hardware registers. As a matter of fact, in product families like TI’s OMAP, NXPs nExperia or ST’s Nomadik, the intermediate layers provide abstraction in a way that the applications can be re-used without modification because the layers between the application and the hardware can be updated when the underlying hardware changes.


More specifically, this figure illustrates the schematic representation of a Mobile Chipset Hardware and its associated software stacks. The typical development tasks we have seen are outlined in the following table for the application subsystem and the modem subsystem, respectively.

Typical software development tasks performed on instrucion accurate virtual platforms

Some of this has been publicly documented by examples with Texas Instruments, Freescale and Marvell, in which these development tasks were actually finished prior to silicon being available and when RTL was finally available, the OSs had been ported and the bring up took days instead of weeks or months.

So, before this escalates into a “Lauro said vs. Frank said” battle, I am the first one to admit again, that hardware assisted verification is important as part of the design flow. However, virtual and hardware based approaches both stand in their own right contributing lots of value. As I recently wrote here, they are best used in hybrid use models, combining the best of virtual and hardware assisted worlds.

So I hope I busted the first virtual platform myth here given the public examples and the experience from the more than 60 virtual platforms. Speed, accuracy and development effort myths look out, I’ll get to you soon …

As always, comments are highly appreciated. I look forward to your thoughts and reports on your experiences.

Share and Enjoy:
  • Google Bookmarks
  • Facebook
  • Digg
  • Print
  • email
  • Live
  • LinkedIn
  • MySpace
  • Reddit
  • Technorati
  • NewsVine
  • Twitter

3 Responses to “Busting Virtual Platform Myths – Part 1: “Virtual Platforms are for application software only””

  1. Frank,

    Nice article.
    I have no idea why Operating Systems and Drivers cannot be done on a Virtual Platform. The lowest level detail in the Linux kernel is the timer that fires only 1000 times a second. Flexibility to easily modify hardware timing and see how a driver behaves is a great benefit of a Virtual Platform.

    Jason

  2. OS and drivers have been very well done on LT and more abstract virtual platforms. A good witness is the software support present at the launch of the Freescale P4080 last year: VxWorks, Linux, middleware, hypervisor, all were developed using just an loosely-timed (actually, the even more abstract Simics “Software Timing” abstraction level) virtual platform. Also, IBM recently published some examples of how they developed the z10 mainframe firmware using very fast simulation techniques (including microcoded SMP simulation). Some validation against hardware simulation was used, but the code was first developed on abstract virtual platforms.

    However, I do not agree that modern software is that independent from hardware. You never really want ot have a variant development compile type: you want to use the same compiler, code generation tools, OS API, OS scheduler, middleware binaries (especially when you have third-party software delivered as binary-only packages, there is no real choice), etc. as you have on the actual target. Anything else makes it too likely to introduce subtle bugs — much easier to just run all software on a virtual platform. As you say, it is fast enough to do that.

    /jakob

  3. Trackbacks/Pingbacks

    1. [...] Schirrmeister of Synopsys recently published a blog post called “Busting Virtual Platform Myths – Part 1: “Virtual Platforms are for application software …. In it, he is refuting a claim by Eve that virtual platforms are for application-level [...]

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>