Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit.cpp	(revision 88)
@@ -38,4 +38,10 @@
     log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
 
+#if DEBUG_Read_unit_to_Execution_unit == true
+    log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
     log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Allocation");
 
@@ -47,5 +53,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {	
 	log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Allocation of statistics");
@@ -56,5 +62,5 @@
 
 #ifdef VHDL
-    if (_usage & USE_VHDL)
+    if (usage_is_set(_usage,USE_VHDL))
       {
 	// generate the vhdl
@@ -66,5 +72,5 @@
 
 #ifdef SYSTEMC
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Method - transition");
@@ -85,81 +91,88 @@
 
 	for (uint32_t i=0; i<_param->_nb_read_unit; i++)
-	  {
-	    sensitive << (*(in_READ_UNIT_OUT_VAL                   [i]))
-		      << (*(in_READ_UNIT_OUT_OPERATION             [i]))
-		      << (*(in_READ_UNIT_OUT_TYPE                  [i]))
-		      << (*(in_READ_UNIT_OUT_HAS_IMMEDIAT          [i]))
-		      << (*(in_READ_UNIT_OUT_IMMEDIAT              [i]))
-		      << (*(in_READ_UNIT_OUT_DATA_RA               [i]))
-		      << (*(in_READ_UNIT_OUT_DATA_RB               [i]))
-		      << (*(in_READ_UNIT_OUT_DATA_RC               [i]))
-		      << (*(in_READ_UNIT_OUT_WRITE_RD              [i]))
-		      << (*(in_READ_UNIT_OUT_NUM_REG_RD            [i]))
-		      << (*(in_READ_UNIT_OUT_WRITE_RE              [i]))
-		      << (*(in_READ_UNIT_OUT_NUM_REG_RE            [i]))
-		      << (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i]));
-
-	    if (_param->_have_port_load_queue_ptr)
-	    sensitive  << (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE  [i]));
-	    if (_param->_have_port_context_id)
-	    sensitive  << (*(in_READ_UNIT_OUT_CONTEXT_ID            [i]));
-	    if (_param->_have_port_front_end_id)
-	    sensitive  << (*(in_READ_UNIT_OUT_FRONT_END_ID          [i]));
-	    if (_param->_have_port_ooo_engine_id)
-	    sensitive  << (*(in_READ_UNIT_OUT_OOO_ENGINE_ID         [i]));
-	    if (_param->_have_port_packet_id)
-	    sensitive  << (*(in_READ_UNIT_OUT_PACKET_ID             [i]));
-	  }
+	  for (uint32_t j=0; j<_param->_nb_read_unit_port[i]; j++)
+	    {
+	      sensitive << (*(in_READ_UNIT_OUT_VAL                   [i][j]))
+			<< (*(in_READ_UNIT_OUT_OPERATION             [i][j]))
+			<< (*(in_READ_UNIT_OUT_TYPE                  [i][j]))
+			<< (*(in_READ_UNIT_OUT_HAS_IMMEDIAT          [i][j]))
+			<< (*(in_READ_UNIT_OUT_IMMEDIAT              [i][j]))
+			<< (*(in_READ_UNIT_OUT_DATA_RA               [i][j]))
+			<< (*(in_READ_UNIT_OUT_DATA_RB               [i][j]))
+			<< (*(in_READ_UNIT_OUT_DATA_RC               [i][j]))
+			<< (*(in_READ_UNIT_OUT_WRITE_RD              [i][j]))
+			<< (*(in_READ_UNIT_OUT_NUM_REG_RD            [i][j]))
+			<< (*(in_READ_UNIT_OUT_WRITE_RE              [i][j]))
+			<< (*(in_READ_UNIT_OUT_NUM_REG_RE            [i][j]))
+			<< (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i][j]));
+
+	      if (_param->_have_port_load_queue_ptr)
+	      sensitive  << (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE  [i][j]));
+	      if (_param->_have_port_context_id)
+	      sensitive  << (*(in_READ_UNIT_OUT_CONTEXT_ID            [i][j]));
+	      if (_param->_have_port_front_end_id)
+	      sensitive  << (*(in_READ_UNIT_OUT_FRONT_END_ID          [i][j]));
+	      if (_param->_have_port_ooo_engine_id)
+	      sensitive  << (*(in_READ_UNIT_OUT_OOO_ENGINE_ID         [i][j]));
+	      if (_param->_have_port_rob_ptr  )
+	      sensitive  << (*(in_READ_UNIT_OUT_PACKET_ID             [i][j]));
+	    }
 	
 	for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
