Index: /anr/anr.sty
===================================================================
--- /anr/anr.sty	(revision 278)
+++ /anr/anr.sty	(revision 279)
@@ -151,5 +151,5 @@
     \let\xilinx\relax
     \immediate\write\ganttdata{%
-      T=\the\taskcnt\space S=\the\subtaskcnt\space%
+      L=1 T=\the\taskcnt\space S=\the\subtaskcnt\space%
       D=\the\livrablecnt\space V=\vers\space%
       BM=#1 EM=#2 R=#3 PART={#4} KIND={#5} TITLE=#6%
@@ -224,5 +224,5 @@
         {\textsc{##4}}%
  }
- \def\CoutHorsD##1##2##3##4##5{%
+ \def\OtherPartner##1##2##3##4{%
     \let\xcoach\relax
     \let\xcoachplus\relax
@@ -237,6 +237,6 @@
     \let\mds\relax     \let\Smds\relax
     \immediate\write\ganttdata{%
-      T=\the\taskcnt\space S=\the\subtaskcnt\space%
-      D=none BM=##1 EM=##2 R=##5 PART={##3} TITLE=##4%
+      L=0 T=\the\taskcnt\space S=\the\subtaskcnt\space%
+      D=\the\livrablecnt\space BM=##1 EM=##2 R=##4 PART={##3} TITLE=%
     }
  }
Index: /anr/gantt.l
===================================================================
--- /anr/gantt.l	(revision 278)
+++ /anr/gantt.l	(revision 279)
@@ -54,5 +54,4 @@
 
 typedef struct _Tlivrable {
-    int tn,stn,dn,vn;  // task, sub-task, number
     char v;            // 0, 1, 2, ..., F 
     char* kind;
@@ -60,4 +59,7 @@
     int   bm,em;       // mois de bebut et de fin
     double hman[3];    // nombre de mh par an
+    int tn,stn,dn,vn;  // task, sub-task, number
+    int    leader;     // 1: the partner leads this livrable
+                       // 0: the partner helps for this livrable
     int    partner;    // index dans partner_table
     // these fields are filled by the program for data[tn][0][0][0]
@@ -67,7 +69,11 @@
     double nbma[3];          // durÃ©e en mois par annee
     // these fields are filled by the program for data[tn][stn][dn][0]
-    struct _Tlivrable
-            **vers; // null termiated (vers[i] = &data[tn][stn][dn][i])
-    int    nbvers;     // nombre de vers
+    struct _Tlivrable // versions of the livrable
+            **vers; // null termiated (vers[i] = data[tn][stn][dn][j])
+                    // this->leader == 1 
+                    // vers[0] = this
+                    // vers[i]->leadaer == this->leader 
+                    // vers[i]->partner == this->partner 
+    int    nbvers;  // nombre de vers
     double height;     // height of livrable
     // int del_bm,del_em;    // mois de bebut et de fin cummule
@@ -75,4 +81,11 @@
     int   nbTitleLines;
     char* titleLines[5]; // null termiated
+    struct _Tlivrable // participant to the livrable
+            **part; // null termiated (vers[i] = data[tn][stn][dn][j])
+                    // this->leader == 1 
+                    // vers[i] != this
+                    // vers[i]->leader ==  0
+                    // vers[i]->partner != this->partner 
+    int    nbpart;  // nombre de vers
 } Tlivrable;
 
@@ -215,10 +228,12 @@
  double an[3];
  char*  an_comment;
+ int    leader;
  int    partner;
 #.*\n   ;
+L=1       { leader=1; }
+L=0       { leader=0; }
 T=[0-9]+  { tn=atoi(yytext+2); }
 S=[0-9]+  { stn=atoi(yytext+2); }
 D=[0-9]+  { dn=atoi(yytext+2); }
-D=none    { dn=-2; }
 V=V[1-8F] { v=yytext[3]; }
 ML=[0-9]+ {
@@ -282,4 +297,5 @@
         p->hman[1] = an[1];
         p->hman[2] = an[2];
+        p->leader = leader;
         p->partner = partner;
         p->title = title;
@@ -297,4 +313,5 @@
         an_comment=0;
         partner=0;
+        leader=0;
     }
 [ \t\n] ;
@@ -375,5 +392,6 @@
 void prepare3(Tdata* data)
 {
-int tn,stn,dn,vn;
+int tn,stn,dn,vn,cnt;
+Tlivrable* tmp;
     for (tn=0 ; tn<T_MAX ; tn++)
     for (stn=0; stn<S_MAX; stn++)
@@ -382,12 +400,33 @@
         if (p==0) continue;
         p->nbvers=0 ;
-        for (vn=0 ; vn<V_MAX ; vn+=1) 
-            if (data->ls[tn][stn][dn][vn]!=0) p->nbvers+=1;
+        p->nbpart=0 ;
+        for (vn=0 ; vn<V_MAX ; vn+=1) {
+            tmp = data->ls[tn][stn][dn][vn];
+            if (tmp==0) continue;
+            if (tmp->leader==0)
+               p->nbpart+=1;
+            else
+                p->nbvers+=1;
+        }
         p->vers=(Tlivrable**)malloc(sizeof(*p->vers)*(p->nbvers+1));
-        for (vn=0 ; vn<p->nbvers ; vn+=1) {
-            p->vers[vn] = data->ls[tn][stn][dn][vn];
-            data->ls[tn][stn][dn][vn]->nbvers = p->nbvers;
-        }
-        p->vers[vn] = 0;
+        for (vn=0,cnt=0 ; vn<V_MAX ; vn+=1) {
+            tmp = data->ls[tn][stn][dn][vn];
+            if (tmp!=0 && tmp->leader==1) {
+                p->vers[cnt++] = tmp;
+                tmp->nbvers = p->nbvers;
+             }
+        }
+        p->vers[cnt] = 0;
+        if (p->nbpart!=0) {
+            p->part=(Tlivrable**)malloc(sizeof(*p->part)*(p->nbpart+1));
+            for (vn=0,cnt=0 ; vn<V_MAX ; vn+=1) {
+                tmp = data->ls[tn][stn][dn][vn];
+                if (tmp!=0 && tmp->leader==0) {
+                    p->part[cnt++] = tmp;
+                 }
+            }
+            p->part[cnt] = 0;
+        }
+
         p->height = 1.0*DELIVRABLE_HEIGHT;
         if (p->nbTitleLines>=1) {
@@ -429,5 +468,5 @@
     for (stn=0 ; curr->ls[tn][stn][0][0]!=0 ; stn++)
         for (dn=0 ; curr->ls[tn][stn][dn][0]!=0 ; dn++) {
-            if ( curr->ls[tn][stn][dn][0]->dn<0 ) continue;
+            if ( curr->ls[tn][stn][dn][0]->leader==0 ) continue;
             nblivrables += 1;
             height+=curr->ls[tn][stn][dn][0]->height;
@@ -635,4 +674,19 @@
 }
 
+Tlivrable* do_partner_table_getLivrable(Tlivrable** leader, Tlivrable* top, int partner)
+{
+    int i;
+    Tlivrable* ret;
+    *leader=top->vers[top->nbvers-1];
+    if (leader[0]->partner==partner) 
+        return *leader;
+    for (i=0; i<top->nbpart ; i+=1) {
+        ret= top->part[i];
+        if ( ret->partner==partner )
+                return ret;
+    }
+    return 0;
+}
+
 void do_partner_table_full(int partner)
 {
@@ -662,15 +716,16 @@
         for (stn=0; stn<S_MAX; stn++) {
             for (dn=0; dn<D_MAX; dn++) {
+                Tlivrable *lcurr,*leader;
                 Tlivrable* top=curr->ls[tn][stn][dn][v];
                 if (top==0) continue;
-                Tlivrable* last=top->vers[top->nbvers-1];
-                if (last->partner!=partner) continue;
+                if ( (lcurr=do_partner_table_getLivrable(&leader,top,partner))==0 )
+                    continue;
                 double sum1,sum2,sum3,sum=0;
-                sum1 = last->hman[0]; sum +=sum1;
-                sum2 = last->hman[1]; sum +=sum2;
-                sum3 = last->hman[2]; sum +=sum3;
+                sum1 = lcurr->hman[0]; sum +=sum1;
+                sum2 = lcurr->hman[1]; sum +=sum2;
+                sum3 = lcurr->hman[2]; sum +=sum3;
                 char label[1000],title[1000];
-                gen_label_base(label,last);
-                sprintf(title,"\\resstablestyletitle{%s}",last->title);
+                gen_label_base(label,leader);
+                sprintf(title,"\\resstablestyletitle{%s}",leader->title);
                 fprintf(curr->os,"%s & %s & %2.1f & %2.1f & %2.1f & %2.1f \\\\\\hline\n",
                    label,title,sum1,sum2,sum3,sum);
@@ -680,31 +735,31 @@
                 an  += sum  ; tsk  += sum  ;
                 newlineadded=0;
-                if ( sum1==0 && last->nbma[0]!=0) 
+                if ( sum1==0 && leader->nbma[0]!=0) 
                     fprintf(stderr,"ERROR:   %-10s:%s probleme sur l'an 1 (in table=%2.1f, in gantt=%2.1f\n",
-                        part->name,label,sum1,last->nbma[0]);
-                else if (sum1!=0 && last->nbma[0]==0 ) 
+                        part->name,label,sum1,leader->nbma[0]);
+                else if (sum1!=0 && leader->nbma[0]==0 ) 
                     fprintf(stderr,"ERROR:   %-10s:%s probleme sur l'an 1 (in table=%2.1f, in gantt=%2.1f\n",
-                        part->name,label,sum1,last->nbma[0]);
-                else if (sum1!=0 && sum1>last->nbma[0] ) 
+                        part->name,label,sum1,leader->nbma[0]);
+                else if (sum1!=0 && sum1>leader->nbma[0] ) 
                     fprintf(stderr,"WARNING: %-10s:%s probleme sur l'an 1 (in table=%2.1f, in gantt=%2.1f\n",
-                        part->name,label,sum1,last->nbma[0]);
-                if ( sum2==0 && last->nbma[1]!=0) 
+                        part->name,label,sum1,leader->nbma[0]);
+                if ( sum2==0 && leader->nbma[1]!=0) 
                     fprintf(stderr,"ERROR:   %-10s:%s probleme sur l'an 2 (in table=%2.1f, in gantt=%2.1f\n",
-                        part->name,label,sum2,last->nbma[1]);
-                else if ( sum2!=0 && last->nbma[1]==0) 
+                        part->name,label,sum2,leader->nbma[1]);
+                else if ( sum2!=0 && leader->nbma[1]==0) 
                     fprintf(stderr,"ERROR:   %-10s:%s probleme sur l'an 2 (in table=%2.1f, in gantt=%2.1f\n",
-                        part->name,label,sum2,last->nbma[1]);
-                else if (sum2!=0 && sum2>last->nbma[1]) 
+                        part->name,label,sum2,leader->nbma[1]);
+                else if (sum2!=0 && sum2>leader->nbma[1]) 
                     fprintf(stderr,"WARNING: %-10s:%s probleme sur l'an 2 (in table=%2.1f, in gantt=%2.1f\n",
-                        part->name,label,sum2,last->nbma[1]);
-                if ( sum3==0 && last->nbma[2]!=0) 
+                        part->name,label,sum2,leader->nbma[1]);
+                if ( sum3==0 && leader->nbma[2]!=0) 
                     fprintf(stderr,"ERROR:   %-10s:%s probleme sur l'an 3 (in table=%2.1f, in gantt=%2.1f\n",
-                        part->name,label,sum3,last->nbma[2]);
-                else if ( sum3!=0 && last->nbma[2]==0) 
+                        part->name,label,sum3,leader->nbma[2]);
+                else if ( sum3!=0 && leader->nbma[2]==0) 
                     fprintf(stderr,"ERROR:   %-10s:%s probleme sur l'an 3 (in table=%2.1f, in gantt=%2.1f\n",
-                        part->name,label,sum3,last->nbma[2]);
-                else if (sum3!=0 && sum3>last->nbma[2]) 
+                        part->name,label,sum3,leader->nbma[2]);
+                else if (sum3!=0 && sum3>leader->nbma[2]) 
                     fprintf(stderr,"WARNING: %-10s:%s probleme sur l'an 3 (in table=%2.1f, in gantt=%2.1f\n",
-                        part->name,label,sum3,last->nbma[2]);
+                        part->name,label,sum3,leader->nbma[2]);
             }
         }
