Index: branches/v5/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp
===================================================================
--- branches/v5/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp	(revision 448)
+++ branches/v5/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp	(revision 466)
@@ -85,10 +85,8 @@
 {
     // Vectors of ports definition
-    p_cmd_in        = alloc_elems<DspinInput<dspin_cmd_width> >("p_cmd_in", 2, 4);
-    p_cmd_out       = alloc_elems<DspinOutput<dspin_cmd_width> >("p_cmd_out", 2, 4);
-    p_rsp_in        = alloc_elems<DspinInput<dspin_rsp_width> >("p_rsp_in", 2, 4);
-    p_rsp_out       = alloc_elems<DspinOutput<dspin_rsp_width> >("p_rsp_out", 2, 4);
-    p_clack_in      = alloc_elems<DspinInput<dspin_cmd_width> >("p_clack_in", 4);
-    p_clack_out     = alloc_elems<DspinOutput<dspin_cmd_width> >("p_clack_out", 4);
+    p_cmd_in        = alloc_elems<DspinInput<dspin_cmd_width> >("p_cmd_in", 4, 3);
+    p_cmd_out       = alloc_elems<DspinOutput<dspin_cmd_width> >("p_cmd_out", 4, 3);
+    p_rsp_in        = alloc_elems<DspinInput<dspin_rsp_width> >("p_rsp_in", 4, 2);
+    p_rsp_out       = alloc_elems<DspinOutput<dspin_rsp_width> >("p_rsp_out", 4, 2);
 
     /////////////////////////////////////////////////////////////////////////////
@@ -289,4 +287,5 @@
                      x_id,y_id,                    // coordinate in the mesh
                      x_width, y_width,             // x & y fields width
+                     3,                            // nb virtual channels
                      4,4);                         // input & output fifo depths
 
@@ -296,11 +295,5 @@
                      x_id,y_id,                    // coordinates in mesh
                      x_width, y_width,             // x & y fields width
-                     4,4);                         // input & output fifo depths
-
-    /////////////////////////////////////////////////////////////////////////////
-    router_clack = new DspinRouter<dspin_cmd_width>(
-                     "router_clack",
-                     x_id,y_id,                    // coordinates in mesh
-                     x_width, y_width,             // x & y fields width
+                     2,                            // nb virtual channels
                      4,4);                         // input & output fifo depths
 
@@ -403,36 +396,31 @@
     router_rsp->p_clk                        (this->p_clk);
     router_rsp->p_resetn                     (this->p_resetn);
-    router_clack->p_clk                      (this->p_clk);
-    router_clack->p_resetn                   (this->p_resetn);
-
-    for (int x = 0; x < 2; x++)
-    {
-        for(int y = 0; y < 4; y++)
+
+    for(int i = 0; i < 4; i++)
+    {
+        for (int k = 0; k < 3; k++)
         {
-            router_cmd->p_out[x][y]          (this->p_cmd_out[x][y]);
-            router_cmd->p_in[x][y]           (this->p_cmd_in[x][y]);
-            router_rsp->p_out[x][y]          (this->p_rsp_out[x][y]);
-            router_rsp->p_in[x][y]           (this->p_rsp_in[x][y]);
+            router_cmd->p_out[i][k]          (this->p_cmd_out[i][k]);
+            router_cmd->p_in[i][k]           (this->p_cmd_in[i][k]);
         }
-    }
-
-    for(int x = 0; x < 4; x++)
-    {
-       router_clack->p_out[x]                (this->p_clack_out[x]);
-       router_clack->p_in[x]                 (this->p_clack_in[x]);
-    }
-
-    router_cmd->p_out[0][4]                  (signal_dspin_cmd_g2l_d);
-    router_cmd->p_out[1][4]                  (signal_dspin_m2p_g2l_c);
-    router_cmd->p_in[0][4]                   (signal_dspin_cmd_l2g_d);
-    router_cmd->p_in[1][4]                   (signal_dspin_m2p_l2g_c);
-
-    router_rsp->p_out[0][4]                  (signal_dspin_rsp_g2l_d);
-    router_rsp->p_out[1][4]                  (signal_dspin_p2m_g2l_c);
-    router_rsp->p_in[0][4]                   (signal_dspin_rsp_l2g_d);
-    router_rsp->p_in[1][4]                   (signal_dspin_p2m_l2g_c);
-
-    router_clack->p_out[4]                   (signal_dspin_clack_g2l_c);
-    router_clack->p_in[4]                    (signal_dspin_clack_l2g_c);
+
+        for (int k = 0; k < 2; k++)
+        {
+            router_rsp->p_out[i][k]          (this->p_rsp_out[i][k]);
+            router_rsp->p_in[i][k]           (this->p_rsp_in[i][k]);
+        }
+    }
+
+    router_cmd->p_out[4][0]                  (signal_dspin_cmd_g2l_d);
+    router_cmd->p_out[4][1]                  (signal_dspin_m2p_g2l_c);
+    router_cmd->p_out[4][2]                  (signal_dspin_clack_g2l_c);
+    router_cmd->p_in[4][0]                   (signal_dspin_cmd_l2g_d);
+    router_cmd->p_in[4][1]                   (signal_dspin_m2p_l2g_c);
+    router_cmd->p_in[4][2]                   (signal_dspin_clack_l2g_c);
+
+    router_rsp->p_out[4][0]                  (signal_dspin_rsp_g2l_d);
+    router_rsp->p_out[4][1]                  (signal_dspin_p2m_g2l_c);
+    router_rsp->p_in[4][0]                   (signal_dspin_rsp_l2g_d);
+    router_rsp->p_in[4][1]                   (signal_dspin_p2m_l2g_c);
 
 
