From d83047572b6514f47107197872e791177a0d09ec Mon Sep 17 00:00:00 2001
From: Daniela Genius <genius@debussy.soc.lip6.fr>
Date: Thu, 14 Sep 2017 13:02:32 +0200
Subject: [PATCH] model introducing hw accelerators to generated SoClib
 platform

---
 modeling/SoCLib/test_coproc.xml               | 748 ++++++++++++++++++
 .../toSoclib/TasksAndMainGenerator.java       |  80 +-
 2 files changed, 820 insertions(+), 8 deletions(-)
 create mode 100644 modeling/SoCLib/test_coproc.xml

diff --git a/modeling/SoCLib/test_coproc.xml b/modeling/SoCLib/test_coproc.xml
new file mode 100644
index 0000000000..8d118c39f6
--- /dev/null
+++ b/modeling/SoCLib/test_coproc.xml
@@ -0,0 +1,748 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<TURTLEGMODELING version="0.99-beta4">
+
+<Modeling type="AVATAR Design" nameTab="Design" >
+<AVATARBlockDiagramPanel name="Block Diagram" minX="10" maxX="2500" minY="10" maxY="1500" >
+<MainCode value="void __user_init() {"/>
+<MainCode value="}"/>
+<Optimized value="true" />
+<Validated value="" />
+<Ignored value="" />
+
+<CONNECTOR type="5002" id="2" >
+<cdparam x="386" y="271" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="" />
+<TGConnectingPoint num="0" id="1" />
+<P1  x="386" y="271" id="32" />
+<P2  x="474" y="271" id="6" />
+<AutomaticDrawing  data="true" />
+<extraparam>
+<isd value="in valrec()" />
+<oso value="out val()" />
+<FIFOType asynchronous="true" size="1" blocking="false" private="true" broadcast="false" lossy="false" />
+</extraparam>
+</CONNECTOR>
+<COMPONENT type="5000" id="27" >
+<cdparam x="474" y="171" />
+<sizeparam width="250" height="200" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Block1" value="Block1" />
+<TGConnectingPoint num="0" id="3" />
+<TGConnectingPoint num="1" id="4" />
+<TGConnectingPoint num="2" id="5" />
+<TGConnectingPoint num="3" id="6" />
+<TGConnectingPoint num="4" id="7" />
+<TGConnectingPoint num="5" id="8" />
+<TGConnectingPoint num="6" id="9" />
+<TGConnectingPoint num="7" id="10" />
+<TGConnectingPoint num="8" id="11" />
+<TGConnectingPoint num="9" id="12" />
+<TGConnectingPoint num="10" id="13" />
+<TGConnectingPoint num="11" id="14" />
+<TGConnectingPoint num="12" id="15" />
+<TGConnectingPoint num="13" id="16" />
+<TGConnectingPoint num="14" id="17" />
+<TGConnectingPoint num="15" id="18" />
+<TGConnectingPoint num="16" id="19" />
+<TGConnectingPoint num="17" id="20" />
+<TGConnectingPoint num="18" id="21" />
+<TGConnectingPoint num="19" id="22" />
+<TGConnectingPoint num="20" id="23" />
+<TGConnectingPoint num="21" id="24" />
+<TGConnectingPoint num="22" id="25" />
+<TGConnectingPoint num="23" id="26" />
+<extraparam>
+<CryptoBlock value="false" />
+<Attribute access="0" id="valrec" value="" type="8" typeOther="" />
+<Signal value="in valrec()" attached="true" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5000" id="52" >
+<cdparam x="136" y="171" />
+<sizeparam width="250" height="200" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Block0" value="Block0" />
+<TGConnectingPoint num="0" id="28" />
+<TGConnectingPoint num="1" id="29" />
+<TGConnectingPoint num="2" id="30" />
+<TGConnectingPoint num="3" id="31" />
+<TGConnectingPoint num="4" id="32" />
+<TGConnectingPoint num="5" id="33" />
+<TGConnectingPoint num="6" id="34" />
+<TGConnectingPoint num="7" id="35" />
+<TGConnectingPoint num="8" id="36" />
+<TGConnectingPoint num="9" id="37" />
+<TGConnectingPoint num="10" id="38" />
+<TGConnectingPoint num="11" id="39" />
+<TGConnectingPoint num="12" id="40" />
+<TGConnectingPoint num="13" id="41" />
+<TGConnectingPoint num="14" id="42" />
+<TGConnectingPoint num="15" id="43" />
+<TGConnectingPoint num="16" id="44" />
+<TGConnectingPoint num="17" id="45" />
+<TGConnectingPoint num="18" id="46" />
+<TGConnectingPoint num="19" id="47" />
+<TGConnectingPoint num="20" id="48" />
+<TGConnectingPoint num="21" id="49" />
+<TGConnectingPoint num="22" id="50" />
+<TGConnectingPoint num="23" id="51" />
+<extraparam>
+<CryptoBlock value="false" />
+<Attribute access="0" id="val" value="1" type="8" typeOther="" />
+<Signal value="out val()" attached="true" />
+</extraparam>
+</COMPONENT>
+
+
+</AVATARBlockDiagramPanel>
+
+<AVATARStateMachineDiagramPanel name="Block1" minX="10" maxX="2500" minY="10" maxY="1500" >
+<COMPONENT type="5101" id="373" >
+<cdparam x="418" y="213" />
+<sizeparam width="20" height="20" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="stop state" value="null" />
+<TGConnectingPoint num="0" id="374" />
+</COMPONENT>
+
+<COMPONENT type="5104" id="355" >
+<cdparam x="391" y="178" />
+<sizeparam width="65" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Receive signal" value="valrec()" />
+<TGConnectingPoint num="0" id="356" />
+<TGConnectingPoint num="1" id="357" />
+<TGConnectingPoint num="2" id="358" />
+<TGConnectingPoint num="3" id="359" />
+<TGConnectingPoint num="4" id="360" />
+<TGConnectingPoint num="5" id="361" />
+<TGConnectingPoint num="6" id="362" />
+<TGConnectingPoint num="7" id="363" />
+<TGConnectingPoint num="8" id="364" />
+<TGConnectingPoint num="9" id="365" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="307" >
+<cdparam x="392" y="89" />
+<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="State" value="state0" />
+<TGConnectingPoint num="0" id="308" />
+<TGConnectingPoint num="1" id="309" />
+<TGConnectingPoint num="2" id="310" />
+<TGConnectingPoint num="3" id="311" />
+<TGConnectingPoint num="4" id="312" />
+<TGConnectingPoint num="5" id="313" />
+<TGConnectingPoint num="6" id="314" />
+<TGConnectingPoint num="7" id="315" />
+<TGConnectingPoint num="8" id="316" />
+<TGConnectingPoint num="9" id="317" />
+<TGConnectingPoint num="10" id="318" />
+<TGConnectingPoint num="11" id="319" />
+<TGConnectingPoint num="12" id="320" />
+<TGConnectingPoint num="13" id="321" />
+<TGConnectingPoint num="14" id="322" />
+<TGConnectingPoint num="15" id="323" />
+<TGConnectingPoint num="16" id="324" />
+<TGConnectingPoint num="17" id="325" />
+<TGConnectingPoint num="18" id="326" />
+<TGConnectingPoint num="19" id="327" />
+<TGConnectingPoint num="20" id="328" />
+<TGConnectingPoint num="21" id="329" />
+<TGConnectingPoint num="22" id="330" />
+<TGConnectingPoint num="23" id="331" />
+<TGConnectingPoint num="24" id="332" />
+<TGConnectingPoint num="25" id="333" />
+<TGConnectingPoint num="26" id="334" />
+<TGConnectingPoint num="27" id="335" />
+<TGConnectingPoint num="28" id="336" />
+<TGConnectingPoint num="29" id="337" />
+<TGConnectingPoint num="30" id="338" />
+<TGConnectingPoint num="31" id="339" />
+<TGConnectingPoint num="32" id="340" />
+<TGConnectingPoint num="33" id="341" />
+<TGConnectingPoint num="34" id="342" />
+<TGConnectingPoint num="35" id="343" />
+<TGConnectingPoint num="36" id="344" />
+<TGConnectingPoint num="37" id="345" />
+<TGConnectingPoint num="38" id="346" />
+<TGConnectingPoint num="39" id="347" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5100" id="54" >
+<cdparam x="400" y="50" />
+<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="start state" value="null" />
+<TGConnectingPoint num="0" id="53" />
+</COMPONENT>
+
+<CONNECTOR type="5102" id="348" >
+<cdparam x="407" y="70" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="349" />
+<P1  x="407" y="70" id="53" />
+<P2  x="392" y="89" id="308" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="350" >
+<father id="348" num="0" />
+<cdparam x="408" y="79" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="351" />
+<TGConnectingPoint num="1" id="352" />
+<TGConnectingPoint num="2" id="353" />
+<TGConnectingPoint num="3" id="354" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="366" >
+<cdparam x="429" y="139" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="367" />
+<P1  x="429" y="139" id="337" />
+<P2  x="423" y="173" id="356" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="368" >
+<father id="366" num="0" />
+<cdparam x="426" y="156" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="369" />
+<TGConnectingPoint num="1" id="370" />
+<TGConnectingPoint num="2" id="371" />
+<TGConnectingPoint num="3" id="372" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="375" >
+<cdparam x="423" y="203" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="376" />
+<P1  x="423" y="203" id="357" />
+<P2  x="428" y="208" id="374" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="377" >
+<father id="375" num="0" />
+<cdparam x="425" y="205" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="378" />
+<TGConnectingPoint num="1" id="379" />
+<TGConnectingPoint num="2" id="380" />
+<TGConnectingPoint num="3" id="381" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+
+</AVATARStateMachineDiagramPanel>
+
+<AVATARStateMachineDiagramPanel name="Block0" minX="10" maxX="2500" minY="10" maxY="1500" >
+<CONNECTOR type="5102" id="61" >
+<cdparam x="407" y="70" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="60" />
+<P1  x="407" y="70" id="130" />
+<P2  x="403" y="85" id="89" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="59" >
+<father id="61" num="0" />
+<cdparam x="405" y="77" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="55" />
+<TGConnectingPoint num="1" id="56" />
+<TGConnectingPoint num="2" id="57" />
+<TGConnectingPoint num="3" id="58" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="68" >
+<cdparam x="453" y="135" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="67" />
+<P1  x="453" y="135" id="95" />
+<P2  x="454" y="169" id="78" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="66" >
+<father id="68" num="0" />
+<cdparam x="453" y="152" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="62" />
+<TGConnectingPoint num="1" id="63" />
+<TGConnectingPoint num="2" id="64" />
+<TGConnectingPoint num="3" id="65" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="75" >
+<cdparam x="454" y="199" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="74" />
+<P1  x="454" y="199" id="79" />
+<P2  x="462" y="203" id="76" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="73" >
+<father id="75" num="0" />
+<cdparam x="458" y="201" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="69" />
+<TGConnectingPoint num="1" id="70" />
+<TGConnectingPoint num="2" id="71" />
+<TGConnectingPoint num="3" id="72" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<COMPONENT type="5101" id="77" >
+<cdparam x="452" y="208" />
+<sizeparam width="20" height="20" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="stop state" value="null" />
+<TGConnectingPoint num="0" id="76" />
+</COMPONENT>
+
+<COMPONENT type="5103" id="88" >
+<cdparam x="435" y="174" />
+<sizeparam width="38" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Send signal" value="val()" />
+<TGConnectingPoint num="0" id="78" />
+<TGConnectingPoint num="1" id="79" />
+<TGConnectingPoint num="2" id="80" />
+<TGConnectingPoint num="3" id="81" />
+<TGConnectingPoint num="4" id="82" />
+<TGConnectingPoint num="5" id="83" />
+<TGConnectingPoint num="6" id="84" />
+<TGConnectingPoint num="7" id="85" />
+<TGConnectingPoint num="8" id="86" />
+<TGConnectingPoint num="9" id="87" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="129" >
+<cdparam x="403" y="85" />
+<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="State" value="state0" />
+<TGConnectingPoint num="0" id="89" />
+<TGConnectingPoint num="1" id="90" />
+<TGConnectingPoint num="2" id="91" />
+<TGConnectingPoint num="3" id="92" />
+<TGConnectingPoint num="4" id="93" />
+<TGConnectingPoint num="5" id="94" />
+<TGConnectingPoint num="6" id="95" />
+<TGConnectingPoint num="7" id="96" />
+<TGConnectingPoint num="8" id="97" />
+<TGConnectingPoint num="9" id="98" />
+<TGConnectingPoint num="10" id="99" />
+<TGConnectingPoint num="11" id="100" />
+<TGConnectingPoint num="12" id="101" />
+<TGConnectingPoint num="13" id="102" />
+<TGConnectingPoint num="14" id="103" />
+<TGConnectingPoint num="15" id="104" />
+<TGConnectingPoint num="16" id="105" />
+<TGConnectingPoint num="17" id="106" />
+<TGConnectingPoint num="18" id="107" />
+<TGConnectingPoint num="19" id="108" />
+<TGConnectingPoint num="20" id="109" />
+<TGConnectingPoint num="21" id="110" />
+<TGConnectingPoint num="22" id="111" />
+<TGConnectingPoint num="23" id="112" />
+<TGConnectingPoint num="24" id="113" />
+<TGConnectingPoint num="25" id="114" />
+<TGConnectingPoint num="26" id="115" />
+<TGConnectingPoint num="27" id="116" />
+<TGConnectingPoint num="28" id="117" />
+<TGConnectingPoint num="29" id="118" />
+<TGConnectingPoint num="30" id="119" />
+<TGConnectingPoint num="31" id="120" />
+<TGConnectingPoint num="32" id="121" />
+<TGConnectingPoint num="33" id="122" />
+<TGConnectingPoint num="34" id="123" />
+<TGConnectingPoint num="35" id="124" />
+<TGConnectingPoint num="36" id="125" />
+<TGConnectingPoint num="37" id="126" />
+<TGConnectingPoint num="38" id="127" />
+<TGConnectingPoint num="39" id="128" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5100" id="131" >
+<cdparam x="400" y="50" />
+<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="start state" value="null" />
+<TGConnectingPoint num="0" id="130" />
+</COMPONENT>
+
+
+</AVATARStateMachineDiagramPanel>
+
+</Modeling>
+
+
+
+
+<Modeling type="ADD" nameTab="Deployment" >
+<ADDDiagramPanel name="Deployment Diagram" minX="10" maxX="2500" minY="10" maxY="1500" attributes="0" masterClockFrequency="200" >
+<COMPONENT type="5352" id="140" >
+<cdparam x="332" y="84" />
+<sizeparam width="124" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="TGComponent" value="Design::Block0" />
+<TGConnectingPoint num="0" id="132" />
+<TGConnectingPoint num="1" id="133" />
+<TGConnectingPoint num="2" id="134" />
+<TGConnectingPoint num="3" id="135" />
+<TGConnectingPoint num="4" id="136" />
+<TGConnectingPoint num="5" id="137" />
+<TGConnectingPoint num="6" id="138" />
+<TGConnectingPoint num="7" id="139" />
+<extraparam>
+<info value="Design::Block0" taskName="Block0" referenceTaskName="Design" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5360" id="165" >
+<cdparam x="300" y="18" />
+<sizeparam width="200" height="200" minWidth="100" minHeight="50" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Copro0" value="name" />
+<TGConnectingPoint num="0" id="141" />
+<TGConnectingPoint num="1" id="142" />
+<TGConnectingPoint num="2" id="143" />
+<TGConnectingPoint num="3" id="144" />
+<TGConnectingPoint num="4" id="145" />
+<TGConnectingPoint num="5" id="146" />
+<TGConnectingPoint num="6" id="147" />
+<TGConnectingPoint num="7" id="148" />
+<TGConnectingPoint num="8" id="149" />
+<TGConnectingPoint num="9" id="150" />
+<TGConnectingPoint num="10" id="151" />
+<TGConnectingPoint num="11" id="152" />
+<TGConnectingPoint num="12" id="153" />
+<TGConnectingPoint num="13" id="154" />
+<TGConnectingPoint num="14" id="155" />
+<TGConnectingPoint num="15" id="156" />
+<TGConnectingPoint num="16" id="157" />
+<TGConnectingPoint num="17" id="158" />
+<TGConnectingPoint num="18" id="159" />
+<TGConnectingPoint num="19" id="160" />
+<TGConnectingPoint num="20" id="161" />
+<TGConnectingPoint num="21" id="162" />
+<TGConnectingPoint num="22" id="163" />
+<TGConnectingPoint num="23" id="164" />
+<extraparam>
+<info stereotype="MWMR-CoPro" nodeName="Copro0" />
+<attributes srcid="0"  tgtid="0"  plaps="0"  fifoToCoprocDepth="0"  fifoFromCoprocDepth="0"  nToCopro="0"  nFromCopro="0"  nConfig="0"  nStatus="0"  useLLSC="false" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5354" id="190" >
+<cdparam x="38" y="187" />
+<sizeparam width="177" height="157" minWidth="150" minHeight="100" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="TTY0" value="name" />
+<TGConnectingPoint num="0" id="166" />
+<TGConnectingPoint num="1" id="167" />
+<TGConnectingPoint num="2" id="168" />
+<TGConnectingPoint num="3" id="169" />
+<TGConnectingPoint num="4" id="170" />
+<TGConnectingPoint num="5" id="171" />
+<TGConnectingPoint num="6" id="172" />
+<TGConnectingPoint num="7" id="173" />
+<TGConnectingPoint num="8" id="174" />
+<TGConnectingPoint num="9" id="175" />
+<TGConnectingPoint num="10" id="176" />
+<TGConnectingPoint num="11" id="177" />
+<TGConnectingPoint num="12" id="178" />
+<TGConnectingPoint num="13" id="179" />
+<TGConnectingPoint num="14" id="180" />
+<TGConnectingPoint num="15" id="181" />
+<TGConnectingPoint num="16" id="182" />
+<TGConnectingPoint num="17" id="183" />
+<TGConnectingPoint num="18" id="184" />
+<TGConnectingPoint num="19" id="185" />
+<TGConnectingPoint num="20" id="186" />
+<TGConnectingPoint num="21" id="187" />
+<TGConnectingPoint num="22" id="188" />
+<TGConnectingPoint num="23" id="189" />
+<extraparam>
+<info stereotype="TTY" nodeName="TTY0" />
+<attributes index="0" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5363" id="215" >
+<cdparam x="313" y="270" />
+<sizeparam width="250" height="50" minWidth="100" minHeight="50" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Vgmn0" value="name" />
+<TGConnectingPoint num="0" id="191" />
+<TGConnectingPoint num="1" id="192" />
+<TGConnectingPoint num="2" id="193" />
+<TGConnectingPoint num="3" id="194" />
+<TGConnectingPoint num="4" id="195" />
+<TGConnectingPoint num="5" id="196" />
+<TGConnectingPoint num="6" id="197" />
+<TGConnectingPoint num="7" id="198" />
+<TGConnectingPoint num="8" id="199" />
+<TGConnectingPoint num="9" id="200" />
+<TGConnectingPoint num="10" id="201" />
+<TGConnectingPoint num="11" id="202" />
+<TGConnectingPoint num="12" id="203" />
+<TGConnectingPoint num="13" id="204" />
+<TGConnectingPoint num="14" id="205" />
+<TGConnectingPoint num="15" id="206" />
+<TGConnectingPoint num="16" id="207" />
+<TGConnectingPoint num="17" id="208" />
+<TGConnectingPoint num="18" id="209" />
+<TGConnectingPoint num="19" id="210" />
+<TGConnectingPoint num="20" id="211" />
+<TGConnectingPoint num="21" id="212" />
+<TGConnectingPoint num="22" id="213" />
+<TGConnectingPoint num="23" id="214" />
+<extraparam>
+<info stereotype="VGMN" nodeName="Vgmn0" />
+<attributes index="0"  nbOfAttachedInitiators="0"  nbOfAttachedTargets="0"  minLatency="10"  fifoDepth="8" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5355" id="249" >
+<cdparam x="218" y="377" />
+<sizeparam width="200" height="200" minWidth="100" minHeight="35" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Memory0" value="name" />
+<TGConnectingPoint num="0" id="225" />
+<TGConnectingPoint num="1" id="226" />
+<TGConnectingPoint num="2" id="227" />
+<TGConnectingPoint num="3" id="228" />
+<TGConnectingPoint num="4" id="229" />
+<TGConnectingPoint num="5" id="230" />
+<TGConnectingPoint num="6" id="231" />
+<TGConnectingPoint num="7" id="232" />
+<TGConnectingPoint num="8" id="233" />
+<TGConnectingPoint num="9" id="234" />
+<TGConnectingPoint num="10" id="235" />
+<TGConnectingPoint num="11" id="236" />
+<TGConnectingPoint num="12" id="237" />
+<TGConnectingPoint num="13" id="238" />
+<TGConnectingPoint num="14" id="239" />
+<TGConnectingPoint num="15" id="240" />
+<TGConnectingPoint num="16" id="241" />
+<TGConnectingPoint num="17" id="242" />
+<TGConnectingPoint num="18" id="243" />
+<TGConnectingPoint num="19" id="244" />
+<TGConnectingPoint num="20" id="245" />
+<TGConnectingPoint num="21" id="246" />
+<TGConnectingPoint num="22" id="247" />
+<TGConnectingPoint num="23" id="248" />
+<extraparam>
+<info stereotype="RAM" nodeName="Memory0" />
+<attributes byteDataSize="65536"  index="0" />
+</extraparam>
+</COMPONENT>
+<SUBCOMPONENT type="5362" id="224" >
+<father id="249" num="0" />
+<cdparam x="261" y="464" />
+<sizeparam width="122" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="0" maxX="78" minY="0" maxY="160" />
+<infoparam name="TGComponent" value="Block0/out val" />
+<TGConnectingPoint num="0" id="216" />
+<TGConnectingPoint num="1" id="217" />
+<TGConnectingPoint num="2" id="218" />
+<TGConnectingPoint num="3" id="219" />
+<TGConnectingPoint num="4" id="220" />
+<TGConnectingPoint num="5" id="221" />
+<TGConnectingPoint num="6" id="222" />
+<TGConnectingPoint num="7" id="223" />
+<extraparam>
+<info value="Block0/out val" channelName="Block0/out val() #--# Block1/in valrec()" fullChannelName="Design::Block0/out val() #--# Block1/in valrec()" referenceDiagram="Design" />
+</extraparam>
+</SUBCOMPONENT>
+
+<COMPONENT type="5351" id="283" >
+<cdparam x="578" y="43" />
+<sizeparam width="250" height="200" minWidth="150" minHeight="100" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="CPU0" value="name" />
+<TGConnectingPoint num="0" id="259" />
+<TGConnectingPoint num="1" id="260" />
+<TGConnectingPoint num="2" id="261" />
+<TGConnectingPoint num="3" id="262" />
+<TGConnectingPoint num="4" id="263" />
+<TGConnectingPoint num="5" id="264" />
+<TGConnectingPoint num="6" id="265" />
+<TGConnectingPoint num="7" id="266" />
+<TGConnectingPoint num="8" id="267" />
+<TGConnectingPoint num="9" id="268" />
+<TGConnectingPoint num="10" id="269" />
+<TGConnectingPoint num="11" id="270" />
+<TGConnectingPoint num="12" id="271" />
+<TGConnectingPoint num="13" id="272" />
+<TGConnectingPoint num="14" id="273" />
+<TGConnectingPoint num="15" id="274" />
+<TGConnectingPoint num="16" id="275" />
+<TGConnectingPoint num="17" id="276" />
+<TGConnectingPoint num="18" id="277" />
+<TGConnectingPoint num="19" id="278" />
+<TGConnectingPoint num="20" id="279" />
+<TGConnectingPoint num="21" id="280" />
+<TGConnectingPoint num="22" id="281" />
+<TGConnectingPoint num="23" id="282" />
+<extraparam>
+<info stereotype="CPU" nodeName="CPU0" />
+<attributes nbOfIrq="6"  iCacheWays="8"  iCacheSets="1"  iCacheWords="4"  dCacheWays="8"  dCacheSets="1"  dCacheWords="4" />
+</extraparam>
+</COMPONENT>
+<SUBCOMPONENT type="5352" id="258" >
+<father id="283" num="0" />
+<cdparam x="631" y="98" />
+<sizeparam width="123" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="0" maxX="127" minY="0" maxY="160" />
+<infoparam name="TGComponent" value="Design::Block1" />
+<TGConnectingPoint num="0" id="250" />
+<TGConnectingPoint num="1" id="251" />
+<TGConnectingPoint num="2" id="252" />
+<TGConnectingPoint num="3" id="253" />
+<TGConnectingPoint num="4" id="254" />
+<TGConnectingPoint num="5" id="255" />
+<TGConnectingPoint num="6" id="256" />
+<TGConnectingPoint num="7" id="257" />
+<extraparam>
+<info value="Design::Block1" taskName="Block1" referenceTaskName="Design" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5350" id="284" >
+<cdparam x="369" y="223" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="{info}" />
+<P1  x="400" y="218" id="147" />
+<P2  x="438" y="270" id="192" />
+<AutomaticDrawing  data="true" />
+<extraparam>
+<spy value="false" />
+</extraparam>
+</CONNECTOR>
+<CONNECTOR type="5350" id="285" >
+<cdparam x="703" y="243" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="{info}" />
+<P1  x="703" y="243" id="265" />
+<P2  x="563" y="282" id="202" />
+<AutomaticDrawing  data="true" />
+<extraparam>
+<spy value="false" />
+</extraparam>
+</CONNECTOR>
+<CONNECTOR type="5350" id="286" >
+<cdparam x="318" y="377" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="{info}" />
+<P1  x="318" y="377" id="226" />
+<P2  x="375" y="320" id="205" />
+<AutomaticDrawing  data="true" />
+<extraparam>
+<spy value="false" />
+</extraparam>
+</CONNECTOR>
+<CONNECTOR type="5350" id="287" >
+<cdparam x="215" y="265" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="{info}" />
+<P1  x="215" y="265" id="170" />
+<P2  x="313" y="282" id="201" />
+<AutomaticDrawing  data="true" />
+<extraparam>
+<spy value="false" />
+</extraparam>
+</CONNECTOR>
+
+</ADDDiagramPanel>
+
+</Modeling>
+
+
+
+
+</TURTLEGMODELING>
\ No newline at end of file
diff --git a/src/main/java/ddtranslatorSoclib/toSoclib/TasksAndMainGenerator.java b/src/main/java/ddtranslatorSoclib/toSoclib/TasksAndMainGenerator.java
index b4f2edf4d8..87693017da 100755
--- a/src/main/java/ddtranslatorSoclib/toSoclib/TasksAndMainGenerator.java
+++ b/src/main/java/ddtranslatorSoclib/toSoclib/TasksAndMainGenerator.java
@@ -43,6 +43,7 @@ package ddtranslatorSoclib.toSoclib;
 
 import avatartranslator.*;
 import ddtranslatorSoclib.AvatarRAM;