@@ -749,12 +804,13 @@
         for (stn=0; stn<S_MAX; stn++) {
             for (dn=0; dn<D_MAX; dn++) {
+                Tlivrable *lcurr,*leader;
                 Tlivrable* top=curr->ls[tn][stn][dn][v];
                 if (top==0) continue;
-                Tlivrable* last=top->vers[top->nbvers-1];
-                if (last->partner!=partner) continue;
+                if ( (lcurr=do_partner_table_getLivrable(&leader,top,partner))==0 )
+                    continue;
                 double sum1,sum2,sum3,sum=0;
-                sum1 = last->hman[0]; sum +=sum1;
-                sum2 = last->hman[1]; sum +=sum2;
-                sum3 = last->hman[2]; sum +=sum3;
+                sum1 = lcurr->hman[0]; sum +=sum1;
+                sum2 = lcurr->hman[1]; sum +=sum2;
+                sum3 = lcurr->hman[2]; sum +=sum3;
                 an1 += sum1 ; tsk1 += sum1 ;
                 an2 += sum2 ; tsk2 += sum2 ;
@@ -763,5 +819,5 @@
                 newlineadded=0;
                 char label[1000];
-                gen_label_base(label,last);
+                gen_label_base(label,leader);
             }
         }
@@ -829,5 +885,5 @@
             Tlivrable* l = curr->ls[tn][stn][dn][v]; 
             if ( l==0 ) break;
