diff --git a/src/main/java/tmltranslator/HwNoC.java b/src/main/java/tmltranslator/HwNoC.java index e64bd92abda8abb8f00e9ba5ba2e1a65051e78fb..e97c1e1ab2a05e5571440d798187909f3367d6ad 100755 --- a/src/main/java/tmltranslator/HwNoC.java +++ b/src/main/java/tmltranslator/HwNoC.java @@ -187,6 +187,16 @@ public class HwNoC extends HwCommunicationNode { return map; } + public String getHwExecutionNode(int x, int y) { + for(String s: placementMap.keySet()) { + Point p = placementMap.get(s); + if (p.x == x && p.y == y) { + return s; + } + } + return null; + } + diff --git a/src/main/java/tmltranslator/TMLArchitecture.java b/src/main/java/tmltranslator/TMLArchitecture.java index 25c439c9a638dba33bde437e619f422245054a8b..ac349bc629bd028e27608a9f544618dac5d534ba 100755 --- a/src/main/java/tmltranslator/TMLArchitecture.java +++ b/src/main/java/tmltranslator/TMLArchitecture.java @@ -306,6 +306,9 @@ public class TMLArchitecture { } public HwCPU getHwCPUByName(String _name) { + if (_name == null) { + return null; + } for (HwNode node : hwnodes) { if (node.getName().equals(_name)) { if (node instanceof HwCPU) { @@ -316,6 +319,21 @@ public class TMLArchitecture { return null; } + public HwExecutionNode getHwExecutionNodeByName(String _name) { + if (_name == null) { + return null; + } + + for (HwNode node : hwnodes) { + if (node.getName().equals(_name)) { + if (node instanceof HwExecutionNode) { + return (HwExecutionNode) node; + } + } + } + return null; + } + public HwBus getHwBusByName(String _name) { for (HwNode node : hwnodes) { if (node.getName().equals(_name)) { diff --git a/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java b/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java index 53d9b93e8eaf05f69cd6b1354bd20f831afe0664..b978a9a192161ca4521fb952d3bb65cede5695d8 100644 --- a/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java +++ b/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java @@ -122,7 +122,7 @@ public class TaskNetworkInterface extends TMLTask { loop.setInfinite(true); addElement(start, loop); - TMLActionState state = new TMLActionState("LoopExitSeeting", referenceObject); + TMLActionState state = new TMLActionState("LoopExitSetting", referenceObject); state.setAction("loopexit = 2"); addElement(loop, state); @@ -158,7 +158,7 @@ public class TaskNetworkInterface extends TMLTask { TMLChoice testingEvt = new TMLChoice("testingEvtVC", referenceObject); addElement(notifiedEvent, testingEvt); - TMLStopState endOfLoopNotified = new TMLStopState("NoEvetNorispkt", referenceObject); + TMLStopState endOfLoopNotified = new TMLStopState("NoEventNorispkt", referenceObject); addElement(testingEvt, endOfLoopNotified); testingEvt.addGuard("(nEvt == 0) and (ispkt" + i + " == 0)"); @@ -216,10 +216,14 @@ public class TaskNetworkInterface extends TMLTask { // No feedback TMLActionState noFeedbackAction = new TMLActionState("noFeedbackAction", referenceObject); - state.setAction("loopexit = 2"); + noFeedbackAction.setAction("loopexit = 2"); addElement(testOnFeedback, noFeedbackAction); testOnFeedback.addGuard("else"); + TMLStopState endOfNoFeedback = new TMLStopState("endOfNoFeedback", referenceObject); + addElement(noFeedbackAction, endOfNoFeedback); + + // Feedback present TMLWriteChannel sendingSample = new TMLWriteChannel("SendingSample", referenceObject); sendingSample.addChannel(outputChannel); diff --git a/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java b/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java index c6b92f616cc2189ffc944c65b39debe37f376e9c..275658098c5aedd51834076a1b81e48cc8a5804b 100644 --- a/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java +++ b/src/main/java/tmltranslator/tonetwork/TranslatedRouter.java @@ -91,9 +91,10 @@ public class TranslatedRouter<E> { // MUX for the different writing tasks - - - + // For each writing channel of the corresponding CPU, we need MUX to be created. + // We first get the corresponding CPU + String nameOfExecNode = noc.getHwExecutionNode(xPos, yPos); + HwExecutionNode execNode = tmlmap.getTMLArchitecture().getHwExecutionNodeByName(nameOfExecNode); // VC DISPATCHERS