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