+import ddtranslatorSoclib.AvatarCoproMWMR;
 import ddtranslatorSoclib.AvatarTask;
 import ddtranslatorSoclib.AvatarddSpecification;
 import ddtranslatorSoclib.toTopCell.TopCellGenerator;
@@ -1033,8 +1034,7 @@ public class TasksAndMainGenerator {
         mainFile.appendToMainCode("/* Activating randomness */" + CR);
         mainFile.appendToMainCode("initRandom();" + CR);
 
-	/* DG 7.9.2017 additions for use of hardware MWMR controller */
-
+	/* Use of hardware MWMR controller */
 
 	/*void mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
 	  size_t no, const struct mwmr_s* mwmr );*/
@@ -1044,14 +1044,78 @@ public class TasksAndMainGenerator {
 	/* mwmr_t *p_mwmr_in    = (mwmr_t*)(base(MWMRd)+0x1000);*/
 
 
-/*mwmr_initialize_pointer(p_mwmr_in,    WIDTH, DEPTH, fifo_data_in,    lock_in   );*/
+	/*mwmr_initialize_pointer(p_mwmr_in,    WIDTH, DEPTH, fifo_data_in,    lock_in   );*/
+
+	/* mwmr_hw_init(base(MWMR), MWMR_TO_COPROC, 0 , p_mwmr_in);*/
+
+	/*for all coproc 
+	  uint32_t *fifo =  (uint32_t*) + i*4096;*/
+
+	//DG 11.09.
+	int width = 4; //nb_params;//ToDo
 
-/* mwmr_hw_init(base(MWMR), MWMR_TO_COPROC, 0 , p_mwmr_in);*/
+	int i=0;
+	int MWMRd_SIZE=12288;
+
+	for (AvatarCoproMWMR copro : TopCellGenerator.avatardd.getAllCoproMWMR()){
+
+	    for(AvatarRelation ar: avspec.getRelations()) {			
+		
+		if(ar.nbOfSignals()!=0){
+		    for(i=0; i<ar.nbOfSignals() ; i++) {		  				
+			if(((ar.block1.getName()==copro.getName())||(ar.block2.getName()==copro.getName()))){
+
+
+			    mainFile.appendToMainCode("uint32_t *fifo_data"+i+"=(uint32_t*)(0x"+Integer.toHexString(538968064+MWMRd_SIZE*i)+");"+CR);
+			    //one single RAMLOCKS, fixed address
+			    mainFile.appendToMainCode("uint32_t *fifo_lock"+i+"= (uint32_t*)("+0x1A200000+");"+CR);
+			    mainFile.appendToMainCode("mwmr_t *"+getChannelName(ar, i)+" = (mwmr_t*)(0x"+Integer.toHexString(538968064+MWMRd_SIZE*i)+");"+CR);
+			    //depth 100 per default, to be changed later
+			    
+			    mainFile.appendToMainCode("mwmr_initialize_pointer("+getChannelName(ar, i)+","+(width*4)+", 100, fifo_data"+i+",fifo_lock"+i+");"+CR);
+
+			    //DG 10.09. il faut encore associer p_mwmr_i avec le canal dans le main.c
+			    //mainFile.appendToBeforeMainCode("struct mwmr_s "+getChannelName(ar, i) +" CHANNEL"+k+";" + CR2);
+			    i++;
+			}
+		    }
+		}
+	    }
+	}	
+
+	  i=0;
+	  int MWMR_SIZE=4096;
+
+	  for (AvatarCoproMWMR copro : TopCellGenerator.avatardd.getAllCoproMWMR()){
+
+	      for(AvatarRelation ar: avspec.getRelations()) {			
+		
+		  if(ar.nbOfSignals()!=0){
+		      for(i=0; i<ar.nbOfSignals() ; i++) {	
+			  // detect if there is a coprocessors implicated in the FIFO MWMR communication
+			  //in this case we have to address the hardware wrapper rather than the software channel
+
+			  if(((ar.block1.getName()==copro.getName())||(ar.block2.getName()==copro.getName()))){
+   
+			      // 0 = MWMR_FROM_COPROC = READ
+			      // 1 = MWMR_FROM_COPROC = WRITE
+			      //distinguish incoming and outgoing FIFOs
+
+			      AvatarSignal sig = ar.getSignal1(i);
+			      if(sig.isIn()){
+				  mainFile.appendToMainCode("mwmr_hw_init(0xA0"+ Integer.toHexString(2097152+MWMR_SIZE*i)+","+ 0 +",1,"+getChannelName(ar, i)+");"+CR);
+			      }
+			      else{  //sig.isOut()
+				  mainFile.appendToMainCode("mwmr_hw_init(0xA0"+ Integer.toHexString(2097152+MWMR_SIZE*i)+","+ 0 +",0,"+getChannelName(ar, i)+");"+CR);
+			      }
+			      i++;
+			  }
+		      }
+		  }
+	      }
+	  }
 
-/*for all coproc 
-  uint32_t *fifo =  (uint32_t*) + i*4096;*/
 
-/* end ajoute 7.9. */
 
 	mainFile.appendToMainCode("/* Initializing the main mutex */" + CR);
 	mainFile.appendToMainCode("if (pthread_mutex_init(&__mainMutex, NULL) < 0) { exit(-1);}" + CR + CR);
@@ -1073,7 +1137,7 @@ public class TasksAndMainGenerator {
 	    String channelString= "";
            	int j=0;
 	    for(AvatarRelation ar: avspec.getRelations()) {		
-		int i;
+		//	int i;
 		
 	  if(ar.nbOfSignals()!=0){
 	      for(i=0; i<ar.nbOfSignals() ; i++) {		  				
-- 
GitLab