| 1 | \begin{taskinfo} | 
|---|
| 2 | \let\LIP\leader | 
|---|
| 3 | \let\IRISA\enable | 
|---|
| 4 | \let\UBS\enable | 
|---|
| 5 | \let\UPMC\enable | 
|---|
| 6 | \let\TIMA\enable | 
|---|
| 7 | \end{taskinfo} | 
|---|
| 8 | % | 
|---|
| 9 | \begin{objectif} | 
|---|
| 10 | The objective of this task is to convert the input specification of | 
|---|
| 11 | an hardware accelerator, which must be written in a familiar language | 
|---|
| 12 | (C/C++) with as few constraints as possible, into a form suitable for | 
|---|
| 13 | the HLS tools (i.e. HAS back-end tools of the COACH project). If the  | 
|---|
| 14 | target is an ASIP, the frontend has to extract  | 
|---|
| 15 | patterns from the source code and convert them into the definition | 
|---|
| 16 | of an extensible processor. If the target is a process network, the | 
|---|
| 17 | front end has to distribute the workload and the data sets as fairly | 
|---|
| 18 | as possible, identify communication channels, and output an \xcoach | 
|---|
| 19 | description. | 
|---|
| 20 | \end{objectif} | 
|---|
| 21 | % | 
|---|
| 22 | \begin{workpackage} | 
|---|
| 23 |   \subtask This sub-task aims at providing compiler support for custom instructions  | 
|---|
| 24 |   within the HAS front-end. It will take as input the COACH intermediate  | 
|---|
| 25 |   representation, and will output an annotated COACH IR containing the custom | 
|---|
| 26 |   instructions definitions along with their occurrence in the application. | 
|---|
| 27 |     \begin{livrable} | 
|---|
| 28 |       \itemV{0}{18}{x}{\Sirisa}{ASIP compilation flow} | 
|---|
| 29 |         In this first version of the software, the computations patterns corresponding to | 
|---|
| 30 |         custom instructions are specified by the user, and then automatically extracted (when | 
|---|
| 31 |         beneficial) from the application intermediate representation.  | 
|---|
| 32 |         %\mustbecompleted{FIXME .....} | 
|---|
| 33 |       \itemL{18}{24}{x}{\Sirisa}{ASIP compilation flow}{6:9:0} | 
|---|
| 34 |         In this second version, the software will also be able to automatically identify  | 
|---|
| 35 |         interesting pattern candidates in the application code, and use them as custom  | 
|---|
| 36 |         instructions.   | 
|---|
| 37 |     \end{livrable} | 
|---|
| 38 |   | 
|---|
| 39 |  \subtask In this sub-task, we provide micro-architectural template models for the two target | 
|---|
| 40 |  processor architectures (NIOS-II and MIPS) supported within the COACH-ASIP design flow.  | 
|---|
| 41 |  For each processor, we provide a simulation model (System-C) and a synthesizable model (VHDL)  | 
|---|
| 42 |  of the architecture, along with its architectural extensions  | 
|---|
| 43 |     \begin{livrable} | 
|---|
| 44 |       \itemV{0}{12}{x}{\Sirisa}{SystemC for extensible MIPS } | 
|---|
| 45 |       { A SystemC simulation model for a simple extensible MIPS architectural template } | 
|---|
| 46 |       \itemL{12}{20}{x}{\Sirisa}{SystemC for extensible MIPS}{2:3:0} | 
|---|
| 47 |       {A SystemC simulation model for an extensible MIPS with a tight architectural integration of | 
|---|
| 48 |       its instruction set extensions} | 
|---|
| 49 |       \itemL{0}{12}{x}{\Sirisa}{SystemC for NIOS processor}{2:0:0} | 
|---|
| 50 |           { A SystemC simulation model for an extensible NIOS processor template, the VHDL model being | 
|---|
| 51 |           already available from \altera} | 
|---|
| 52 |       \itemV{12}{18}{h}{\Sirisa}{VHDL for an extensible MIPS} | 
|---|
| 53 |       {A synthesizable VHDL model for a simple extensible MIPS architectural template} | 
|---|
| 54 |       \itemL{18}{24}{h}{\Sirisa}{VHDL for an extensible MIPS}{9:12:0} | 
|---|
| 55 |       {A synthesizable VHDL model for an extensible MIPS with a tight architectural integration of | 
|---|
| 56 |       its instruction set extensions} | 
|---|
| 57 |       \itemL{24}{36}{d}{\Sirisa}{Evaluation report }{0:0:2} | 
|---|
| 58 |       {An evaluation report with quantitative analysis of the performance/area trade-off induced by | 
|---|
| 59 |       the different approaches} | 
|---|
| 60 |     \end{livrable} | 
|---|
| 61 |  | 
|---|
| 62 |   \subtask Extraction of parallelism in polyhedral loops and conversion into a process network. | 
|---|
| 63 |  | 
|---|
| 64 |    \begin{livrable} | 
|---|
| 65 |     \itemV{0}{6}{d}{\Slip}{Method, Preliminary Definition} | 
|---|
| 66 |       Description of the process network construction method for programs with  | 
|---|
| 67 |       polyhedral loops. User manual.  | 
|---|
| 68 |       \mustbecompleted{ FIXME :: User manual ou Specification. Si user manual alors le mettre en dissemination} | 
|---|
| 69 |     \itemL{30}{36}{d}{\Slip}{Process generation method}{5:0:5} | 
|---|
| 70 |       Final assessment of the method and improved version of the user manual. | 
|---|
| 71 |       \mustbecompleted {FIXME :: User manual ou Specification. Si user manual alors le mettre en dissemination} | 
|---|
| 72 |     \itemV{6}{12}{x}{\Slip}{Process construction} | 
|---|
| 73 |       Preliminary implementation in the Syntol framework.  | 
|---|
| 74 |       At this step the software will just implement a single constructor. | 
|---|
| 75 |     \itemV{12}{18}{x}{\Slip} {Arrays and FIFO} | 
|---|
| 76 |       Implementation of the array contraction and FIFO construction algorithm.  | 
|---|
| 77 |       Conversion of the input and output to the \xcoach format. | 
|---|
| 78 |     \itemV{18}{30}{d+x}{\Slip}{Non-polyhedral extension} | 
|---|
| 79 |       Extension of automatic parallelization and array contraction | 
|---|
| 80 |       to non-polyhedral loops. Implementation in the Bee framework. | 
|---|
| 81 |     \itemL{30}{36}{x}{\Slip} {Process and FIFO construction}{20:20:20} | 
|---|
| 82 |       Final release taking into account the feedbacks from the  | 
|---|
| 83 |       demonstrator \STs. | 
|---|
| 84 |    \end{livrable} | 
|---|
| 85 |  | 
|---|
| 86 | \end{workpackage} | 
|---|
| 87 |     | 
|---|