diff --git a/SysCAMSGenerationCode/README b/SysCAMSGenerationCode/README
new file mode 100644
index 0000000000000000000000000000000000000000..831e5020d5586d752fdf4a53581e1d95b1b13eb5
--- /dev/null
+++ b/SysCAMSGenerationCode/README
@@ -0,0 +1,9 @@
+The files can be compiled by using the generated Makefile
+in standalone mode, without SoCLib cross-compilation, if no GPIO2VCI
+component or code running on the SoCLib digital platform is required
+
+A SystemC-AMS proof-of-concept(2.1) is provided in
+https://www.coseda-tech.com/systemc-ams-proof-of-concept
+
+In the Virtual Machine, the authors kindly accepted that we
+provide the PoC 
diff --git a/doc/README_syscams b/doc/README_syscams
new file mode 100644
index 0000000000000000000000000000000000000000..8a38f453b3ac83df97dc4186cc8bfaa87c93c9d8
--- /dev/null
+++ b/doc/README_syscams
@@ -0,0 +1,6 @@
+TTool, an open-source UML toolkit for modeling embedded systems and procotols.
+TTool is developed at Telecom ParisTech, http://ttool.telecom-paristech.fr/
+-------------------------------------------------------------------------------
+
+The SysCAMSGenerationCode and ELNGenerationCode directories are intended to store the SystemC-AMS (TDF and DE) and  SystemC-AMS (ELN) files generated from TTool. The former can be uses in standalone mode with SystemC-AMS 2.1 available from
+COSEDA https://www.coseda-tech.com/systemc-ams-proof-of-concept
\ No newline at end of file
diff --git a/doc/documents_systemc-ams/TTool_AMS_Doc.pdf b/doc/documents_systemc-ams/TTool_AMS_Doc.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..eb4c2e70d51cf76a32c7c0068f26217e2f2db65c
Binary files /dev/null and b/doc/documents_systemc-ams/TTool_AMS_Doc.pdf differ
diff --git a/doc/documents_systemc-ams/fdl_tutorial.pdf b/doc/documents_systemc-ams/fdl_tutorial.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0c8a922a6f849c2608074293a5b1a3377dcfdaa7
Binary files /dev/null and b/doc/documents_systemc-ams/fdl_tutorial.pdf differ
diff --git a/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java b/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java
index bd45f77961f7c35e5be72b279f3e26cc13624638..7e08b1d363bc48a332cf798960a289c8a26242de 100644
--- a/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java
+++ b/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java
@@ -40,9 +40,6 @@
 
 /* this class produces the lines containing essentially the initial #includes; we include all potential components event if they are not used in the deployment diagram*/
 
-/* authors: v1.0 Raja GATGOUT 2014
-            v2.0 Daniela GENIUS, Julien HENON 2015 */
-
 package syscamstranslator.toSysCAMS;
 
 import java.util.LinkedList;
@@ -54,7 +51,9 @@ import syscamstranslator.*;
  * Principal code of a cluster component
  * Creation: 14/05/2018
  * @version 1.0 14/05/2018
