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"); } }