From 6bf0f899a3f7f00edfad1d0435b9da04617d492a Mon Sep 17 00:00:00 2001
From: Rodrigo CORTES PORTO <Rodrigo.Cortes-porto@lip6.fr>
Date: Wed, 29 Aug 2018 11:50:15 +0200
Subject: [PATCH] Created new libsyscams to contain basic Software
 communication functions to the SoClib component gpio2vci.(syscams)

---
 MPSoC/Makefile.forsoclib                      |   2 +
 MPSoC/generated_topcell/config_noproc         |   1 +
 MPSoC/mutekh/examples/config                  |   3 +
 MPSoC/mutekh/libsyscams/Makefile              |   3 +
 MPSoC/mutekh/libsyscams/gpio2vci_address.h    |   8 +
 MPSoC/mutekh/libsyscams/gpio2vci_iface.c      |  15 +
 MPSoC/mutekh/libsyscams/gpio2vci_iface.h      |  10 +
 MPSoC/mutekh/libsyscams/libsyscams.config     |   6 +
 modeling/LIP6/monoprocessor.xml               | 659 ++++++++++++------
 .../toSoclib/Gpio2VciAddress.java             |  93 +++
 .../toSoclib/TaskFileSoclib.java              |  13 +-
 .../toSoclib/TasksAndMainGenerator.java       |   6 +
 ...DialogSysCAMSExecutableCodeGeneration.java |   2 +-
 13 files changed, 595 insertions(+), 226 deletions(-)
 create mode 100644 MPSoC/mutekh/libsyscams/Makefile
 create mode 100644 MPSoC/mutekh/libsyscams/gpio2vci_address.h
 create mode 100644 MPSoC/mutekh/libsyscams/gpio2vci_iface.c
 create mode 100644 MPSoC/mutekh/libsyscams/gpio2vci_iface.h
 create mode 100644 MPSoC/mutekh/libsyscams/libsyscams.config
 create mode 100644 src/main/java/ddtranslatorSoclib/toSoclib/Gpio2VciAddress.java

