| 1 | % les objectifs scientifiques/techniques du projet. |
|---|
| 2 | The design steps are presented figure~\ref{coach-flow}. |
|---|
| 3 | \ADDED{ |
|---|
| 4 | The end-user input is |
|---|
| 5 | either a HPC application (an application running on a PC that must be accelarate), |
|---|
| 6 | or an embedded application (a standalone application), |
|---|
| 7 | or a function of a larger design.} |
|---|
| 8 | \begin{figure}[hbtp]\leavevmode\center |
|---|
| 9 | \includegraphics[width=.8\linewidth]{flow} |
|---|
| 10 | \caption{\label{coach-flow} COACH design flow} |
|---|
| 11 | \end{figure} |
|---|
| 12 | \begin{description} |
|---|
| 13 | \item[HPC setup:] During this step, the user splits the application into 2 parts: the host application |
|---|
| 14 | which remains on the PC and the SoC application which is mapped on the FPGA. |
|---|
| 15 | COACH will provide a complete simulation model of the whole system (PC+communication+FPGA-SoC) |
|---|
| 16 | which will allow performance evaluation. |
|---|
| 17 | \item[SoC design:] In this phase, |
|---|
| 18 | COACH will allow the user to obtain virtual prototypes for the SoC at different abstraction levels. |
|---|
| 19 | The user input will consist of a process network describing the coarse grain parallelism |
|---|
| 20 | of the application, an instance of an architectural template |
|---|
| 21 | and a mapping of processes on the architectural template components. |
|---|
| 22 | COACH will offer different targets to map the processes: |
|---|
| 23 | software (the process runs as a software task on a SoC processor), |
|---|
| 24 | ASIP (the process runs as a software task on a SoC processor enhanced with dedicated instructions), |
|---|
| 25 | and hardware (the process is implemented as a synthesized hardware coprocessor). |
|---|
| 26 | \item[Application compilation:] |
|---|
| 27 | \begin{SUPPRESSEDENV} |
|---|
| 28 | Once the SoC architecture is validated through performances analysis, |
|---|
| 29 | COACH will generate automatically an executable containing the host application and |
|---|
| 30 | the FPGA bitstream. This bitstream contains |
|---|
| 31 | both the hardware architecture and the SoC application software. |
|---|
| 32 | The user will be able to launch the application by |
|---|
| 33 | loading the bitstream on an FPGA and running the executable on PC. |
|---|
| 34 | \end{SUPPRESSEDENV}\begin{ADDEDENV} |
|---|
| 35 | Once the SoC architecture is validated through performances analysis, |
|---|
| 36 | COACH generates its bitstream in the case of HPC or embedded application, |
|---|
| 37 | or its IP-XACT description for its integration in the case of a function. |
|---|
| 38 | Both descriptions contain the hardware architecture and the application software. |
|---|
| 39 | Furthermore in the HPC case, an executable containing the host application is |
|---|
| 40 | also generated and the user will be able to launch the application by loading |
|---|
| 41 | the bitstream on an FPGA and running the executable on PC. |
|---|
| 42 | \end{ADDEDENV} |
|---|
| 43 | \end{description} |
|---|
| 44 | |
|---|
| 45 | % l'avancee scientifique attendue. Preciser l'originalite et le caractere |
|---|
| 46 | % ambitieux du projet. |
|---|
| 47 | %FIXME == {NON ceci n'est pas une contribution scientifique. A re-ecrire} |
|---|
| 48 | |
|---|
| 49 | %The main scientific contribution of the project is to unify various synthesis techniques |
|---|
| 50 | %(same input and output formats) allowing the user to swap without engineering effort |
|---|
| 51 | %from one to another and even to chain them. For instance, it will be possible to run loop transformations before synthesis. |
|---|
| 52 | %Another advantage of this framework is to provide different abstraction levels from |
|---|
| 53 | %a single description. |
|---|
| 54 | %Finally, this description is device family independent and its hardware implementation |
|---|
| 55 | %is automatically generated. |
|---|
| 56 | |
|---|
| 57 | % Detailler les verrous scientifiques et techniques a lever par la realisation du projet. |
|---|
| 58 | Hardware/Software co-design is a very complex task. To simplify it, COACH will address the |
|---|
| 59 | following scientific and technological barriers: |
|---|
| 60 | \begin{description} |
|---|
| 61 | \item[\textit{Design Space Exploration by Virtual Prototyping}]: |
|---|
| 62 | The COACH environment will allow to easily map a parallel application (formally described as |
|---|
| 63 | an abstract network of process and communication channels) |
|---|
| 64 | COACH will permit the system designer to explore the design space, and to define the best |
|---|
| 65 | hardware/software partitioning of the application. |
|---|
| 66 | \item[\textit{Integration of system level modeling and HLS tools}]: |
|---|
| 67 | COACH will support the automated generation of hardware accelerators when required |
|---|
| 68 | by using High-Level Synthesis (HLS) tools. These HLS tools will be |
|---|
| 69 | fully integrated into a complete system-level design environment. |
|---|
| 70 | Moreover, COACH will support both data and control dominated applications, |
|---|
| 71 | and the HLS tools of COACH will support a common language and coding style |
|---|
| 72 | to avoid re-engineering by the designer. |
|---|
| 73 | COACH will provide a tool which will automatically explore the micro-architectural |
|---|
| 74 | design space of coprocessor. |
|---|
| 75 | \item[\textit{High-level code transformation}]: |
|---|
| 76 | COACH will allow to optimize the memory usage, to enhance the parallelism through |
|---|
| 77 | loop transformations and parallelization. The challenge is to identify the coarse |
|---|
| 78 | grained parallelism and to generate, |
|---|
| 79 | from a sequential algorithm, application containing multiple communicating |
|---|
| 80 | tasks. COACH will adapt techniques which were developed in the 1990 for |
|---|
| 81 | the construction of distributed programs. However, in the context of HLS, there are |
|---|
| 82 | several original problems to be solved, related to the FIFO communication channels and with |
|---|
| 83 | memory optimization. |
|---|
| 84 | COACH will support code transformation by providing a source to source C2C tool. |
|---|
| 85 | \item[\textit{Unified Hardware/Software communication middleware}]: |
|---|
| 86 | COACH will rely on he SoCLib experience to implement an unified hardware/software communication |
|---|
| 87 | infrastructure and communication APIs (Application Programming Interface), to support |
|---|
| 88 | communications between software tasks running on embedded processors and dedicated |
|---|
| 89 | hardware coprocessors. The main issue here is to support easy migration |
|---|
| 90 | from a software implementation to an hardware implementation. |
|---|
| 91 | \item[\textit{Processor customization}]: |
|---|
| 92 | ASIP (Application Specific Instruction Processor) design will be addressed by the COACH project. |
|---|
| 93 | COACH will allow system designers to explore the various level of interactions between |
|---|
| 94 | the original CPU micro-architecture and its extension. It will also allow to retarget |
|---|
| 95 | the compiler instruction-selection pass. Finally, COACH will integrate ASIP synthesis |
|---|
| 96 | in a complete System-level design framework. |
|---|
| 97 | \end{description} |
|---|
| 98 | |
|---|
| 99 | %Presenter les resultats escomptes en proposant si possible des criteres de reussite |
|---|
| 100 | %et d'evaluation adaptes au type de projet, permettant d'evaluer les resultats en |
|---|
| 101 | %fin de projet. |
|---|
| 102 | The main result is the framework. It is composed concretely of: |
|---|
| 103 | a communication middleware for HPC, |
|---|
| 104 | 5 HAS tools (control dominated HLS, data dominated HLS, Coarse grained HLS, |
|---|
| 105 | Memory optimisation HLS and ASIP), |
|---|
| 106 | 3 architectural templates that are synthesizable and that can be prototyped, |
|---|
| 107 | one design space exploration tool, |
|---|
| 108 | 2 operating systems (DNA/OS and MUTEKH). |
|---|
| 109 | \\ |
|---|
| 110 | The framework fonctionality will be demonstrated with the demonstrators |
|---|
| 111 | (see task-7 page~\pageref{task-7}) and the tutorial example (see task-8 |
|---|
| 112 | page~\ref{subtask-tutorial}). |
|---|