diff --git a/src/main/java/tmltranslator/HwRouter.java b/src/main/java/tmltranslator/HwRouter.java index 78b20031a2870e5223c8654c3eaca6f8fca71b28..4a05b2f596ff2eee61766adbd63d1e77deb5657b 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 0b5ac4c114ca22ed883056bde873de95c09f6203..28e10198a905dddd36591d0f34f8e9406cdacf51 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 995400af176640cdcb19dccf4b3bec5c474768dc..c32457004d763b90b8e498c5328f9bee26e0f2a8 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 1ca13222d27b75d337a9313609faf9ffc70a0c72..551fc75ec6c3d0cae52a33e23336b9def4cea2c5 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 5c9d6fa6fbe324a9c4fd6b3f7ed8ad3c78b3ff17..5cb5eb06d58e558250df87de727b3375d3bf5a53 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(); }