-            if ( l->dn<0 ) continue;
+            if ( l->leader==0 ) continue;
             char label[1000],resp[100],date[100],kind[100],desc[1000];
             gen_label_full(label,l);
Index: /anr/task-0.tex
===================================================================
--- /anr/task-0.tex	(revision 278)
+++ /anr/task-0.tex	(revision 279)
@@ -22,5 +22,4 @@
   \subtask{Consortium agreement} This \ST consists in writing and ratifying the consortium agreement. 
     \begin{livrable}
-      \CoutHorsD{0}{36}{\Subs}{project management}{1:1:1}
     \itemL{0}{6}{d}{\Smds}{Consortium agreement}{1:0:0}
         A document describing the consortium agreement, signed by all the partners.
@@ -29,5 +28,5 @@
     organization of the project at all the levels.
     \begin{livrable}
-      \itemL{0}{36}{d}{\Smds}{Global management}{1:1:1}
+      \itemL{0}{36}{d}{\Smds}{Global project management}{1:1:1}
         Global management of the project at all the
         levels: progress monitoring, record keeping, meeting organization, review
@@ -38,6 +37,9 @@
     project meetings and the communication with the project leader and the other partners.
     \begin{livrable}
-      \itemL{0}{36}{}{\Supmc}{\upmc management}{1:1:1} Project management at the partner level.
-      \CoutHorsD{0}{36}{\Stima}{project management}{1:1:1}
+      \itemL{0}{36}{}{\mds}{Local project management}{.5:.5:.5} Project management at the partner level.
+      \OtherPartner{0}{36}{\Supmc}{.5:.5:.5}
+      \OtherPartner{0}{36}{\Subs} {.5:.5:.5}
+      \OtherPartner{0}{36}{\Stima}{.5:.5:.5}
+      \OtherPartner{0}{36}{\Slip} {.5:.5:.5}
     \end{livrable}
   \subtask{Setup of dissemination infrastructure}
