1. Introduction
Embedded systems typically consist of application specific hardware parts, i.e. FPGAs or ASICs, and programmable parts, i.e., processors like DSPs or ASIPs. In comparison to the hardware parts, the software parts are more flexible and much easier to develop and modify. Thus, software is less expensive in terms of cost and development time. Hardware, however, provides better performance. For this reason, a system designer's goal is a system which minimizes the weighted sum of the delay, hardware area, power consumption, and hardware/software communication costs. The weights are determined by the user according to the design's critical parameters.