source: anr/section-4.1.tex @ 27

Last change on this file since 27 was 23, checked in by coach, 15 years ago
File size: 6.9 KB
RevLine 
[12]1\begin{figure}\leavevmode\center
2\includegraphics[width=.8\linewidth]{architecture-csg}
[21]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}
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}
11\caption{\label{archi-hpc} software architecture of HPC}
12\end{figure}
13%
14The figures~\ref{archi-csg}, \ref{archi-hls} and \ref{archi-hpc}
15summarize the software architecture of COACH framework we plan to develop.
16In figures, the dotted boxes are the softwares or formats that COACH
[21]17has to provide.
[12]18\vspace*{.75ex}\par
[21]19For the system genration presented in figure~\ref{archi-csg}, the conductor
20is the tool \verb!CSG! (COACH System Generator). Its inputs are a process
21network describing the application to design and the synthesis parameters.
22The main parameters are the target hardware architectural template
[12]23with its instanciation parameters, the hardware/software mapping of the
[21]24tasks, the FPGA device and design constraints.
25\verb+CSG+ thus requires an architectural template library, a operating system
26library, two system hardware component (CPU, memories, BUS...) libraries
27(one for synthesis, one for simulation).
28For generating the coprocessor of a task mapped as hardware, \verb+CSG+
29controls the HAS tools described below.
30From these inputs \verb!CSG! can generate the entire system (both software \&
31hardware) either as a SystemC simulator to prototype and explore quickly the
32design space or as a bitstream\footnote{COACH generates synthesizable VHDL, and
33launch the Xilinx or Altera RTL synthesis tools.} directly downloadable on the
34FPGA device.
[12]35\\
[21]36%To proove CSG that COACH is open and CSG is really configurable, COACH will
37%basically support 3 architecture template (the COACH template based on a
38%MIPS processors and a VCI token ring, the Altera template based on the NIOS
39%and AVALON bus, the Xilinx template based on the MICROBLAZE and OPB bus)
40%and 2 operating systems (DNA/OS and MUTEK). Furthermore, thus is enforced
41%by the \mustbecompleted{FIXME:zied} contribution that consists in
42%implementing an other hardware target.
43%\\
44%Finally, it is important to notice that this work is a strong
45%enhancement of the SocLib software.
[12]46\vspace*{.75ex}\par
[21]47The software architecture for HAS is presented in figure~\ref{archi-hls}.
48The input is a single task of the process network. The HAS tools do not work
[12]49directly on the C++ task description but on an internal format called
50\xcoach generated by a the GNU C compiler (GCC) tainted by a COACH
51driver. This allows on the one hand to insure that all the tools will
52accept the same C++ description and on the other hand to make possible
[21]53their chaining. The front-end tools read a \xcoach description and generate
54a new \xcoach description that exibits more parallelism or implement
55specific instructions for ASIP. The back-end tools read a \xcoach
56description and generate a \xcoachplus description. This is a \xcoach
57description anotated with hardware information (scheduling, binding) required by
58the VHDL and systemC drivers.
59Furthermore, the back-end tools uses a macro-cell library (functional and memory
60unit).
[12]61\vspace*{.75ex}\par
[21]62In addition to digital system design, HPC requires a supplementary
63partitioning step presented in figure~\ref{archi-hpc}. The designer
64splits the initial application (tag 1) in two parts: one still on the PC and the
65other running in a FPGA plugged on the PCI/X PC bus. The two parts exchange data
66through communication primitives (tag 2) implemented in a library.
67To evaluate if the relevance of the partitioning, the designer can build a
68simulator. Once the partitioning is validated, the design of the FPGA part
69is done through \verb!CSG! (figure~\ref{archi-csg}).
[12]70\vspace*{.75ex}\par
71The project is splitted into 8 tasks numbered from 0 to 7.
72The first task (task 0) is the project management, the last one (task 7) is
73the dissemination the other task are listed below:
74\begin{enumerate}
[21]75\item\textbf{\backbone:} This task tackles the fundamental points of the
76        project such as the defintion of the COACH inputs and outputs,
77    the internal formats (e.g. \xcoach), the architectural templates and
78    the design flow.
79\item\textbf{system generation:} This task addresses the prototyping and
80    the generation of digital system. Apart from HAS that belong to the task 3
81    and 4, its components are those presented figure~\ref{archi-csg}
82    (e.g.  \verb!CSG!, operating systems).
83\item\textbf{HAS front-end:} This task mainly focusses on four functionalities:
84    optimization of the memory usage, parallelism enhancement through loop
85    transformations, coarse grain parallelization and ASIP generation.
86\item\textbf{HAS back-end:} This task groups two functionalities:
87    High-Level Synthesis of data dominated description and HLS of control
88    dominated description.
89    This task contains also the development of a frequency adaptator
90    that will allow the coprocessors to respect the processor \& the bus
91    frequency.
92\item\textbf{Communication between PC \& FPGA-SoC:}
93    This task pools the features dedicated to HPC. The main are the
94    partitioning validation (see figure~\ref{archi-hpc}, the sytem drivers for
95    both PC and FPGA-SoC sides, the hardware communication components.
[23]96\item\textbf{Demonstrators:}
[21]97    This task groups the demostrators of the COACH project.
98    \mustbecompleted{FIXME}
[12]99\end{enumerate}
[21]100%
[12]101\begin{figure}\leavevmode\center
[21]102%\includegraphics[width=.4\linewidth]{dependence-task}
103\includegraphics[width=0.70\linewidth]{dependence-task-h}
104\caption{\label{dependence-task}Task dependencies}
[12]105\end{figure}
[21]106Figure~\ref{dependence-task} presents the dependencies between the tasks.
107"$task-N \longrightarrow task-M$" means that $task-N$ requires $task-M$
108to work and be demonstrated. The more bold is the arrow, the more important is
109the dependency.
110The graph shows:
111\begin{itemize}
112\item Even that $T3$ and $T4$ functionalities are complementary, their
113developments are independent (thanks to \xcoach internal format).
114\item $T2$ depends slightly from $T3$ and $T4$. Indeed, $T2$ may works
115without $T3$ and $T4$ if we limit to digital systems without hardware
116accellerators.
117\item $T5$  strongly depends on $T2$ but, $T2$ does not depend at all on
118$T5$. So demonstrators ($T6$) of embedded system would not be impacted if
119$T5$ would fail. 
120\item $T1$ drives all the tasks ($T2$, $T3$, $T4$, $T5$) at the heart of
121the COACH project.
122\item $T7$ and $T0$ respectively depends on and impacts all the other tasks.
123\end{itemize}
124So this organisation offers enough robustness for insure the success of the
125project except for the specification task $T1$. However, the partners meet
12610 times (a one day meeting per month) during the last years to prepare the
127specification and the project proposal.
Note: See TracBrowser for help on using the repository browser.