| [12] | 1 | \begin{figure}\leavevmode\center | 
|---|
 | 2 | \includegraphics[width=.8\linewidth]{architecture-csg} | 
|---|
| [105] | 3 | \caption{\label{archi-csg} Software architecture for digital system generation} | 
|---|
| [12] | 4 | %\end{figure}\begin{figure}\leavevmode\center | 
|---|
 | 5 | \mbox{}\vspace*{1ex}\\ | 
|---|
| [21] | 6 | \includegraphics[width=1.0\linewidth]{architecture-hls} | 
|---|
| [105] | 7 | \caption{\label{archi-hls} Software architecture of hardware accellerator synthesis} | 
|---|
| [12] | 8 | %\end{figure}\begin{figure}\leavevmode\center | 
|---|
 | 9 | \mbox{}\vspace*{1ex}\\ | 
|---|
 | 10 | \includegraphics[width=.8\linewidth]{architecture-hpc} | 
|---|
| [105] | 11 | \caption{\label{archi-hpc} Software architecture of HPC} | 
|---|
| [12] | 12 | \end{figure} | 
|---|
| [56] | 13 | %FIXME: la figure ne montre que l'aspect simulation. Intégrer la partie génération (PC API, PCIX, FPGA-IP, bridge vers VCI, SoC API) serait un plus, non ? | 
|---|
| [12] | 14 | % | 
|---|
| [33] | 15 | Figures~\ref{archi-csg}, \ref{archi-hls} and \ref{archi-hpc} | 
|---|
| [65] | 16 | summarize the software architecture of the COACH framework we will develop. | 
|---|
| [12] | 17 | In figures, the dotted boxes are the softwares or formats that COACH | 
|---|
| [65] | 18 | has to provide and to support. | 
|---|
| [99] | 19 | \parlf | 
|---|
| [56] | 20 | For the system generation presented in figure~\ref{archi-csg}, the conductor | 
|---|
| [21] | 21 | is the tool \verb!CSG! (COACH System Generator). Its inputs are a process | 
|---|
| [119] | 22 | network describing the target application and the synthesis parameters. | 
|---|
| [21] | 23 | The main parameters are the target hardware architectural template | 
|---|
| [119] | 24 | with its instantiation parameters, the hardware/software mapping of the | 
|---|
| [21] | 25 | tasks, the FPGA device and design constraints. | 
|---|
| [119] | 26 | \verb+CSG+ thus requires an architectural template library, an operating system | 
|---|
| [21] | 27 | library, two system hardware component (CPU, memories, BUS...) libraries | 
|---|
 | 28 | (one for synthesis, one for simulation). | 
|---|
 | 29 | For generating the coprocessor of a task mapped as hardware, \verb+CSG+ | 
|---|
 | 30 | controls the HAS tools described below. | 
|---|
 | 31 | From these inputs \verb!CSG! can generate the entire system (both software \& | 
|---|
 | 32 | hardware) either as a SystemC simulator to prototype and explore quickly the | 
|---|
 | 33 | design space or as a bitstream\footnote{COACH generates synthesizable VHDL, and | 
|---|
 | 34 | launch the Xilinx or Altera RTL synthesis tools.} directly downloadable on the | 
|---|
| [56] | 35 | FPGA device\footnote{Additional partial bitstreams are generated in case of | 
|---|
 | 36 |  dynamic partial reconfiguration}. | 
|---|
| [21] | 37 | %To proove CSG that COACH is open and CSG is really configurable, COACH will | 
|---|
 | 38 | %basically support 3 architecture template (the COACH template based on a | 
|---|
 | 39 | %MIPS processors and a VCI token ring, the Altera template based on the NIOS | 
|---|
| [99] | 40 | %and AVALON bus, the Xilinx template based on the MICROBLAZE and PLB bus) | 
|---|
| [21] | 41 | %and 2 operating systems (DNA/OS and MUTEK). Furthermore, thus is enforced | 
|---|
 | 42 | %by the \mustbecompleted{FIXME:zied} contribution that consists in | 
|---|
 | 43 | %implementing an other hardware target. | 
|---|
 | 44 | %\\ | 
|---|
 | 45 | %Finally, it is important to notice that this work is a strong | 
