diff --git a/src/ddtranslatorSoclib/toTopCell/Declaration.java b/src/ddtranslatorSoclib/toTopCell/Declaration.java
index 1534b23b8e37e2170aa7efccf2bf379b5401fca5..3b0e05ce84b0923f225f79512f357b3b70130b89 100755
--- a/src/ddtranslatorSoclib/toTopCell/Declaration.java
+++ b/src/ddtranslatorSoclib/toTopCell/Declaration.java
@@ -64,7 +64,7 @@ public class Declaration {
 		//Is the platform clustered?
 	
 		int nb_clusters = TopCellGenerator.avatardd.getAllCrossbar().size();	
-		nb_clusters=2;
+		//nb_clusters=2;
 
 		boolean trace_caba=true; 
 
@@ -267,19 +267,42 @@ if(nb_clusters==0){
           System.out.println("initiators: "+TopCellGenerator.avatardd.getNb_init());	
           System.out.println("targets: "+TopCellGenerator.avatardd.getNb_target());
       
-	  declaration += "soclib::caba::VciVgmn<vci_param> "+ vgmn.getVgmnName() +" (\"" + vgmn.getVgmnName() + "\"" + " , maptab, "+ 1 +"," + 6 +
-	     "," + vgmn.getMinLatency() + "," + vgmn.getFifoDepth() + ");" + CR2;
+	  //  declaration += "soclib::caba::VciVgmn<vci_param> "+ vgmn.getVgmnName() +" (\"" + vgmn.getVgmnName() + "\"" + " , maptab, "+ 1 +"," + 6 +
+	  //	     "," + vgmn.getMinLatency() + "," + vgmn.getFifoDepth() + ");" + CR2;
+
+	  //DG 10.08. only one central interconnect
+  declaration += "soclib::caba::VciVgmn<vci_param> vgmn (\"" + vgmn.getVgmnName() + "\"" + " , maptab, "+ 1 +"," + 6 +
+	  	     "," + vgmn.getMinLatency() + "," + vgmn.getFifoDepth() + ");" + CR2;
+
 	  int i=0;
-	  if(trace_caba){
-	      for(i=0;i<TopCellGenerator.avatardd.getNb_init();i++){
-		  declaration += "soclib::caba::VciLogger<vci_param> logger(\"logger" + i+"\",maptab);" + CR2;
-	      }
-	      int j=i;
-	      for(i=0;i<TopCellGenerator.avatardd.getAllRAM().size()+3;i++){
-		  declaration += "soclib::caba::VciLogger<vci_param> logger(\"logger" + j+"\",maptab);" + CR2;
-	      }
-    }
+	
+
+ //monitoring either by logger(1) ou stats (2) 
+	  for (AvatarRAM ram : TopCellGenerator.avatardd.getAllRAM()) { 
+
+	      if (ram.getMonitored()==1){
+		  int number = ram.getNo_target();
+		  declaration += "soclib::caba::VciLogger<vci_param> logger"+i+"(\"logger" + i+"\",maptab);" + CR2;
+		  i++;	      
+	      }	
+	      else{
+		  if (ram.getMonitored()==2){
+		      int number = ram.getNo_target();
+             
+		      String strArray="";
 
+		      for(AvatarChannel channel: ram.getChannels()){ 
+		   
+			  String chname = generateName(channel);
+		     
+			  strArray=strArray+"\""+chname+"\",";
+		      }   
+		
+		      declaration += "soclib::caba::VciMwmrStats<vci_param> mwmr_stats"+i+"(\"mwmr_stats" + i+"\",maptab, data_ldr, \"mwmr"+i+".log\",stringArray("+strArray+"NULL));" + CR2;
+		      i++;	      
+		  }	
+	     }
+	  }	 
 
 	  // if VGMN was not last in input file, update here 
           vgmn.setNbOfAttachedInitiators(1); 
diff --git a/src/ddtranslatorSoclib/toTopCell/Header.java b/src/ddtranslatorSoclib/toTopCell/Header.java
index abb5605c0b30fd041301ffcb41d535ee1bcfa4c5..58e40b81914c2f2d65fbd1cbd8da64f7870566aa 100755
--- a/src/ddtranslatorSoclib/toTopCell/Header.java
+++ b/src/ddtranslatorSoclib/toTopCell/Header.java
@@ -46,8 +46,9 @@ int nb_clusters=5;
 				+ "#include \"vci_simhelper.h\"" + CR + "#include \"vci_fd_access.h\"" + CR
 + "#include \"vci_ethernet.h\"" + CR
 				+ "#include \"vci_rttimer.h\"" + CR
-	+ "#include \"vci_logger.h\"" + CR
-	+ "#include \"vci_mwmr_stats.h\"" + CR2;
+	+ "#include \"vci_logger.h\"" + CR	
++ "#include \"vci_logger.h\"" + CR
+	+ "#include \"vci_local_crossbar.h\"" + CR2;
 	
 	header = header +"namespace {" + CR
 +"std::vector<std::string> stringArray(" + CR
diff --git a/src/ddtranslatorSoclib/toTopCell/Loader.java b/src/ddtranslatorSoclib/toTopCell/Loader.java
index e68e7547cdc56e87cd0d0cf1b792c073f3611c83..64f151d717259666279bdcdb6d76cb54b4246ab6 100755
--- a/src/ddtranslatorSoclib/toTopCell/Loader.java
+++ b/src/ddtranslatorSoclib/toTopCell/Loader.java
@@ -20,7 +20,7 @@ public class Loader {
 	public static String  getLoader() {
 
 	    int nb_clusters=TopCellGenerator.avatardd.getAllCrossbar().size();		
-	    nb_clusters=2;
+	    //nb_clusters=2;
 
 		loader = CR2 + "//-------------------------Call Loader---------------------------------" + CR2 ;
 		loader = loader + "std::cerr << \"caba-vgmn-mutekh_kernel_tutorial SoCLib simulator for MutekH\" << std::endl;"
diff --git a/src/ddtranslatorSoclib/toTopCell/MappingTable.java b/src/ddtranslatorSoclib/toTopCell/MappingTable.java
index c7a2f1dae7dc85a96999a448f0d8c8d8e36a78c7..e6bd997968955c9190666532235b188762eec0cf 100755
--- a/src/ddtranslatorSoclib/toTopCell/MappingTable.java
+++ b/src/ddtranslatorSoclib/toTopCell/MappingTable.java
@@ -19,7 +19,7 @@ public class MappingTable {
     public static String getMappingTable() {
     int l=0;
 	    int nb_clusters=TopCellGenerator.avatardd.getAllCrossbar().size();
-	    nb_clusters=2;
+	    //nb_clusters=2;
 	    if(nb_clusters == 0){
 
       mapping = CR2 + "//-----------------------mapping table------------------------" + CR2;
diff --git a/src/ddtranslatorSoclib/toTopCell/NetList.java b/src/ddtranslatorSoclib/toTopCell/NetList.java
index 3af9505d9bf3198aa7eac55deaf839cc484dbb3d..bdf728b9271682e92a129087408dc5eef04ecc88 100755
--- a/src/ddtranslatorSoclib/toTopCell/NetList.java
+++ b/src/ddtranslatorSoclib/toTopCell/NetList.java
@@ -14,7 +14,7 @@ public class NetList {
 
     public static String getNetlist(String icn, boolean _tracing) {
 	int nb_clusters=TopCellGenerator.avatardd.getAllCrossbar().size();
-	nb_clusters=2;
+	//nb_clusters=2;
 	boolean trace_caba=true; //tracing is enabled in cycle accurate mode
 	tracing = _tracing;
 		String netlist;
@@ -142,9 +142,9 @@ public class NetList {
 			netlist = netlist + "vgsb.p_to_target["+(ram.getNo_target())+"](signal_vci_vciram"+ram.getNo_ram()+");" + CR2;
 		    }		   
 		}
-		    netlist = netlist + "vci_locks.p_clk(" + NAME_CLK + ");" + CR;
-		    netlist = netlist + "vci_locks.p_resetn(" + NAME_RST + ");" + CR;
-		    netlist = netlist + "vci_locks.p_vci(signal_vci_vcilocks);" + CR2;
+		//	    netlist = netlist + "vci_locks.p_clk(" + NAME_CLK + ");" + CR;
+		//	    netlist = netlist + "vci_locks.p_resetn(" + NAME_RST + ");" + CR;
+		//    netlist = netlist + "vci_locks.p_vci(signal_vci_vcilocks);" + CR2;
 		    //MWMR RAM
 		    netlist = netlist +"mwmr_ram.p_clk(" + NAME_CLK + ");" + CR;
 		    netlist = netlist +"mwmr_ram.p_resetn(" + NAME_RST + ");" + CR;
@@ -167,16 +167,18 @@ netlist = netlist + "// RAM netlist" + CR2;
 		    netlist = netlist + ram.getMemoryName()+".p_resetn(" + NAME_RST + ");" + CR;
 		    netlist = netlist + ram.getMemoryName()+".p_vci(signal_vci_vciram"+ram.getNo_ram()+");" + CR2;
 		    //target number for local cluster: this is set at avatardd creation		    
-		    netlist = netlist + "local_crossbar.p_to_target["+ram.getNo_target()+"](signal_vci_vciram"+ram.getNo_ram()+");" + CR2;		  	   
+
+		    //DG 10.08. haben wir getno_cluster?i ist inkorrekt
+		    netlist = netlist + "crossbar"+ram.getNo_cluster()+".p_to_target["+ram.getNo_target()+"](signal_vci_vciram"+ram.getNo_ram()+");" + CR2;		  	   
 		}
 
 		//one locks engine per cluster is added transparently
-	for(i=0;i<nb_clusters;i++){
+		/*	for(i=0;i<nb_clusters;i++){
 		    netlist = netlist + "vci_locks"+i+".p_clk(" + NAME_CLK + ");" + CR;
 		    netlist = netlist + "vci_locks"+i+".p_resetn(" + NAME_RST + ");" + CR;
 		    netlist = netlist + "vci_locks"+i+".p_vci(signal_vci_vcilocks);" + CR2;
 		    netlist = netlist + "vci_locks"+i+".p_to_target["+i+"](signal_vci_locks"+i+");" + CR2;
-	}
+		    }*/
 
 	//one mwmr ram and one mwmrdram are added transparently
 
@@ -190,9 +192,9 @@ netlist = netlist + "// RAM netlist" + CR2;
 	 */
 
 	for(i=0;i<nb_clusters;i++){
-			netlist = netlist + "local_crossbar"+i+".p_to_target["+1+"](signal_vci_mwmr_ram"+i+");" + CR2;
+			netlist = netlist + "crossbar"+i+".p_to_target["+1+"](signal_vci_mwmr_ram"+i+");" + CR2;
 			//netlist = netlist +"mwmr_ram"+i+".p_irq[0](signal_xicu_irq[0]);" + CR2;		  
-    	netlist = netlist + "local_crossbar"+i+".p_to_target["+2+"](signal_vci_mwmrd_ram"+i+");" + CR2;
+    	netlist = netlist + "crossbar"+i+".p_to_target["+2+"](signal_vci_mwmrd_ram"+i+");" + CR2;
 			//netlist = netlist +"mwmr_ram"+i+".p_irq[0](signal_xicu_irq[0]);" + CR2;		  
 			}	 
 		}
@@ -208,7 +210,7 @@ netlist = netlist + "// RAM netlist" + CR2;
 		    netlist = netlist + "vgsb.p_to_target["+(TopCellGenerator.avatardd.getNb_target())+"](signal_vci_vcifdaccesst);" + CR; 
 		    netlist = netlist + "vgsb.p_to_target["+(TopCellGenerator.avatardd.getNb_target()+1)+"](signal_vci_ethernett);" + CR;	
 		    netlist = netlist + "vgsb.p_to_target["+(TopCellGenerator.avatardd.getNb_target()+2)+"](signal_vci_bdt);" + CR;	
-                    netlist = netlist + "vgsb.p_to_target["+(TopCellGenerator.avatardd.getNb_target()+3)+"](signal_vci_vcilocks);" + CR;	
+		    // netlist = netlist + "vgsb.p_to_target["+(TopCellGenerator.avatardd.getNb_target()+3)+"](signal_vci_vcilocks);" + CR;	
 		   }
 		    }else{
 //clustered case directly connected to VGSB/to VGMN
@@ -257,7 +259,7 @@ netlist = netlist + "vcifdtrom.begin_device_node(\"vci_multi_tty"+i+"\",\"soclib
 	
 		    else{ 		   
 			for(i=0;i<nb_clusters;i++){
-			netlist = netlist + "local_crossbar"+i+".p_to_target["+tty.getNo_target()+"](signal_vci_tty"+i+");" + CR2;
+			netlist = netlist + "crossbar"+i+".p_to_target["+tty.getNo_target()+"](signal_vci_tty"+i+");" + CR2;
 			//DG 4.4. recalculate irq addresses! Hypothesis 5 devices per cluster
 			netlist = netlist + tty.getTTYName()+".p_irq[0](signal_xicu_irq["+(tty.getNo_cluster()*5)+"]);" + CR2;		      
 			}	 
@@ -372,7 +374,7 @@ netlist = netlist + "vcifdtrom.begin_device_node(\"vci_multi_tty"+i+"\",\"soclib
 	    netlist += "sc_trace(tf, signal_vci_vcirom ,\"signal_vci_vcirom\");" + CR;
 	    netlist += "sc_trace(tf, signal_vci_vcisimhelper,\"signal_vci_vcisimhelper\");" + CR;
 	    netlist += "sc_trace(tf, signal_vci_vcirttimer ,\"signal_vci_vcirttimer\");" + CR;
-	    netlist += "sc_trace(tf, signal_vci_vcilocks ,\"signal_vci_vcilocks\");" + CR;
+	    //netlist += "sc_trace(tf, signal_vci_vcilocks ,\"signal_vci_vcilocks\");" + CR;
 	    netlist += "sc_trace(tf, signal_vci_mwmr_ram ,\"signal_vci_mwmr_ram\");" + CR;
 	    netlist += "sc_trace(tf, signal_vci_mwmrd_ram ,\"signal_vci_mwmrd_ram\");" + CR;
 	    netlist += "sc_trace(tf, signal_vci_vcifdaccessi,\"signal_vci_vcifdaccessi\");" + CR;
diff --git a/src/ddtranslatorSoclib/toTopCell/Signal.java b/src/ddtranslatorSoclib/toTopCell/Signal.java
index 5b1d640163e410357d40045a95a72c663c9c60b0..efdf4f04ba733a6e9182fd491f48601ca40969f1 100755
--- a/src/ddtranslatorSoclib/toTopCell/Signal.java
+++ b/src/ddtranslatorSoclib/toTopCell/Signal.java
@@ -16,7 +16,7 @@ public class Signal {
 
 	public static String getSignal() {
 	    int nb_clusters=TopCellGenerator.avatardd.getAllCrossbar().size();	
-	    nb_clusters=2;
+	    //nb_clusters=2;
 		String signal = CR2 + "//-------------------------------signaux------------------------------------" + CR2;
 		
 		signal = signal + "caba::VciSignals<vci_param> signal_vci_m[cpus.size() + 1];"+ CR;
diff --git a/src/tmltranslator/HwCrossbar.java b/src/tmltranslator/HwCrossbar.java
new file mode 100755
index 0000000000000000000000000000000000000000..bfaf72f34744be569776e7a0a56df802625d1065
--- /dev/null
+++ b/src/tmltranslator/HwCrossbar.java
@@ -0,0 +1,73 @@
+/**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 HwCrossbar
+* Creation: 05/09/2007
+* @version 1.0 05/09/2007
+* @author Ludovic APVRILLE
+* @see
+*/
+
+package tmltranslator;
+
+import java.util.*;
+
+
+public class HwCrossbar extends HwCommunicationNode  {
+	
+    /*	public static final int BASIC_ROUND_ROBIN = 0;
+	public static final int PRIORITY_BASED = 1;
+	public static final int CAN = 2;
+	public static final int CROSSBAR = 3;
+        public static final int DEFAULT_SLICE_TIME = 10000; // in microseconds
+	public static final int BUS_PUBLIC = 0;
+	public static final int BUS_PRIVATE = 1;*/
+	public static final int DEFAULT_BYTE_DATA_SIZE = 4;
+    /*	public static final int DEFAULT_PIPELINE_SIZE = 1;
+	public static final int DEFAULT_ARBITRATION = BASIC_ROUND_ROBIN;
+    */
+	public int byteDataSize = DEFAULT_BYTE_DATA_SIZE; // In bytes. Should more than 0
+    /*	public int pipelineSize = DEFAULT_PIPELINE_SIZE;
+	public int arbitration = DEFAULT_ARBITRATION;
+	public int privacy = BUS_PUBLIC;
+        public int sliceTime = DEFAULT_SLICE_TIME;*/
+	public HwCrossbar(String _name) {
+		super(_name);
+	}
+	
+}
diff --git a/src/tmltranslator/HwVGMN.java b/src/tmltranslator/HwVGMN.java
new file mode 100755
index 0000000000000000000000000000000000000000..77beea8a94c3521bafc268e3ea146efe991714dc
--- /dev/null
+++ b/src/tmltranslator/HwVGMN.java
@@ -0,0 +1,75 @@
+/**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 HwVGMN
+* Creation: 05/09/2007
+* @version 1.0 05/09/2007
+* @author Ludovic APVRILLE adapted by Daniela Genius 10/08/2016
+* @see
+*/
+
+package tmltranslator;
+
+import java.util.*;
+
+
+public class HwVGMN extends HwCommunicationNode  {
+	
+    /*	public static final int BASIC_ROUND_ROBIN = 0;
+	public static final int PRIORITY_BASED = 1;
+	public static final int CAN = 2;
+	public static final int CROSSBAR = 3;
+        public static final int DEFAULT_SLICE_TIME = 10000; // in microseconds
+	public static final int BUS_PUBLIC = 0;
+	public static final int BUS_PRIVATE = 1;*/
+	public static final int DEFAULT_BYTE_DATA_SIZE = 4;
+    /*
+	public static final int DEFAULT_PIPELINE_SIZE = 1;
+	public static final int DEFAULT_ARBITRATION = BASIC_ROUND_ROBIN;
+    */
+	public int byteDataSize = DEFAULT_BYTE_DATA_SIZE; // In bytes. Should more than 0
+    /*	public int pipelineSize = DEFAULT_PIPELINE_SIZE;
+	public int arbitration = DEFAULT_ARBITRATION;
+	public int privacy = BUS_PUBLIC;
+        public int sliceTime = DEFAULT_SLICE_TIME;*/
+
+	public HwVGMN(String _name) {
+		super(_name);
+	}
+	
+}
diff --git a/src/ui/TGComponentManager.java b/src/ui/TGComponentManager.java
index 13c9a5654022a63663e30869ceba56ee73f4c89b..4b0f3fd08e9962a403f5d7d1a9b090540074dfe4 100755
--- a/src/ui/TGComponentManager.java
+++ b/src/ui/TGComponentManager.java
@@ -638,17 +638,11 @@ public class TGComponentManager {
         case ADD_BUSNODE:
             tgc = new ADDBusNode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
             break;
-        case ADD_VGMNNODE: 
-	    {
-		TraceManager.addDev("****vgmn");
-		tgc = new ADDVgmnNode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
-	    }
-            break;
-        case ADD_CROSSBARNODE:
-	    {
-		TraceManager.addDev("****crossbar");
-		tgc = new ADDCrossbarNode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
-	    }
+        case ADD_VGMNNODE: 	   
+		tgc = new ADDVgmnNode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);	   
+            break;
+        case ADD_CROSSBARNODE:	   
+		tgc = new ADDCrossbarNode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);	   
             break;
         case ADD_TTYNODE:
             tgc = new ADDTTYNode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);