@@ -53,5 +55,4 @@
         infrastructure (adding \& suppressing account, retrieving forgotten passwords,
         creation and closing development branch, ...)
-      \CoutHorsD{0}{36}{\Slip}{project management}{1:1:1}
     \end{livrable}
 \end{workpackage}
Index: /anr/task-1.tex
===================================================================
--- /anr/task-1.tex	(revision 278)
+++ /anr/task-1.tex	(revision 279)
@@ -17,37 +17,65 @@
     specifying: how to feed COACH (the inputs), how to use COACH (use model),
     what is generated (the outputs).
-    %(definition of the generic architecture of the
-    %MPSoC and its 3 targets hardware mapping).
     \begin{livrable}
-      \CoutHorsD{0}{12}{\Sbull}{User specification}{3:0:0}
-    \itemV{0}{6}{d}{\Supmc}{COACH specification} \setMacroInAuxFile{specGenManualI}
-        The first version of the COACH specification.
-        This document contains the general description of the framework, the use model and the
-        description of the architectural templates.
-        It refers to the HAS specification (deliverable {\specHasManual}) and 
-        to the CSG specifcation (deliverable \specCsgManual) for the COACH input
-        descriptions.
-    \itemL{6}{12}{d}{\Supmc}{COACH specification}{1:0:0} \setMacroInAuxFile{specGenManual}
-        The final version of the {\specGenManualI} deliverable updated with the first 
-	    feed-backs of the demonstrator \STs.
-    \itemV{0}{6}{d}{\Stima}{CSG specification} \setMacroInAuxFile{specCsgManualI}
-        The first version of the CSG (COACH System Generator) specification.
-        It specifies how the task graph is described, the communication schemes and its
-        associated API (Application  Programming Interface).
-        The base is the SRL library and the MWMR communication component defined by the SocLib
-        ANR project.
-        Nevertheless, these basic schemes will be enhanced to allow more efficient
-        synthesis.
-    \itemL{6}{12}{d}{\Stima}{CSG specification}{1:0:0} \setMacroInAuxFile{specCsgManual}
-        The final version of the {\specGenManualI} deliverable updated with the first 
-	    feed-backs of the demonstrator \STs.
-    \itemV{0}{6}{d}{\Subs}{HAS specification} \setMacroInAuxFile{specHasManualI}
-        The first version of the HAS (Hardware Accelerator Synthesis) specification.
-        It specifies how tasks must be written (C/C++ subset) and how
-        communication schemes defined in the {\specCsgManual} deliverable must be described for
-        coprocessor synthesis.
-    \itemL{6}{12}{d}{\Subs}{HAS specification}{2:0:0} \setMacroInAuxFile{specHasManual}
-        The final version of the {\specGenManualI} deliverable updated with the first 
-	    feed-backs of the demonstrator \STs.
+    \itemV{0}{6}{d}{\Supmc}{Use model specification}
+        This document describes the use modle of COACH. It will be a cooperative work.
+        Its main parts are:
+        \begin{description}
+          \item[General overview] (\Supmc)
+          \item[CSG specification] (\Stima)
+            Here the COACH System Generator Generator is specified:
+            how the task graph is described, the communication schemes and
+            its associated API (Application  Programming Interface).
+            The base is the SRL library and the MWMR communication component defined
+            by the SocLib ANR project.
+            Nevertheless, these basic schemes will be enhanced to allow more efficient
+            synthesis.
+          \item[HAS specification] (\Subs)
+            This part focuses to the Hardware Accelerator Synthesis.
+            It specifies how tasks must be written (C/C++ subset) and how
+            communication schemes must be described for coprocessor synthesis.
+        \end{description}
+    \itemL{6}{12}{d}{\Supmc}{Use model specification}{3:0:0}
+        \setMacroInAuxFile{useModelSpecification}
+        The final version of the Use model specification enhanced
+        with the feed-backs of the demonstrator \STs.
+        \OtherPartner{0}{12}{\Slip}   {2:0:0}
+        \OtherPartner{0}{12}{\Sirisa} {2:0:0}
+        \OtherPartner{0}{12}{\Stima}  {3:0:0}
+        \OtherPartner{0}{12}{\Subs}   {3:0:0}
+        \OtherPartner{0}{12}{\Sbull}  {2:0:0}
+        \OtherPartner{0}{12}{\Sthales}{2:0:0}
+        \OtherPartner{0}{12}{\Smds}   {2:0:0}
+%   \itemV{0}{6}{d}{\Supmc}{Use model specification} \setMacroInAuxFile{specGenManualI}
+%       The first version of the COACH specification.
+%       This document contains the general description of the framework, the use model and the
+%       description of the architectural templates.
+%       It refers to the HAS specification (deliverable {\specHasManual}) and 
+%       to the CSG specifcation (deliverable \specCsgManual) for the COACH input
+%       descriptions.
+%   \itemL{6}{12}{d}{\Supmc}{COACH specification}{1:0:0} \setMacroInAuxFile{specGenManual}
+%       The final version of the {\specGenManualI} deliverable updated with the first 
+%       feed-backs of the demonstrator \STs.
+%       \OtherPartner{0}{12}{\Sbull}  {3:0:0}
+%       \OtherPartner{0}{12}{\Sthales}{1:0:0}
+%   \itemV{0}{6}{d}{\Stima}{CSG specification} \setMacroInAuxFile{specCsgManualI}
+%       The first version of the CSG (COACH System Generator) specification.
+%       It specifies how the task graph is described, the communication schemes and its
+%       associated API (Application  Programming Interface).
+%       The base is the SRL library and the MWMR communication component defined by the SocLib
+%       ANR project.
+%       Nevertheless, these basic schemes will be enhanced to allow more efficient
+%       synthesis.
+%   \itemL{6}{12}{d}{\Stima}{CSG specification}{1:0:0} \setMacroInAuxFile{specCsgManual}
+%       The final version of the {\specGenManualI} deliverable updated with the first 
+%       feed-backs of the demonstrator \STs.
+%   \itemV{0}{6}{d}{\Subs}{HAS specification} \setMacroInAuxFile{specHasManualI}
+%       The first version of the HAS (Hardware Accelerator Synthesis) specification.
+%       It specifies how tasks must be written (C/C++ subset) and how
+%       communication schemes defined in the {\specCsgManual} deliverable must be described for
+%       coprocessor synthesis.
+%   \itemL{6}{12}{d}{\Subs}{HAS specification}{2:0:0} \setMacroInAuxFile{specHasManual}
+%       The final version of the {\specGenManualI} deliverable updated with the first 
+%       feed-backs of the demonstrator \STs.
     \end{livrable}
 \subtask{Internal software structure}
