Embedded-system specification and design consists of describing a syst
em's desired functionality and mapping that functionality for implemen
tation by a set of system components such as processors, ASICs, memori
es, and buses. This tutorial discusses the key problems of system spec
ification and design, including specification capture, design explorat
ion, hierarchical modeling, software and hardware synthesis, and cosim
ulation. The authors highlight existing tools and methods for solving
those problems and describe a ''specify-explore-refine'' methodology f
or meeting today's embedded-system product development requirements.