|---|
 | 46 | %enhancement of the SocLib software. | 
|---|
| [99] | 47 | \parlf | 
|---|
| [21] | 48 | The software architecture for HAS is presented in figure~\ref{archi-hls}. | 
|---|
 | 49 | The input is a single task of the process network. The HAS tools do not work | 
|---|
| [12] | 50 | directly on the C++ task description but on an internal format called | 
|---|
| [38] | 51 | \xcoach generated by a plugin into the GNU C compiler (GCC).  | 
|---|
 | 52 | This allows on the one hand to insure that all the tools will | 
|---|
| [132] | 53 | accept the same C++ description and on the other hand make possible | 
|---|
| [21] | 54 | their chaining. The front-end tools read a \xcoach description and generate | 
|---|
 | 55 | a new \xcoach description that exibits more parallelism or implement | 
|---|
| [132] | 56 | specific instructions for ASIP. The back-end tools read an \xcoach | 
|---|
 | 57 | description and generate an \xcoachplus description. This is an \xcoach | 
|---|
 | 58 | description annotated with hardware information (scheduling, binding) required by | 
|---|
| [21] | 59 | the VHDL and systemC drivers. | 
|---|
 | 60 | Furthermore, the back-end tools uses a macro-cell library (functional and memory | 
|---|
 | 61 | unit). | 
|---|
| [99] | 62 | \parlf | 
|---|
| [21] | 63 | In addition to digital system design, HPC requires a supplementary | 
|---|
 | 64 | partitioning step presented in figure~\ref{archi-hpc}. The designer | 
|---|
 | 65 | splits the initial application (tag 1) in two parts: one still on the PC and the | 
|---|
 | 66 | other running in a FPGA plugged on the PCI/X PC bus. The two parts exchange data | 
|---|
 | 67 | through communication primitives (tag 2) implemented in a library. | 
|---|
| [65] | 68 | To evaluate the relevance of the partitioning, the designer can build a | 
|---|
| [21] | 69 | simulator. Once the partitioning is validated, the design of the FPGA part | 
|---|
 | 70 | is done through \verb!CSG! (figure~\ref{archi-csg}). | 
|---|
| [99] | 71 | \parlf | 
|---|
 | 72 | The project is split into 8 tasks numbered from 1 to 8. There are described | 
|---|
| [132] | 73 | below and detailled in section \ref{task-description}. | 
|---|
| [99] | 74 | \begin{description} | 
|---|
 | 75 | \item[Task-1: \textit{Project management}] | 
|---|
| [132] | 76 |     This task relates to the monitoring of the COACH project. | 
|---|
| [99] | 77 | \item[Task-2: \textit{\Backbone}] This task tackles the fundamental points of the | 
|---|
| [21] | 78 |         project such as the defintion of the COACH inputs and outputs, | 
|---|
 | 79 |     the internal formats (e.g. \xcoach), the architectural templates and | 
|---|
 | 80 |     the design flow. | 
|---|
| [99] | 81 | \item[task-3: \textit{System generation}] This task addresses the prototyping and | 
|---|
| [132] | 82 |     the generation of digital system. Apart from HAS that belong to task 3 | 
|---|
| [21] | 83 |     and 4, its components are those presented figure~\ref{archi-csg} | 
|---|
 | 84 |     (e.g.  \verb!CSG!, operating systems). | 
|---|
| [99] | 85 | \item[Task-4: \textit{HAS front-end}] This task mainly focusses on four functionalities: | 
|---|
| [21] | 86 |     optimization of the memory usage, parallelism enhancement through loop | 
|---|
 | 87 |     transformations, coarse grain parallelization and ASIP generation. | 
|---|
| [99] | 88 | \item[Task-5: \textit{HAS back-end}] This task groups two functionalities: | 
|---|
| [21] | 89 |     High-Level Synthesis of data dominated description and HLS of control | 
|---|
 | 90 |     dominated description. | 
|---|
 | 91 |     This task contains also the development of a frequency adaptator | 
|---|
 | 92 |     that will allow the coprocessors to respect the processor \& the bus | 
|---|
 | 93 |     frequency. | 