diff --git a/MPSoC/Makefile.forsoclib b/MPSoC/Makefile.forsoclib
index 80c144da16..a7abb1e606 100755
--- a/MPSoC/Makefile.forsoclib
+++ b/MPSoC/Makefile.forsoclib
@@ -16,6 +16,8 @@ export PATH
 updateruntime:
 	cp mutekh/libmwmr/*.c mutekh/examples/avatar
 	cp mutekh/libmwmr/include/mwmr/mwmr.h mutekh/examples/avatar
+	cp mutekh/libsyscams/*.c mutekh/examples/avatar
+	cp mutekh/libsyscams/*.h mutekh/examples/avatar
 	cp src/*.c ~/TTool/MPSoC/mutekh/examples/avatar
 	cp src/*.h ~/TTool/MPSoC/mutekh/examples/avatar
 
diff --git a/MPSoC/generated_topcell/config_noproc b/MPSoC/generated_topcell/config_noproc
index 41ed52bc72..be587d6137 100644
--- a/MPSoC/generated_topcell/config_noproc
+++ b/MPSoC/generated_topcell/config_noproc
@@ -26,6 +26,7 @@
   CONFIG_MWMR
   CONFIG_MWMR_SOCLIB
   CONFIG_MUTEK_SCHEDULER_STATIC
+  CONFIG_LIBSYSCAMS
 
 %include $(SRC_DIR)/examples/common/build_options.conf
 %include $(SRC_DIR)/examples/common/platforms.conf
diff --git a/MPSoC/mutekh/examples/config b/MPSoC/mutekh/examples/config
index ab93ac874f..7a483788e4 100644
--- a/MPSoC/mutekh/examples/config
+++ b/MPSoC/mutekh/examples/config
@@ -29,6 +29,9 @@ CONFIG_PTHREAD_ATTRIBUTES
  CONFIG_MWMR
  CONFIG_MWMR_SOCLIB
 #fin ajoute DG
+#changes RCP
+  CONFIG_LIBSYSCAMS
+#end changes RCP
   CONFIG_MUTEK_SCHEDULER_STATIC
 
 %include $(SRC_DIR)/examples/common/build_options.conf
diff --git a/MPSoC/mutekh/libsyscams/Makefile b/MPSoC/mutekh/libsyscams/Makefile
new file mode 100644
index 0000000000..d77e2d83bb
--- /dev/null
+++ b/MPSoC/mutekh/libsyscams/Makefile
@@ -0,0 +1,3 @@
+
+objs += gpio2vci_iface.o gpio2vci_address.o
+
diff --git a/MPSoC/mutekh/libsyscams/gpio2vci_address.h b/MPSoC/mutekh/libsyscams/gpio2vci_address.h
new file mode 100644
index 0000000000..af10865412
--- /dev/null
+++ b/MPSoC/mutekh/libsyscams/gpio2vci_address.h
@@ -0,0 +1,8 @@
+#ifndef GPIO2VCI_ADDRESS_H
+#define GPIO2VCI_ADDRESS_H
+#include <string.h>
+#include <stdio.h>
+
+int get_address(char name[]);
+
+#endif //GPIO2VCI_ADDRESS_H
diff --git a/MPSoC/mutekh/libsyscams/gpio2vci_iface.c b/MPSoC/mutekh/libsyscams/gpio2vci_iface.c
new file mode 100644
index 0000000000..310cc1842c
--- /dev/null
+++ b/MPSoC/mutekh/libsyscams/gpio2vci_iface.c
@@ -0,0 +1,15 @@
+#include "gpio2vci_iface.h"
+
+void write_gpio2vci(int data, char name[]) {
+    int * wr_ptr;
+    //wr_ptr = (int*)AMS_CLUSTER_WRITE;         //Address of the GPIO2VCI component.
+    //wr_ptr = (int*)get_address(index);
+    wr_ptr = (int*)get_address(name);
+    *wr_ptr = data;
+}
+
+int read_gpio2vci(char name[]) {
+    int * rd_ptr;
+    rd_ptr = (int*)(get_address(name)+4);
+    return *rd_ptr;
+}
diff --git a/MPSoC/mutekh/libsyscams/gpio2vci_iface.h b/MPSoC/mutekh/libsyscams/gpio2vci_iface.h
new file mode 100644
index 0000000000..c03868e1af
--- /dev/null
+++ b/MPSoC/mutekh/libsyscams/gpio2vci_iface.h
@@ -0,0 +1,10 @@
+#ifndef GPIO2VCI_IFACE_H
+#define GPIO2VCI_IFACE_H
+
+#include "gpio2vci_address.h"
+
+void write_gpio2vci(int data, char name[]);
+
+int read_gpio2vci(char name[]);
+
+#endif //GPIO2VCI_IFACE_H
diff --git a/MPSoC/mutekh/libsyscams/libsyscams.config b/MPSoC/mutekh/libsyscams/libsyscams.config
new file mode 100644
index 0000000000..203c5d5cc0
--- /dev/null
+++ b/MPSoC/mutekh/libsyscams/libsyscams.config
@@ -0,0 +1,6 @@
+
+%config CONFIG_LIBSYSCAMS
+  desc Enable SYSCAMS library
+  module libsyscams
+%config end
+
diff --git a/modeling/LIP6/monoprocessor.xml b/modeling/LIP6/monoprocessor.xml
index f9d7a3a941..031338f954 100644
--- a/modeling/LIP6/monoprocessor.xml
+++ b/modeling/LIP6/monoprocessor.xml
@@ -63,6 +63,7 @@
 <cdparam x="458" y="139" />
 <sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
 <TGConnectingPoint num="0" id="26" />
@@ -70,12 +71,12 @@
 <TGConnectingPoint num="2" id="28" />
 <TGConnectingPoint num="3" id="29" />
 <extraparam>
-<guard value="[ ]" />
-<afterMin value="" />
-<afterMax value="" />
-<computeMin value="" />
-<computeMax value="" />
-<probability value="" />
+<guard value="[ ]" enabled="true"/>
+<afterMin value="" enabled="true"/>
+<afterMax value="" enabled="true"/>
+<computeMin value="" enabled="true"/>
+<computeMax value="" enabled="true"/>
+<probability value="" enabled="true"/>
 </extraparam>
 </SUBCOMPONENT>
 
@@ -92,6 +93,7 @@
 <cdparam x="407" y="110" />
 <sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
 <TGConnectingPoint num="0" id="33" />
@@ -99,12 +101,12 @@
 <TGConnectingPoint num="2" id="35" />
 <TGConnectingPoint num="3" id="36" />
 <extraparam>
-<guard value="[ ]" />
-<afterMin value="" />
-<afterMax value="" />
-<computeMin value="" />
-<computeMax value="" />
-<probability value="" />
+<guard value="[ ]" enabled="true"/>
+<afterMin value="" enabled="true"/>
+<afterMax value="" enabled="true"/>
+<computeMin value="" enabled="true"/>
+<computeMax value="" enabled="true"/>
+<probability value="" enabled="true"/>
 </extraparam>
 </SUBCOMPONENT>
 
@@ -121,6 +123,7 @@
 <cdparam x="410" y="65" />
 <sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="state0" value="state0" />
 <TGConnectingPoint num="0" id="42" />
@@ -165,6 +168,17 @@
 <TGConnectingPoint num="39" id="81" />
 <extraparam>
 <entryCode value="printf(&quot;Hello World! \n&quot;);" />
+<entryCode value="write_gpio2vci(23, &quot;cluster&quot;);" />
+<entryCode value="printf(&quot;Setting amplitude of sine1 generator to %d\n&quot;, 23);" />
+<entryCode value="printf(&quot;Reading value of sine generator: %d\n&quot;, read_gpio2vci(&quot;cluster&quot;));" />
+<entryCode value="printf(&quot;Reading value of sine generator: %d\n&quot;, read_gpio2vci(&quot;cluster&quot;));" />
+<entryCode value="printf(&quot;Reading value of sine generator: %d\n&quot;, read_gpio2vci(&quot;cluster&quot;));" />
+<entryCode value="" />
+<entryCode value="write_gpio2vci(7, &quot;cluster2&quot;);" />
+<entryCode value="printf(&quot;Setting amplitude of sine2 generator to %d\n&quot;, 7);" />
+<entryCode value="printf(&quot;Reading value of sine generator: %d\n&quot;, read_gpio2vci(&quot;cluster2&quot;));" />
+<entryCode value="printf(&quot;Reading value of sine generator: %d\n&quot;, read_gpio2vci(&quot;cluster2&quot;));" />
+<entryCode value="printf(&quot;Reading value of sine generator: %d\n&quot;, read_gpio2vci(&quot;cluster2&quot;));" />
 </extraparam>
 </COMPONENT>
 
@@ -187,12 +201,59 @@
 
 <Modeling type="ADD" nameTab="Avatar Deployment" >
 <ADDDiagramPanel name="Deployment Diagram" minX="10" maxX="1400" minY="10" maxY="900" attributes="0" masterClockFrequency="200" >
-<COMPONENT type="5354" id="109" >
-<cdparam x="649" y="518" />
+<CONNECTOR type="5350" id="469" >
+<cdparam x="1187" y="208" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="{info}" />
+<P1  x="964" y="171" id="448" />
+<P2  x="773" y="309" id="162" />
+<AutomaticDrawing  data="true" />
+<extraparam>
+<spy value="false" />
+</extraparam>
+</CONNECTOR>
+<COMPONENT type="5365" id="444" >
+<cdparam x="964" y="71" />
 <sizeparam width="250" height="200" minWidth="150" minHeight="100" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="TTY0" value="name" />
+<infoparam name="cluster" value="cluster" />
+<TGConnectingPoint num="0" id="445" />
+<TGConnectingPoint num="1" id="446" />
+<TGConnectingPoint num="2" id="447" />
+<TGConnectingPoint num="3" id="448" />
+<TGConnectingPoint num="4" id="449" />
+<TGConnectingPoint num="5" id="450" />
+<TGConnectingPoint num="6" id="451" />
+<TGConnectingPoint num="7" id="452" />
+<TGConnectingPoint num="8" id="453" />
+<TGConnectingPoint num="9" id="454" />
+<TGConnectingPoint num="10" id="455" />
+<TGConnectingPoint num="11" id="456" />
+<TGConnectingPoint num="12" id="457" />
+<TGConnectingPoint num="13" id="458" />
+<TGConnectingPoint num="14" id="459" />
+<TGConnectingPoint num="15" id="460" />
+<TGConnectingPoint num="16" id="461" />
+<TGConnectingPoint num="17" id="462" />
+<TGConnectingPoint num="18" id="463" />
+<TGConnectingPoint num="19" id="464" />
+<TGConnectingPoint num="20" id="465" />
+<TGConnectingPoint num="21" id="466" />
+<TGConnectingPoint num="22" id="467" />
+<TGConnectingPoint num="23" id="468" />
+<extraparam>
+<info stereotype="SystemC-AMS Cluster" nodeName="cluster" />
+<attributes index="0" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5365" id="109" >
+<cdparam x="1150" y="334" />
+<sizeparam width="250" height="200" minWidth="150" minHeight="100" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="cluster2" value="cluster2" />
 <TGConnectingPoint num="0" id="85" />
 <TGConnectingPoint num="1" id="86" />
 <TGConnectingPoint num="2" id="87" />
@@ -218,17 +279,17 @@
 <TGConnectingPoint num="22" id="107" />
 <TGConnectingPoint num="23" id="108" />
 <extraparam>
-<info stereotype="TTY" nodeName="TTY0" />
+<info stereotype="SystemC-AMS Cluster" nodeName="cluster2" />
 <attributes index="0" />
 </extraparam>
 </COMPONENT>
 
-<COMPONENT type="5365" id="134" >
-<cdparam x="942" y="75" />
+<COMPONENT type="5354" id="134" >
+<cdparam x="649" y="518" />
 <sizeparam width="250" height="200" minWidth="150" minHeight="100" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="cluster" value="cluster" />
+<infoparam name="TTY0" value="name" />
 <TGConnectingPoint num="0" id="110" />
 <TGConnectingPoint num="1" id="111" />
 <TGConnectingPoint num="2" id="112" />
@@ -254,53 +315,17 @@
 <TGConnectingPoint num="22" id="132" />
 <TGConnectingPoint num="23" id="133" />
 <extraparam>
-<info stereotype="SystemC-AMS Cluster" nodeName="cluster" />
+<info stereotype="TTY" nodeName="TTY0" />
 <attributes index="0" />
 </extraparam>
 </COMPONENT>
 
-<COMPONENT type="5363" id="159" >
+<COMPONENT type="5363" id="184" >
 <cdparam x="523" y="309" />
 <sizeparam width="250" height="50" minWidth="100" minHeight="50" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="Bus0" value="name" />
-<TGConnectingPoint num="0" id="135" />
-<TGConnectingPoint num="1" id="136" />
-<TGConnectingPoint num="2" id="137" />
-<TGConnectingPoint num="3" id="138" />
-<TGConnectingPoint num="4" id="139" />
-<TGConnectingPoint num="5" id="140" />
-<TGConnectingPoint num="6" id="141" />
-<TGConnectingPoint num="7" id="142" />
-<TGConnectingPoint num="8" id="143" />
-<TGConnectingPoint num="9" id="144" />
-<TGConnectingPoint num="10" id="145" />
-<TGConnectingPoint num="11" id="146" />
-<TGConnectingPoint num="12" id="147" />
-<TGConnectingPoint num="13" id="148" />
-<TGConnectingPoint num="14" id="149" />
-<TGConnectingPoint num="15" id="150" />
-<TGConnectingPoint num="16" id="151" />
-<TGConnectingPoint num="17" id="152" />
-<TGConnectingPoint num="18" id="153" />
-<TGConnectingPoint num="19" id="154" />
-<TGConnectingPoint num="20" id="155" />
-<TGConnectingPoint num="21" id="156" />
-<TGConnectingPoint num="22" id="157" />
-<TGConnectingPoint num="23" id="158" />
-<extraparam>
-<info stereotype="VGSB" nodeName="Bus0" />
-<attributes index="0"  nbOfAttachedInitiators="0"  nbOfAttachedTargets="0"  minLatency="10"  fifoDepth="10" />
-</extraparam>
-</COMPONENT>
-
-<COMPONENT type="5355" id="184" >
-<cdparam x="218" y="386" />
-<sizeparam width="200" height="200" minWidth="100" minHeight="35" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
-<hidden value="false" />
-<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="Memory0" value="name" />
 <TGConnectingPoint num="0" id="160" />
 <TGConnectingPoint num="1" id="161" />
 <TGConnectingPoint num="2" id="162" />
@@ -326,105 +351,141 @@
 <TGConnectingPoint num="22" id="182" />
 <TGConnectingPoint num="23" id="183" />
 <extraparam>
+<info stereotype="VGSB" nodeName="Bus0" />
+<attributes index="0"  nbOfAttachedInitiators="0"  nbOfAttachedTargets="0"  minLatency="10"  fifoDepth="10" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5355" id="209" >
+<cdparam x="218" y="386" />
+<sizeparam width="200" height="200" minWidth="100" minHeight="35" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Memory0" value="name" />
+<TGConnectingPoint num="0" id="185" />
+<TGConnectingPoint num="1" id="186" />
+<TGConnectingPoint num="2" id="187" />
+<TGConnectingPoint num="3" id="188" />
+<TGConnectingPoint num="4" id="189" />
+<TGConnectingPoint num="5" id="190" />
+<TGConnectingPoint num="6" id="191" />
+<TGConnectingPoint num="7" id="192" />
+<TGConnectingPoint num="8" id="193" />
+<TGConnectingPoint num="9" id="194" />
+<TGConnectingPoint num="10" id="195" />
+<TGConnectingPoint num="11" id="196" />
+<TGConnectingPoint num="12" id="197" />
+<TGConnectingPoint num="13" id="198" />
+<TGConnectingPoint num="14" id="199" />
+<TGConnectingPoint num="15" id="200" />
+<TGConnectingPoint num="16" id="201" />
+<TGConnectingPoint num="17" id="202" />
+<TGConnectingPoint num="18" id="203" />
+<TGConnectingPoint num="19" id="204" />
+<TGConnectingPoint num="20" id="205" />
+<TGConnectingPoint num="21" id="206" />
+<TGConnectingPoint num="22" id="207" />
+<TGConnectingPoint num="23" id="208" />
+<extraparam>
 <info stereotype="RAM" nodeName="Memory0" />
 <attributes byteDataSize="1048576"  index="0"  processCode="" />
 </extraparam>
 </COMPONENT>
 
-<COMPONENT type="5351" id="218" >
+<COMPONENT type="5351" id="243" >
 <cdparam x="113" y="44" />
 <sizeparam width="250" height="200" minWidth="150" minHeight="100" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="CPU0" value="name" />
-<TGConnectingPoint num="0" id="194" />
-<TGConnectingPoint num="1" id="195" />
-<TGConnectingPoint num="2" id="196" />
-<TGConnectingPoint num="3" id="197" />
-<TGConnectingPoint num="4" id="198" />
-<TGConnectingPoint num="5" id="199" />
-<TGConnectingPoint num="6" id="200" />
-<TGConnectingPoint num="7" id="201" />
-<TGConnectingPoint num="8" id="202" />
-<TGConnectingPoint num="9" id="203" />
-<TGConnectingPoint num="10" id="204" />
-<TGConnectingPoint num="11" id="205" />
-<TGConnectingPoint num="12" id="206" />
-<TGConnectingPoint num="13" id="207" />
-<TGConnectingPoint num="14" id="208" />
-<TGConnectingPoint num="15" id="209" />
-<TGConnectingPoint num="16" id="210" />
-<TGConnectingPoint num="17" id="211" />
-<TGConnectingPoint num="18" id="212" />
-<TGConnectingPoint num="19" id="213" />
-<TGConnectingPoint num="20" id="214" />
-<TGConnectingPoint num="21" id="215" />
-<TGConnectingPoint num="22" id="216" />
-<TGConnectingPoint num="23" id="217" />
+<TGConnectingPoint num="0" id="219" />
+<TGConnectingPoint num="1" id="220" />
+<TGConnectingPoint num="2" id="221" />
+<TGConnectingPoint num="3" id="222" />
+<TGConnectingPoint num="4" id="223" />
+<TGConnectingPoint num="5" id="224" />
+<TGConnectingPoint num="6" id="225" />
+<TGConnectingPoint num="7" id="226" />
+<TGConnectingPoint num="8" id="227" />
+<TGConnectingPoint num="9" id="228" />
+<TGConnectingPoint num="10" id="229" />
+<TGConnectingPoint num="11" id="230" />
+<TGConnectingPoint num="12" id="231" />
+<TGConnectingPoint num="13" id="232" />
+<TGConnectingPoint num="14" id="233" />
+<TGConnectingPoint num="15" id="234" />
+<TGConnectingPoint num="16" id="235" />
+<TGConnectingPoint num="17" id="236" />
+<TGConnectingPoint num="18" id="237" />
+<TGConnectingPoint num="19" id="238" />
+<TGConnectingPoint num="20" id="239" />
+<TGConnectingPoint num="21" id="240" />
+<TGConnectingPoint num="22" id="241" />
+<TGConnectingPoint num="23" id="242" />
 <extraparam>
 <info stereotype="CPU" nodeName="CPU0" />
 <attributes nbOfIrq="6"  iCacheWays="1"  iCacheSets="8"  iCacheWords="4"  dCacheWays="1"  dCacheSets="8"  dCacheWords="4" />
 </extraparam>
 </COMPONENT>
-<SUBCOMPONENT type="5352" id="193" >
-<father id="218" num="0" />
+<SUBCOMPONENT type="5352" id="218" >
+<father id="243" num="0" />
 <cdparam x="172" y="134" />
 <sizeparam width="176" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="0" maxX="74" minY="0" maxY="160" />
 <infoparam name="TGComponent" value="AVATAR Design::Block0" />
-<TGConnectingPoint num="0" id="185" />
-<TGConnectingPoint num="1" id="186" />
-<TGConnectingPoint num="2" id="187" />
-<TGConnectingPoint num="3" id="188" />
-<TGConnectingPoint num="4" id="189" />
-<TGConnectingPoint num="5" id="190" />
-<TGConnectingPoint num="6" id="191" />
-<TGConnectingPoint num="7" id="192" />
+<TGConnectingPoint num="0" id="210" />
+<TGConnectingPoint num="1" id="211" />
+<TGConnectingPoint num="2" id="212" />
+<TGConnectingPoint num="3" id="213" />
+<TGConnectingPoint num="4" id="214" />
+<TGConnectingPoint num="5" id="215" />
+<TGConnectingPoint num="6" id="216" />
+<TGConnectingPoint num="7" id="217" />
 <extraparam>
 <info value="AVATAR Design::Block0" taskName="Block0" referenceTaskName="AVATAR Design" />
 </extraparam>
 </SUBCOMPONENT>
 
-<CONNECTOR type="5350" id="219" >
-<cdparam x="711" y="518" />
+<CONNECTOR type="5350" id="244" >
+<cdparam x="1154" y="486" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="{info}" />
-<P1  x="711" y="518" id="93" />
-<P2  x="648" y="359" id="141" />
+<P1  x="1150" y="384" id="95" />
+<P2  x="773" y="334" id="164" />
 <AutomaticDrawing  data="true" />
 <extraparam>
 <spy value="false" />
 </extraparam>
 </CONNECTOR>
-<CONNECTOR type="5350" id="220" >
-<cdparam x="1006" y="263" />
+<CONNECTOR type="5350" id="245" >
+<cdparam x="711" y="518" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="{info}" />
-<P1  x="942" y="125" id="120" />
-<P2  x="773" y="309" id="137" />
+<P1  x="711" y="518" id="118" />
+<P2  x="648" y="359" id="166" />
 <AutomaticDrawing  data="true" />
 <extraparam>
 <spy value="false" />
 </extraparam>
 </CONNECTOR>
-<CONNECTOR type="5350" id="221" >
+<CONNECTOR type="5350" id="247" >
 <cdparam x="418" y="436" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="{info}" />
-<P1  x="418" y="436" id="171" />
-<P2  x="523" y="359" id="140" />
+<P1  x="418" y="436" id="196" />
+<P2  x="523" y="359" id="165" />
 <AutomaticDrawing  data="true" />
 <extraparam>
 <spy value="false" />
 </extraparam>
 </CONNECTOR>
-<CONNECTOR type="5350" id="222" >
+<CONNECTOR type="5350" id="248" >
 <cdparam x="300" y="244" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="{info}" />
-<P1  x="300" y="244" id="209" />
-<P2  x="523" y="309" id="135" />
+<P1  x="300" y="244" id="234" />
+<P2  x="523" y="309" id="160" />
 <AutomaticDrawing  data="true" />
 <extraparam>
 <spy value="false" />
@@ -440,158 +501,158 @@
 
 <Modeling type="SystemC-AMS" nameTab="SystemC_AMS" >
 <SysCAMSComponentTaskDiagramPanel name="SystemC-AMS Component Diagram" minX="10" maxX="2500" minY="10" maxY="1500" TDF="true" DE="true" zoom="1.0" >
-<CONNECTOR type="1601" id="223" >
+<CONNECTOR type="1601" id="249" >
 <cdparam x="1232" y="401" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="" />
-<P1  x="1232" y="401" id="226" />
-<P2  x="907" y="292" id="274" />
+<P1  x="1232" y="401" id="252" />
+<P2  x="907" y="292" id="300" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="1601" id="224" >
+<CONNECTOR type="1601" id="250" >
 <cdparam x="733" y="410" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="sine_sink_sig" />
-<P1  x="811" y="410" id="284" />
-<P2  x="816" y="455" id="255" />
+<P1  x="811" y="410" id="310" />
+<P2  x="816" y="455" id="281" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="1601" id="225" >
+<CONNECTOR type="1601" id="251" >
 <cdparam x="860" y="449" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="" />
-<P1  x="907" y="333" id="294" />
-<P2  x="1232" y="447" id="236" />
+<P1  x="907" y="333" id="320" />
+<P2  x="1232" y="447" id="262" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<COMPONENT type="1608" id="254" >
+<COMPONENT type="1608" id="280" >
 <cdparam x="1245" y="364" />
 <sizeparam width="200" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="Primitive component - Block GPIO2VCI" value="Block_GPIO2VCI" />
-<TGConnectingPoint num="0" id="246" />
-<TGConnectingPoint num="1" id="247" />
-<TGConnectingPoint num="2" id="248" />
-<TGConnectingPoint num="3" id="249" />
-<TGConnectingPoint num="4" id="250" />
-<TGConnectingPoint num="5" id="251" />
-<TGConnectingPoint num="6" id="252" />
-<TGConnectingPoint num="7" id="253" />
+<TGConnectingPoint num="0" id="272" />
+<TGConnectingPoint num="1" id="273" />
+<TGConnectingPoint num="2" id="274" />
+<TGConnectingPoint num="3" id="275" />
+<TGConnectingPoint num="4" id="276" />
+<TGConnectingPoint num="5" id="277" />
+<TGConnectingPoint num="6" id="278" />
+<TGConnectingPoint num="7" id="279" />
 </COMPONENT>
-<SUBCOMPONENT type="1605" id="235" >
-<father id="254" num="0" />
+<SUBCOMPONENT type="1605" id="261" >
+<father id="280" num="0" />
 <cdparam x="1232" y="388" />
 <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="137" />
 <infoparam name="Primitive port - Port DE" value="out" />
-<TGConnectingPoint num="0" id="226" />
-<TGConnectingPoint num="1" id="227" />
-<TGConnectingPoint num="2" id="228" />
-<TGConnectingPoint num="3" id="229" />
-<TGConnectingPoint num="4" id="230" />
-<TGConnectingPoint num="5" id="231" />
-<TGConnectingPoint num="6" id="232" />
-<TGConnectingPoint num="7" id="233" />
-<TGConnectingPoint num="8" id="234" />
+<TGConnectingPoint num="0" id="252" />
+<TGConnectingPoint num="1" id="253" />
+<TGConnectingPoint num="2" id="254" />
+<TGConnectingPoint num="3" id="255" />
+<TGConnectingPoint num="4" id="256" />
+<TGConnectingPoint num="5" id="257" />
+<TGConnectingPoint num="6" id="258" />
+<TGConnectingPoint num="7" id="259" />
+<TGConnectingPoint num="8" id="260" />
 <extraparam>
 <Prop commName="out" commType="0" origin="1" type="int" sensitive="false" sensitive_method="positive" />
 </extraparam>
 </SUBCOMPONENT>
-<SUBCOMPONENT type="1605" id="245" >
-<father id="254" num="1" />
+<SUBCOMPONENT type="1605" id="271" >
+<father id="280" num="1" />
 <cdparam x="1232" y="434" />
 <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="137" />
 <infoparam name="Primitive port - Port DE" value="in" />
-<TGConnectingPoint num="0" id="236" />
-<TGConnectingPoint num="1" id="237" />
-<TGConnectingPoint num="2" id="238" />
-<TGConnectingPoint num="3" id="239" />
-<TGConnectingPoint num="4" id="240" />
-<TGConnectingPoint num="5" id="241" />
-<TGConnectingPoint num="6" id="242" />
-<TGConnectingPoint num="7" id="243" />
-<TGConnectingPoint num="8" id="244" />
+<TGConnectingPoint num="0" id="262" />
+<TGConnectingPoint num="1" id="263" />
+<TGConnectingPoint num="2" id="264" />
+<TGConnectingPoint num="3" id="265" />
+<TGConnectingPoint num="4" id="266" />
+<TGConnectingPoint num="5" id="267" />
+<TGConnectingPoint num="6" id="268" />
+<TGConnectingPoint num="7" id="269" />
+<TGConnectingPoint num="8" id="270" />
 <extraparam>
 <Prop commName="in" commType="0" origin="0" type="int" sensitive="false" sensitive_method="positive" />
 </extraparam>
 </SUBCOMPONENT>
 
-<COMPONENT type="1607" id="321" >
+<COMPONENT type="1607" id="347" >
 <cdparam x="303" y="181" />
 <sizeparam width="808" height="458" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="Composite component - Cluster" value="cluster" />
-<TGConnectingPoint num="0" id="313" />
-<TGConnectingPoint num="1" id="314" />
-<TGConnectingPoint num="2" id="315" />
-<TGConnectingPoint num="3" id="316" />
-<TGConnectingPoint num="4" id="317" />
-<TGConnectingPoint num="5" id="318" />
-<TGConnectingPoint num="6" id="319" />
-<TGConnectingPoint num="7" id="320" />
+<TGConnectingPoint num="0" id="339" />
+<TGConnectingPoint num="1" id="340" />
+<TGConnectingPoint num="2" id="341" />
+<TGConnectingPoint num="3" id="342" />
+<TGConnectingPoint num="4" id="343" />
+<TGConnectingPoint num="5" id="344" />
+<TGConnectingPoint num="6" id="345" />
+<TGConnectingPoint num="7" id="346" />
 </COMPONENT>
-<SUBCOMPONENT type="1602" id="273" >
-<father id="321" num="0" />
+<SUBCOMPONENT type="1602" id="299" >
+<father id="347" num="0" />
 <cdparam x="705" y="468" />
 <sizeparam width="200" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="0" maxX="608" minY="0" maxY="308" />
 <infoparam name="Primitive component - Block TDF" value="Sink" />
-<TGConnectingPoint num="0" id="265" />
-<TGConnectingPoint num="1" id="266" />
-<TGConnectingPoint num="2" id="267" />
-<TGConnectingPoint num="3" id="268" />
-<TGConnectingPoint num="4" id="269" />
-<TGConnectingPoint num="5" id="270" />
-<TGConnectingPoint num="6" id="271" />
-<TGConnectingPoint num="7" id="272" />
+<TGConnectingPoint num="0" id="291" />
+<TGConnectingPoint num="1" id="292" />
+<TGConnectingPoint num="2" id="293" />
+<TGConnectingPoint num="3" id="294" />
+<TGConnectingPoint num="4" id="295" />
+<TGConnectingPoint num="5" id="296" />
+<TGConnectingPoint num="6" id="297" />
+<TGConnectingPoint num="7" id="298" />
 <extraparam>
 <Attribute period="6.0" time="ns" processCode="void processing() {
 	in.read();
 }
-                  " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" />
+                      " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" />
 </extraparam>
 </SUBCOMPONENT>
-<SUBCOMPONENT type="1604" id="264" >
-<father id="273" num="0" />
+<SUBCOMPONENT type="1604" id="290" >
+<father id="299" num="0" />
 <cdparam x="803" y="455" />
 <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="137" />
 <infoparam name="Primitive port - Port TDF" value="in" />
-<TGConnectingPoint num="0" id="255" />
-<TGConnectingPoint num="1" id="256" />
-<TGConnectingPoint num="2" id="257" />
-<TGConnectingPoint num="3" id="258" />
-<TGConnectingPoint num="4" id="259" />
-<TGConnectingPoint num="5" id="260" />
-<TGConnectingPoint num="6" id="261" />
-<TGConnectingPoint num="7" id="262" />
-<TGConnectingPoint num="8" id="263" />
+<TGConnectingPoint num="0" id="281" />
+<TGConnectingPoint num="1" id="282" />
+<TGConnectingPoint num="2" id="283" />
+<TGConnectingPoint num="3" id="284" />
+<TGConnectingPoint num="4" id="285" />
+<TGConnectingPoint num="5" id="286" />
+<TGConnectingPoint num="6" id="287" />
+<TGConnectingPoint num="7" id="288" />
+<TGConnectingPoint num="8" id="289" />
 <extraparam>
 <Prop commName="in" commType="0" origin="0" period="-1.0" time="s" rate="-1" delay="-1" type="double" />
 </extraparam>
 </SUBCOMPONENT>
-<SUBCOMPONENT type="1602" id="312" >
-<father id="321" num="1" />
+<SUBCOMPONENT type="1602" id="338" >
+<father id="347" num="1" />
 <cdparam x="694" y="247" />
 <sizeparam width="200" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="0" maxX="608" minY="0" maxY="308" />
 <infoparam name="Primitive component - Block TDF" value="Sine" />
-<TGConnectingPoint num="0" id="304" />
-<TGConnectingPoint num="1" id="305" />
-<TGConnectingPoint num="2" id="306" />
-<TGConnectingPoint num="3" id="307" />
-<TGConnectingPoint num="4" id="308" />
-<TGConnectingPoint num="5" id="309" />
-<TGConnectingPoint num="6" id="310" />
-<TGConnectingPoint num="7" id="311" />
+<TGConnectingPoint num="0" id="330" />
+<TGConnectingPoint num="1" id="331" />
+<TGConnectingPoint num="2" id="332" />
+<TGConnectingPoint num="3" id="333" />
+<TGConnectingPoint num="4" id="334" />
+<TGConnectingPoint num="5" id="335" />
+<TGConnectingPoint num="6" id="336" />
+<TGConnectingPoint num="7" id="337" />
 <extraparam>
 <Attribute period="6.0" time="ns" processCode="void processing() {
 	double t = out_de.get_time().to_seconds();
@@ -599,71 +660,227 @@
 	out_de.write( (int) x);
 	tdf_out.write(x);
 }
-                     " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" />
+                         " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" />
 </extraparam>
 </SUBCOMPONENT>
-<SUBCOMPONENT type="1606" id="283" >
-<father id="312" num="0" />
+<SUBCOMPONENT type="1606" id="309" >
+<father id="338" num="0" />
 <cdparam x="881" y="279" />
 <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="137" />
 <infoparam name="Primitive port - Port Converter" value="in_de" />
-<TGConnectingPoint num="0" id="274" />
-<TGConnectingPoint num="1" id="275" />
-<TGConnectingPoint num="2" id="276" />
-<TGConnectingPoint num="3" id="277" />
-<TGConnectingPoint num="4" id="278" />
-<TGConnectingPoint num="5" id="279" />
-<TGConnectingPoint num="6" id="280" />
-<TGConnectingPoint num="7" id="281" />
-<TGConnectingPoint num="8" id="282" />
+<TGConnectingPoint num="0" id="300" />
+<TGConnectingPoint num="1" id="301" />
+<TGConnectingPoint num="2" id="302" />
+<TGConnectingPoint num="3" id="303" />
+<TGConnectingPoint num="4" id="304" />
+<TGConnectingPoint num="5" id="305" />
+<TGConnectingPoint num="6" id="306" />
+<TGConnectingPoint num="7" id="307" />
+<TGConnectingPoint num="8" id="308" />
 <extraparam>
 <Prop commName="in_de" commType="0" origin="0" period="-1.0" time="s" rate="-1" delay="-1" type="sc_uint&lt;32&gt;" />
 </extraparam>
 </SUBCOMPONENT>
-<SUBCOMPONENT type="1604" id="293" >
-<father id="312" num="1" />
+<SUBCOMPONENT type="1604" id="319" >
+<father id="338" num="1" />
 <cdparam x="798" y="384" />
 <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="137" />
 <infoparam name="Primitive port - Port TDF" value="tdf_out" />
-<TGConnectingPoint num="0" id="284" />
-<TGConnectingPoint num="1" id="285" />
-<TGConnectingPoint num="2" id="286" />
-<TGConnectingPoint num="3" id="287" />
-<TGConnectingPoint num="4" id="288" />
-<TGConnectingPoint num="5" id="289" />
-<TGConnectingPoint num="6" id="290" />
-<TGConnectingPoint num="7" id="291" />
-<TGConnectingPoint num="8" id="292" />
+<TGConnectingPoint num="0" id="310" />
+<TGConnectingPoint num="1" id="311" />
+<TGConnectingPoint num="2" id="312" />
+<TGConnectingPoint num="3" id="313" />
+<TGConnectingPoint num="4" id="314" />
+<TGConnectingPoint num="5" id="315" />
+<TGConnectingPoint num="6" id="316" />
+<TGConnectingPoint num="7" id="317" />
+<TGConnectingPoint num="8" id="318" />
 <extraparam>
 <Prop commName="tdf_out" commType="0" origin="1" period="-1.0" time="ns" rate="-1" delay="-1" type="double" />
 </extraparam>
 </SUBCOMPONENT>
-<SUBCOMPONENT type="1606" id="303" >
-<father id="312" num="2" />
+<SUBCOMPONENT type="1606" id="329" >
+<father id="338" num="2" />
 <cdparam x="881" y="320" />
 <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="137" />
 <infoparam name="Primitive port - Port Converter" value="out_de" />
-<TGConnectingPoint num="0" id="294" />
-<TGConnectingPoint num="1" id="295" />
-<TGConnectingPoint num="2" id="296" />
-<TGConnectingPoint num="3" id="297" />
-<TGConnectingPoint num="4" id="298" />
-<TGConnectingPoint num="5" id="299" />
-<TGConnectingPoint num="6" id="300" />
-<TGConnectingPoint num="7" id="301" />
-<TGConnectingPoint num="8" id="302" />
+<TGConnectingPoint num="0" id="320" />
+<TGConnectingPoint num="1" id="321" />
+<TGConnectingPoint num="2" id="322" />
+<TGConnectingPoint num="3" id="323" />
+<TGConnectingPoint num="4" id="324" />
+<TGConnectingPoint num="5" id="325" />
+<TGConnectingPoint num="6" id="326" />
+<TGConnectingPoint num="7" id="327" />
+<TGConnectingPoint num="8" id="328" />
 <extraparam>
 <Prop commName="out_de" commType="0" origin="1" period="6.0" time="ns" rate="-1" delay="-1" type="sc_uint&lt;32&gt;" />
 </extraparam>
 </SUBCOMPONENT>
 
 
+</SysCAMSComponentTaskDiagramPanel>
+
+<SysCAMSComponentTaskDiagramPanel name="SystemC-AMS Component Diagram" minX="10" maxX="2500" minY="10" maxY="1500" TDF="true" DE="true" zoom="1.0" >
+<CONNECTOR type="1601" id="348" >
+<cdparam x="1164" y="319" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="" />
+<P1  x="1164" y="319" id="360" />
+<P2  x="766" y="314" id="389" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR>
+<CONNECTOR type="1601" id="349" >
+<cdparam x="766" y="365" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="" />
+<P1  x="766" y="396" id="379" />
+<P2  x="1164" y="397" id="350" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR>
+<COMPONENT type="1608" id="378" >
+<cdparam x="1174" y="281" />
+<sizeparam width="200" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Primitive component - Block GPIO2VCI" value="blockGPIO2VCI" />
+<TGConnectingPoint num="0" id="370" />
+<TGConnectingPoint num="1" id="371" />
+<TGConnectingPoint num="2" id="372" />
+<TGConnectingPoint num="3" id="373" />
+<TGConnectingPoint num="4" id="374" />
+<TGConnectingPoint num="5" id="375" />
+<TGConnectingPoint num="6" id="376" />
+<TGConnectingPoint num="7" id="377" />
+</COMPONENT>
+<SUBCOMPONENT type="1605" id="359" >
+<father id="378" num="0" />
+<cdparam x="1164" y="387" />
+<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="-10" maxX="190" minY="-10" maxY="140" />
+<infoparam name="Primitive port - Port DE" value="in" />
+<TGConnectingPoint num="0" id="350" />
+<TGConnectingPoint num="1" id="351" />
+<TGConnectingPoint num="2" id="352" />
+<TGConnectingPoint num="3" id="353" />
+<TGConnectingPoint num="4" id="354" />
+<TGConnectingPoint num="5" id="355" />
+<TGConnectingPoint num="6" id="356" />
+<TGConnectingPoint num="7" id="357" />
+<TGConnectingPoint num="8" id="358" />
+<extraparam>
+<Prop commName="in" commType="0" origin="0" type="int" sensitive="false" sensitive_method="positive" />
+</extraparam>
+</SUBCOMPONENT>
+<SUBCOMPONENT type="1605" id="369" >
+<father id="378" num="1" />
+<cdparam x="1164" y="309" />
+<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="-10" maxX="190" minY="-10" maxY="140" />
+<infoparam name="Primitive port - Port DE" value="out" />
+<TGConnectingPoint num="0" id="360" />
+<TGConnectingPoint num="1" id="361" />
+<TGConnectingPoint num="2" id="362" />
+<TGConnectingPoint num="3" id="363" />
+<TGConnectingPoint num="4" id="364" />
+<TGConnectingPoint num="5" id="365" />
+<TGConnectingPoint num="6" id="366" />
+<TGConnectingPoint num="7" id="367" />
+<TGConnectingPoint num="8" id="368" />
+<extraparam>
+<Prop commName="out" commType="0" origin="1" type="int" sensitive="false" sensitive_method="positive" />
+</extraparam>
+</SUBCOMPONENT>
+
+<COMPONENT type="1607" id="416" >
+<cdparam x="241" y="124" />
+<sizeparam width="841" height="526" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Composite component - Cluster" value="cluster2" />
+<TGConnectingPoint num="0" id="408" />
+<TGConnectingPoint num="1" id="409" />
+<TGConnectingPoint num="2" id="410" />
+<TGConnectingPoint num="3" id="411" />
+<TGConnectingPoint num="4" id="412" />
+<TGConnectingPoint num="5" id="413" />
+<TGConnectingPoint num="6" id="414" />
+<TGConnectingPoint num="7" id="415" />
+</COMPONENT>
+<SUBCOMPONENT type="1602" id="407" >
+<father id="416" num="0" />
+<cdparam x="556" y="281" />
+<sizeparam width="200" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="0" maxX="641" minY="0" maxY="376" />
+<infoparam name="Primitive component - Block TDF" value="sine2" />
+<TGConnectingPoint num="0" id="399" />
+<TGConnectingPoint num="1" id="400" />
+<TGConnectingPoint num="2" id="401" />
+<TGConnectingPoint num="3" id="402" />
+<TGConnectingPoint num="4" id="403" />
+<TGConnectingPoint num="5" id="404" />
+<TGConnectingPoint num="6" id="405" />
+<TGConnectingPoint num="7" id="406" />
+<extraparam>
+<Attribute period="5.0" time="ns" processCode="void processing() {
+	double t = out.get_time().to_seconds();
+	double x = in.read() * sin(2.0 * M_PI * 5000000.0 * t);
+	out.write( (int) x);
+}
+  " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" />
+</extraparam>
+</SUBCOMPONENT>
+<SUBCOMPONENT type="1606" id="388" >
+<father id="407" num="0" />
+<cdparam x="746" y="386" />
+<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="-10" maxX="190" minY="-10" maxY="140" />
+<infoparam name="Primitive port - Port Converter" value="out" />
+<TGConnectingPoint num="0" id="379" />
+<TGConnectingPoint num="1" id="380" />
+<TGConnectingPoint num="2" id="381" />
+<TGConnectingPoint num="3" id="382" />
+<TGConnectingPoint num="4" id="383" />
+<TGConnectingPoint num="5" id="384" />
+<TGConnectingPoint num="6" id="385" />
+<TGConnectingPoint num="7" id="386" />
+<TGConnectingPoint num="8" id="387" />
+<extraparam>
+<Prop commName="out" commType="0" origin="1" period="-1.0" time="s" rate="-1" delay="-1" type="sc_uint&lt;32&gt;" />
+</extraparam>
+</SUBCOMPONENT>
+<SUBCOMPONENT type="1606" id="398" >
+<father id="407" num="1" />
+<cdparam x="746" y="304" />
+<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="-10" maxX="190" minY="-10" maxY="140" />
+<infoparam name="Primitive port - Port Converter" value="in" />
+<TGConnectingPoint num="0" id="389" />
+<TGConnectingPoint num="1" id="390" />
+<TGConnectingPoint num="2" id="391" />
+<TGConnectingPoint num="3" id="392" />
+<TGConnectingPoint num="4" id="393" />
+<TGConnectingPoint num="5" id="394" />
+<TGConnectingPoint num="6" id="395" />
+<TGConnectingPoint num="7" id="396" />
+<TGConnectingPoint num="8" id="397" />
+<extraparam>
+<Prop commName="in" commType="0" origin="0" period="-1.0" time="s" rate="-1" delay="-1" type="sc_uint&lt;32&gt;" />
+</extraparam>
+</SUBCOMPONENT>
+
+
 </SysCAMSComponentTaskDiagramPanel>
 
 </Modeling>
diff --git a/src/main/java/ddtranslatorSoclib/toSoclib/Gpio2VciAddress.java b/src/main/java/ddtranslatorSoclib/toSoclib/Gpio2VciAddress.java
new file mode 100644
index 0000000000..ce979a1dff
--- /dev/null
+++ b/src/main/java/ddtranslatorSoclib/toSoclib/Gpio2VciAddress.java
@@ -0,0 +1,93 @@
+/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
+ * 
+ * ludovic.apvrille AT enst.fr
+ * 
+ * This software is a computer program whose purpose is to allow the
+ * edition of TURTLE analysis, design and deployment diagrams, to
+ * allow the generation of RT-LOTOS or Java code from this diagram,
+ * and at last to allow the analysis of formal validation traces
+ * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
+ * from INRIA Rhone-Alpes.
+ * 
+ * This software is governed by the CeCILL  license under French law and
+ * abiding by the rules of distribution of free software.  You can  use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ * 
+ * As a counterpart to the access to the source code and  rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty  and the software's author,  the holder of the
+ * economic rights,  and the successive licensors  have only  limited
+ * liability.
+ * 
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading,  using,  modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean  that it is complicated to manipulate,  and  that  also
+ * therefore means  that it is reserved for developers  and  experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and,  more generally, to use and operate it in the
+ * same conditions as regards security.
+ * 
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ */
+
+/**
+ * Class AVATAR2CSOCLIB
+ * Creation: 28/08/2018
+ * @version 1.0 28/08/2018
+ * @author Rodrigo CORTES PORTO
+ */
+
+package ddtranslatorSoclib.toSoclib;
+
+import ddtranslatorSoclib.toTopCell.TopCellGenerator;
+import ddtranslatorSoclib.AvatarAmsCluster;
+
+public class Gpio2VciAddress {
+    private final static String INCLUDE_HEADER = "#include \"gpio2vci_address.h\"\n";
+
+    private final static String GET_ADDRESS_DEC = "int get_address(char name[]) {\n";
+
+    private final static String CR = "\n";
+    private final static String CR2 = "\n\n";
+
+    private String name;
+    private String code;
+
+    public Gpio2VciAddress(String _name) {
+        name = _name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public void buildAddressCode() {
+        code = INCLUDE_HEADER + CR + GET_ADDRESS_DEC;
+        for(AvatarAmsCluster amsCluster : TopCellGenerator.avatardd.getAllAmsCluster ()) {
+            if(amsCluster.getNo_amsCluster() == 0) {
+                code += "if(strcmp(name, \""+amsCluster.getAmsClusterName()+"\") == 0) {\n";
+                code += "return 0xc"+Integer.toHexString(amsCluster.getNo_amsCluster())+"200000;\n";
+                code += "} ";
+            } else {
+                code += "else if(strcmp(name, \""+amsCluster.getAmsClusterName()+"\") == 0) {\n";
+                code += "return 0xc"+Integer.toHexString(amsCluster.getNo_amsCluster())+"200000;\n";
+                code += "} ";
+            }
+        }
+        
+        code += "else {\n";
+        code += "printf(\"ERROR getting address for cluster: \\\"%s\\\"\\n\", name);\n";
+        code += "return -1;\n";
+        code += "}\n}";
+    }
+
+    public String getAddressCode() {
+        return code;
+    }
+}
diff --git a/src/main/java/ddtranslatorSoclib/toSoclib/TaskFileSoclib.java b/src/main/java/ddtranslatorSoclib/toSoclib/TaskFileSoclib.java
index 9a60f12f84..82c24d43f4 100755
--- a/src/main/java/ddtranslatorSoclib/toSoclib/TaskFileSoclib.java
+++ b/src/main/java/ddtranslatorSoclib/toSoclib/TaskFileSoclib.java
@@ -41,6 +41,7 @@
 
 
 package ddtranslatorSoclib.toSoclib;
+import ddtranslatorSoclib.toTopCell.TopCellGenerator;
 
 /**
  * Class AVATAR2CSOCLIB
@@ -54,7 +55,7 @@ public class TaskFileSoclib {
 //added  mwmr.h
 
     private final static String INCLUDE_HEADER = "#include <stdio.h>\n#include <unistd.h>\n#include <stdlib.h>\n";
-    private final static String LOCAL_INCLUDE_HEADER = "#include \"request.h\"\n#include \"syncchannel.h\"\n#include \"request_manager.h\"\n#include \"debug.h\"\n#include \"defs.h\"\n#include \"mytimelib.h\"\n#include \"random.h\"\n#include \"tracemanager.h\"\n#include \"main.h\"\n#include \"mwmr.h\"\n "; 
+    private final static String LOCAL_INCLUDE_HEADER = "#include \"request.h\"\n#include \"syncchannel.h\"\n#include \"request_manager.h\"\n#include \"debug.h\"\n#include \"defs.h\"\n#include \"mytimelib.h\"\n#include \"random.h\"\n#include \"tracemanager.h\"\n#include \"main.h\"\n#include \"mwmr.h\"\n"; 
 	
     private final static String CR = "\n";
 	
@@ -82,8 +83,12 @@ public class TaskFileSoclib {
 	
     public String getFullHeaderCode() {
 	String s = "#ifndef " + name + "_H\n#define " + name + "_H\n";
-	s += INCLUDE_HEADER + CR + LOCAL_INCLUDE_HEADER + CR + CR;
-	s += headerCode;
+	s += INCLUDE_HEADER + CR + LOCAL_INCLUDE_HEADER; 
+    if(TopCellGenerator.avatardd.getNbAmsCluster() > 0) {
+        s += "#include \"gpio2vci_iface.h\"\n";
+    }
+    
+	s += CR + headerCode;
 	s += "#endif\n";
 	return s;
 	}
@@ -99,4 +104,4 @@ public class TaskFileSoclib {
 	public void addToMainCode(String _code) {
 	    mainCode += _code;
 	}	
-}
\ 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 d1a5a5c5ee..fd2a19904d 100755
--- a/src/main/java/ddtranslatorSoclib/toSoclib/TasksAndMainGenerator.java
+++ b/src/main/java/ddtranslatorSoclib/toSoclib/TasksAndMainGenerator.java
@@ -96,6 +96,7 @@ public class TasksAndMainGenerator {
 
     private MainFileSoclib mainFile;
     private Vector<TaskFileSoclib> taskFiles;
+    private Gpio2VciAddress gpio2vciAddressFile;
     private String makefile_src;
     private String makefile_SocLib;
 
@@ -147,6 +148,9 @@ public class TasksAndMainGenerator {
         // Makefile for SocLib
         makeMakefileSocLib();
         FileUtils.saveFile(path + "Makefile.soclib", makefile_SocLib);
+        
+        TraceManager.addDev("Generating gpio2vci_address file in "+path+"mutekh/libsyscams/" + gpio2vciAddressFile.getName());
+        FileUtils.saveFile(path + "mutekh"+File.separator+"libsyscams"+File.separator + gpio2vciAddressFile.getName(), Conversion.indentString(gpio2vciAddressFile.getAddressCode(), 4));
     }
 
     public Vector<?> getWarnings() {
@@ -158,6 +162,8 @@ public class TasksAndMainGenerator {
         tracing = _tracing;
 
         mainFile = new  MainFileSoclib("main");
+        gpio2vciAddressFile = new Gpio2VciAddress("gpio2vci_address.c");
+        gpio2vciAddressFile.buildAddressCode();
 
         avspec.removeCompositeStates();
 	avspec.removeLibraryFunctionCalls();
diff --git a/src/main/java/ui/window/JDialogSysCAMSExecutableCodeGeneration.java b/src/main/java/ui/window/JDialogSysCAMSExecutableCodeGeneration.java
index 0fb26f9ebd..d2fbffb63c 100644
--- a/src/main/java/ui/window/JDialogSysCAMSExecutableCodeGeneration.java
+++ b/src/main/java/ui/window/JDialogSysCAMSExecutableCodeGeneration.java
@@ -622,8 +622,8 @@ public class JDialogSysCAMSExecutableCodeGeneration extends javax.swing.JFrame i
                                         }
                                     }
                                 }
-                                jta.append("Validation for \""+(syscalsspec.getCluster()).getClusterName()+"\" completed.\n");
                             }
+                            jta.append("Validation for \""+(syscalsspec.getCluster()).getClusterName()+"\" completed.\n");
                         } catch (InterruptedException ie) {
                             System.err.println("Interrupted");
                             jta.append("Interrupted\n");
-- 
GitLab