Embedded systems typically consist of a composition of a set of hardware and software modules. An embedded system performs one or more dedicated tasks using one or more processors that communicate with other dedicated devices, without being referred to as a computer. Embedded systems arise in many applications: examples include communication, image processing, and automotive electronics.
Embedded systems are heterogeneous by nature. For example, they combine application specific integrated circuits (ASICs) and field programmable gate arrays (FPGAs) with embedded software. A diversity of platforms attempt to employ and integrate different models of computation (MoC) to address the co-design problem of embedded systems. These platforms need to provide tools to specify, synthesize, and validate an embedded system.
One example of a design tool for embedded systems is Metropolis. A designer specifies the system utilizing the Metropolis Metamodel (MMM) and Metropolis synthesizes the design by configuring parameterized architectural elements, dynamic scheduling algorithms, interface blocks, as well as final software and hardware implementation. For a more detailed description of the Metropolis design environment, see “Metropolis: Design Environment for Heterogeneous Systems,” available: http://www.gigascale.org/metropolis/. Many techniques exist to optimize each of these components as well as the underlying communication network. However, there is a need for new techniques, that can perform optimization across hierarchical boundaries.