GIOVANNI DE MICHELI, FELLOW, IEEE, AND RAJESH K. GUPTA, MEMBER, IEEE Invited Paper
Most electronic systems, whether self-contained or embedded, have a predominant digital component consisting of a hardware platform which executes software application programs. Hardware/software co-design means meeting system-level objectives by exploiting the synergism of hardware and software through their concurrent design. Co-design problems have different ﬂavors according to the application domain, implementation technology and design methodology.
Digital hardware design has increasingly more similarities to software design. Hardware circuits are often described using modeling or programming languages, and they are validated and implemented by executing software programs, which are sometimes conceived for the speciﬁc hardware design. Current integrated circuits can incorporate one (or more) processor core(s) and memory array(s) on a single substrate. These “systems on silicon” exhibit a sizable amount of embedded software, which provides ﬂexibility for product evolution and differentiation purposes. Thus the design of these systems requires designers to be knowledgeable in both hardware and software domains to make good design
This paper introduces the reader to various aspects of co-design. We highlight the commonalities and point out the differences in various co-design problems in some application areas. Co-design issues and their relationship to classical system implementation tasks are discussed to help the reader develop a perspective on modern digital system design that relies on computer-aided design (CAD) tools and methods.
Most engineering designs can be viewed as systems,
i.e., as collections of several components whose combined
operation provides useful services. Components can be
heterogeneous in nature and their interaction may be regulated by some simple or complex means. Most examples of systems today are either electronic in nature (e.g.,
information processing systems) or contain an electronic
subsystem for monitoring and control (e.g., plant control).
Manuscript received February 1, 1996; revised December 2, 1996. This work was supported in part by DARPA, under Contract DABT 63-95-C0049, and in part by NSF CAREER Award MIP 95-01615. G. De Micheli is with the Computer Systems Laboratory, Stanford University, Stanford, CA 94305 USA (e-mail: firstname.lastname@example.org. edu).
R. K. Gupta is with the Department of Computer Science, University of California, Irvine, CA 92797 USA (e-mail: email@example.com). Publisher Item Identiﬁer S 0018-9219(97)02017-3.
Moreover, the implementation of electronic systems and
subsystems shows often a predominant digital component.
We focus in this paper on the digital component of
electronic systems, and refer to them as (digital) systems for brevity. The majority of such systems are programmable,
and thus consist of hardware and software components. The
value of a system can be measured by some objectives that
are speciﬁc to its application domain (e.g., performance,
design, and manufacturing cost, and ease of programmability) and it depends on both the hardware and the software components. Hardware/software co-design means meeting
system-level objectives by exploiting the synergism of
hardware and software through their concurrent design.
Since digital systems have different organizations and applications, there are several co-design problems of interest. Such problems have been tackled by skillful designers
for many years, but detailed-level design performed by
humans is often a time-consuming and error-prone task.
Moreover, the large amount of information involved in codesign problems makes it unlikely that human designers can optimize all objectives, thus leading to products whose
value is lower than the potential one.
The recent rise in interest in hardware/software codesign is due to the...