Design Article
Design and verification strategies for complex systems, part 2
Graham Hellestrand, Founder, CTO, and Strategy Officer, VaST Systems Technology
6/19/2006 12:00 AM EDT
Virtual system prototypes
A virtual system prototype is a type of electronic systems level (ESL) model that can be thought of as a hybrid between an RTL model and an ISS model. (See part 1 for descriptions of RTL and ISS models.) Like an RTL model, a virtual system prototype is cycle-accurate and can be used to simulate and develop hardware. However, a virtual system prototype is based on software simulation, like an ISS model, and simulates at speeds suitable for software development. A virtual system prototype can be used to represent portions of an embedded system or the entire system. Virtual prototype environments are available from companies such as VaST Systems Technology (www.VaSTsystems.com), Synopsys (www.Synopsys.com), and ARM (www.ARM.com).
One key attribute of an ideal virtual system prototype is that it offers a combination of performance and accuracy, as illustrated by Figure 1. In the case of VaST's prototypes, for instance, a single-core simulation can achieve 50 to 200 MIPS. Multi-core systems with tiered memory structures, multi-level buses, bus-bridges, and peripherals can be simulated at 10 to 100 MIPS, depending on the complexity of the platform. This is sufficiently fast to support real-world tasks, such as booting an RTOS in a matter of seconds. In addition, a VaST virtual system prototype can run the same compiled and linked target code as the real machine, while accurately representing the system's real-world behavior. Meanwhile, the integrated environment provides real-world synchronization between all of the cores, busses, memories, and peripherals.

1. Virtual system prototypes aim to provide a balance of speed and accuracy.
The advantages of using a virtual system prototype are illustrated in Figure 2. As this figure illustrates, these advantages are multifold. First, virtual system prototypes facilitate architectural exploration and evaluation. Second, a virtual system prototype provides the ability to concurrently develop the software and hardware portions of the design—which cuts an average of nine months from a typical embedded system design. In addition, concurrent development minimizes the occurrence of downstream bugs, dramatically reduces the occurrence of silicon re-spins, and provides a high level of confidence in the final deployed product.

2. Virtual system prototyping dramatically improves the design flow.
Architectural exploration
Virtual system prototypes facilitate architectural exploration and evaluation by accurately modeling real-world behavior. By experimenting with different hardware and software partitioning, for example, system architects can accurately compare the performance of hardware-based implementations against those of software-based implementations. This allows system architects to make well-informed hardware-software partitioning decisions early in the development process.
Such design decisions are of particular concern for real-time applications, such as safety-critical applications, in which performance constraints absolutely must be met. In an attempt to ensure that performance goals are realized, system architects often over-engineer the product. This costs time and money, but the alternative—a system that ends up with insufficient processing power—would require design re-spins, which is even more expensive and time-consuming.
Virtual system prototypes enable system architects to create more optimal designs. The ability to run real software workloads allows system architects to understand issues such as cache sizing, processor capacity, and bus bandwidth. It also enables architects to detect resource sharing contentions and potential synchronization problems.



