Information Technology Reference
In-Depth Information
4.5.1 Hardware/Software Codesign
Hardware/software codesign can be defined as the cooperative design of hardware 25
and software 26 to achieve system-level objectives (functionality and constraints) by
exploiting the synergism of hardware and software (Niemann, 1998), (Michell &
Gupta, 1997). Hardware/software codesign research focuses on presenting a unified
view of hardware and software and the development of synthesis tools and simula-
tors to address the problem of designing heterogeneous systems. Although hardware
implementation provides higher performance, software implementation is more cost
effective and flexible because software can be reused and modified. The choice of
hardware versus software in codesign is a trade-off among various design metrics like
performance, cost, flexibility and time-to-market. This trade-off represents the opti-
mization aspect of co-design. Figure 4.1 shows the flow of a typical hardware/software
codesign system.
Generally, hardware/software codesign consists of the following activities: speci-
fication and modeling , design, and validation (O'Nils, 1999).
4.5.2
Specification and Modeling
This is the first step in the codesign process. The system behavior at the system level
is captured during the specification step (Niemann, 1998). Section 4.5.6 provides
details about specification and modeling, including Models of Computation.
4.5.3
Design and Refinement
The design process follows a step-wise refinement approach using several steps to
transform a specification into an implementation. Niemann (1998) and O'Nils (1999)
define the following design steps:
Tasks assignment: The system specification is divided into a set of tasks/basic
blocks that perform the system functionality (Niemann, 1998).
Cost estimation : This step estimates cost parameters for implementing the sys-
tem's basic blocks (output of task assignment) in hardware or software. Ex-
amples of hardware cost parameters are as follows: gate count, chip area, and
power consumption, where execution time, code size, and required code mem-
ory are examples of software cost parameters. Cost estimates are used to assist in
making design decision to decrease the number of design iterations (Niemann,
1998).
Allocation: This step maps functional specification into a given architecture by
determining the type and number of processing components required to imple-
ment the system's functionality. To make the allocation process manageable,
25 Hardware refers to dedicated hardware components (ASIC).
26 Software refers to software executing on processor or ASIP (DSP, microcontroller).
Search WWH ::




Custom Search