From c83b1397b7baf8e58af0ecd272aa3844fa92f707 Mon Sep 17 00:00:00 2001
From: Sophie Coudert <sophie.coudert@telecom-paris.fr>
Date: Wed, 23 Nov 2022 11:01:23 +0000
Subject: [PATCH] Sophie wrk

---
 .../images/classDiag1.fig                     |  10 +-
 .../images/classDiag1.pdf                     | Bin 14850 -> 14881 bytes
 doc/diplodocus_simulator/images/prepare.fig   |  33 ++--
 doc/diplodocus_simulator/images/prepare.pdf   | Bin 12592 -> 12343 bytes
 .../ttool_diplodocus_simulator.tex            | 182 ++++++++++++++----
 5 files changed, 167 insertions(+), 58 deletions(-)

diff --git a/doc/diplodocus_simulator/images/classDiag1.fig b/doc/diplodocus_simulator/images/classDiag1.fig
index d4ec0dda1d..e6c05b70a6 100644
--- a/doc/diplodocus_simulator/images/classDiag1.fig
+++ b/doc/diplodocus_simulator/images/classDiag1.fig
@@ -1,4 +1,4 @@
-#FIG 3.2  Produced by xfig version 3.2.7a
+#FIG 3.2  Produced by xfig version 3.2.8a
 Landscape
 Center
 Metric
@@ -7,6 +7,8 @@ A4
 Single
 -2
 1200 2
+0 32 #dcdcdc
+6 945 990 8715 5130
 6 6210 1170 8715 5040
 2 1 0 1 19 7 50 -1 -1 0.000 0 0 -1 0 0 3
 	 6300 3015 6300 3375 6390 3375
@@ -135,3 +137,9 @@ Single
 4 0 20 50 -1 0 12 0.0000 4 165 840 1125 2835 schedule()\001
 4 0 20 50 -1 0 12 0.0000 4 180 1725 1125 3060 getNextTransaction()\001
 4 0 -1 50 -1 1 11 0.0000 4 165 735 3150 2295 belongs to\001
+-6
+6 1980 630 7560 945
+2 2 0 1 32 32 55 -1 20 0.000 0 0 -1 0 0 5
+	 1980 660 7290 660 7290 930 1980 930 1980 660
+4 0 0 50 -1 0 14 0.0000 4 240 5520 2025 885 Synthetic and simplified view of the global class hierarchy\001
+-6
diff --git a/doc/diplodocus_simulator/images/classDiag1.pdf b/doc/diplodocus_simulator/images/classDiag1.pdf
index adedbfcc03cd18262037c052c91602139e9158ba..e17d5c84efba6542651c8b076428b7f3d95586d3 100644
GIT binary patch
delta 8907
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

delta 8848
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
Ux4$nOEC2-y;j*#Gt100A2M%K-y8r+H

diff --git a/doc/diplodocus_simulator/images/prepare.fig b/doc/diplodocus_simulator/images/prepare.fig
index 82abd15f4b..4a8d0a10e0 100644
--- a/doc/diplodocus_simulator/images/prepare.fig
+++ b/doc/diplodocus_simulator/images/prepare.fig
@@ -1,4 +1,4 @@
-#FIG 3.2  Produced by xfig version 3.2.7a
+#FIG 3.2  Produced by xfig version 3.2.8a
 Landscape
 Center
 Metric
@@ -59,20 +59,11 @@ Single
 4 0 0 50 -1 0 12 0.0000 4 135 990 810 6210 and return it\001
 4 0 0 50 -1 0 12 0.0000 4 135 105 5895 5130 0\001
 -6
-6 6840 2925 9090 6705
+6 6840 2925 9090 6975
 6 7013 4751 8235 4995
 1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 7624 4873 611 122 7624 4873 8235 4995
 4 0 0 50 -1 0 12 0.0000 4 135 900 7170 4928 transaction\001
 -6
-6 6975 5580 8235 6570
-2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 8235 6570 8235 5580 6975 5580 6975 6570 8235 6570
-4 0 0 50 -1 0 12 0.0000 4 180 555 7110 5985 update\001
-4 0 0 50 -1 0 12 0.0000 4 135 675 7110 6120 progress\001
-4 0 0 50 -1 0 14 0.0000 4 210 870 7110 5760 execute()\001
-4 0 0 50 -1 0 12 0.0000 4 135 600 7110 6390 archive\001
-4 0 0 50 -1 0 12 0.0000 4 135 900 7110 6525 transaction\001
--6
 6 7515 3105 8910 4230
 2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
 	 8910 4223 8910 3143 7515 3143 7515 4223 8910 4223
@@ -82,6 +73,19 @@ Single
 4 0 0 50 -1 0 14 0.0000 4 210 855 7740 3323 prepare()\001
 4 0 0 50 -1 0 12 0.0000 4 135 435 7695 4185 zero?\001
 -6
+6 6975 5400 8235 6840
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 7563 5428 7557 5657
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 8235 6840 8235 5580 6975 5580 6975 6840 8235 6840
+4 0 0 50 -1 0 12 0.0000 4 180 555 7110 5985 update\001
+4 0 0 50 -1 0 12 0.0000 4 135 675 7110 6120 progress\001
+4 0 0 50 -1 0 14 0.0000 4 210 870 7110 5760 execute()\001
+4 0 0 50 -1 0 12 0.0000 4 135 600 7110 6390 archive\001
+4 0 0 50 -1 0 12 0.0000 4 135 900 7110 6525 transaction\001
+4 0 0 50 -1 0 12 0.0000 4 180 945 7110 6795 call prepare\001
+-6
 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
 	0 0 1.00 60.00 120.00
 	 8100 4230 7830 4770
@@ -92,12 +96,11 @@ Single
 	0 0 1.00 60.00 120.00
 	 7571 5022 7565 5251
 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7560 6570 7560 6705 6840 6705 6840 2925 8100 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 7563 5428 7557 5657
+	 7560 6840 7560 6975 6840 6975 6840 2925 8100 2925
 2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
 	 7560 5220 7560 5445
+4 0 0 50 -1 0 12 0.0000 4 135 1350 7650 5400 simulator selects\001
+4 0 0 50 -1 0 12 0.0000 4 135 900 7650 5535 transaction\001
 4 0 0 50 -1 1 12 0.0000 4 105 330 8460 4455 true\001
 4 0 0 50 -1 1 12 0.0000 4 180 390 7605 4455 false\001
 -6
