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();
     }