|---|
| [99] | 94 | \item[Task-6: \textit{PC/FPGA communication middleware}] | 
|---|
| [132] | 95 |     This task pools the features dedicated to HPC. These are mainly the | 
|---|
| [56] | 96 |     partitioning validation (see figure~\ref{archi-hpc}), the sytem drivers for | 
|---|
 | 97 |     both PC and FPGA-SoC sides, the hardware communication components and | 
|---|
 | 98 |         support for dynamic partial reconfiguration. | 
|---|
| [99] | 99 | \item[Task-7: \textit{Industrial demonstrators}] | 
|---|
| [33] | 100 |     This task groups the demonstrators of the COACH project. | 
|---|
| [132] | 101 |     Most of them are industrial applications that will be developped within | 
|---|
 | 102 |     the COACH framework. | 
|---|
 | 103 |     Others consist in integrating the COACH framework as a driver of  | 
|---|
 | 104 |     industrial proprietary design tools. | 
|---|
| [99] | 105 | \item{Task 8: \textit{Dissemination}} | 
|---|
| [132] | 106 |     This task concerns the diffusion of the project results. | 
|---|
| [99] | 107 |     It mainly consists of the production of 4 COACH releases (\verb!T0+12!, \verb!T0+18!, | 
|---|
 | 108 |     \verb!T0+24! and \verb!T0+36!) | 
|---|
| [132] | 109 |     and the publication of a tutorial on a WEB site. | 
|---|
| [99] | 110 | \end{description} | 
|---|
| [21] | 111 | % | 
|---|
| [12] | 112 | \begin{figure}\leavevmode\center | 
|---|
| [21] | 113 | %\includegraphics[width=.4\linewidth]{dependence-task} | 
|---|
 | 114 | \includegraphics[width=0.70\linewidth]{dependence-task-h} | 
|---|
 | 115 | \caption{\label{dependence-task}Task dependencies} | 
|---|
| [12] | 116 | \end{figure} | 
|---|
| [65] | 117 | Figure~\ref{dependence-task} presents the tasks dependencies. | 
|---|
| [99] | 118 | "$T_N \longrightarrow T_M$" means that $T_N$ impacts the $T_M$.  | 
|---|
| [132] | 119 | The more bold the arrow, the more important is the impact. | 
|---|
| [21] | 120 | The graph shows: | 
|---|
 | 121 | \begin{itemize} | 
|---|
| [132] | 122 | \item Notwithstanding that $T4$ and $T5$ functionalities are complementary,  | 
|---|
 | 123 | their developments are independent (thanks to the \xcoach internal format). | 
|---|
| [99] | 124 | \item $T3$ slightly depends on $T4$ and $T5$. Indeed, $T3$ may works | 
|---|
| [132] | 125 | without $T4$ and $T5$ if we limit ourselves to digital systems without hardware | 
|---|
 | 126 | accelerators.  | 
|---|
 | 127 | \item $T3$ strongly impacts $T6$ but $T3$ does not depend at all on | 
|---|
 | 128 | $T6$. Hence demonstrators ($T7$) of embedded system would not be impacted if | 
|---|
| [99] | 129 | $T6$ would fail.   | 
|---|
| [132] | 130 | \item $T2$ drives all the tasks ($T3$, $T4$, $T5$, $T6$) and is at the heart of | 
|---|
| [65] | 131 | the COACH project. | 
|---|
| [132] | 132 | \item The demonstrators developped in $T7$, of course strongly depends on the achievements  | 
|---|
| [105] | 133 | of the previous tasks ($T2$, $T3$, $T4$, $T5$, $T6$). | 
|---|
| [99] | 134 | \item $T8$ and $T1$ respectively depends on and impacts all the other tasks. | 
|---|
| [21] | 135 | \end{itemize} | 
|---|
| [33] | 136 | This organisation offers enough robustness to insure the success of the | 
|---|
| [99] | 137 | project except for the specification task $T2$.  | 
|---|
 | 138 | The only critical task in this chart is $T2$. \label{xcoach-problem} | 
|---|
| [33] | 139 | However, the partners met | 
|---|
 | 140 | 10 times (a one day meeting per month) during the last year to prepare the | 
|---|
 | 141 | specification and the project proposal. This gives us a degree of confidence  | 
|---|
| [99] | 142 | that $T2$ will be completed in time. | 
|---|