From aa648d3bcda65cfd83bb66cdd2a8da421abed6a6 Mon Sep 17 00:00:00 2001 From: apvrille <ludovic.apvrille@eurecom.fr> Date: Thu, 17 Jan 2019 14:23:29 +0100 Subject: [PATCH] Adding NoC Size to routers --- src/main/java/tmltranslator/HwRouter.java | 1 + .../TMLArchiTextSpecification.java | 5 ++++ src/main/java/ui/GTMLModeling.java | 1 + .../java/ui/tmldd/TMLArchiRouterNode.java | 27 ++++++++++++++++++- .../java/ui/window/JDialogRouterNode.java | 12 ++++++++- 5 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/main/java/tmltranslator/HwRouter.java b/src/main/java/tmltranslator/HwRouter.java index 78b20031a2..4a05b2f596 100755 --- a/src/main/java/tmltranslator/HwRouter.java +++ b/src/main/java/tmltranslator/HwRouter.java @@ -56,6 +56,7 @@ public class HwRouter extends HwCommunicationNode { public int latency = 0; public int bufferByteSize = DEFAULT_BUFFER_BYTE_DATA_SIZE; // In bytes. Should more than 0 + public int size = 2; //2x2 by default public HwRouter(String _name) { super(_name); diff --git a/src/main/java/tmltranslator/TMLArchiTextSpecification.java b/src/main/java/tmltranslator/TMLArchiTextSpecification.java index 0b5ac4c114..28e10198a9 100755 --- a/src/main/java/tmltranslator/TMLArchiTextSpecification.java +++ b/src/main/java/tmltranslator/TMLArchiTextSpecification.java @@ -233,6 +233,7 @@ public class TMLArchiTextSpecification { set = "SET " + name + " "; code += "NODE ROUTER " + name + CR; code += set + "bufferByteSize " + router.bufferByteSize + CR; + code += set + "NoCSize " + router.size + CR; } // Memory @@ -722,6 +723,10 @@ public class TMLArchiTextSpecification { if (_split[2].toUpperCase().equals("BUFFERBYTESIZE")) { router.bufferByteSize = Integer.decode(_split[3]).intValue(); } + + if (_split[2].toUpperCase().equals("NOCSIZE")) { + router.size = Integer.decode(_split[3]).intValue(); + } } if (node instanceof HwMemory) { diff --git a/src/main/java/ui/GTMLModeling.java b/src/main/java/ui/GTMLModeling.java index 995400af17..c32457004d 100644 --- a/src/main/java/ui/GTMLModeling.java +++ b/src/main/java/ui/GTMLModeling.java @@ -3036,6 +3036,7 @@ public class GTMLModeling { router = new HwRouter(routerNode.getName()); router.bufferByteSize = routerNode.getBufferByteDataSize(); router.clockRatio = routerNode.getClockRatio(); + router.size = routerNode.getNoCSize(); listE.addCor(router, routerNode); archi.addHwNode(router); //TraceManager.addDev("Router node added:" + router.getName()); diff --git a/src/main/java/ui/tmldd/TMLArchiRouterNode.java b/src/main/java/ui/tmldd/TMLArchiRouterNode.java index 1ca13222d2..551fc75ec6 100755 --- a/src/main/java/ui/tmldd/TMLArchiRouterNode.java +++ b/src/main/java/ui/tmldd/TMLArchiRouterNode.java @@ -66,6 +66,7 @@ public class TMLArchiRouterNode extends TMLArchiCommunicationNode implements Swa private int derivationx = 2; private int derivationy = 3; private String stereotype = "ROUTER"; + private int size = 2; // 2x2 NoC by default private int bufferByteDataSize = HwBridge.DEFAULT_BUFFER_BYTE_DATA_SIZE; @@ -107,7 +108,7 @@ public class TMLArchiRouterNode extends TMLArchiCommunicationNode implements Swa removable = true; userResizable = true; - name = tdp.findNodeName("Router"); + name = tdp.findNodeName("NoC"); value = "name"; myImageIcon = IconManager.imgic700; @@ -212,6 +213,21 @@ public class TMLArchiRouterNode extends TMLArchiCommunicationNode implements Swa } } + if (dialog.getNoCSize().length() != 0) { + try { + tmp = size; + size = Integer.decode(dialog.getNoCSize()).intValue(); + if (size <= 1) { + size = tmp; + error = true; + errors += "size "; + } + } catch (Exception e) { + error = true; + errors += "Size "; + } + } + if (dialog.getClockRatio().length() != 0) { try { tmp = clockRatio; @@ -249,6 +265,7 @@ public class TMLArchiRouterNode extends TMLArchiCommunicationNode implements Swa sb.append("<info stereotype=\"" + stereotype + "\" nodeName=\"" + name); sb.append("\" />\n"); sb.append("<attributes bufferByteDataSize=\"" + bufferByteDataSize + "\" "); + sb.append(" size=\"" + size + "\" "); sb.append(" clockRatio=\"" + clockRatio + "\" "); sb.append("/>\n"); sb.append("</extraparam>\n"); @@ -289,6 +306,9 @@ public class TMLArchiRouterNode extends TMLArchiCommunicationNode implements Swa if (elt.getTagName().equals("attributes")) { bufferByteDataSize = Integer.decode(elt.getAttribute("bufferByteDataSize")).intValue(); + if ((elt.getAttribute("size") != null) && (elt.getAttribute("size").length() > 0)){ + size = Integer.decode(elt.getAttribute("size")).intValue(); + } if ((elt.getAttribute("clockRatio") != null) && (elt.getAttribute("clockRatio").length() > 0)){ clockRatio = Integer.decode(elt.getAttribute("clockRatio")).intValue(); } @@ -308,9 +328,14 @@ public class TMLArchiRouterNode extends TMLArchiCommunicationNode implements Swa return bufferByteDataSize; } + public int getNoCSize(){ + return size; + } + public String getAttributes() { String attr = ""; attr += "Buffer size (in byte) = " + bufferByteDataSize + "\n"; + attr += "Nb of routers = " + size + "x" + size + "\n"; attr += "Clock divider = " + clockRatio + "\n"; return attr; } diff --git a/src/main/java/ui/window/JDialogRouterNode.java b/src/main/java/ui/window/JDialogRouterNode.java index 5c9d6fa6fb..5cb5eb06d5 100644 --- a/src/main/java/ui/window/JDialogRouterNode.java +++ b/src/main/java/ui/window/JDialogRouterNode.java @@ -73,7 +73,7 @@ public class JDialogRouterNode extends JDialogBase implements ActionListener { protected JTextField nodeName; // Panel2 - protected JTextField bufferByteDataSize, clockRatio; + protected JTextField bufferByteDataSize, size, clockRatio; /* Creates new form */ public JDialogRouterNode(Frame _frame, String _title, TMLArchiRouterNode _node) { @@ -131,6 +131,12 @@ public class JDialogRouterNode extends JDialogBase implements ActionListener { bufferByteDataSize = new JTextField(""+node.getBufferByteDataSize(), 15); panel2.add(bufferByteDataSize, c2); + c2.gridwidth = 1; + panel2.add(new JLabel("Size x*x:"), c2); + c2.gridwidth = GridBagConstraints.REMAINDER; //end row + size = new JTextField(""+node.getNoCSize(), 15); + panel2.add(size, c2); + c2.gridwidth = 1; panel2.add(new JLabel("Clock divider:"), c2); c2.gridwidth = GridBagConstraints.REMAINDER; //end row @@ -190,6 +196,10 @@ public class JDialogRouterNode extends JDialogBase implements ActionListener { return bufferByteDataSize.getText(); } + public String getNoCSize() { + return size.getText(); + } + public String getClockRatio() { return clockRatio.getText(); } -- GitLab