Foreword
Hardware/software codesign means to achieve system-level design objectives by
leveraging the synergy between hardware and software through their concurrent
design. Codesign has been practiced in various ways since the inception of digital
systems. The specification of instruction-set architectures enabled the concurrent
development of hardware and software as well as the creation of high-level
languages and compilers. Grace Hopper was indeed a pioneer of codesign in the
early 1950s with the design of portable languages (i.e., machine-independent),
which led to the development of COBOL and of modern programming languages.
Within about 70 years of computer science and engineering, various em-
bodiments of abstractions, programmability, and hardware have given different
meanings to hardware/software codesign. The renewed interest on this topic in the
last two decades relates to the use of structured design methodologies and tools
for hardware and software design. Thus, electronic systems design automation had
to embrace hardware/software codesign as one of its major tasks and objectives.
The formalization of the related design problems enabled synthesis and verification
of hardware/software systems through the development of computer-aided design
methods and tools.
However, it is our opinion that a sound system design methodology must start
by capturing the design specifications at the highest level of abstraction and then
proceed toward an efficient implementation by subsequent refinement steps. The
partition of the design into hardware and software is indeed a consequence of
decisions taken at a higher level of abstraction. The critical decisions are about
the architecture of the system (processors, buses, hardware accelerators, memories,
and so on) that will carry on the computation and communication tasks associated
with the overall specification of the design. This design process is segmented into
a series of similar steps. The principles at the basis of each step consist of hiding
unnecessary details of an implementation, summarizing the important parameters of
the implementation in an abstract model, and limiting the design space exploration
to a set of potential platform instances. The design process is a meet-in-the-
middle approach where the refinement from specification toward implementation is
matched against a library of components whose models are abstractions of possible
implementations.
v
评论0
最新资源