The emerging complex and integrated heterogeneous embedded system platforms require adequate design methods able to efficiently model, explore, analyze and design the ever complex SW and HW architectures. Future Embedded Systems suppliers, in order to meet rapidly increasing performance requirements linked with a pressure to lower development cost and shorten time-tomarket, will have to adopt new design methods and flows able to keep pace with the increasing complexity of design problems. Such methods, addressing these challenges starting from high levels of abstraction, will have to perform large solution space exploration jointly for SW and HW (possibly reconfigurable), involving almost marginal design effort and offering a high predictability of results with respect to cost- and performance-functions. Current design methodologies provide quite low-level abstraction capabilities. However in a few years from now tens of programmable processors will be embedded in an IC with together over 100M transistors adding to the complexity of the problem of architecting such systems. Taking into account that the complexity of the SW part is pacing up at an even faster speed, current solutions to perform design space exploration, mainly manually based, by no means do supply a performance of adequate sufficiency. Consequently, there is an urgent need to leverage system level exploration through the use of a high level specification of the application and an early design space exploration steps. The first system oriented approaches are appearing, among which those based on C/C++ and SystemC are most popular. Such approaches can take place before and/or after the co-design or architecture refinement steps and targets the design space pruning in order to fully exploit potential solutions that meet design and application constraints (power, latency, throughput) within the design and market timeframe. \\ Thus, new system-level design flows need to be developed, enabling the exploration of an application independently of the implementation, this almost at the beginning of the design process. A fundamental element of this evolution is the definition of abstraction layers that should allow the systematic re-use of SW and HW components at the system level driven by performance estimation and analysis. It is the context in which the COACH modeling and estimation methods combined with compilers and design space exploration techniques. This approach will cause a real breakthrough in the embedded system design methodology, i.e. one of the radical innovations. \\ The reason is that COACH precedes the use of high-level design tools in the embedded systems design flows. In that way, it will make possible a real and efficiently combined exploitation of high-level synthesis tools, parallelising approaches and compilers, already available on the market. These tools and approaches are not yet massively adopted, precisely because this decisive design step is missing. COACH will indeed permit (i) to predict and control implementation optimizations, (ii) to target multiple implementation technologies (and thus the associated tools) from a unique specification and (iii) to efficiently integrate high and low-level design tools in a unique seamless design flow. \\ The performance estimation methods combined with the design space exploration techniques will finally allow the design process to start from system level specification and automatically explore the potential architectures in order to find out the optimal implementation in a shorter design time and at a lower global cost. \par To get an efficient embedded system, designer has to take into account application characteristics when it chooses one of the former technologies. This choice is not easy and in most cases designer has to try different technologies to retain the most adapted one. \\ The first objective of COACH is to provide an open-source framework to design embedded system on FPGA device. COACH framework allows designer to explore various software/hardware partitions of the target application, to run timing and functional simulations and to generate automatically both the software and the synthesizable description of the hardware. The main topics of the project are: \begin{itemize} \item Design space exploration: It consists in analysing the application runnig on FPGA, defining the target technology (SoC, MPSoC, ASIP, ...) and hardware/software partitioning of tasks depending on technology choice. This exploration is driven basically by throughput, latency and power consumption criteria. \item Micro-architectural exploration: When hardware components are required, the HLS tools of the framework generate them automatically. At this stage the framework provides various HLS tools allowing the micro-architectural space design exploration. The exploration criteria also are throughput, latency and power consumption. At this stage, preliminary source-level transformations will be required to improve the efficiency of the target component. For instance, one may transform a loop nest to expose parallelism, or shrink an array to promote it to a register or reduce a memory footprint. \item Performance measurement: For each point of design space exploration, metrics of criteria are available such as throughput, latency, power consumption, area, memory allocation and data locality. They are evaluated using virtual prototyping, estimation or analysing methodologies. \item Targeted hardware technology: The COACH description of system is independent of the FPGA family. Every point of the design exploration space can be implemented on any FPGA having the required resources. Basically, COACH handles both Altera and Xilinx FPGA families. \end{itemize} As an extension of embedded system design, COACH deals also with High Performance Computing (HPC). In HPC, the kind of targeted application is an existing one running on PC. COACH helps designer to accelerate it by migrating critical parts into a SoC implemented on a FPGA plugged to the PC bus. \par COACH is the result of the will of several laboratory to unify their know how and skills in the following domains: Operating system and hardware communication (TIMA, SITI), SoC and MPSoC (LIP6 and TIMA), ASIP (IRISA) and HLS (LIP6, Lab-STIC and LIP). The project objective is to integrate these various domains into a unique free framework (licence ...) masking as much as possible these domains and its different tools to the user.