diff --git a/doc/diplodocus_simulator/images/prepare.pdf b/doc/diplodocus_simulator/images/prepare.pdf
index b12aee5f18fa87a63ae582f8136832a4181d0c1a..9d769516a80b1d778fad35e8c66ebbe74241e52c 100644
GIT binary patch
delta 9491
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
M+V~`^B8UBd0Idl>HUIzs

delta 9671
zcmb7pWk43~x;5P$(jnbX0T12XB_Jvd(v8wXH-e;qba!_u4N6Kk2uP#S`QhI0Is4o1
z{&CK^|I9sW*0ruRbN{+#H5pf%;xTK;$Z<n>;8@H92eG;DU4#H-N2(#h&atW=>09&%
zhZkn=W&IH(c_jTCP`(qOqQNMKR0I-J@@u1RuYIOPr(x7FxOC+_Z#ufXPH!0!ze!DW
z?LPP&_+66pjTE>-DPOl=HgI-DsRO&F(UZaS@yWybto?E|ir3~c8fun~Aqhg)AA-Ni
zEqq*PId=O36`TdwG`)zQ+7NZi&y2rSndny{Yd1z*kWbBZ;J93RYloseCzo7(o_pNs
zcCifVQ+2E*>i1+Gl`g8&hMHpp;>`&Kng;Rab9tr)3cL~W<TN7@A_sLaD)Bc<t7z`M
ztds%qeF(&lcktQ0zZZ7ibDEh9;w$8;E87sYV=%lmbvgq&Z#=(>J6P*e)f~oRVJR~2
zlVS!lZFS)E(S@rqDeZGrur+Qmya-W&DihR$^r-z9y`z&MT-3GvWH8Gxo$<+Q+4e|j
zPQ=Z^_#~QiT2yRAG0Z9=>ZmvwLMKV=D#G^?l*ke1hL<WNST@y~LfDFh#(2RW3-CV6
zGt>A_QAYy)3jP6_p4K9QGFS~m1jqhD;)3-Xba38wn5nSzP{PX`?l|;*XUUr00<&t=
zc-?_Wf(!z;z<gBRjLw#z?*^i62_`I3Jh}W(>sn&ddN(-_bpOTp2h7A{c5Kw4t@tiE
z_UErkXu51E(}CC}suEre>mW1UB`pFmCO+mxHa38m1Qk=xqWKN4;3r8EH%5e$2%-fH
zv<VVbYL4~~+9aWG<kEkkg}cNcO^G&t@j=&chcZ7Aq>~<^jxbhg*b~rZsY@RmDl2t6
zujOZ{=q_jg%LSF0+so!K$W}?yfKl;eQ-i?%v8P_nZz7<xZ(*ny#j3&V9G@lid!R|u
z+ET!Q{=QpibTFE^U7p5qU3XKKC-j&7CRf5(g6^PIqRqUsWUAfk)B`Hpj8Q%%!e%K(
zm@Yd<pR+0g$~adBR?O$1KJr9vC0DT*@~R%RqWn4RNdj=JrQgr16|j||l&kp(vE4aR
zT@utEkT`Y1byQVqO8K3W2L}|HBZ^7*_nU!iou21R!u?8Dw})5T1SatbqNwEEF61#b
zh4d6W<cg5ID~;_8X?3P~N^mUdxA8zUKBLrDTw_P(?n>!63%zPIk#7nt!!?@GJrW9@
zPw#1R3To=pl180-${W_x39I`NZ3|78`%Rg&{pHo4N)+NuSLr7D2Qmc-@##FfWDWz;
zg*9gd;i!l$iu!sB&$RrXv4T>E@*4bqwkgfU*=K>5Al_E}ttyPYQsxr6sZz@X2!VEH
z0kzOq_Bif8F}64`*v`wRHn6;P91V8ZRLnL}{OUH6EWV05uz9@h@!eri;r*8Ko)77}
ziocM=!j(o)m?cxqupqW4f4%Ff;2{UF$MI=fK@E=hyTwYv6B6(_CL`num+vW@^TVh{
zH_Hhw|9jM>YmKNe_E+1qccBDvuQ{<~sr!n|^5{crPMPbKVuODP$`~yY6N4?E4$bC2
zi)2)kt5#5*da@jn^owGJ#2U609w%)y4#U5J4cYA|+OEd)QoON4Y5XW#`?@?47}JjC
zN}kiXhBUqioJm6(s)y?@vyJAnO^8Qh=V#MQpz1hR5sf>6*Gjl~k+_G0vpDb*C{7vz
z`F^z=x674%vK&feWSg_pV)WRv)OXPT?o%nGC{s}Vd;qmzK{Ud=N}n~WYrdPNk(`UC
zo3<1*IgE;Rm@PAeV(W46jH|2x=&RTI=AJR~qqVVu!wo%^en~%XFQa6RMpV$v0Y5$$
zfrO;?ldk@`bm>Kdzq9tx!sD4Bk&idyhNf}yOx#mw=SdJ%%!V#>sn@@!PR}To)V@&a
zpYsWO6<HrSP@qh4QXgec45K~%&@KtVL)D?xSKaiE%y}}J;bcG1Y`wn#WE~C~yU{}_
za5;*I%%b!#%1yDR(fQ|jW5R12H}Kv#y%#lPYY^DAmONW7#6U+QM(4yl^dyHR+<uNy
z6zFoFx!p{TY#`NH7Sfn$sfdmVygzogH)2l=Z!huz9j%5Z^<UyKWJ^Ss>6$Va7nxw4
zAsuL*Vlou|>R8i9Rw~N@q-^n%0-w=X<p^&f&IF>0YusUmD4RLjwFl(xNJq`!J~S6>
zWKdizi=&j1Ev9y>e6sw}C%$N;&h12T7FQ(qoP9{c?zRF01&IpAqymVzSE%Y{zxyrM
zGFRKI-3YZVvtG0~E&@sKkmXCvb`?EbYu@hW+^iF;nzpajbcu)nZ_luaCDAW)kGK(i
z>^$+!-o6z*R!{K-MB6jP#BSSM3^q=C758O^PtPTIA@AriTig76u73_x?X2(Li-@d<
z`jy*_ca4YN?{XVv3ya7|r;%6fGzIV+Yh8)S=n`Ie0_`}e7hH_Qqj4KF!;IsssI5M<
zJUyg_VuZ-q*(coqAwCdta<?U(B}oR%MNFM6Cf(m(=Co~gIjY`kaF5D9k0CU8-#3+L
zF1kXK*|*y;bR`<+>nofUoTl%1uw;!e$OsXplqoiSHyIY?5&Y?9b5q`#S`9P{62Hs8
zZzkp8>Ild9JYB9Iyr0p!>w;=&Zol!%{RjS7m?5<q*-0{xXlUd0#tM68f{Y=at}LW)
z1i%G_P3<~)5mt@m0yG16yVl6))ybXrCUq|v*BrwqkWH*YKgYBXvuenHOl%)<2Rg;5
z`?r@Eus!sdja{Ys6Va=2W>wdP8;3P_Z2BX1dUl<zpdwH2vjl%-b!8eEA<zYz!_c|U
zg}*pm8(aXQcKk1olUL3Z&fO90{7B1ckt7mj`G{KyO!}wRu>>Z5G+Hs}J0=bBU6g_Y
z)Y4n|!2^YuByg9vr&oj`!Uud}CS!%djz(F=Xm>sXVlbN&idV_gCyV1<ufiO^R|~ut
zu>+2}sPBa(RwfGyo;hLsR-EFI;S_liX3%uAse=M+I6bA=L+egi7dUk_nbNc2GG%Ie
zqSYmS?l{ndD=(6HpV}#FQlwgH<2{?<kf2wJh`8(-_LHs*^?_=%D!sd#Wad=RTW|5J
zJ!f9SwAsgUgZV5vaFE~8JwCPoLc4{7xvQItg^4}Z<Id6428*8_O#kN!h4R7wU<q}Y
zTu8ip3G0|p3Rw>~d2KfnHw$_Q^pU281(I`gaHEI75-73WDZ>8&iHZG}(x3Z3N+Kd4
z9Zx3<(0^BBfz&lr=^<ibf3^IF*k4R7I2Jr%oR$)<C4eRHM-Ze10b@bHf42XU{`2Io
z0x1($i$5+v%977Cb>$PTu&5CQ6L4|a>cp@~5b6HBjuuGU-PG-mg+D$X`~H_h2!Dbz
zjv3WI)c-E0r=y~*{XF3ahZYf1hl?wL_^7Ie$BOpPHg(>3PZ0@u|J@aYH(`yI7l82!
zz{SM=`l=ouGjy%>wP#yb(&G*)G!}CwWbCE9ZKn-L?L~*}W2HZp%2R(J)IqUG#KAH7
zf}yBT8&41)7Yq&tqe#U`%JfB;WsEl(*q?pNaS`cw^J~fbT~Wtd`=gD4<q5H|mND0d
zW!9^j3&Wna&bPj+Hyr{`D1pFr0oqI*`a$+rsq{qVm_f(KT2W3m&KPHC$n@)OBd07Z
zeb@sM0?5H(Z@4ml+oSkg3)%USCU=E~Y+PPvl#E&oVU~>Om3x5Xm?}Bg2S-3rFR2=~
zg9Z;u2Uq17%v_bQe+9ok9>?Djlx3))m)CD>lZfMHkMRkhN{vfkWe0{iu2xs?TNWQ2
z0i2$dCy~9(1s3tYBFl#ldZy*y?0nzeB4eWACX%_|m+vxawVN8=O4TH9L|=^RGmFqC
zN{%itF43nvhcx0xeKM`VvEyu{yg^wEwI6t640O+!IM4Ce!9&fWs^MT-In%mog)d=W
z`}xhP%#^LfYBW>=Uje=1{lZeoVToZProG^!uo-aA2Zn9FCqV_KzVbdQ9tx1Fo^sW?
zZo8v{e6Sojr=9lPC$ROL{u~gN5;hwK(B2<%QssE!6(G|_-m%|1VfCv)7PfnQ;I>&U
z{ivY|9?=5c3;Wav-&-nkX?zl;e>`LtE6%>x^5|8~f03xx0|*l75{g?GF1TbDd+qSA
zAWPXRRd8t(Dz!`pPuszT5aw-D3V*+U4?cJ{e6g!QsWGiwaoBg0`FXnt$EpyoW+IS}
zlK`Ll-kCkxpK#1C#AopN9dX(~O4OXTo?bSbV1MoWtGr8_+{jgKMB3sS-qr8Rvnr2M
zLj?rXQUtyo1E9Bqoz1h>xN;;A#je=i%$}bk4JYfp6E38w)~Q&VuMs2E7higv=yG8O
z@P<R`c-a#kaC0EcDLW$xr7e8H%X1iM2%cX`7sj%NSS2F08uX+`MRD~s@9Z85a(=e$
z@aH^lZ?R@$@^$@kAN*9@5zj}euIW?IgLR}yD*m*?4Dd!<weFq+lUc_2z{fG~Rhi4l
zl2*|S>LAZs+hd8AB6?+}i1~qsfbldUX3yGQ4$9Wl!ePuo2X9ptx>QWxQaR$H{F05*
zb}amcO4!C{cXD5EMBn5WCoFBWou71S>)j19(5(E2^Xn7mhq(&;Z`q#mu|S+I$0%+&
zLxM;v3V`hJbWfecbH)3?-%vx`NSB&&Ra_QID~B{>fwPQHKX^Mcy~c8H;FU{aMncuE
z!(*$*WGW_k);2SLT*MfilU45K_Z;Y{YOEvPo|7Oi6qB3_$C>l(el;+>^^y#zHYk}v
zQO||#ef9bk`-8!@<6(T-mGKoZvPg@x)=O<p#3kTm$uSxo?Sn9(ia)1LFnSjZRXo*H
zqhM#=K(|%V9`^C+I;_4it+~>*v|Egb9fN*y*j%Y5U*Rdj_xE`N{g)?*Uh;AuC*UK|
z6il@QbQ!8QUY8zGV*|pT@ht&X<5?Ftf;_yg)+DK6*MmXYeW#v;M#ES?mN+ypb-bQ+
z*iZm2F3A#Yh0kYk4qlFLSL3BA!j%$;7`@7DZtcn6$qBN=Jh!jR18nMMbXK$BL2}0K
zEn({-9w}3A%O>{V39f~%Kv0Wpk3xjm9t&SFnwDybRy$gf(@an8o-=}f6m~n_J_RRk
zJUesfeg>9$q^u>#y8N9K#Yc<kmQKZ0lr*3@yT^peF8j583Q>kv`fxfLSx%PVC_{QX
zp}zmu-O~y7@@=2k#3Sm28LVbq<C>;uDcW0nwZ#wf8#zy{A}>mLSYPG{ydq4Y?Xigc
z(VO!I_*9w9UauvQT#~N-(}V+&rQUavXJ|a<yu<%x3$titc}H$pS<j|DSRY5XbHxFu
zM&#VZ_K+XD3La`-Mlon<D?QhEmoKG@fVE2<DV!wexhFHw%j8(e**B@{Y&roMU#F(d
z2^-%Vu%jR67$IebI=>R6|1CS9_KON*vq78DX$JFG!9n|RzsZA-NB36_BvNkKqH&QA
z{hl~Ii@v@`h{UroGfJ3Uor=ij5;<`|B8fF$B!{PLMgrqux%(~^$IUdiTVLy|7(YhU
zd6SZilb|P_5BFK)i`2bR6M=R~tr`PKpP3z`itC%pV=A}t?vXF|F4$@%%_fof$aG5f
zvClv{>=Gf%-CZ98Nmn6j!@H|>4TW~8&HU1%q%#oPaJf8+IRrtQs;?Vk^#rnjc1SG!
zjv!9J1Cr6=>E`6}&#M~_5B8jaF&x#?H)R~c9svx;`~=bra{Z$}z6Gt&8lLEO=6>+?
zxPasAag+Cr&ZX(4Aq-AC<3Ig5Qq)9;+oB_=dMg*9I;VSxx|I3ud{p_xSh>1-+2F|b
z@d$}MGF^Q5oiVBTM_T(`x{WI#VA1<dZ@2Ck)z2n}uE-Catfq{zRCkz!)9q!inIx#;
z<E|XQ=w`)V7h};jb<pX+@H94L;dL^s;2S3>(mBvzF6t(;8>^L^RBz5D2<_VxneIOM
zj&{}rM?+VkL<=KZ9Dg3_9HO9|p2crXlJ~>}!g$C;gk=Q89U<GxcL-1(AjV^qdh?ix
z(#>fXg}9=*AI+vgs-V1*O&1ffMeORS4{m5?+f7l_>x-h3-91e&8_}t!nHb?&xhvug
z#tvI<d#7!7`Nig<-&#w*I>!HChx8P3q*`e+?=x9dQZ1{G9x$9b4wvOMm^16t6H`&;
z(_8~_-%J@kY{OoEsL){@0dAwp&I0%bWA>EUa3oAIidKTC<|xwfFy98EI2EgVwAjed
zj2p48GnE~=J~L930J~)~k{%%6l(}G?zm77K<c;t!stD>GyQq}1iw-;LxtM!*GZ4!9
ziRlMXix|Dp-op#T57SW(K{NgPk`<mwPX@{k?+L4vne8?kNQ9qN)B~4I4eodr=LZqW
zq;y={WOU^tFdqduy1OUK=DYB+#F|fqdoIKimIcU5jO(fbtR8R$4~mr^p&<j@9UjN_
z`oCkUQY1;WsLy}K$Oy)za+VWO6*ViGv!i`4<*q5)^m1`{@+(Stgp)++m1xt;T+K-v
zCTF$*4pXftY)PKfU#h@%o%e-zKZ^(BT?HZ-sq$F7rU0>qN^q!9OV|oAGe9!SUSYNp
z9$*6AJG#I<ZAJg&IbL*_h^mmE`Fv2Uu(PTKVXz4KSNo-^Jb|md)M|-ZoA)W#DiUCB
zbVx&ed|dLR{$$}d4f-b&sAeKytarXM<^hWGyO+J)XKzkdYXm6a!t<34lt*#kpi90R
z)6<pmNl|o<6KD?K4yV#yyiN0l@h%^^YW-<EtG#>JB}^XEH@cBWQuX(<?<^bK?s%dd
zhSJe7H!tL^izYLgl42(@eeEislFI7CtUr!qdkj5kogc1_3!i+stF;i*X?ZTpWz)89
zOC*)M60OS$DFEEOgjLndh}Yh9SoLU0brt9~sLGGt!EiF(nMREa%Sct_&mNzhpCx&Q
z+zOK9U)=4J<5i4N=oknKw@M!IE-|w&$|A*Izq0{-9^y$xb1)xOspYj|tc#k){P|8-
z;lp4QOeoppRfUZ&I6|EmRPuc5Q&)zm{*H7@`ZJR+P)>k4)PyIR(U@srDx1&tt5Bt?
z#S8-X^A}~BCmaPDKP)ZMq893SvXj6eQ#(ObJsL(Mue}U}@rS}U(d0$rf))%~RMgUo
z1*vV2H64X=31(OnS_0`Cc=DFXPetB%q5*{;!TCSjYU+PtKtmsHNb=0YbXuP~TUsQn
z6Di)wfYgApp=bS*rsE0%(Q1s`;Q=fZ_9>B=(zPm$Wtk4)hi>#AF>i-RqOtEOc$b+S
zbkl13O~{$o=@C^LS;`vPew**p)2n;_-rXl6xJF5WLiCX>92f`(4NmKw>j>@>0vcid
z?Mo~x-SVEnepPZbRXMB?OENXP#j?9-11;cm|2iP{<sx~OE_K$IveuVt%4p~T`kf}M
zp0RK8*z2iOF<Uivl;I0zRYPlea#C4rDa?pMS}>Y&B4{=t^h7@HlYdl+N@I5Z_u}fd
z{Hm^^kyWE5#x+KgYoPOM4huW`8KXA~Rs)m|g*4>)Ll?mh4iS{9&p0fiI6Ynd*j?Qv
zel~!ZcYkvbw08XScnW^Ki-ysCV2}L(#e<@~#VWOcC}!pRo!_x^UqIZP0(%wIHT;w@
zF(Ofz2*mXEF=?$*nuabsS%w04jp*Vx!H8pOj>e9PWQpHt!|&(;c8NNKH2Ce&TV*x#
zQw5fHLN5g9RtRt-9;Z{C6=VRttCjYK#T%%)3F~YnO6+SjTCbvQo{n8@JrV4^6$fX(
zOO_v~n3-7r`BNEz_btk3OK3MHn1POCpNo8HQE{rlYrhhAo_j0cC^`AaGDdr0I0Zht
z=%0ZTeKV$(sXFf`k*Sl`OMF<aqE|o#ZBbpE53HSJ$Z2X9AD>^pNO9}P#*GZhmjEC)
z*l9Q$P2tA<#Qhix!=2uvtD+))JD?x{+3AV@Z<mMb``-t3eJkJmb3=cFM^jeYT5Q|Q
zU>@l0%&||7pB!@x$3)=sJM{|2YM+Joh>7RTla;eQA9ItzUpd2R&4gqpv2bFVPk-O;
zW8J3TKz;EPIb0+`;G<{GDONLrTB9Z&uHls%N<2cR)aP=xOBRFfDbl(kwW&L9^euC_
z$`>hDMkg3t0=UwdCp&{_C5bE^)v0{Y8|S%jL6KWY=}S)Xb8$f|@_!78{~Y2Hs<B8C
z^zmrW{+bCVXzmI5{x<sYJ&u0-08H@zAN-zq>S*gx0uUw<iiRYW#Bcnu@02UXCv0q|
zGj%HrIG-&cNZQW#B%`3z5-a?wU9}6Y4q-+Nsm8)$%jOFFMw`O$jPTH{xWWBn=DEtg
z;Gys7`N!0vDc3?^tmUEo_ww7W<CWtk9~>?#+J0m3lYa9EU=rJKQTqee7bRcH@a$wr
zG1-nL2r|LR=FVg3z!|jx>h4Bj(I?QkF&#|P5U3^>$_%RAsi8;PtSD}doURFb*G@@D
z*un@`f1j1~{yBN4-}1g=a1q;QU=?#U)i5sUDV~umpfDBE;+gB_Y~q&8CaXo@$EKIa
zh4<iiCmwnaq#Qgb$C{AqeM~pfU{g#kDlEXR4bDB8u99P^?5Vz+Lp%UK3F<R-p7Yj6
zY9w9^>4-h-&#m^==k4#_HhVfJWk=OW{zB>k1N-xE4QsS?G-&%U^MV;BZsi%5c1Bbd
z98>q~pk%Fc?S9SZ=UXR4o}Ocg0fymnDwPY(gLREL0A_!;sHFx^LfLUOdz)gVgD|_h
zoC$sH>q+KJQCKa&&C^wva~*Qjo?uOP6eCBadm<iWS|_T;2<gb#C<zR!c!oxgj8^u^
zrdKeP@CT-CnkdGsH|40h;nl#22E4n2HYT?>P8BOcraraLnUoGfW^1HSrR#p0^-DB!
zV~T7NxGd?qrubS{ZJmsHta;O{NUxf}@Z8x69SaS#=@>mA+Ui_kVHyZ*dW~^4M?KuF
zZN=OYv0uEDaI*3q-HXk`kbLRoN7OA&^d@H6+SB8w>&C%WXR<4Tk<3s3Sc6@&?hs|U
zwV8#LfYi~S+l>ZmXle<{FABL}*9a>H+OsPhz{Sp!ZPKj_daZaZ{8FuH3X?ny^TsZ{
z^161t&)R5kfs96|KU~L})CNJPErPo^OLhlz&VH+7p0`AXMbU(Q#IrTmy2eq7V{bfN
zE!v>=8nqa~orP|hHm7sKw(=Ff_txZc-J~m>D#310DL+BC@NMT5V@2TG;VVA7(I_zm
zp!%C##)2^i64Utn7SFZ$^Uj6JmyLIM`S>okioP|y^Op-M^!>3>!4YAy9jhgmQO4=p
z47Uv#h#;-SX2&{Yb-OnbAj6VA6Yz(M{D7?FYLJ+GiuxX|1af(|DQxrYoUlfBZe7|J
zCiV0RG9+%Ev$8aFA*9%<Us22Q7o|EJK=%~I(ldSpJGG6cKHX^+;<9$UesNeot$lKQ
zVJFMp%7RiHsVtgHwC)g9hK`c@ToV857rnj$pBF~o$(He5(H-{+HoU)y?cd?zWEtte
zTdNifmp@sxype3^Cdk_<3GyySNTho8Bn9tBz^H!q2vK%d@K6&~utWg%9!Zfn9ngVd
zW&$<}uFl2xN7*?bone20PPGR#Uq#E4#a<Q9QcBsrHn}}4_~^%hJG!~Oz5U(FO{kj@
zx4^-OZiyeGiRhh6`ts3)@aNn!%ermydG2#oMB0s<Sq+kf>V1{rh7wnrldG^`x4ICN
zD*<_)N-oUPkL3XGS9!;t7fWi&(g5Nhieq11-14Hc8ek}ytkupXO+-$9eE;+IS?+7o
z?2cKL-^c!zNMe+)HOlA{l=q_1UMc1j%e+APCZSh=|AEtgd2jGR5r)uyccGS5hFs8X
zc23TD<`9Lx)@f7KCArJ3Kw=(z%)o25rx*jmKf#j3Yf-nUMlh}yi26L5+y>Zht&y-z
zKRb4m91F3R`(41$B8BXMmhEn(9JOo^hPMWFe}5p;QCd+k>1q*fb!26ANMkFD{kim=
z4rxOWEPMBRZ_^mhk}RR0+&*$~M_;hI-*!K>LIO4FWlnkL3!{wtH$H(@)`ungh#qEq
z&rR#eRfVLC>~c8QQ4P<A{HuUYPjC&4vO;p*iqwG2lYRT=sn!0MBK4m+1ug*wOXPcZ
zlt+0X3`JVIg}n#U@k;)-L$$+c{N$6ELE-%%pQZtm$_dgpG6^Qplbge9kf=qRd<lEL
zvQ46iLU66RW&)a1J&L^y`gmG~sNyW^Skr@T{CMw+NQrfA85`1~YdOH%5&!oDi$I@!
zgU1$q5E_vzkNo0{<rDrhA3>Cz)ejr!2Ce(Z$*)1jMfXdCRyUNxj^OpGxKGQ@62(d=
zmnM?4A7%|-&8VS#bc%V{X<I|AQva6dubVwP!9r5AHM#DcHFoNEj!74>Zs4#3e`^_v
zcvQv1K`;ypW{`?Yt@Hr2Bc~{3OZ@iygcIT5an3BwHb<zs_WF|JJeA)f6Xw`EMYMLJ
z$wTLb13a>It_DF#_9MM-N(CIUCYC!9_l^$t2p4BR9X~B{4H~C3))DkO1njpJ^&=X-
zvSi}ct(%u2S1cop<E1PO?Z0jfg#~U0n_0(iQut_=9yGHd8I1sbHcx`Sy%p>4vu61c
zX6NA781T&|X_$fgD{;JAN|Lb6l6!F3sO9VVAiB@ib-o2J9n@e`$-vMaWGY!bEeY)k
zQqQT<uu6{xeW}4{OLJh8(eWiki>%ob8UZdcT$ubeM{dP#H_Vusd<yY;{XqjSYg5ji
zK@l^irKZ02i{=(k%4nySjy&h&4UWz}qI`8Ty&D?j)jEfoC23tt$;A|K*_8pct*D2c
zpfvnCe?QuNF?$uYjWQNWVar5v4@HKr6v>J=Me#EvOjz+!BtkR#ZIVc=&TOuqv*?9P
zJ%8a9{~=f{eZ&xXslD=c+b&hbNT*voEy3l$m$z!y@QfTN9%#c-x0F3z2-2<GQtx)F
z6V+wpv-c4?Mzae0HIBFSZ3^$1Ry98{cOg6Typ0y=z~<Bewo}K2%Ff^xdRDYMQu}a)
zHffZG0*6;BeIJYaPtEHT+U8NXh={wh%MTyyZcY&)18IZ2Xo2v=1>QO$E6<M{nhmAa
zCq4rinw=xSR|A<byG!FEX1cs%7Gehp;pV_B-mJi5#Fym$Bj``-HvJaY&W21K$+<)0
zE=7k%)DNa*g5G{=OIoB{sZu-Nc02q8j3NAXfW8<<e|ag=8(MWC&E=H$i{k@Y%23%J
z=kQQ&Wo%a*RgX}UN0YxE!iIScoS1;+9TBrUpitxlG!vxUOdCH4kPmqOTCD9On#c4k
zX*3+VD1F5=9w?${_>zU231$H8&90pwIvRJp4mK9b#{YtfPJVc?o^+#fIo6{3(m>$7
z!aF66xdz<Tto`4OXN2M_E!a&6%}8PU_&!acj)Pn88fgKlj<`sEIs?W0W5ppMyp!gS
zIaPiXf}xm<u@OhMuNTmM5LOlEz40=(ByEFyU&*56e8SaT{eUp4x<32o@BhDN9uRm!
z7aKP+Ob}Lg%mzo~WOaA9HW%WxgqfN1Tf(@_%`FAEArMPAH~4XJ^Mg$+!2&P{49*K?
zO<?0tLV?0rK?wjS&Ht$|i9;L@4C98tbs!KSh@cQJG+~2-`|l79rzjG?Ny1A`iT{&$
zCZ`<B|H}XW-8VazCkM#N(cZ!pWaj8@ZsFnvdi*MS${-ybM@Ktt3;V~7w4=EN$kO_?
zE2u7)3xWth;p|u->BpGK&DzmH<}pBGlM#Y~p-?ak0*62#g1k^pFoYEhW__foI-36v
z3>|AXI}5h|y$7cRHXe3>--P|Y6DJQB3rj38JwyQO&x!tX(ev~1!T9Jc>HoqW^RLH{
z>(8Qh_zQzT1o$75sDH!2P(BFkKQI{o-)n)#D#+v1@V8<Z@85}FC_n5mI{O<B&MWwL
z?6JpV4)*Un7?kfn48r;TV1N4m>rEb;!2hEd3J3oO1{3^G9$bL`F;@F`Js9La3_`##
z!GD=aC<GBB3M90G=nN&LrR3mJg0g&kvND2TxPUC56h8ziC@m`shw;H6{9+>iBjXj;
aV~XeMX5!-ZkE4V@A7!wZnPt`Gu>K!r3|;R4

diff --git a/doc/diplodocus_simulator/ttool_diplodocus_simulator.tex b/doc/diplodocus_simulator/ttool_diplodocus_simulator.tex
index 0e6d3b68dd..366b914444 100644
--- a/doc/diplodocus_simulator/ttool_diplodocus_simulator.tex
+++ b/doc/diplodocus_simulator/ttool_diplodocus_simulator.tex
@@ -175,9 +175,6 @@ This document describes the structure and meaning of the code of the DIPLODOCUS
 %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 %\begin{document}
 %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-\section*{Notes}
-\cod{\_length} of communication command: number of bytes: TML param * width of channel. becomes virtual length of transaction.
-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 \section*{Base Directory \cod{src\_simulator}}
 %===========================================
 \class{Transaction}{}
@@ -200,6 +197,8 @@ This document describes the structure and meaning of the code of the DIPLODOCUS
 %-----------------------
 \variable{\_transactCoreNumber} core that executes transaction (when multicore CPU).
 %-----------------------
+\variable{\_transType} among \cod{NOCOMM\_TRANS}: transactions without communication, \cod{CHANNEL\_TRANS}: transaction on event channel, \cod{BUS\_TRANS\_NoLength}: data communication on bus where length is not up-to-date, \cod{BUS\_TRANS\_Length}: data communication on bus whith length up-to-date. Initialised in \cod{calcStartTimeLength} of CPUS and finalised (for length) in CPU's \cod{getNextTransaction} (when last bus master of channel is granted).
+%-----------------------
 \method{getStartTimeOperation()} takes penalties into account
 %-----------------------
 \method{getEndTime()} takes penalties into account
@@ -213,7 +212,7 @@ This document describes the structure and meaning of the code of the DIPLODOCUS
 \class{TMLChannel}{}
 Class for mapped channels.
 %-----------------------
-\variable{\_width} Channel size (in bytes or samples??)
+\variable{\_width} Channel size (in bytes)
 
 %-----------------------
 \variable{\_readTask} tasks which performs read operation on the channel
@@ -228,7 +227,7 @@ Class for mapped channels.
 \variable{\_readTrans} transaction which attempts to read the channel
 
 %-----------------------
-\variable{\_masters} buses on which the channel is mapped. doubble list: from first write master to last one, then from last read master to first one.
+\variable{\_masters} buses on which the channel is mapped. doubble list: from first write master to last one, then from last read master to first one. Thus the last write master is repeated (equal to the last read master because on the same memory), which is used to detect the memory position.
 
 %-----------------------
 \variable{\_slaves} slaves on which the channel is mapped. Respects order of masters.
@@ -240,19 +239,21 @@ Class for mapped channels.
 \variable{\_readTransCurrHop} current Hop (master/slave) of read Transaction
 	
 %-----------------------
-\method{testWrite(iTrans)} Prepares a write operation
+\method{testWrite(iTrans)} Prepares a write operation (depends on channel type)
 
 %-----------------------
-\method{testRead(iTrans)} Prepares a read operation
+\method{testRead(iTrans)} Prepares a read operation (depends on channel type)
 
 %-----------------------
-\method{write()} Performs the write operation
+\method{write()} Performs the write operation (depends on channel type)
 
 %-----------------------
-\method{read()} returns bool. Performs the read operation
+\method{read()} returns bool. Performs the read operation (depends on channel type)
 
 %-----------------------
 \method{getNextMaster(iTrans)} Returns the next communication master on which the given transaction is conveyed. Supposes that \cod{iTrans} is \cod{\_writeTrans} or \cod{\_readTrans}. First increments \cod{\_writeTransCurrHop} or decrements \cod{\_readTransCurrHop}. Returns the newly pointed master.
+%-----------------------
+\method{isLastMaster(iTrans)} Returns true if the current communication master (\cod{xxxCurrHop}) on which the given transaction is conveyed is the last one. Does not modify \cod{xxxCurrHop}.
 
 %-----------------------
 \method{getFirstMaster(iTrans)} Returns the first communication master on which the given transaction is conveyed. Supposes that \cod{iTrans} is \cod{\_writeTrans} or \cod{\_readTrans}. Set (read or write) current hop to this master.
@@ -292,14 +293,12 @@ Blocking read-blocking write. Handling of losses is abstracted.
 %-----------------------
 \method{testRead(iTrans)} updates \cod{\_nbToRead} and \cod{\_readTrans}. Then calls \cod{setTransaction\-Length}.
 
-%-----------------------
-\method{testwrite} updates \cod{\_nbToRead} and \cod{\_writeTrans}. Then calls \cod{setTransactionLength}.
-
 %-----------------------
 \method{write()} called after \cod{testWrite}, thus number of samples is known and allowed (\cod{\_wri\-te\-Trans}'s virtual length). Updates \cod{\_content} and unblock \cod{\_readTrans} (set its runnable time). Reset (to 0) \cod{\_nbToRead} and \cod{\_nbToWrite}, then calls \cod{setTransactionLength}. Losses are handled here.
 %-----------------------
 \method{read()} called after \cod{testRead}, thus number of samples is known and allowed (\cod{\_read\-Trans}'s virtual length). Returns {\tt false} if \cod{\_content} $<$ \cod{\_readTrans}'s virtual length. Otherwise, returns {\tt true}, updates  \cod{\_content} and unblock \cod{\_writeTrans} (set its runnable time). Reset (to 0) \cod{\_nbToRead} and \cod{\_nbToWrite}, then calls \cod{setTransactionLength}.
-
+%-----------------------
+\method{getBlockedReadTask(),getBlockedWriteTask()}
 %===========================================
 \class{TMLbrnbwChannel}{TMLStateChannel}
 Blocking read-non blocking write. Handling of losses is abstracted.
@@ -311,16 +310,18 @@ Blocking read-non blocking write. Handling of losses is abstracted.
 
 %-----------------------
 \method{read()} called after \cod{testRead}, thus number of samples is known and allowed (\cod{\_read\-Trans}'s virtual length). returns {\tt false} if \cod{\_content} $<$ \cod{\_readTrans}'s virtual length. Returns {\tt false} if \cod{\_content} $<$ \cod{\_readTrans}'s virtual length. Otherwise, returns {\tt true}, updates  \cod{\_content} and reset \cod{\_nbToRead} and \cod{\_nbToWrite}.
+%-----------------------
+\method{getBlockedReadTask(),getBlockedWriteTask()}
 
 %===========================================
 \class{TMLnbrnbwChannel}{TMLChannel}
 Non blocking read-non blocking write
 
 %-----------------------
-\method{testWrite(iTrans), testRead(iTrans)} respectively update \cod{\_readTrans} and \cod{\_wri\-teTrans}.
+\method{testWrite(iTrans), testRead(iTrans)} respectively update \cod{\_wri\-teTrans} and \cod{\_readTrans}.
 
 %-----------------------
-\method{write(iTrans), read(iTrans)} respectively reset (to 0) \cod{\_readTrans} and \cod{\_wri\-te\-Trans}.
+\method{write(iTrans), read(iTrans)} respectively reset (to 0) \cod{\_wri\-te\-Trans} and \cod{\_readTrans}.
 
 %===========================================
 \class{TMLEventChannel}{TMLStateChannel}
@@ -330,6 +331,8 @@ Non blocking read-non blocking write
 \method{{\rm virtual} write(iTrans), write()} \cod{write} calls \cod{write(this)} and resets \cod{\_writeTrans}.
 %-----------------------
 \method{getRequestChannel()} test channel's type. returns bool, default 0.
+%-----------------------
+\method{getBlockedReadTask(),getBlockedWriteTask()}
 
 %===========================================
 \class{TMLEventSizedChannel}{TMLEventChannel}
@@ -359,6 +362,8 @@ Resets \cod{\_writeTrans} (also when channel full). If the channel is full, then
 \method{read} Returns {\tt false} when empty channel. Otherwise decrements \cod{\_content}. Pops parameter from queue and update \cod{\_readTrans}'s command with the poped value.
 %-----------------------
 \method{cancelReadTransaction()} resets \cod{\_readTrans}.
+%-----------------------
+\method{getBlockedReadTask(),getBlockedWriteTask()}
 
 %===========================================
 \class{TMLEventFBChannel}{TMLEventSizedChannel}
@@ -371,6 +376,8 @@ blocking read blocking write (finite FIFO)
 \method{write()} similar to \cod{TMLEventFChannel} but does not check if channel is full.
 %-----------------------
 \method{read()} similar to \cod{TMLEventFChannel} but also awake \cod{\_writeTrans} if relevant (set its runnalbe time, channel and virtual length)
+%-----------------------
+\method{getBlockedReadTask(),getBlockedWriteTask()}
 
 %===========================================
 \class{TMLEventBChannel}{TMLEventSizedChannel}
@@ -383,9 +390,13 @@ blocking read non blocking write channel (infinite FIFO)
 \method{testWrite()} Updates \cod{\_writeTrans} and its virtual length.
 %-----------------------
 \method{read()} Returns {\tt false} if channel is empty. Similar to \cod{TMLEventFChannel}.
+%-----------------------
+\method{getBlockedReadTask(),getBlockedWriteTask()}
 
 %£££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££
 \subsection*{Tasks}
+Note:
+\cod{\_length} of data communication command: number of bytes: TML param * width of channel. becomes virtual length of transaction.
 
 %===========================================
 \class{TMLCommand}{}
@@ -411,11 +422,11 @@ True if there was a transaction to prepare
 %-----------------------
 \method{getDependentTask(iIndex)} task which could be unblocked by the command
 %-----------------------
-\method{getNextCommands(oNbOfCmd), getNextCommands()} respectively return an array of commands and the first of them. {\tt oNbOfCmd} is the size of the array.
+\method{getNextCommands(oNbOfCmd), getNextCommand()} respectively return an array of commands and the first of them. {\tt oNbOfCmd} is the size of the array.
 %-----------------------
 \method{isDelayTransaction(), getActiveDelay()} check command type, booleans.
 %-----------------------
-\method{prepare(iInit)} {\tt iInit} is only true at the initial call of the method by simulator. If command is terminated initializes next command and \cod{prepare()} it. Otherwise, progrees in command by calling \cod{prepareNext\-Transaction()} which is implemented by subclasses of TMLCommand. Returns the prepared transaction if there is one. Two cases:
+\method{prepare(iInit)} {\tt iInit} is only true at the initial call of the method by simulator (this handles redoundant calls that may occur at this moment). If command is terminated initializes next command and \cod{prepare()} it. Otherwise, progrees in command by calling \cod{prepareNext\-Transaction()} which is implemented by subclasses of TMLCommand. Returns the prepared transaction if there is one. Two cases:
 \begin{itemize}
 	\item \cod{\_length}=\cod{\_progress}, i.e. command is terminated. Change to the next command: reset \cod{\_progress}, 
 	\cod{\_currTransaction} and \cod{\_commandStartTime} and update task's current command. Then prepare new command if not 0, otherwise returns 0.
@@ -424,12 +435,16 @@ True if there was a transaction to prepare
 %-----------------------
 \method{prepareNextTransaction()} {\tt true} if there was a transaction to prepare. Virtual, returns  TMLCommand, default is 0.
 %-----------------------
-\method{execute()} Updates the inner state of the command as well as the state of all dependent objects (channel, bus,...)
+\method{execute()} Updates the inner state of the command as well as the state of all dependent objects (progress, channel, bus,...). Finally calls \cod{prepare}.
 
+\vspace{1.5mm}\noindent
+\includegraphics[width=15.5cm]{images/prepare.pdf}
 
+\vspace{1.5mm}\noindent
+Calling \cod{prepare} runs consecutive commands until finding one that requires a transaction (non null real length), then build the transaction and sets it as current transaction of the task. It is called on all tasks at the beginning of simulation, and then, when a transaction is executed (selected by the simulator loop), on the transaction's command, to prepare the following transaction w.r.t. control flow.
 %===========================================
 \class{Task}{WorkloadSource}
-note: \cod{schedule} does nothing. Instances also comprise command-specific function (such as length computation for example) which are called by command' s \cod{xxx} methods.
+note: \cod{schedule} does nothing. Instances also comprise command-specific function (such as length computation for example) which are called by some command' s methods.
 
 %-----------------------
 \variable{\_priority} priority of the task
@@ -444,12 +459,13 @@ note: \cod{schedule} does nothing. Instances also comprise command-specific func
 %-----------------------
 \variable{\_justStarted} true until the first transaction of a task is executed
 %-----------------------
-\method{addTransaction(iTrans)} Updates \cod{\_endLastTransaction} with {\tt iTrans}'s end time and unsets \cod{\_justStarted}.
+\method{addTransaction(iTrans)} Adds transaction to the transaction list of the command. Updates \cod{\_endLastTransaction} with {\tt iTrans}'s end time and unsets \cod{\_justStarted}.
 %-----------------------
 \method{finished()} Is called when a stop command is encountered. Sets \cod{\_justStarted}.
 %-----------------------
 \method{getNextTransaction(iEndSchedule)} Returns \cod{\_currCommand}'s current transaction
-
+%-----------------------
+\method{getCPU(),getFPGA()}
 %£££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££
 \subsection*{Commands}
 First, see \cod{TMLCommand} above.
@@ -632,7 +648,7 @@ Base class for components providing workload like tasks and scheduler
 
 %===========================================
 \class{RRScheduler}{WorkloadSource}
-
+Round Robin Scheduler (used for buses and CPUs)
 %----------------------- 
 \variable{\_nextTransaction} Next transaction to be executed
 
@@ -652,6 +668,60 @@ Base class for components providing workload like tasks and scheduler
 \method{schedule(iEndSchedule)} updates \cod{\_nextTransaction}(virtual length of new \cod{\_next\-Transaction} is not 0) , \cod{\_lastSource} and \cod{\_elapsedTime}.
 For this, schedules the sources and selects the one whose \cod{\_nextTransaction} has the lowest runnable time.\\ Exception (only if new  \cod{\_lastSource}'s transaction is not a static delay): last source is kept if scheduler's \cod{\_nextTransaction} was 0 (is it possible?) or equal to  new  \cod{\_lastSource}'s transaction, or if time remains in timeslice for \cod{\_lastSource}.
 
+%===========================================
+\class{RRPrioScheduler}{WorkloadSource}
+Round Robin Scheduler with priority (used for CPUs)
+%----------------------- 
+\variable{\_nextTransaction} Next transaction to be executed
+
+%-----------------------
+\variable{\_timeSlice} Time slice which is granted to ressources
+
+%-----------------------
+\variable{\_minSliceSize} Minimum size of a time slice
+
+%-----------------------
+\variable{\_elapsedTime} Consumed portion of a time slice
+
+%-----------------------
+\variable{\_lastSource} Last workload source to which ressource access was granted
+
+%-----------------------
+\method{schedule(iEndSchedule)} Similar to previous one, except that for transactions that are not in the future, priority applies.
+
+%===========================================
+\class{PrioScheduler}{WorkloadSource}
+Scheduler with priority (used for buses)
+%----------------------- 
+\variable{\_nextTransaction} Next transaction to be executed
+
+%-----------------------
+\variable{\_lastSource} Last workload source to which ressource access was granted
+
+%-----------------------
+\method{schedule(iEndSchedule)} Similar to previous one.
+
+%===========================================
+\class{StrictPrioScheduler}{WorkloadSource}
+Scheduler with (preemptive) priority (used for CPUs)
+%----------------------- 
+\variable{\_nextTransaction} Next transaction to be executed
+
+%-----------------------
+\variable{\_timeSlice} Time slice which is granted to ressources
+
+%-----------------------
+\variable{\_minSliceSize} Minimum size of a time slice
+
+%-----------------------
+\variable{\_elapsedTime} Consumed portion of a time slice
+
+%-----------------------
+\variable{\_lastSource} Last workload source to which ressource access was granted
+
+%-----------------------
+\method{schedule(iEndSchedule)} a more prior task always preempts.
+
 %===========================================
 \class{ScedulableDevice}{}
 
@@ -695,6 +765,9 @@ For this, schedules the sources and selects the one whose \cod{\_nextTransaction
 %-----------------------
 \variable{amountOfCore} Amount of cores
 
+%-----------------------
+\method{virtual truncateAndAddNextTransAt(iTime), truncateNextTrans(iTime)} c.f. \cod{SingleCoreCPU}.
+
 %===========================================
 \class{SingleCoreCPU}{CPU}
 
@@ -711,16 +784,17 @@ For this, schedules the sources and selects the one whose \cod{\_nextTransaction
 \variable{\_nextTransaction} Currently selected transaction (not yet executed).
 
 %-----------------------
-\method{calcStartTimeLength(iTimeSlice)} in \cod{\_nextTransaction}, update start time, length and penalties (round to full cycles when required). In CPU, update \cod{\_masterNextTransac\-tion} (to master of first bus of channel) and register transaction for this master. 
+\method{calcStartTimeLength(iTimeSlice)} in \cod{\_nextTransaction}, update start time, length, penalties (round to full cycles when required) and transType. In CPU, update \cod{\_masterNextTransac\-tion} (to master of first bus of channel, if exists) and register transaction for this master. 
 \begin{itemize}
 \item update start time as the maximum of CPU's \cod{\_endSchedule} and \cod{\_runnableTime} of \cod{\_nextTransaction}.
 \item update length (only if not bus transaction else it is computed elsewhere) as the minimum of \cod{\_nextTransaction}'s virtual length and \cod{iTimeSlice}.
 \item updates \cod{\_taskSwitchingPenalty} and \cod{\_idlePenalty} (for this, compare start time and \cod{\_endSchedule}).
+\item sets \cod{\_transType} to \cod{NOCOMM\_TRANS}, \cod{CHANNEL\_TRANS} or \cod{BUS\_TRANS\_NoLength} depending on wether \cod{\_nextTransaction} is, respectively, "without communication", "with communication but without bus" or "with communication and bus".
 \item updates \cod{\_masterNextTransaction} and registers \cod{\_nextTransaction} for this master if \cod{\_nextTransaction} is communication. 
 \end{itemize}
 
 %-----------------------
-\method{getNextTransaction} returns \cod{\_nextTransaction} except if some master before \cod{\_mas\-terNextTransaction} is not granted. Otherwise returns 0.
+\method{getNextTransaction} returns \cod{\_nextTransaction} except if some master before \cod{\_mas\-terNextTransaction} is not granted. Otherwise returns 0. Moreover, if all buses of a communication transaction have been granted (\cod{\_mas\-terNextTransaction} is the last master of the channel), then the length of the transaction is updated w.r.t. its (up to date) virtual length.
 
 %-----------------------
 \variable{\_masterNextTransaction} Current bus master for \cod{\_nextTransaction} if it is communication transaction, else 0.
@@ -730,7 +804,7 @@ For this, schedules the sources and selects the one whose \cod{\_nextTransaction
 
 If \cod{\_nextTransaction} is communication,
 	\begin{itemize}
-	  \item If next master exists (return false), update \cod{\_masterNextTransaction} and register the transaction for this new master.
+	  \item If next master exists (return false), update \cod{\_masterNextTransaction} to next master and register the transaction for this new master.
 	  \item Otherwise (return true), add \cod{\_nextTransaction} to all relevant masters ans slaves. Update bus contention.
 	\end{itemize}
 If "return true",
@@ -747,11 +821,13 @@ If "return true",
 - call \cod{\_masterNextTransaction->registerTransaction(0)} if relevant (does not change \cod{\_masterNextTransaction} pointer).
 
 %-----------------------
-\method{truncateAndAddNextTransAt(iTime)} called when a transaction may have unblocked a communication transaction on this CPU. Schedule the CPU and if \cod{\_next\-Transaction} have changed, then truncate original one at {\tt iTime}, \cod{addTransaction(0)} and \cod{calcStart\-TimeLength} to update new one.
+\method{truncateAndAddNextTransAt(iTime)} called when the execution of a transaction by the simulator may have unblocked a communication transaction on this CPU. Schedule the CPU and if \cod{\_next\-Transaction} have changed, then truncate original one at {\tt iTime}, \cod{addTransaction(0)} and \cod{calcStart\-TimeLength} to update new one. This is done only if the current \cod{\_nextTransaction} is not a bus transaction.
 
 %-----------------------
-\method{truncateNextTransAt(iTime)} called by \cod{truncateAndAddNextTransAt} to truncate \cod{\_next\-Transaction}. It computes new length of transaction and updates transaction with this length.\\ {\bfseries\textit{Warning (?)}}: this computation seems to consider that \cod{\_nextTransaction}'s command is similar to exec, which is not always true. What append if it is a communication command?
+\method{truncateNextTransAt(iTime)} called by \cod{truncateAndAddNextTransAt} to truncate \cod{\_next\-Transaction}. It computes new length of transaction and updates transaction with this length.
 
+%-----------------------
+\method{truncateNextTrans(iTime)} Makes the same work as \cod{truncateAndAddNext\-TransAt} and \cod{truncateAndAddNextTransAt} together, but also truncates bus transactions when it is relevant. Yet not used (selection of algorithm depends on a test which is always true at the beginning of \cod{truncateAndAddNextTransAt})
 
 %===========================================
 \class{MultiCoreCPU}{ScedulableDevice}
@@ -780,11 +856,12 @@ If "return true",
 \variable{\_nextTransaction} Currently selected transaction (not yet executed).
 
 %-----------------------
-\method{calcStartTimeLength(iTimeSlice)} in \cod{\_nextTransaction}, update start time, length and penalties. In CPU, update \cod{\_masterNextTransaction}. (round to full cycles where required)
+\method{calcStartTimeLength(iTimeSlice)} in \cod{\_nextTransaction}, update start time, length, penalties (round to full cycles when required) and transType. In CPU, update \cod{\_masterNextTransac\-tion} (to master of first bus of channel, if exists) and register transaction for this master. 
 \begin{itemize}
 	\item update start time as the maximum of CPU's \cod{\_endSchedule},\cod{\_nextTransaction}'s \cod{\_runnableTime} and \cod{\_nextTransaction}'s channel's \cod{channelEndTime}.
 	\item update length (only if not bus transaction else it is computed elsewhere) as the minimum of \cod{\_nextTransaction}'s virtual length and \cod{iTimeSlice}.
 	\item updates \cod{\_taskSwitchingPenalty} and \cod{\_idlePenalty} (for this, compare start time and \cod{\_endSchedule}).
+	\item sets \cod{\_transType} to \cod{NOCOMM\_TRANS}, \cod{CHANNEL\_TRANS} or \cod{BUS\_TRANS\_NoLength} depending on wether \cod{\_nextTransaction} is, respectively, "without communication", "with communication but without bus" or "with communication and bus".
 	\item updates \cod{\_masterNextTransaction} and registers \cod{\_nextTransaction} for this master if \cod{\_nextTransaction} is communication. 
 \end{itemize}
 
@@ -797,7 +874,7 @@ If "return true",
 
 If \cod{\_nextTransaction} is communication,
 \begin{itemize}
-	\item If next master exists (return false), update \cod{\_masterNextTransaction} and register the transaction for this new master.
+	\item If next master exists (return false), update \cod{\_masterNextTransaction} to next master and register the transaction for this new master.
 	\item Otherwise (return true), add \cod{\_nextTransaction} to all relevant masters ans slaves. Update bus contention.
 \end{itemize}
 If "return true",
@@ -815,10 +892,14 @@ If "return true",
 - call \cod{\_masterNextTransaction->registerTransaction(0)} if relevant (does not change \cod{\_masterNextTransaction} pointer).
 
 %-----------------------
-\method{truncateAndAddNextTransAt(iTime)} identical to \cod{SingleCoreCPU}.\\ {\bfseries\textit{Warning (?):}} code inside the method seems to be duplicated...
+\method{truncateAndAddNextTransAt(iTime)} identical to \cod{SingleCoreCPU}.
 
 %-----------------------
 \method{truncateNextTransAt(iTime)} identical to \cod{SingleCoreCPU}
+
+%-----------------------
+\method{truncateNextTrans(iTime)} identical to \cod{SingleCoreCPU}
+
 %===========================================
 \class{SchedulableComDevice}{SchedulableDevice}
 
@@ -831,6 +912,11 @@ If "return true",
 %-----------------------
 \variable{\_channelBasedPrio} Flag indicating whether bus master based or channel based priorities are used to arbitrate the bus
 
+%-----------------------
+\method{virtual calcStartTimeLength(iTimeSlice)} Updates start time (may increase but not decrease) and virtual length (may decrease but not increase).
+%-----------------------
+\method{virtual calcLength()} Updates length w.r.t virtual length, i.e. increase (but not decrease) length if relevant.
+
 %===========================================
 \class{Bus}{SchedulableCommDevice}
 
@@ -841,11 +927,13 @@ If "return true",
 \variable{\_schedulingNeeded} Dirty flag of the current scheduling decision. Set by \cod{addTransac\-tion} and \cod{registerTransaction}. Unset by \cod{schedule}.
 
 %-----------------------
-\method{schedule()} Determines the next bus transaction to be executed. For this, call its internal scheduler (\cod{\_scheduler->schedule(\_endSchedule)}), update \cod{\_nextTransaction} and call \cod{calcStartTimeLength} with the obtained time slice. Unset \cod{\_schedulingNeeded}.
+\method{schedule()} Determines the next bus transaction to be executed. For this, call its internal scheduler (\cod{\_scheduler->schedule(\_endSchedule)}), update \cod{\_nextTransaction}, limits its virtual length w.r.t. burst size, and call \cod{calcStartTimeLength} with the obtained time slice. Unset \cod{\_schedulingNeeded}.
 
 %-----------------------
-\method{calcStartTimeLength(iTimeSlice)} Calculates the start time and the length of the next transaction. Start time updated to \cod{\_endschedule}+penalties if greather than current start time. Update length and virtual length taking bus characteristics into account. Increments slave and if new slave exist, then call \cod{\_calcStartTimeLength} of slave.
+\method{calcStartTimeLength(iTimeSlice)} Updates the start time and the virtual length of \cod{\_nextTransaction}. Start time updated to \cod{\_endschedule} if greather than current start time. Update virtual length taking bus characteristics into account (decreases if the computed virtual length is smaller than the current one). Increments slave and if new slave exist, then call \cod{\_calcStartTimeLength} of slave (which does nothing).
 
+%-----------------------
+\method{calcLength(iTimeSlice)} Updates the length of the transaction considering the virtual length and bus caracteristics? The length of \cod{\_nextTransaction} is increased if the computed length is greater than the current one.
 %-----------------------
 \method{addTransaction(iTransToBeAdded)} return {\tt true}. Adds the parameter transaction (supposed to be similar to the transaction determined by the scheduling algorithm?) to the internal list of scheduled transactions. Set \cod{\_endSchedule} to the end time of \cod{\_nextTransaction} and \cod{\_nextTransaction} to 0. Set the \cod{\_schedulingNeeded} flag.
 
@@ -892,6 +980,9 @@ If "return true",
 %-----------------------
 \method{getBus()} \cod{\_busArray[0]}
 
+%-----------------------
+\method{getNextBus()} returns current value of \cod{\_nextBus} which is always \cod{\_busArray[0]} in current implementation (but may be changed by \cod{accessGranted} when considering multibuses--not implemented).
+
 %-----------------------
 \method{addTransaction(iTransToBeAdded)} Add transaction to \cod{\_nextBus} and set \cod{\_next\-Tran\-saction} to 0.
 
@@ -910,41 +1001,48 @@ If "return true",
 \method{simulate(oLastTrans)} call \cod{prepare} on current command (initial one) of each task. Schedule all CPUs (and FPGAs). Run the following main loop untill stop flag or no more transaction on non-daemon task. Return the last executed transaction. The loop:
 \begin{itemize}
 	\item get transaction \cod{T} with lowest end time and its associated device \cod{D}.
-	\item \cod{T->addTransaction(0)}, which may update \cod{\_masterNextTransaction} and return false when \cod{T} is communication. In this case, the loop is terminated. Otherwise, continue with next items. While doing this, the transaction is "executed" and may unblock communication command waiting for data or write space to be available.
+	\item \cod{T->addTransaction(0)}, which may update \cod{\_masterNextTransaction} (to next master) and return false when \cod{T} is communication. In this case, the loop is terminated.\\
+	Otherwise, continue with next items. While doing this, the transaction is "executed" (which prepares its following transaction) and may unblock communication command waiting for data or write space to be available.
 	\item for each task \cod{t} on another CPU (or FPGA) \cod{C} whose current (communication) command may be unblocked by (communication) \cod{T}, if \cod{t} is not the current task of its associated CPU (or FPGA) then
 	\begin{itemize}
 	\item if \cod{C} has no current transaction, then it is scheduled.
-	\item Otherwise \cod{C->truncateAndAddNextTransAt(T->getEndTime())} is called. This schedule \cod{C} and if \cod{C}'s \cod{\_nextTransaction} changes, the original one is truncated at \cod{T}'s end time and added, i.e. it is terminated at the current date.\\
-	{\bfseries\textit{warning (?)}}: I'm not sure that \cod{C}'s \cod{\_nextTransaction} can change as often as expected with the current version of schedulers.
+	\item Otherwise \cod{C->truncateAndAddNextTransAt(T->getEndTime())} is called. This schedule \cod{C} and if \cod{C}'s \cod{\_nextTransaction} changes, the original one is truncated at \cod{T}'s end time and added, i.e. it is terminated at the current date. Currently, bus transactions are not truncated but the algorithm that does this is implemented (\cod{CPU::truncateNextTrans}) and could be made operational by small modifying at the beginning of \cod{CPU::truncateAndAddNextTransAt}.
 	\end{itemize}
 	\item schedule \cod{D}
 \end{itemize}
 
 \section*{Remarks about communication transactions on channels}
 \begin{itemize}
-	\item \cod{Bus}'schedulers call \cod{Bus}'s \cod{calcStartTimeLength} which may modify transaction's end time.
-	\item \cod{Bus}'schedulers are called by \cod{Bus}'s \cod{getNextTransaction} which is called by \cod{BusMas\-ter}'s \cod{getNextTransaction} and \cod{BusMaster}'s \cod{accessGranted}
+	\item As length of a data communication transaction is known late (approximately when the transaction is ready to execute), it may be selected by the simulator loop earlier than it should be (simulated transactions are not always ordered w.r.t. their endTime).
+	\item \cod{Bus}'schedulers are called by \cod{Bus}'s \cod{getNextTransaction} which is called by \cod{BusMas\-ter}'s \cod{getNextTransaction} and \cod{BusMaster}'s \cod{accessGranted}.\\
+	\cod{Bus}'schedulers call \cod{calcStartTimeLength} which updates the virtual length of the transaction but not the length.
 	\item \cod{getNextTransaction} returns \cod{\_nextTRansaction} only if it is not the \cod{\_next\-Trans\-ac\-tion} of one of the busses. Not sure that this method is called anywhere (searched and not found\ldots).
 	\item \cod{accessGranted} is called by CPU's \cod{getNextTransaction} and access is granted if \cod{\_nextTRansaction} is also the \cod{\_nextTransaction} of one of the busses of the master.
 	\item Story of a channel-bus transaction:
 	  \begin{enumerate}
-	  	\item \cod{\textit{Communication}Command}'s \cod{prepareNextTransaction} create the transaction.\\ The transaction is provided  with a runnable time and an initial virtual length which takes channel state into account.
+	  	\item \cod{\textit{Communication}Command}'s \cod{prepareNextTransaction} create the transaction.\\ The transaction is provided  with a runnable time and an initial virtual length which takes channel state into account. All task's initial commands are "prepared" at initialisation, and then, each time a transaction (having an associated command) is executed by the simulator loop, to produce the (control flow relative) following transaction.
 	  	\item transaction is chosen for the first time by the \cod{CPU}'s scheduler in which a call to
-	  	\cod{CPU}'s \cod{calcStartTimeLength} sets \cod{\_masterNextTransaction} to first master and registers the transaction for this master. Here, transaction's end time is 0, as start time and length are initialized to 0 and not modified until this point. And all channel's bus  until \cod{\_masterNextTrans\-action} are (trivially) granted (as there are none).
-	  	\item  Transaction (and \cod{CPU}) is selected by simulator, after verifying that all bus masters until \cod{\_masterNextTransaction} have been granted. Indeed \cod{getLowest\-Transac\-tionEndTime} calls \cod{getNextTransaction} on each CPU and \cod{getNext\-Trans\-action} only select a communication transaction if bus masters before \cod{\_masterNext\-Trans\-action} are granted.
+	  	\cod{CPU}'s \cod{calcStartTimeLength} sets \cod{\_masterNextTransaction} to first master and registers the transaction for this master. At this point, transaction's timings are not set (keep their initial value, 0). And all channel's bus  until \cod{\_masterNextTrans\-action} are (trivially) granted (as there are none).
+	  	\item  Transaction (and \cod{CPU}) is selected by simulator, after verifying that all bus masters until \cod{\_masterNextTransaction} (included) have been granted. Indeed \cod{getLowest\-Transac\-tionEndTime} calls \cod{getNextTransaction} on each CPU and this \cod{getNext\-Trans\-action} only select a data communication transaction if bus masters before \cod{\_masterNext\-Trans\-action} are granted. Verifying that buses are granted invokes their scheduling (if required) which updates the virutal length of the transaction w.r.t. bus constraints. If \cod{\_masterNextTransaction} is the last master of the channel, the virtual length is up to date and thus, the length of the transaction can be computed: it is updated to its final value.(*)
 	  	\item \cod{addTransaction} is called and
 	  	\begin{enumerate}
 	  		\item either \cod{\_masterNextTrransaction} is the last master of the channel and the transaction is executed: the transaction is added to all masters and slaves of the channel. This is the end of the story.
 	  		\item or \cod{\_masterNextTrransaction} is not the last master of the channel. Then \cod{\_masterNextTrransaction} is set to the following one and the transaction is registered for this new master. 
 	  	\end{enumerate}
-	  	\item If the story is not terminated (point (b) above) then, return to possibly after some simulator loop iterations on other CPUs), the transaction is selected again and then point 4 above is executed again. This step verifies that all masters before \cod{\_masterNextTransaction} and at the same time, \cod{\_masterNextTransac\-tion}'s busses are scheduled which may update start time and length of the transaction.
+	  	\item If the story is not terminated (point (b) above) then, return to 3 (possibly after some simulator loop iterations on other CPUs), the transaction is selected again and then point 4 above is executed again. executing point 3 again schedules the new \cod{\_masterNextTrransaction} which may update start time and virtual length (and length if last master) of the transaction.
 	  \end{enumerate}
 
 \end{itemize}
-
+(*) Notice that the length is only known at this moment, thus before this moment the transaction may be selected by \cod{getLowest\-Transac\-tionEndTime}, although its endTime is not the lowest one (it is not a problem(?)).
 \section*{Figures}
 \includegraphics[width=6cm]{images/simulate.pdf}\hspace{5mm}
 \includegraphics[width=9cm]{images/channelTrans.pdf}
 
+\vspace{5mm}
+\includegraphics[width=15.5cm]{images/ClassDiag1.pdf}
+
+\includegraphics[width=15.5cm]{images/busTime.pdf}
+
+
 \end{document}
 
-- 
GitLab