A couple of weeks ago I participated in a roundtable discussion led by Peggy Aycinena that has been summarized and posted on edacafe.com. Please have a look if you are interested in Virtual Platform usage for embedded software.
One of the things that became clear right away is there are way too many terms which mean different things to different people. Peggy meant well by trying to stir up controversy by asking the difference between simulation and virtualization, but the question caused nothing but confusion. I tried to explain that I see at least three basic forms of "virtualization".
The concept in the IT domain that one machine can run multiple operating systems or multiple copies of an operating system and appear to be multiple machines. This is usually done for the purpose of saving hardware costs. Cadence uses this technique to save money when building the compute farms we use to create Cadence software products. In addition to server products there are also workstation products that are similar.
The technique of using a model of an embedded system or SoC to execute software. This is the Virtual Platform application I talk normally write and talk about. This is really simulation, but things like the use of physical host resources such as a USB memory stick or a network connection, and the use of processor models that use dynamic binary translation create overlap with the characteristics of software like VMware Workstation
Taking idea #1 from the IT world and applying it to embedded systems. This means that mobile devices can run multiple copies of an operating system or multiple operating systems on the same device. It can be done for security reasons, reliability, to enable legacy applications on the device, and more.
At the roundtable pretty much everybody was from area #2 except Kent Fischer from Freescale. Kent does do #2 for SoC development, but Freescale also does #3 for its multi-core SoC devices that go into embedded products. While virtualization for embedded devices was not the main topic of the roundtable, it's an interesting and growing space. One of the early companies in this area, Trango, was acquired by VMware. You can read about the technology at the VMware website now. Another interesting company to read about is Open Kernel Labs. There are others, so please share your favorites in this space.
Also, feel free to offer your definitions of simulation, virtualization, and emulation.
Next week I'll be at ARM Techcon3 where I hope no Cadence people come to hear my talk which explains how software can be developed for Android on a Virtual Platform and the command to start the Virtual Platform (which is called an emulator in the Android documentation) is "emulator". Luckily, I don't think any of the Palladium commands are "emulator".