diff --git a/src/ddtranslatorSoclib/AvatarConnector.java b/src/ddtranslatorSoclib/AvatarConnector.java
index 5344ae611fd2d9393cffd0356bef78a039fc4469..b8dc7664223f9f0199900e1d7b298af651a26519 100755
--- a/src/ddtranslatorSoclib/AvatarConnector.java
+++ b/src/ddtranslatorSoclib/AvatarConnector.java
@@ -60,11 +60,11 @@ public class AvatarConnector{
       monitored = _monitored;
     }
 
-    public AvatarConnectingPoint getconectingPoint1(){
+    public AvatarConnectingPoint get_p1(){
       return connectingPoint1;
     }
 
-    public AvatarConnectingPoint getconectingPoint2(){
+    public AvatarConnectingPoint get_p2(){
       return connectingPoint2;
     }
 
diff --git a/src/ddtranslatorSoclib/AvatarddSpecification.java b/src/ddtranslatorSoclib/AvatarddSpecification.java
index e790c176d4e7f0cdb2e1c12609413ae4e8543adb..d0b4207023d16a23c3822bd2ad9adc2ded03a4f6 100755
--- a/src/ddtranslatorSoclib/AvatarddSpecification.java
+++ b/src/ddtranslatorSoclib/AvatarddSpecification.java
@@ -50,6 +50,7 @@ import java.util.*;
 public class AvatarddSpecification{
 	
     private LinkedList<AvatarComponent> components;
+    private LinkedList<AvatarConnector> connectors;
     private LinkedList<AvatarMappedObject> mappedObjects;
 		
     private int nb_init = 0;
@@ -74,8 +75,9 @@ There always is a RAM0, a TTY and an interconnect (Bus or VGMN or crossbar) othe
     int nb_target = 6; 
     int nb_mwmr_segments = 0;
 	
-    public AvatarddSpecification(LinkedList<AvatarComponent> _components,  LinkedList<AvatarMappedObject> _mappedObjects, int _nb_target, int _nb_init){
+    public AvatarddSpecification(LinkedList<AvatarComponent> _components, LinkedList<AvatarConnector> _connectors, LinkedList<AvatarMappedObject> _mappedObjects, int _nb_target, int _nb_init){
 	components = _components ;
+	connectors = _connectors ;
 	mappedObjects = _mappedObjects ;
         nb_target = _nb_target;
         nb_init = _nb_init;
@@ -85,6 +87,10 @@ There always is a RAM0, a TTY and an interconnect (Bus or VGMN or crossbar) othe
       return components;
     }
 
+    public LinkedList<AvatarConnector> getConnectors(){
+      return connectors;
+    }
+
     public LinkedList<AvatarMappedObject> getMappedObjects(){
       return mappedObjects;
     }
@@ -109,15 +115,15 @@ There always is a RAM0, a TTY and an interconnect (Bus or VGMN or crossbar) othe
       return channels;
     }
     
-    /*   public LinkedList<AvatarConnector> getAllConnectors(){
+    public LinkedList<AvatarConnector> getAllConnectors(){
       LinkedList<AvatarConnector> connectors = new LinkedList<AvatarConnector>();
-      for (AvatarComponent connector: components )
+      for (AvatarConnector connector: connectors )
         {
           if (connector instanceof AvatarConnector)
 	      connectors.add((AvatarConnector)connector);
         }
       return connectors;
-      }*/
+      }
 
     public LinkedList<AvatarTTY> getAllTTY(){
 	int i=0;
diff --git a/src/ddtranslatorSoclib/toTopCell/Code.java b/src/ddtranslatorSoclib/toTopCell/Code.java
index 2f361b1228d46d22efe119a15f02ed77c4c58c3b..915da23d07bc03bce5905425bae2806ae69ff840 100755
--- a/src/ddtranslatorSoclib/toTopCell/Code.java
+++ b/src/ddtranslatorSoclib/toTopCell/Code.java
@@ -43,19 +43,19 @@
 /* authors: v1.0 Raja GATGOUT 2014
             v2.0 Daniela GENIUS, Julien HENON 2015 */
 
-
 package ddtranslatorSoclib.toTopCell;
 import java.util.*;
 import ddtranslatorSoclib.*;
 import java.io.*;
 import myutil.FileException;
 import myutil.FileUtils;
-import ui.*;//DG
-import ui.MainGUI;//DG
-import ui.avatardd.*;//DG
-import ui.window.*;//DG 
-import tmltranslator.*;//DG 
-//import TGComponentManager.*;//DG 
+import ui.*;
+import ui.avatardd.*;
+import ui.window.*;
+import tmltranslator.*;
+//import ui.TGComponentManager;
+//import ui.TDiagramPanel;
+//import ui.TURTLEPanel;
 
 public class Code {
    
@@ -66,8 +66,6 @@ public class Code {
     private final static String CR2 = "\n\n";       
     private final static String GENERATED_PATH = "generated_topcell" + File.separator; 
 
-    protected MainGUI mgui;
-
     public static String getCode(){
   
       creation =      CR +	
@@ -103,55 +101,15 @@ public class Code {
 	  "  for ( size_t irq = 0; irq < (size_t)Iss::n_irq; ++irq )" + CR +
 	  "     cpu->p_irq[irq](e->irq_sig[irq]); " + CR +
 	  "     cpu->p_vci(m);" +CR +
-	  "  }" + CR2;
-
+	  "  }" + CR2;     
      
-      // If there is a spy, add spy component to vci interface
-      // both adjacent componants are spied
-      // currently applies to CPU and RAM
-      // RAM monitoring required for buffer size, RAM and CPU for latency
-      // of memory accesses other than channel
-
-      /*   ADDDiagramPanel panel = mgui.getFirstAvatarDeploymentPanelFound();//??
-
-  for  (ADDConnector connector : TGComponentManager.getAllADDConnectors()) {
-      TGConnectingPoint my_p1= connector.get_p1();
-      TGConnectingPoint my_p2= connector.get_p2();    
-     
-      TGComponent comp1 = panel.getComponentToWhichBelongs(my_p1) ;
-      TGComponent comp2 = panel.getComponentToWhichBelongs(my_p2) ;  
-
-      //If a spy glass symbol is found, and component itself not yet marked 
-      
-      if (connector.hasASpy()){
-
-	  if (comp1 instanceof ADDRAMNode){
-	      ADDRAMNode comp1ram = (ADDRAMNode)comp1;
-	      comp1ram.setMonitored(1);
-	  }
-
-	  if (comp1 instanceof ADDCPUNode){ 
-	      ADDCPUNode comp1cpu = (ADDCPUNode)comp1;
-	      comp1cpu.setMonitored(1);
-	  }
+      creation=creation+"template <class Iss>" + CR +
+	  "INIT_TOOLS(initialize_tools){" + CR ;
 
-	if (comp2 instanceof ADDRAMNode){ 
-	    ADDRAMNode comp2ram = (ADDRAMNode)comp1;
-	    comp2ram.setMonitored(1);
-	}
+      // Mips based platform requires a special bootstrap where only cpu 0 starts first
 
-	if (comp2 instanceof ADDCPUNode){ 
-	    ADDCPUNode comp2cpu = (ADDCPUNode)comp2;
-	    comp2cpu.setMonitored(1);
-	}
-    }
-    } */
-    
-	  creation=creation+"template <class Iss>" + CR +
-	  "INIT_TOOLS(initialize_tools){" + CR ;
-	    
         int isMipsArchitecture = 0;
-        
+	
     try {
 	String path = ConfigurationTTool.AVATARMPSoCCodeDirectory;
 	BufferedReader in = new BufferedReader(new FileReader(path+"/Makefile.forsoclib"));
@@ -184,17 +142,10 @@ if(isMipsArchitecture == 1){
 
 	  // currently, all caches must have the same parameters : take one
       AvatarCPU cpu = TopCellGenerator.avatardd.getAllCPU().getFirst();
-
-      /* System.out.println("*ICACHEWAYS taken into account*"+cpu.getICacheWays());
-	  System.out.println("*ICACHESETS taken into account*"+cpu.getICacheSets());
-	  System.out.println("*ICACHEWORDS taken into account*"+cpu.getICacheWords());
-	  System.out.println("*DCACHEWAYS taken into account*"+cpu.getDCacheWays());
-	  System.out.println("*DCACHESETS taken into account*"+cpu.getDCacheSets());
-	  System.out.println("*DCACHEWORDS taken into account*"+cpu.getDCacheWords());*/
-
+     
       int nb_clusters=TopCellGenerator.avatardd.getAllCrossbar().size();
 
-	  //DG 1.9.2016
+	 
       if(nb_clusters==0){
 	  creation=creation +"template <class Iss>" + CR +	  
 	  "NEW_CPU(new_cpu){" + CR +
@@ -202,7 +153,7 @@ if(isMipsArchitecture == 1){
 	  cpu.getICacheWays()+","+cpu.getICacheSets()+","+cpu.getICacheWords()+","+cpu.getDCacheWays()+","+cpu.getDCacheSets()+","+cpu.getDCacheWords()+")"+";"+
 	    CR + "}" + CR2;
       }
-      else{ //DG 01.09.2016
+      else{
 	  creation=creation +"template <class Iss>" + CR +	  
 	  "NEW_CPU(new_cpu){" + CR +
 	  "return new caba::VciXcacheWrapper<vci_param, ISS_NEST(Iss)>(e->name.c_str(), e->id, maptab, IntTab(e->id,e->id),"+
diff --git a/src/ddtranslatorSoclib/toTopCell/TopCellGenerator.java b/src/ddtranslatorSoclib/toTopCell/TopCellGenerator.java
index dbe450d526e8e7ba8e34d72e99f4fe7b7d06fe23..04343ae26a39b9a69a80bba86881a269c5c294e7 100755
--- a/src/ddtranslatorSoclib/toTopCell/TopCellGenerator.java
+++ b/src/ddtranslatorSoclib/toTopCell/TopCellGenerator.java
@@ -115,8 +115,59 @@ public class TopCellGenerator
 		System.out.println("***VGSB based ***");
 		icn="vgsb";
 	    }
-	    /* More complicate dto detect : central crossbar or local crossbars : ToDo */
+      // If there is a spy, add spy component to vci interface;
+      // both adjacent componants are spied.
+      // Currently for CPU and RAM only.
+      // RAM monitoring is required for determining the buffer size and
+      // various infos on MWMR channels 
+      // RAM and CPU  monitoring are for  required for determining latency
+      // of memory accesses other than channel    
+     
+      System.out.println("@@@@@@@BEFORE SPY@@@@@@@");
+
+      for  (AvatarConnector connector : TopCellGenerator.avatardd.getAllConnectors()){
+     AvatarConnectingPoint my_p1= (AvatarConnectingPoint)connector.get_p1(); 
+     AvatarConnectingPoint my_p2= (AvatarConnectingPoint)connector.get_p2(); 
+
+     System.out.println("@@@@@@@BEFORE SPY2@@@@@@@");
+ 
+      //If a spy glass symbol is found, and component itself not yet marked 
+      
+  AvatarComponent comp1 = my_p1.getComponent();
+  AvatarComponent comp2 = my_p2.getComponent(); 
+
+  if (connector.getMonitored()==1){
+  System.out.println("@@@@@@@SPY@@@@@@@");
+	  if (comp1 instanceof AvatarRAM){
+	      AvatarRAM comp1ram = (AvatarRAM)comp1;
+	      System.out.println("@@@@@@@RAM1@@@@@@@");
+	      comp1ram.setMonitored(1);
+	  }
+
+	  if (comp1 instanceof AvatarCPU){ 
+	      AvatarCPU comp1cpu = (AvatarCPU)comp1;
+	      System.out.println("@@@@@@@CPU1@@@@@@@");
+	      comp1cpu.setMonitored(1);
+	  }
+
+	if (comp2 instanceof AvatarRAM){ 
+	    AvatarRAM comp2ram = (AvatarRAM)comp1;
+	    System.out.println("@@@@@@@RAM2@@@@@@@");
+	    comp2ram.setMonitored(1);
+	}
+
+	if (comp2 instanceof AvatarCPU){ 
+	    AvatarCPU comp2cpu = (AvatarCPU)comp2;
+	     System.out.println("@@@@@@@CPU2@@@@@@@");
+	    comp2cpu.setMonitored(1);
+	}
+  }
+}
+    
+
+	    /* Central crossbar or local crossbars : ToDo */
 	   
+
 	    if(TopCellGenerator.avatardd.getNbCrossbar()>0){
 		 System.out.println("***Clustered Interconnect***");
 	    }
diff --git a/src/ui/AvatarDeploymentPanelTranslator.java b/src/ui/AvatarDeploymentPanelTranslator.java
old mode 100755
new mode 100644
index 3bd4c1125e51c37f7744ce17e60dfd3d16fad8d3..433fec20c4c19a0050721c23e72d4ebc3268cd2a
--- a/src/ui/AvatarDeploymentPanelTranslator.java
+++ b/src/ui/AvatarDeploymentPanelTranslator.java
@@ -2,240 +2,298 @@
 
 package ui;
 
-import ddtranslatorSoclib.*;
-import ui.avatardd.*;
-import ui.*;
-import java.util.*;
-
-public class AvatarDeploymentPanelTranslator{
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Vector;
+
+import ddtranslatorSoclib.AvatarBridge;
+import ddtranslatorSoclib.AvatarBus;
+import ddtranslatorSoclib.AvatarCPU;
+import ddtranslatorSoclib.AvatarChannel;
+import ddtranslatorSoclib.AvatarComponent;
+import ddtranslatorSoclib.AvatarConnectingPoint;
+import ddtranslatorSoclib.AvatarConnector;
+import ddtranslatorSoclib.AvatarCoproMWMR;
+import ddtranslatorSoclib.AvatarCrossbar;
+import ddtranslatorSoclib.AvatarICU;
+import ddtranslatorSoclib.AvatarMappedObject;
+import ddtranslatorSoclib.AvatarRAM;
+import ddtranslatorSoclib.AvatarTTY;
+import ddtranslatorSoclib.AvatarTask;
+import ddtranslatorSoclib.AvatarTimer;
+import ddtranslatorSoclib.AvatarVgmn;
+import ddtranslatorSoclib.AvatarddSpecification;
+import ui.avatardd.ADDBlockArtifact;
+import ui.avatardd.ADDBridgeNode;
+import ui.avatardd.ADDBusNode;
+import ui.avatardd.ADDCPUNode;
+import ui.avatardd.ADDChannelArtifact;
+import ui.avatardd.ADDConnectingPoint;
+import ui.avatardd.ADDConnector;
+import ui.avatardd.ADDCoproMWMRNode;
+import ui.avatardd.ADDCrossbarNode;
+import ui.avatardd.ADDDiagramPanel;
+import ui.avatardd.ADDICUNode;
+import ui.avatardd.ADDMemoryNode;
+import ui.avatardd.ADDRAMNode;
+import ui.avatardd.ADDTTYNode;
+import ui.avatardd.ADDTimerNode;
+import ui.avatardd.ADDVgmnNode;
+
+public class AvatarDeploymentPanelTranslator {
+
+	private int nb_init = 0;
+
+	/*
+	 * there are seven targets which are fixed but which are invisible to the user of thr TTool deployment diagram) :
+	 * 
+	 * Targets on RAM0 :
+	 * the text segment (target 0)
+	 * the reset segment (target 1)
+	 * the data segment (target 2)
+	 * 
+	 * Other targets :
+	 * the simhelper segment (target 3)
+	 * the icu segment (target 4)
+	 * the timer segment (target 5)
+	 * the fdt segment (target 6)
+	 * 
+	 * There always is a RAM0
+	 */
+
+	private int nb_target = 6;
+	private int no_proc = 0;
+	private int no_ram = 0;
+	private int no_tty = 0;
+
+	private int nb_clusters = 0;
+	private LinkedList<TGComponent> tgcComponents;
+
+	private LinkedList<AvatarComponent> avatarComponents;
+	private LinkedList<AvatarConnector> avatarConnectors;
+	private LinkedList<AvatarMappedObject> avatarMappedObject;
+
+	public AvatarDeploymentPanelTranslator(ADDDiagramPanel _avatarddDiagramPanel) {
+		tgcComponents = _avatarddDiagramPanel.getComponentList();
+
+		avatarComponents = new LinkedList<AvatarComponent>();
+		avatarConnectors = new LinkedList<AvatarConnector>();
+		avatarMappedObject = new LinkedList<AvatarMappedObject>();
+
+		MakeListOfComponentAndMappedObject();
+	}
+
+	private void MakeListOfComponentAndMappedObject() {
+
+		Map<TGComponent, AvatarComponent> avatarMap = new HashMap<TGComponent, AvatarComponent>();
+
+		for (TGComponent dp : tgcComponents) {
+			if (dp instanceof ADDCPUNode) {
+				ADDCPUNode addCPUNode = (ADDCPUNode) dp;
+				String cpuName = addCPUNode.getNodeName();
+				int nbOfIRQs = addCPUNode.getNbOfIRQs();
+				int ICacheWays = addCPUNode.getICacheWays();
+				int ICacheSets = addCPUNode.getICacheSets();
+				int ICacheWords = addCPUNode.getICacheWords();
+				int dCacheWays = addCPUNode.getDCacheWays();
+				int dCacheSets = addCPUNode.getDCacheSets();
+				int dCacheWords = addCPUNode.getDCacheWords();
+				AvatarCPU avcpu;
+				int monitored = addCPUNode.getMonitored();
+				avcpu = new AvatarCPU(cpuName, nbOfIRQs, ICacheWays, ICacheSets, ICacheWords, dCacheWays, dCacheSets, dCacheWords, nb_init, no_proc, monitored);
+				nb_init++;
+				no_proc++;
+
+				Vector tasks = addCPUNode.getArtifactList();
+				for (int i = 0; i < tasks.size(); i++) {
+					ADDBlockArtifact task = (ADDBlockArtifact) tasks.get(i);
+
+					String taskName = task.getTaskName();
+					String referenceTaskName = task.getReferenceTaskName();
+
+					AvatarTask avtask = new AvatarTask(taskName, referenceTaskName, avcpu);
+					avcpu.addTask(avtask);
+					avatarMappedObject.add(avtask);
+				}
+				avatarMap.put(dp, avcpu);
+				avatarComponents.add(avcpu);
+
+			} else if (dp instanceof ADDTTYNode) {
+				ADDTTYNode tty = (ADDTTYNode) dp;
+
+				int index = tty.getIndex();
+				String ttyName = tty.getNodeName();
+
+				AvatarTTY avtty = new AvatarTTY(ttyName, index, no_tty, index);
+				nb_target++;
+
+				avatarMap.put(dp, avtty);
+				avatarComponents.add(avtty);
+
+			} else if (dp instanceof ADDBridgeNode) {
+				ADDBridgeNode bridge = (ADDBridgeNode) dp;
+
+				String bridgeName = bridge.getNodeName();
+				AvatarBridge avbridge = new AvatarBridge(bridgeName);
+
+				avatarMap.put(dp, avbridge);
+				avatarComponents.add(avbridge);
+
+			} else if (dp instanceof ADDBusNode) {
+
+				ADDBusNode bus = (ADDBusNode) dp;
+
+				String busName = bus.getNodeName();
+				int nbOfAttachedInitiators = bus.getNbOfAttachedInitiators();
+				int nbOfAttachedTargets = bus.getNbOfAttachedTargets();
+				int fifoDepth = bus.getFifoDepth();
+				int minLatency = bus.getMinLatency();
+				System.out.println("vgsb read in");
+				AvatarBus avbus = new AvatarBus(busName, nbOfAttachedInitiators, nbOfAttachedTargets, fifoDepth, minLatency);
+				avatarMap.put(dp, avbus);
+				avatarComponents.add(avbus);
 
-    private int nb_init = 0;
+			} else if (dp instanceof ADDVgmnNode) {
 
-    /*there are seven targets which are fixed but which are invisible to the user of thr TTool deployment diagram) :
+				ADDVgmnNode vgmn = (ADDVgmnNode) dp;
 
-      Targets on RAM0 :
-      the text segment (target 0)
-      the reset segment (target 1)
-      the data segment (target 2)
-
-      Other targets :
-      the simhelper segment (target 3)
-      the icu segment (target 4)
-      the timer segment (target 5)
-      the fdt segment (target 6)
-
-      There always is a RAM0
-    */
-
-    private int nb_target = 6;
-    private int nb_proc = 0;
-    private int no_proc = 0;
-    private int nb_ram = 0;
-    private int no_ram = 0;
-    private int nb_tty = 0;
-    private int no_tty = 0;
-    private int nb_mwmr_segments = 0;
-    //private int no_cluster = 0;//DG 4.4. works for 1 RAM per cluster ans does nor respect the name given by the user
-    private int nb_clusters = 0;
-    private LinkedList TGCComponents ;
-
-    private LinkedList<AvatarComponent> avatarComponents ;
-    private LinkedList<AvatarMappedObject> avatarMappedObject ;
-
-    public AvatarDeploymentPanelTranslator(ADDDiagramPanel _avatarddDiagramPanel ){
-
-        TGCComponents = _avatarddDiagramPanel.getComponentList();
-
-        avatarComponents = new   LinkedList<AvatarComponent>();
-        avatarMappedObject = new LinkedList<AvatarMappedObject>();
-
-        MakeListOfComponentAndMappedObject();
-    }
-
-    private void MakeListOfComponentAndMappedObject(){
-
-        TGComponent dp = null;
-        ListIterator iterator = TGCComponents.listIterator();
-
-        while(iterator.hasNext()) {
-            dp = (TGComponent)iterator.next();
-            if (dp instanceof ADDCPUNode){
-
-                ADDCPUNode addCPUNode = (ADDCPUNode)dp;
-                String cpuName = addCPUNode.getNodeName();
-                int nbOfIRQs = addCPUNode.getNbOfIRQs();
-                int ICacheWays = addCPUNode.getICacheWays();
-                int ICacheSets = addCPUNode.getICacheSets() ;
-                int ICacheWords = addCPUNode.getICacheWords();
-                int dCacheWays = addCPUNode.getDCacheWays();
-                int dCacheSets = addCPUNode.getDCacheSets();
-                int dCacheWords = addCPUNode.getDCacheWords();
-
-                AvatarCPU avcpu;
-		int monitored = addCPUNode.getMonitored();
-                avcpu = new AvatarCPU(cpuName,nbOfIRQs,ICacheWays,ICacheSets,ICacheWords,dCacheWays,dCacheSets,dCacheWords,nb_init,no_proc,monitored);
-                nb_init++;
-                nb_proc++;
-                no_proc++;
-
-                Vector tasks = addCPUNode.getArtifactList();
-                for (int i = 0 ; i < tasks.size() ; i ++){
-                    ADDBlockArtifact task = (ADDBlockArtifact)tasks.get(i);
-
-                    String taskName = task.getTaskName();
-                    String referenceTaskName = task.getReferenceTaskName() ;
-
-                    AvatarTask avtask = new AvatarTask(taskName ,referenceTaskName,avcpu);
-                    avcpu.addTask(avtask);
-                    avatarMappedObject.add(avtask);
-                }
-                avatarComponents.add(avcpu);
-
-
-            }else if(dp instanceof ADDTTYNode){
-                ADDTTYNode tty = (ADDTTYNode)dp;
-
-                int index = tty.getIndex();
-                String ttyName = tty.getNodeName();
-	
-                AvatarTTY avtty =  new AvatarTTY(ttyName,index,no_tty,index);
-                nb_tty++;
-                nb_target++;
-
-                avatarComponents.add(avtty);
-            }else if(dp instanceof ADDBridgeNode){
-                ADDBridgeNode bridge= (ADDBridgeNode)dp;
-
-                String bridgeName = bridge.getNodeName();
-                AvatarBridge avbridge = new AvatarBridge(bridgeName);
-
-                avatarComponents.add(avbridge);
-
-            }else if(dp instanceof ADDBusNode){
-
-                ADDBusNode bus = (ADDBusNode)dp;
-
-                String busName = bus.getNodeName();
-                int nbOfAttachedInitiators = bus.getNbOfAttachedInitiators();
-                int nbOfAttachedTargets = bus.getNbOfAttachedTargets();
-                int fifoDepth = bus.getFifoDepth();
-                int minLatency = bus.getMinLatency();
-System.out.println("vgsb read in");
-                AvatarBus avbus = new AvatarBus(busName,nbOfAttachedInitiators,nbOfAttachedTargets,fifoDepth,minLatency);
-                avatarComponents.add(avbus);
-
-            }
-            else if(dp instanceof ADDVgmnNode){
-
-                ADDVgmnNode vgmn = (ADDVgmnNode)dp;
-
-                String vgmnName = vgmn.getNodeName();
-                int nbOfAttachedInitiators = vgmn.getNbOfAttachedInitiators();
-                int nbOfAttachedTargets = vgmn.getNbOfAttachedTargets();
-                int fifoDepth = vgmn.getFifoDepth();
-                int minLatency = vgmn.getMinLatency();
-System.out.println("vgmn read in");
-                AvatarVgmn avvgmn = new AvatarVgmn(vgmnName,nbOfAttachedInitiators,nbOfAttachedTargets,fifoDepth,minLatency);
-                avatarComponents.add(avvgmn);
-
-            }
-            else if(dp instanceof ADDCrossbarNode){
-
-                ADDCrossbarNode crossbar = (ADDCrossbarNode)dp;
-
-                String crossbarName = crossbar.getNodeName();
-		// int nbOfAttachedInitiators = crossbar.getNbOfAttachedInitiators();
-		int nbOfAttachedInitiators = 0;
-	
-                //int nbOfAttachedTargets = crossbar.getNbOfAttachedTargets();
-
-		int nbOfAttachedTargets = 0;
-
-                int cluster_index = crossbar.getClusterIndex();
-                int cluster_address = crossbar.getClusterAddress();
-
-                AvatarCrossbar avcrossbar = new AvatarCrossbar(crossbarName,nbOfAttachedInitiators,nbOfAttachedTargets,cluster_index,cluster_address);
-		nb_clusters++;
-		System.out.println("nb crossbars read in"+nb_clusters);
-                avatarComponents.add(avcrossbar);
-            }
-            else if(dp instanceof ADDICUNode){
-
-                ADDICUNode icu = (ADDICUNode)dp;
-
-                String ICUName = icu.getNodeName();
-                int index =  icu.getIndex();
-                int nbIRQ =  icu.getNIrq();
-
-                AvatarICU avicu = new AvatarICU(ICUName,index,nbIRQ);
-                avatarComponents.add(avicu);
-
-            }else if(dp instanceof ADDTimerNode){
-                ADDTimerNode timer = (ADDTimerNode)dp;
-
-                String timerName = timer.getNodeName();
-                int nIrq = timer.getNIrq();
-                int index = timer.getIndex();
-
-                AvatarTimer avtimer = new AvatarTimer(timerName,index, nIrq );
-                avatarComponents.add(avtimer);
-
-            }else if(dp instanceof ADDCoproMWMRNode){
-
-                ADDCoproMWMRNode addCoproMWMRNode = (ADDCoproMWMRNode)dp;
-
-                String timerName = addCoproMWMRNode.getNodeName();
-                int srcid = addCoproMWMRNode.getSrcid() ; // initiator id
-                int tgtid = addCoproMWMRNode.getTgtid(); // target id
-                int plaps = addCoproMWMRNode.getPlaps() ; // configuration of integrated timer
-                int fifoToCoprocDepth = addCoproMWMRNode.getFifoToCoprocDepth();
-                int fifoFromCoprocDepth = addCoproMWMRNode.getFifoFromCoprocDepth() ;
-                int nToCopro = addCoproMWMRNode.getNToCopro(); // Nb of channels going to copro
-                int nFromCopro = addCoproMWMRNode.getNFromCopro(); // Nb of channels coming from copro
-                int nConfig = addCoproMWMRNode.getNConfig(); // Nb of configuration registers
-                int nStatus = addCoproMWMRNode.getNStatus(); // nb of status registers
-                boolean useLLSC = addCoproMWMRNode.getUseLLSC() ; // more efficient protocol. 0: not used. 1 or more -> used
-
-                AvatarCoproMWMR acpMWMR;
-                acpMWMR = new AvatarCoproMWMR(timerName,srcid,srcid,tgtid, plaps,fifoToCoprocDepth,fifoFromCoprocDepth,nToCopro,nFromCopro,nConfig,nStatus,useLLSC);
-
-            }else if(dp instanceof ADDMemoryNode){
-
-                if (dp instanceof ADDRAMNode){
-
-                    ADDRAMNode addRamNode = (ADDRAMNode)dp;
-                    String name = addRamNode.getNodeName();
-                    int index = addRamNode.getIndex();
-                    int byteDataSize = addRamNode.getDataSize();
-
-		    int monitored = addRamNode.getMonitored();
-
-                    AvatarRAM avram = new AvatarRAM(name,index,byteDataSize,no_ram,index,monitored);
-                    int cluster_index = avram.getIndex();
-		    
-                    no_ram++;
-                    nb_ram++;
-                    nb_target++;
-
-                    Vector channels = addRamNode.getArtifactList();
-                    for(int i=0 ; i < channels.size() ; i++ ) {
-                        ADDChannelArtifact c = (ADDChannelArtifact)channels.get(i);
-
-                        String referenceDiagram = c.getReferenceDiagram();
-                        String  channelName = c.getChannelName();
-			//DG channel is inevitably on same cluster as RAM it is mapped on :)
-                        AvatarChannel avcl = new AvatarChannel(referenceDiagram,channelName,avram,cluster_index, monitored);
-                        avram.addChannel(avcl);
-                        avatarMappedObject.add(avcl);
-                    }
-                    avatarComponents.add(avram);
-                }
-            }
-        }
-    }
-
-    public AvatarddSpecification getAvatarddSpecification(){
-        return new AvatarddSpecification(avatarComponents,avatarMappedObject,nb_target,nb_init);
-    }
+				String vgmnName = vgmn.getNodeName();
+				int nbOfAttachedInitiators = vgmn.getNbOfAttachedInitiators();
+				int nbOfAttachedTargets = vgmn.getNbOfAttachedTargets();
+				int fifoDepth = vgmn.getFifoDepth();
+				int minLatency = vgmn.getMinLatency();
+				System.out.println("vgmn read in");
+				AvatarVgmn avvgmn = new AvatarVgmn(vgmnName, nbOfAttachedInitiators, nbOfAttachedTargets, fifoDepth, minLatency);
+				avatarMap.put(dp, avvgmn);
+				avatarComponents.add(avvgmn);
+
+			} else if (dp instanceof ADDCrossbarNode) {
+
+				ADDCrossbarNode crossbar = (ADDCrossbarNode) dp;
+
+				String crossbarName = crossbar.getNodeName();
+				// int nbOfAttachedInitiators = crossbar.getNbOfAttachedInitiators();
+				int nbOfAttachedInitiators = 0;
+
+				// int nbOfAttachedTargets = crossbar.getNbOfAttachedTargets();
+
+				int nbOfAttachedTargets = 0;
+
+				int cluster_index = crossbar.getClusterIndex();
+				int cluster_address = crossbar.getClusterAddress();
+
+				AvatarCrossbar avcrossbar = new AvatarCrossbar(crossbarName, nbOfAttachedInitiators, nbOfAttachedTargets, cluster_index, cluster_address);
+				nb_clusters++;
+				System.out.println("nb crossbars read in" + nb_clusters);
+				avatarMap.put(dp, avcrossbar);
+				avatarComponents.add(avcrossbar);
+			} else if (dp instanceof ADDICUNode) {
+
+				ADDICUNode icu = (ADDICUNode) dp;
+
+				String ICUName = icu.getNodeName();
+				int index = icu.getIndex();
+				int nbIRQ = icu.getNIrq();
+
+				AvatarICU avicu = new AvatarICU(ICUName, index, nbIRQ);
+				avatarMap.put(dp, avicu);
+				avatarComponents.add(avicu);
+
+			} else if (dp instanceof ADDTimerNode) {
+				ADDTimerNode timer = (ADDTimerNode) dp;
+
+				String timerName = timer.getNodeName();
+				int nIrq = timer.getNIrq();
+				int index = timer.getIndex();
+
+				AvatarTimer avtimer = new AvatarTimer(timerName, index, nIrq);
+				avatarMap.put(dp, avtimer);
+				avatarComponents.add(avtimer);
+
+			} else if (dp instanceof ADDCoproMWMRNode) {
+
+				ADDCoproMWMRNode addCoproMWMRNode = (ADDCoproMWMRNode) dp;
+
+				String timerName = addCoproMWMRNode.getNodeName();
+				int srcid = addCoproMWMRNode.getSrcid(); // initiator id
+				int tgtid = addCoproMWMRNode.getTgtid(); // target id
+				int plaps = addCoproMWMRNode.getPlaps(); // configuration of integrated timer
+				int fifoToCoprocDepth = addCoproMWMRNode.getFifoToCoprocDepth();
+				int fifoFromCoprocDepth = addCoproMWMRNode.getFifoFromCoprocDepth();
+				int nToCopro = addCoproMWMRNode.getNToCopro(); // Nb of channels going to copro
+				int nFromCopro = addCoproMWMRNode.getNFromCopro(); // Nb of channels coming from copro
+				int nConfig = addCoproMWMRNode.getNConfig(); // Nb of configuration registers
+				int nStatus = addCoproMWMRNode.getNStatus(); // nb of status registers
+				boolean useLLSC = addCoproMWMRNode.getUseLLSC(); // more efficient protocol. 0: not used. 1 or more -> used
+
+				AvatarCoproMWMR acpMWMR;
+				acpMWMR = new AvatarCoproMWMR(timerName, srcid, srcid, tgtid, plaps, fifoToCoprocDepth, fifoFromCoprocDepth, nToCopro, nFromCopro, nConfig, nStatus, useLLSC);
+				avatarMap.put(dp, acpMWMR);
+
+			} else if (dp instanceof ADDMemoryNode) {
+
+				if (dp instanceof ADDRAMNode) {
+
+					ADDRAMNode addRamNode = (ADDRAMNode) dp;
+					String name = addRamNode.getNodeName();
+					int index = addRamNode.getIndex();
+					int byteDataSize = addRamNode.getDataSize();
+
+					int monitored = addRamNode.getMonitored();
+
+					AvatarRAM avram = new AvatarRAM(name, index, byteDataSize, no_ram, index, monitored);
+					int cluster_index = avram.getIndex();
+
+					no_ram++;
+					nb_target++;
+
+					Vector channels = addRamNode.getArtifactList();
+					for (int i = 0; i < channels.size(); i++) {
+						ADDChannelArtifact c = (ADDChannelArtifact) channels.get(i);
+
+						String referenceDiagram = c.getReferenceDiagram();
+						String channelName = c.getChannelName();
+						// DG channel is inevitably on same cluster as RAM it is mapped on :)
+						AvatarChannel avcl = new AvatarChannel(referenceDiagram, channelName, avram, cluster_index, monitored);
+						avram.addChannel(avcl);
+						avatarMappedObject.add(avcl);
+					}
+					avatarMap.put(dp, avram);
+					avatarComponents.add(avram);
+				}
+			}
+		}
+		
+		
+		for (TGComponent dp : tgcComponents) {
+			
+			if (dp instanceof ADDConnector) {
+				ADDConnector connector = (ADDConnector) dp;
+				ADDConnectingPoint connectingPoint1 = (ADDConnectingPoint) connector.get_p1();
+				ADDConnectingPoint connectingPoint2 = (ADDConnectingPoint) connector.get_p2();			
+
+				TGComponent owner_p1 = connectingPoint1.getOwner();
+				TGComponent owner_p2 = connectingPoint2.getOwner();
+
+				AvatarComponent avowner_p1 = avatarMap.get(owner_p1);
+				AvatarComponent avowner_p2 = avatarMap.get(owner_p2);
+
+				AvatarConnectingPoint avconnectingPoint1 = new AvatarConnectingPoint(avowner_p1);
+				AvatarConnectingPoint avconnectingPoint2 = new AvatarConnectingPoint(avowner_p2);
+				boolean spy = connector.hasASpy();
+				int monitored = 0;
+				if (spy == true)
+					monitored = 1;
+				AvatarConnector avconnector = new AvatarConnector(avconnectingPoint1, avconnectingPoint2, monitored);
+
+				avatarConnectors.add(avconnector);
+			}
+		}
+	}
+
+	public AvatarddSpecification getAvatarddSpecification() {
+		return new AvatarddSpecification(avatarComponents, avatarConnectors, avatarMappedObject, nb_target, nb_init);
+	}
 
 }
diff --git a/src/ui/TGConnectingPoint.java b/src/ui/TGConnectingPoint.java
index d60975559639d33bed5f0c15d3928e2e366bc562..f870ea9c8097fb8e104301de5e712b261fbdf3ae 100755
--- a/src/ui/TGConnectingPoint.java
+++ b/src/ui/TGConnectingPoint.java
@@ -292,6 +292,13 @@ public class TGConnectingPoint implements CDElement {
       protected TGComponent getFather() {
       return father;
       }*/
+
+    //DG 27.02.
+    public TGComponent getOwner()        {
+        return father;
+    }
+    //fin DG
+
     public void setReferenceToConnector( TGConnector _ref )     {
         referenceToConnector = _ref;
     }
diff --git a/src/ui/avatardd/ADDCPUNode.java b/src/ui/avatardd/ADDCPUNode.java
index 89a28fe25ad953b81a66c36a043e507ab22e6c56..2f36a07d9f4a44273673aa35f3421898445cbefc 100755
--- a/src/ui/avatardd/ADDCPUNode.java
+++ b/src/ui/avatardd/ADDCPUNode.java
@@ -348,6 +348,7 @@ public class ADDCPUNode extends ADDNode implements SwallowTGComponent, WithAttri
 	if (dialog.getMonitored() != 0) {
             try {
                 tmp = monitored;
+
                 monitored = dialog.getMonitored();//Integer.decode(dialog.getMonitored()).intValue();
                 if (index < 0) {
                     monitored = tmp;
@@ -548,5 +549,8 @@ public class ADDCPUNode extends ADDNode implements SwallowTGComponent, WithAttri
         return monitored;
     }
 
+    public void setMonitored(int _monitored){
+	monitored = _monitored;
+    }
 
 }
diff --git a/src/ui/avatardd/ADDConnector.java b/src/ui/avatardd/ADDConnector.java
index 0e7b53d7529505b73dccdafbd7119387cdb7a556..6e2d2f4d72c8c0b10a3afbdc3fb1fbe843bcdf0f 100755
--- a/src/ui/avatardd/ADDConnector.java
+++ b/src/ui/avatardd/ADDConnector.java
@@ -76,8 +76,19 @@ public  class ADDConnector extends TGConnector  {
         myImageIcon = IconManager.imgic202;
         value = "{info}";
         editable = true;
+	p1 = _p1;	
+	p2 = _p2;
     }
     
+
+        public TGConnectingPoint get_p1(){
+	return p1;
+	}
+
+        public TGConnectingPoint get_p2(){
+	return p2;
+	}
+
     public boolean editOndoubleClick(JFrame frame) {
         /*JDialogTMLConnectorNode dialog = new JDialogTMLConnectorNode(frame, "Setting connector attributes", this);
 		dialog.setSize(350, 300);
diff --git a/src/ui/avatardd/ADDRAMNode.java b/src/ui/avatardd/ADDRAMNode.java
index b7bd80934bca687b11a7d126bf5f2d4ebeb710f5..d41f803a8c5c56c79581ac408ce019d1599743d9 100755
--- a/src/ui/avatardd/ADDRAMNode.java
+++ b/src/ui/avatardd/ADDRAMNode.java
@@ -58,8 +58,11 @@ import ui.window.*;
 
 import tmltranslator.*;
 
+
 public class ADDRAMNode extends ADDMemoryNode implements SwallowTGComponent, WithAttributes {
 
+    protected int monitored = 0;
+
     public ADDRAMNode(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp)  {
         super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp);
 
@@ -163,6 +166,12 @@ public class ADDRAMNode extends ADDMemoryNode implements SwallowTGComponent, Wit
     }
 
 
+    public int getMonitored() {
+        return monitored;
+    }
 
+    public void setMonitored(int _monitored){
+	monitored = _monitored;
+    }
 
 }
diff --git a/src/ui/window/JDialogAvatarddExecutableCodeGeneration.java b/src/ui/window/JDialogAvatarddExecutableCodeGeneration.java
index c620e22dd2e2e465e9482ddbaeb3e1df0ce28d04..54f87609e5f970da8fc2b359021d8d39153a9370 100755
--- a/src/ui/window/JDialogAvatarddExecutableCodeGeneration.java
+++ b/src/ui/window/JDialogAvatarddExecutableCodeGeneration.java
@@ -531,19 +531,19 @@ public class JDialogAvatarddExecutableCodeGeneration extends javax.swing.JFrame
 		    TopCellGenerator topCellGenerator = new TopCellGenerator(avddspec, tracemode.isSelected());
 		    testGo();
 		    jta.append("Generation of TopCell executable code: done\n");
-		    System.err.println("**get Text "+code2.getText());
+		   
 		    try {
-			jta.append("Saving code in files\n");
-			System.err.println("**Saving code in files\n");
+			jta.append("Saving  MPSoC code in files\n");
+			System.err.println("Saving MPSoC code in files\n");
 			pathCode = code2.getText();
 
-			System.err.println("**AVATAR TOPCELL saved in "+code2.getText());
-
+			System.err.println("AVATAR TOPCELL saved in "+code2.getText());
 			topCellGenerator.saveFile(pathCode);
 
 			jta.append("Code saved\n");
 		    } catch (Exception e) {
-			jta.append("Could not generate files\n"); System.err.println("**Could not generate files\n");
+			jta.append("Could not generate files\n"); 
+			System.err.println("Could not generate MPSoC files\n");
 		    }
 		}