From 276e38bbaea18862b3fa20418849217eab7b6644 Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr> Date: Mon, 30 Sep 2019 20:25:55 +0200 Subject: [PATCH] Improvement on NoC handling --- src/main/java/tmltranslator/TMLMapping.java | 21 ++++++++++++++-- .../java/tmltranslator/TMLSyntaxChecking.java | 3 ++- .../tomappingsystemc2/MappedSystemCTask.java | 4 ++-- .../tonetwork/TranslatedRouter.java | 24 +++++++++++++++++-- 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/main/java/tmltranslator/TMLMapping.java b/src/main/java/tmltranslator/TMLMapping.java index b9cd197396..3f6da73d9a 100755 --- a/src/main/java/tmltranslator/TMLMapping.java +++ b/src/main/java/tmltranslator/TMLMapping.java @@ -581,16 +581,33 @@ public class TMLMapping<E> { } public int getNbOfMemoriesOfChannel(TMLChannel _ch) { + int n = 0; int cpt = 0; for (TMLElement elt : mappedcommelts) { if (elt == _ch) { HwCommunicationNode node = oncommnodes.get(cpt); if (node instanceof HwMemory) { - cpt++; + n++; } } + cpt++; } - return cpt; + return n; + } + + public String getStringOfMemoriesOfChannel(TMLChannel _ch) { + String ret = ""; + int cpt = 0; + for (TMLElement elt : mappedcommelts) { + if (elt == _ch) { + HwCommunicationNode node = oncommnodes.get(cpt); + if (node instanceof HwMemory) { + ret += node.getName() + " ; "; + } + } + cpt ++; + } + return ret; } public TMLElement getCommunicationElementByName(String _name) { diff --git a/src/main/java/tmltranslator/TMLSyntaxChecking.java b/src/main/java/tmltranslator/TMLSyntaxChecking.java index 14c761a3cb..4a24879478 100755 --- a/src/main/java/tmltranslator/TMLSyntaxChecking.java +++ b/src/main/java/tmltranslator/TMLSyntaxChecking.java @@ -792,7 +792,8 @@ public class TMLSyntaxChecking { int n = mapping.getNbOfMemoriesOfChannel(ch); if (n > 1) { // Too many memories - addError(null, null, TOO_MANY_MEMORIES + ": " + ch.getName(), TMLError.ERROR_STRUCTURE); + String s = mapping.getStringOfMemoriesOfChannel(ch); + addError(null, null, TOO_MANY_MEMORIES + ": " + ch.getName() + " mapped in " + s, TMLError.ERROR_STRUCTURE); } } } diff --git a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java index 720ad5ac6f..a209cc4110 100644 --- a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java +++ b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java @@ -123,8 +123,8 @@ public class MappedSystemCTask { long sizeh = new File(path + reference + DOTH).length(); long sizecpp = new File(path + reference + DOTCPP).length(); - TraceManager.addDev("Computing length of " + path + reference + DOTH + ": " + sizeh); - TraceManager.addDev("Computing length of " + path + reference + DOTCPP + ": " + sizeh); + //TraceManager.addDev("Computing length of " + path + reference + DOTH + ": " + sizeh); + //TraceManager.addDev("Computing length of " + path + reference + DOTCPP + ": " + sizeh); if (sizeh == getHCode().length()) { diff --git a/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java b/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java index 9052b9aa9e..990cadb5f7 100644 --- a/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java +++ b/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java @@ -830,6 +830,16 @@ public class TranslatedRouter<E> { tmlmap.addCommToHwCommNode(newChannel, mem); } + HwBus bus = tmlmap.getTMLArchitecture().getHwBusByName(myHwExecutionNode.getName() + "__bus"); + if (bus != null) { + //tmlmap.addCommToHwCommNode(newChannel, bus); + /*if (mem != null) { + HwLink link = new HwLink(myHwExecutionNode.getName() + "__linkFromMemOri"); + tmlmap.getTMLArchitecture().addHwLink(link); + link.setNodes(bus, mem); + }*/ + } + // Must now modify the source app TMLAttribute pktlen = new TMLAttribute("pktlen", "pktlen", new TMLType(TMLType.NATURAL), "0"); t.addAttributeIfApplicable(pktlen); @@ -946,6 +956,16 @@ public class TranslatedRouter<E> { tmlmap.addCommToHwCommNode(newChannel, mem); } + HwBus bus = tmlmap.getTMLArchitecture().getHwBusByName(myHwExecutionNode.getName() + "__bus"); + if (bus != null) { + tmlmap.addCommToHwCommNode(newChannel, bus); + /*if (mem != null) { + HwLink link = new HwLink(myHwExecutionNode.getName() + "__linkFromMemDest"); + tmlmap.getTMLArchitecture().addHwLink(link); + link.setNodes(bus, mem); + }*/ + } + // Must now modify the source app TMLAttribute pktlen = new TMLAttribute("pktlen", "pktlen", new TMLType(TMLType.NATURAL), "0"); t.addAttributeIfApplicable(pktlen); @@ -1003,7 +1023,7 @@ public class TranslatedRouter<E> { public void postProcessing() { TraceManager.addDev("Post processing of " + myHwExecutionNode.getName()); - TMLArchitecture arch = tmlmap.getTMLArchitecture(); + /*TMLArchitecture arch = tmlmap.getTMLArchitecture(); // Split multicores in mono cores if (myHwExecutionNode instanceof HwCPU) { @@ -1031,7 +1051,7 @@ public class TranslatedRouter<E> { } } - } + }*/ } -- GitLab