-	  sensitive << (*(in_EXECUTE_UNIT_IN_ACK                 [i]));
+	  for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++)
+	    sensitive << (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
 	
 # ifdef SYSTEMCASS_SPECIFIC
 	// List dependency information
 	for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+	  for (uint32_t j=0; j<_param->_nb_read_unit_port[i]; j++)
 	  {
-	    (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_VAL           [i]));
-	    (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_TYPE          [i]));
+	    (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_VAL           [i][j]));
+	    (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_TYPE          [i][j]));
 	    if (_param->_have_port_context_id)
-	    (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [i]));
+	    (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [i][j]));
 	    if (_param->_have_port_front_end_id)
-	    (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [i]));
+	    (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [i][j]));
 	    if (_param->_have_port_ooo_engine_id)
-	    (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
-	      (*(out_READ_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_IN_ACK [j]));
+	    (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
+	      (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [x][y]));
 	  }
 
 	for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	  for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++)
 	  {
-	    (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	    (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
 	      }
 
 	    if (_param->_have_port_context_id)
 	      {
-	    (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	    (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
 	      }
 	      }
@@ -167,16 +180,17 @@
 	    if (_param->_have_port_front_end_id)
 	      {
-	    (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	    (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
 	      }
 	      }
@@ -184,232 +198,247 @@
 	    if (_param->_have_port_ooo_engine_id)
 	      {
-	    (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-	      }
-
-	    if (_param->_have_port_packet_id)
-	      {
-	    (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_PACKET_ID     [j]));
-		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-	      }
-
-	    (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_OPERATION     [j]));
-		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-
-	    (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-
-	    (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [j]));
-		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_VAL                   [j]));
-		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_TYPE                  [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID            [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID          [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	    (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+	      }
+
+	    if (_param->_have_port_rob_ptr  )
+	      {
+	    (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_PACKET_ID     [x][y]));
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_OPERATION     [x][y]));
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [x][y]));
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_VAL                   [x][y]));
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_TYPE                  [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID            [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID          [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
 	      }
 
 	    if (_param->_have_port_load_queue_ptr)
 	      {
-	    (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [j]));
-		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_VAL                  [j]));
-		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_TYPE                 [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID           [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID         [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID        [j]));
+	    (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [x][y]));
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_VAL                  [x][y]));
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_TYPE                 [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID           [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID         [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID        [x][y]));
 	      }
 	      }
 	    
-	    (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_HAS_IMMEDIAT  [j]));
-		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-
-	    (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_IMMEDIAT      [j]));
-		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-
-	    (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_DATA_RA       [j]));
-		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-
-	    (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_DATA_RB       [j]));
-		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-
-	    (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_DATA_RC       [j]));
-		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-
-	    (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_WRITE_RD      [j]));
-		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	    (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_HAS_IMMEDIAT  [x][y]));
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_IMMEDIAT      [x][y]));
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_DATA_RA       [x][y]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_DATA_RB       [x][y]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_DATA_RC       [x][y]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_WRITE_RD      [x][y]));
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
 	      }
 	    
-	    (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_NUM_REG_RD    [j]));
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-
-	    (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_WRITE_RE      [j]));
-		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
-	      }
-
-	    (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
-
-	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
-	      {
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_NUM_REG_RE    [j]));
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
-		if (_param->_have_port_context_id)
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
-		if (_param->_have_port_front_end_id)
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
-		if (_param->_have_port_ooo_engine_id)
-		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	    (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_NUM_REG_RD    [x][y]));
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_WRITE_RE      [x][y]));
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
+
+	    for (uint32_t x=0; x<_param->_nb_read_unit; x++)
+	      for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_NUM_REG_RE    [x][y]));
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
 	      }
 	  }
@@ -428,5 +457,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {
 	log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Generate Statistics file");
