The design process of embedded systems has changed substantially in recent years. One of the main reasons for this change is the pressure to shorten time-to-market when designing digital systems. To shorten the product cycles, programmable processors are used to implement more and more functionality of the embedded system. Therefore, nowadays, embedded systems are very often implemented by heterogeneous systems consisting of ASICs, processors, memories and peripherals. As a consequence, the research topic hardware/software co-design, dealing with the problems of designing these heterogeneous systems, has gained great importance.
These pages introduce the different tasks of hardware/software co-design including system specification, hardware/software partitioning, co-synthesis and co-simulation. The primary emphasis is on hardware/software partitioning and the co-synthesis phase and their coupling.