% les objectifs scientifiques/techniques du projet. The objectives of the COACH project are to develop a complete framework to HPC (accelerating solutions for existing software applications) and embedded applications (implementing an application on a low power standalone device). The design steps are presented figure~\ref{coach-flow}. \begin{figure}[hbtp]\leavevmode\center \includegraphics[width=.8\linewidth]{flow} \caption{\label{coach-flow} COACH design flow} \end{figure} \begin{description} \item[HPC setup:] During this step, the user splits the application into 2 parts: the host application which remains on a PC and the SoC application which is mapped on the FPGA. COACH will allow to automatically translate high level language programs to FPGA configurations. In addition, it will provide a SystemC simulation model of the whole system (PC+communication+FPGA-SoC) which will allow performance evaluation of the partitioning. \item[SoC design:] In this phase, COACH will allow the user to obtain simulators for the SoC at different abstraction levels by giving to the COACH framework a SoC description. This description will consist of a process network corresponding to the application, an OS, an instance of a generic hardware platform and a mapping of processes on the platform components. COACH will offer different targets to map the processes: software (the process runs on a SoC processor), ASIP (the process runs on a SoC processor enhanced with dedicated instructions), and hardware (the process runs into a coprocessor that is generated by HLS and plugged on the SoC bus). \item[Application compilation:] Once the SoC description is validated through performances analysis, COACH will generate automatically an FPGA bitstream containing the hardware platform with the SoC application software and an executable containing the host application. The user will be able to launch the application by loading the bitstream on an FPGA and running the executable on PC. \end{description} % l'avancee scientifique attendue. Preciser l'originalite et le caractere % ambitieux du projet. %FIXME == {NON ceci n'est pas une contribution scientifique. A re-ecrire} %The main scientific contribution of the project is to unify various synthesis techniques %(same input and output formats) allowing the user to swap without engineering effort %from one to another and even to chain them. For instance, it will be possible to run loop transformations before synthesis. %Another advantage of this framework is to provide different abstraction levels from %a single description. %Finally, this description is device family independent and its hardware implementation %is automatically generated. % Detailler les verrous scientifiques et techniques a lever par la realisation du projet. System design is a very complex task and in this project we will try to simplify it as much as possible. For this purpose the following scientific and technological barriers have to be addressed. \\ \\ %\begin{description} %\item[] \textit{Design Space Exploration:}\\ The COACH environment will allow to easily map an application described by using a process network Model of Computation (MoC) on a shared-memory, MPSoC architecture. COACH will permit to explore the design space by allowing system designer to select and parameterize the target architecture, and to define the best hardware/software partitioning of the application. \\ \\ %\item[High-Level Synthesis:] \textit{High-Level Synthesis:}\\ COACH will allow the automatic generation of hardware accelerators when required by using High-Level Synthesis (HLS) tools. HLS will thus be fully integrated into a complete system-level design environment. Moreover, COACH will support both data and control dominated applications. Indeed, the HLS tools of COACH will support a common language and coding style to avoid re-engineering by the designer. COACH will provide a tool which will automatically explore the micro-architectural design space of coprocessor. \\ \\ %\item[High-level code transformation:] \textit{High-level code transformation:}\\ COACH will allow to optimize the memory usage, to enhance the parallelism through loop transformations and parallelization. The challenge is to identify the coarse grained parallelism and to generate, from a sequential algorithm, application containing multiple communicating tasks. To this aim, one may adapt techniques which were developed in the 1990 for the construction of distributed programs. However, in the context of HLS, there are still several original problems to be solved, mainly to do with the construction of FIFO communication channels and with memory optimization. Additionnal preprocessing, source-level transformations, are thus required to improve the process. Particularly, this includes parallelism exposure and efficient memory mapping. COACH will support code transformation by providing a source to source C2C tool. \\ \\ %\item[Platform based design:] \textit{Platform based design: }\\ COACH will define architectural templates that can be customized by adding dedicated coprocessors and ASIPs and by fixing template parameters such as the number of embedded processors, the number of sizes of embedded memory banks or the embedded the operating system. However, the specification of the application will be independant of both the architectural template and the target FPGA device. \\ \\ %\item[Hardware/Software communication middleware:] \textit{Hardware/Software communication middleware: }\\ COACH will implement an homogeneous HW/SW communication infrastructure and communication APIs (Application Programming Interface), that will be used for communications between software tasks running on embedded processors and dedicated hardware coprocessors. This will allow explore the design space by mapping the tasks of the application (described as a process network) on a shared-memory, MPSoC architecture. \\ \\ %\item[Processor customization:] \textit{Processor customization: }\\ ASIP design will be addressed by the COACH project. COACH will allow system designers to explore the various level of interactions between the original CPU micro-architecture and its extension. It will also allow to retarget the compiler instruction-selection pass. Finally, COACH will integrate ASIP design in a complete System-level design framework. \\ \\ %\item [High-Performance Computing:] The main problem in HPC is the communication \textit{High-Performance Computing: }\\ The main problem in HPC is the communication between the PC and the SoC. This problem has 2 aspects. The first one is the run-time efficiency. The second is its engineering cost, especially if one want to refine an implementation at several abstract levels. COACH will help designer to accelerate applications by migrating critical parts into a SoC embedded into an FPGA device plugged to the PC PCI/X bus. \\ %\item The COACH design flow has a top-down approach. In such a case, %the required performance of a coprocessor (clock frequency, maximum cycles for %a given computation, power consumption, etc) are imposed by the other system %components. The challenge is to allow the user to control accurately the synthesis %process. For instance, the clock frequency must not be a result of the RTL synthesis %but a strict synthesis constraint. %\end{description} %Presenter les resultats escomptes en proposant si possible des criteres de reussite %et d'evaluation adaptes au type de projet, permettant d'evaluer les resultats en %fin de projet. The main result is the framework. It is composed concretely of: a communication middleware for HPC, 5 HAS tools (control dominated HLS, data dominated HLS, Coarse grained HLS, Memory optimisation HLS and ASIP), 3 architectural templates that are synthesizable and that can be prototyped, one design space exploration tool, 2 operating systems (DNA/OS and MUTEKH). \\ The framework fonctionality will be demonstrated with the demonstrators (see task-7 page~\pageref{task-7}) and the tutorial example (see task-8 page~\ref{subtask-tutorial}).