@@ -55,5 +83,4 @@
     document listing all the COACH software components and how they cooperate.
     \begin{livrable}
-      \CoutHorsD{0}{12}{\Sthales}{User specification}{1:0:0}
     \itemL{0}{6}{d}{\Supmc}{COACH internal \ganttlf software architecture}{1:0:0}
         Description of the software list and the data flow among the tools.
Index: /anr/task-6.tex
===================================================================
--- /anr/task-6.tex	(revision 278)
+++ /anr/task-6.tex	(revision 279)
@@ -25,5 +25,5 @@
       \itemV{6}{12}{x}{\Sbull}{\bull demonstrator}
         The deliverable is the specification of the demonstrator in COACH input format
-        defined in the {\specGenManual} deliverable.
+        defined in the \novers{\useModelSpecification} deliverable.
       \itemL{12}{36}{d}{\Sbull}{\bull demonstrator}{2:6:10}
         Validation of the demonstrator, the deliverable is a document
Index: /anr/task-7.tex
===================================================================
--- /anr/task-7.tex	(revision 278)
+++ /anr/task-7.tex	(revision 279)
@@ -36,5 +36,5 @@
         final releases with their installation manuals and to publish then into the WEB
         site.
-      \CoutHorsD{12}{36}{\Stima}{dissemination}{0:2:1}
+      \OtherPartner{12}{36}{\Stima}{0:2:1}
     \end{livrable}
   \subtask{\mustbecompleted{TITLE}}
@@ -73,5 +73,5 @@
         This user manual shows how a task can be synthesized by using HLS tools developped in
 		the COACH project. 
-      \CoutHorsD{12}{36}{\Subs}{dissemination}{0:2:2}
+      \OtherPartner{12}{36}{\Subs}{0:2:2}
    \end{livrable}
 \end{workpackage}
