Design Article
Design and verification strategies for complex systems, part 1
Graham Hellestrand, Founder, CTO, and Strategy Officer, VaST Systems Technology
6/12/2006 12:00 AM EDT
In the first part of this series, we highlight trends in embedded system design. We then review conventional embedded design and verification techniques, and explain the tradeoffs associated with each approach. In the second part of the series, we will present and discuss the concept of architecture-driven design using virtual system prototyping.
Embedded design trends
The term "embedded system" refers to an application-specific electronic subsystem that forms a key element in—or sometimes the majority of—a larger system. This main system can range from a household appliance or a personal communications device, all the way up to an automobile, aircraft, or beyond.
A key feature associated with embedded systems is that they feature tightly integrated combinations of hardware and software (referred to as "embedded software"). The software components include system initialization routines, the hardware abstraction layer, a real-time operating system (RTOS) and associated device drivers, all the way up to the embedded application code itself
At the time of this writing, the foremost technology drivers in the embedded system space come from the consumer markets for products such as mobile communications (including cell phones and wireless networks), personal audio and visual entertainment systems, and digital cameras. These products combine the need for massive computational resources with requirements for small size and weight and very low power consumption.
Achieving these goals requires innovative, advanced system architectures. These architectures typically feature multiple processor cores performing different tasks, tiered memory structures with multi-level memory caching, and multi-layer bus structures. They may also feature super-pipelining (running multiple instructions through different pipelines) and super-scaling (adding multiple processors in parallel to achieve higher throughput).
The current state-of-the-art in embedded systems design is to have multiple computational and data-processing engines, memory, and peripherals, all constructed on a single silicon chip called a System-on-Chip (SoC). This article assumes SoC implementations, although the techniques discussed are also applicable to multi-chip realizations.
Multiple processor cores
By today's standards, early embedded systems were extremely simple. They typically used a single general-purpose microprocessor that performed all of the data processing and control tasks. Furthermore, this processor communicated with a small number of relatively simple memory and peripheral devices by means of a single 4-bit or 8-bit bus.
More recently, it became common for designs to feature multiple general-purpose central processing unit (CPU) cores as well as special-purpose digital signal processor (DSP) cores—each with separate caches for instructions and data. In the case of a portable consumer device, such as the 3G phone shown in Figure 1, one CPU may be used to run the RTOS and to service general applications, such as messaging and the graphics environment. Other processors might be tasked with handling communications and overall system control.

1. A typical 3G phone controller.
Having multiple CPUs allows a system to deal with a broader range of processing traffic in real time, which is a critical requirement for many embedded applications. Today, consumer products typically feature anywhere from 2 to 10 processing engines, but SoC implementations boasting more than a hundred processors are expected to become reasonably common by time the 65 nanometer technology node becomes mainstream.
One reason for the growing number of cores is that DSPs have become more specialized. Early DSPs were relatively generic and could be used to address the needs of multiple applications. By comparison, today's DSP cores are often optimized for specific applications. A DSP used in a wireless handset, for example, is very different from one used in a wireless base station. Similarly, a DSP used to process audio data differs from one used to process digital images—and applications such as modern cell phones may well require both capabilities.
Next: Multi-level memory