- * @author Irina Kit Yan LEE
+ * @author Irina Kit Yan LEE,
+ * @version 1.1 30/09/2019
+ * @modified Daniela GENIUS
  */
 
 public class ClusterCode {
@@ -75,10 +74,9 @@ public class ClusterCode {
 	    LinkedList<SysCAMSTBlockDE> de = cluster.getBlockDE();
 	    LinkedList<SysCAMSTClock> clock = cluster.getClock();
 
-	    //DG 19.09.
+	  
 	    //corpsCluster = "template <typename vci_param>" + CR +
-		//     "class " +cluster.getClusterName()+ " : public sc_core::sc_module { "+ CR;
-           //fin DG 19.09.
+		//     "class " +cluster.getClusterName()+ " : public sc_core::sc_module { "+ CR;          
 	    
 	    corpsCluster = "// Simulation entry point." + CR + "int sc_main(int argc, char *argv[]) {" + CR2 
 		+ "\tusing namespace sc_core;" + CR + "\tusing namespace sca_util;" + CR2;
@@ -88,59 +86,51 @@ public class ClusterCode {
 	    for (SysCAMSTConnector c : connectors) {
 		if ((c.get_p1().getComponent() instanceof SysCAMSTPortTDF && c.get_p2().getComponent() instanceof SysCAMSTPortTDF) 
 		    || (c.get_p1().getComponent() instanceof SysCAMSTPortTDF && c.get_p2().getComponent() instanceof SysCAMSTPortTDF)) {
-		    if (c.getName().equals("")) {//corpsCluster +="6"+CR;
+		    if (c.getName().equals("")) {
 			corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortTDF) c.get_p1().getComponent()).getTDFType() + " > " 
 			    + "sig_" + nb_con + ";" + CR;
 			names.add("sig_" + nb_con);
 			nb_con++;
-		    } else {//corpsCluster +="5"+CR;
+		    } else {
 			corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortTDF) c.get_p1().getComponent()).getTDFType() + "> " 
 			    + c.getName() + ";" + CR;
 			names.add(c.getName());
 		    }
 		} else if ((c.get_p1().getComponent() instanceof SysCAMSTPortConverter && c.get_p2().getComponent() instanceof SysCAMSTPortDE)) {
-		if (c.getName().equals("")) {// corpsCluster +="4"+CR;
-		    //		corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> "  + "sig_" + nb_con + ";" + CR;//DG 19.09 sca-> sc
-		   
-		    		corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> "  + "sig_" + nb_con + ";" + CR;//DG 19.09 sca-> sc
+		if (c.getName().equals("")) {		   
+		    		corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> "  + "sig_" + nb_con + ";" + CR;
 			names.add("sig_" + nb_con);
 			nb_con++;
 		} else{
 		   if(((SysCAMSTPortConverter) c.get_p1().getComponent()).getNbits()==0)
-		       { //corpsCluster +="3"+CR;
-					//	corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> " + c.getName() + ";" + CR;//DG 19.09 sca-> sc
-			       corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> " + c.getName() + ";" + CR;//DG 19.09 sca-> sc	
+		       { 
+			       corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> " + c.getName() + ";" + CR;	
 				names.add(c.getName());
 				    }
 
-					else{//sc_uint
-					    //  corpsCluster +="@@@2"+CR;
+					else{
 			    corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType()+ "<"+ ((SysCAMSTPortConverter) c.get_p1().getComponent()).getNbits()+"> " + "> " 
 				+ c.getName() + ";" + CR;
 			    names.add(c.getName());
 			    }
-
-
 		    
 			        }			
 		    } else if ((c.get_p2().getComponent() instanceof SysCAMSTPortConverter && c.get_p1().getComponent() instanceof SysCAMSTPortDE)) {
-		    if (c.getName().equals("")) { corpsCluster +="@@@0"+CR;
-			//	corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p2().getComponent()).getConvType() + " > " 			    + "sig_" + nb_con + ";" + CR;
+		    if (c.getName().equals("")) { 
 
-		 corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p2().getComponent()).getConvType() + "> " + "sig_" + nb_con + ";" + CR;//DG 30.09 sca-> sc	
+		 corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p2().getComponent()).getConvType() + "> " + "sig_" + nb_con + ";" + CR;
 
 			names.add("sig_" + nb_con);
 			nb_con++;
 		    } else {
 				if( ((SysCAMSTPortConverter) c.get_p2().getComponent()).getNbits()==0 )
-				    { //corpsCluster +="@@@1"+CR;
+				    { 
 				corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p2().getComponent()).getConvType() + "> " 
 				    + c.getName() + ";" + CR;
 				names.add(c.getName());
 			    }
 
-		    	else{//sc_uint
-			    //corpsCluster +="@@@4"+CR;
+		    	else{			   
 			    corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p2().getComponent()).getConvType()+ "<"+((SysCAMSTPortConverter) c.get_p2().getComponent()).getNbits() + "> > " 
 				+ c.getName() + ";" + CR;
 			    names.add(c.getName());
@@ -179,115 +169,12 @@ public class ClusterCode {
 			       
 		    corpsCluster = corpsCluster + "\t  sc_clock " + t.getName() + " (\"" + t.getName() + "\"," + t.getFrequency()+","+ t.getUnit()+","+ t.getDutyCycle()+","+ t.getStartTime()+","+ t.getUnitStartTime()+","+ t.getPosFirst()+");" + CR;
 		}
-					
-		/* DG 19.09.
-		    corpsCluster = corpsCluster + CR + "\t// Instantiate headers files as well as bind their ports to the signal." + CR;
-			
-			
-		for (SysCAMSTBlockTDF t : tdf) {
-		    corpsCluster = corpsCluster + "\t" + t.getName() + " " + t.getName() + "_" + nb_block + "(\"" + t.getName() + "_" + nb_block + "\");" + CR;
-
-		    LinkedList<SysCAMSTPortTDF> portTDF = t.getPortTDF();
-		    LinkedList<SysCAMSTPortConverter> portConv = t.getPortConverter();
-
-		    for (SysCAMSTPortTDF p : portTDF) {
-			for (int i = 0; i < connectors.size(); i++) {
-			    if (connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortTDF && connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortTDF) {
-				if (((SysCAMSTPortTDF) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortTDF) connectors.get(i).get_p1().getComponent()).getBlockTDF().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				} else if (((SysCAMSTPortTDF) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortTDF) connectors.get(i).get_p2().getComponent()).getBlockTDF().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				}
-			    } 
-			}
-		    }
-
-		    for (SysCAMSTPortConverter p : portConv) {
-			for (int i = 0; i < connectors.size(); i++) {
-			    if (connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortConverter && connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortDE) {
-				if (((SysCAMSTPortConverter) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortConverter) connectors.get(i).get_p1().getComponent()).getBlockTDF().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				} else if (((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getBlockDE().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				}
-			    } else if (connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortConverter && connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortDE) {
-				if (((SysCAMSTPortConverter) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortConverter) connectors.get(i).get_p2().getComponent()).getBlockTDF().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				} else if (((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getBlockDE().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				}
-			    }
-			}
-		    }
-		    corpsCluster = corpsCluster + CR;
-		    nb_block++;
-		}
-
-		for (SysCAMSTBlockDE t : de) {
-		    corpsCluster = corpsCluster + "\t" + t.getName() + " " + t.getName() + "_" + nb_block + "(\"" + t.getName() + "_" + nb_block + "\");" + CR;
-
-		    LinkedList<SysCAMSTPortDE> portDE = t.getPortDE();
-
-		    for (SysCAMSTPortDE p : portDE) {
-			for (int i = 0; i < connectors.size(); i++) {
-			    if (connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortDE && connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortDE) {
-				if (((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getBlockDE().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				} else if (((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getBlockDE().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				}
-			    } else if (connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortConverter && connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortDE) {
-				if (((SysCAMSTPortConverter) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortConverter) connectors.get(i).get_p1().getComponent()).getBlockTDF().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				} else if (((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getBlockDE().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				}
-			    } else if (connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortConverter && connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortDE) {
-				if (((SysCAMSTPortConverter) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortConverter) connectors.get(i).get_p2().getComponent()).getBlockTDF().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				} else if (((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getBlockDE().getName().equals(t.getName())) {
-				    corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR;
-				}
-			    }
-			}
-		    }
-		    corpsCluster = corpsCluster + CR;
-		    nb_block++;
-		}			
-
-		*/
-		
-//fin DG 19.09.
-		
-//DG 19.09. replaced by new code from Rodrigo's version
-		nb_block=0;//DG 19.09. corrected reset to 0
-				corpsCluster = corpsCluster + CR + "\t// Instantiate cluster's modules." + CR;
-		// DG 19.09. enleve		
-				/*    for (SysCAMSTBlockTDF t : tdf) {
-                corpsCluster = corpsCluster + "\t" + t.getName();
-                if (!t.getListTypedef().isEmpty()) {
-                    corpsCluster += "<"+t.getValueTemplate()+">";
-                }
-                corpsCluster += " " + t.getName() + "_" + nb_block + ";" + CR;
-                nb_block++;
-            }
-            
-            for (SysCAMSTBlockDE t : de) {
-                corpsCluster = corpsCluster + "\t" + t.getName();
-                if (!t.getListTypedef().isEmpty()) {
-                    corpsCluster += "<"+t.getValueTemplate()+">";
-                }
-                corpsCluster += " " + t.getName() + "_" + nb_block + ";" + CR;
-                nb_block++;
-		}*/
-            // DG 19.09. enleve
-            //corpsCluster = corpsCluster + "public:" + CR;
-        
-	    //   corpsCluster = corpsCluster + "\tsc_in< typename vci_param::data_t > in_ams;" + CR;
-            //corpsCluster = corpsCluster + "\tsc_out< typename vci_param::data_t > out_ams;" + CR2;
+					      		
+		nb_block=0;
+				corpsCluster = corpsCluster + CR + "\t// Instantiate cluster's modules." + CR;	
             
             nb_block = 0;
-            //corpsCluster = corpsCluster + "\tSC_CTOR(" +cluster.getClusterName()+ ") :" + CR;
+           
             for (SysCAMSTBlockTDF t : tdf) {
                 corpsCluster = corpsCluster + "\t" + t.getName()+ " " + t.getName() + "_" + nb_block + "(\"" + t.getName() + "_" + nb_block + "\");" + CR;
                 nb_block++;
@@ -296,10 +183,7 @@ public class ClusterCode {
                 corpsCluster = corpsCluster + "\t" + t.getName()+ " " + t.getName() + "_" + nb_block + "(\"" + t.getName() + "_" + nb_block + "\");" + CR;
                 nb_block++;
             }
-	    //DG 19.09. enleve
-	    // corpsCluster = corpsCluster + "\tin_ams(\"in_ams\")," + CR;
-            //corpsCluster = corpsCluster + "\tout_ams(\"out_ams\") {" + CR;
-            
+	    
             nb_block = 0;
 			for (SysCAMSTBlockTDF t : tdf) {
 				//corpsCluster = corpsCluster + "\t" + t.getName() + " " + t.getName() + "_" + nb_block + "(\"" + t.getName() + "_" + nb_block + "\");" + CR;