Index: unk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/config_min.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/config_min.cfg	(revision 69)
+++ 	(revision )
@@ -1,17 +1,0 @@
-Reservation_station
-1	16	*2	# size_queue    
-1	1	*4	# nb_inst_retire
-1	1	*4	# nb_context         
-1	1	*4	# nb_front_end       
-1	1	*4	# nb_ooo_engine
-256	256	*2	# nb_packet          
-16	16	+1	# size_general_data  
-16	16	+1	# size_special_data  
-8	8	*2	# nb_general_register
-8	8	+1	# nb_special_register
-4	4	+1	# nb_operation       
-4	4	+1	# nb_type            
-1	1	*2	# nb_gpr_write
-1	1	*2	# nb_spr_write
-0	0	*2	# nb_bypass_write 
-0	0	*2	# nb_bypass_memory
Index: unk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration.cfg	(revision 69)
+++ 	(revision )
@@ -1,17 +1,0 @@
-Reservation_station
-1 	1 	*2	# size_queue    
-1	1	*4	# nb_inst_retire
-1	1	*4	# nb_context         
-1	1	*4	# nb_front_end       
-4	4	*4	# nb_ooo_engine
-64 	64 	*2	# nb_packet          
-16	16	+1	# size_general_data  
-16	16	+1	# size_special_data  
-8 	8 	*2	# nb_general_register
-8 	8 	+1	# nb_special_register
-8	8	+1	# nb_operation       
-4	4	+1	# nb_type            
-1	1	*2	# nb_gpr_write
-1	1	*2	# nb_spr_write
-0	0	*2	# nb_bypass_write 
-0	0	*2	# nb_bypass_memory
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_min.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_min.cfg	(revision 70)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_min.cfg	(revision 70)
@@ -0,0 +1,17 @@
+Reservation_station
+1	16	*2	# size_queue    
+1	1	*4	# nb_inst_retire
+1	1	*4	# nb_context         
+1	1	*4	# nb_front_end       
+1	1	*4	# nb_ooo_engine
+256	256	*2	# nb_packet          
+16	16	+1	# size_general_data  
+16	16	+1	# size_special_data  
+8	8	*2	# nb_general_register
+8	8	+1	# nb_special_register
+4	4	+1	# nb_operation       
+4	4	+1	# nb_type            
+1	1	*2	# nb_gpr_write
+1	1	*2	# nb_spr_write
+0	0	*2	# nb_bypass_write 
+0	0	*2	# nb_bypass_memory
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_memory.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_memory.cfg	(revision 70)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_memory.cfg	(revision 70)
@@ -0,0 +1,17 @@
+Reservation_station
+1 	16 	*2	# size_queue    
+1	1	*4	# nb_inst_retire
+1	1	*4	# nb_context         
+1	1	*4	# nb_front_end       
+4	4	*4	# nb_ooo_engine
+64 	64 	*2	# nb_packet          
+16	16	+1	# size_general_data  
+16	16	+1	# size_special_data  
+8 	8 	*2	# nb_general_register
+8 	8 	+1	# nb_special_register
+8	8	+1	# nb_operation       
+4	4	+1	# nb_type            
+1	1	*2	# nb_gpr_write
+1	1	*2	# nb_spr_write
+0	0	*2	# nb_bypass_write 
+1	4	*2	# nb_bypass_memory
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_write.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_write.cfg	(revision 70)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_write.cfg	(revision 70)
@@ -0,0 +1,17 @@
+Reservation_station
+1 	16 	*2	# size_queue    
+1	1	*4	# nb_inst_retire
+1	1	*4	# nb_context         
+1	1	*4	# nb_front_end       
+4	4	*4	# nb_ooo_engine
+64 	64 	*2	# nb_packet          
+16	16	+1	# size_general_data  
+16	16	+1	# size_special_data  
+8 	8 	*2	# nb_general_register
+8 	8 	+1	# nb_special_register
+8	8	+1	# nb_operation       
+4	4	+1	# nb_type            
+1	1	*2	# nb_gpr_write
+1	1	*2	# nb_spr_write
+1	4	*2	# nb_bypass_write 
+0	0	*2	# nb_bypass_memory
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire2.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire2.cfg	(revision 70)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire2.cfg	(revision 70)
@@ -0,0 +1,17 @@
+Reservation_station
+2 	16 	*2	# size_queue    
+2	2	*4	# nb_inst_retire
+1	1	*4	# nb_context         
+1	1	*4	# nb_front_end       
+4	4	*4	# nb_ooo_engine
+64 	64 	*2	# nb_packet          
+16	16	+1	# size_general_data  
+16	16	+1	# size_special_data  
+8 	8 	*2	# nb_general_register
+8 	8 	+1	# nb_special_register
+8	8	+1	# nb_operation       
+4	4	+1	# nb_type            
+1	1	*2	# nb_gpr_write
+1	1	*2	# nb_spr_write
+0	0	*2	# nb_bypass_write 
+0	0	*2	# nb_bypass_memory
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire4.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire4.cfg	(revision 70)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire4.cfg	(revision 70)
@@ -0,0 +1,17 @@
+Reservation_station
+4 	16 	*2	# size_queue    
+4	4	*4	# nb_inst_retire
+1	1	*4	# nb_context         
+1	1	*4	# nb_front_end       
+4	4	*4	# nb_ooo_engine
+64 	64 	*2	# nb_packet          
+16	16	+1	# size_general_data  
+16	16	+1	# size_special_data  
+8 	8 	*2	# nb_general_register
+8 	8 	+1	# nb_special_register
+8	8	+1	# nb_operation       
+4	4	+1	# nb_type            
+1 	1	*2	# nb_gpr_write
+1	1	*2	# nb_spr_write
+0	0	*2	# nb_bypass_write 
+0	0	*2	# nb_bypass_memory
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_write.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_write.cfg	(revision 70)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_write.cfg	(revision 70)
@@ -0,0 +1,17 @@
+Reservation_station
+1 	16 	*2	# size_queue    
+1	1	*4	# nb_inst_retire
+1	1	*4	# nb_context         
+1	1	*4	# nb_front_end       
+4	4	*4	# nb_ooo_engine
+64 	64 	*2	# nb_packet          
+16	16	+1	# size_general_data  
+16	16	+1	# size_special_data  
+8 	8 	*2	# nb_general_register
+8 	8 	+1	# nb_special_register
+8	8	+1	# nb_operation       
+4	4	+1	# nb_type            
+2	4	*2	# nb_gpr_write
+2	4	*2	# nb_spr_write
+0	0	*2	# nb_bypass_write 
+0	0	*2	# nb_bypass_memory
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp	(revision 69)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp	(revision 70)
@@ -39,72 +39,75 @@
     // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~
 
-    uint32_t nb_slot_find = 0;
-    for (uint32_t i=0; (
-#ifdef  SYSTEMC_VHDL_COMPATIBILITY
-			(i<_param->_size_queue) 
-#else
-			(i<_queue_control->nb_elt())
-#endif
-			and (nb_slot_find < _param->_nb_inst_retire)
-
-			)
-			; i++)
-      {
-	uint32_t index;
-#ifdef  SYSTEMC_VHDL_COMPATIBILITY
-	index = i;
-#else
-	index = (*_queue_control)[i];
-#endif
-	bool     val   = 
-	  (
-#ifdef  SYSTEMC_VHDL_COMPATIBILITY
-	   _queue_valid [i]           and
-#endif
-	   _queue[index]._data_ra_val and 
-	   _queue[index]._data_rb_val and 
-	   _queue[index]._data_rc_val);
-
-	if (val == true)
-	  {
-	    internal_RETIRE_SLOT [nb_slot_find] = i;
-	    nb_slot_find ++;
-	  }
-      }
+    uint32_t index_queue=0;
+    const uint32_t nb_slot_scan = _param->_size_queue-_param->_nb_inst_retire+1;
 
     for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
       {
-	bool val                = i<nb_slot_find;
+	bool     val        = false;
+	uint32_t index_find = 0;;
+
+	for (; (
+#ifndef  SYSTEMC_VHDL_COMPATIBILITY
+		(index_queue<_queue_control->nb_elt()) and
+#endif
+		(index_queue>=i) and 
+		(index_queue<nb_slot_scan+i) and 
+		(val==false));
+	     index_queue++)
+	  {
+#ifdef  SYSTEMC_VHDL_COMPATIBILITY
+	    index_find = index_queue;
+#else
+	    index_find = (*_queue_control)[index_queue];
+#endif
+	    internal_RETIRE_SLOT [i] = index_queue;
+
+	    val   = 
+	      (
+#ifdef  SYSTEMC_VHDL_COMPATIBILITY
+	       _queue_valid [index_queue]      and
+#endif
+	       _queue[index_find]._data_ra_val and 
+	       _queue[index_find]._data_rb_val and 
+	       _queue[index_find]._data_rc_val
+	       );
+
+// 	    cout << "========== Moore : " << endl
+// 		 << " * i           : " << i << endl
+// 		 << " * val         : " << val << endl
+// 		 << " * index_queue : " << index_queue << endl
+// 		 << " * index_find  : " << index_find << endl;
+	  }
+
 	internal_RETIRE_VAL [i] = val;
-
 	PORT_WRITE(out_RETIRE_VAL [i], val);
 
 	if (val)
 	  {
-	    uint32_t index;
-#ifdef  SYSTEMC_VHDL_COMPATIBILITY
-	    index = internal_RETIRE_SLOT [i];
-#else
-	    index = (*_queue_control)[internal_RETIRE_SLOT [i]];
-#endif
+
+// #ifdef  SYSTEMC_VHDL_COMPATIBILITY
+// 	    index_find = internal_RETIRE_SLOT [i];
+// #else
+// 	    index_find = (*_queue_control)[internal_RETIRE_SLOT [i]];
+// #endif
 	    if (_param->_have_port_context_id)
-	    PORT_WRITE(out_RETIRE_CONTEXT_ID    [i],_queue[index]._context_id);
+	    PORT_WRITE(out_RETIRE_CONTEXT_ID    [i],_queue[index_find]._context_id);
 	    if (_param->_have_port_front_end_id)
-	    PORT_WRITE(out_RETIRE_FRONT_END_ID  [i],_queue[index]._front_end_id);
+	    PORT_WRITE(out_RETIRE_FRONT_END_ID  [i],_queue[index_find]._front_end_id);
 	    if (_param->_have_port_ooo_engine_id)
-	    PORT_WRITE(out_RETIRE_OOO_ENGINE_ID [i],_queue[index]._ooo_engine_id);
+	    PORT_WRITE(out_RETIRE_OOO_ENGINE_ID [i],_queue[index_find]._ooo_engine_id);
 	    if (_param->_have_port_rob_id)
-	    PORT_WRITE(out_RETIRE_ROB_ID        [i],_queue[index]._rob_id);
-	    PORT_WRITE(out_RETIRE_OPERATION     [i],_queue[index]._operation);
-	    PORT_WRITE(out_RETIRE_TYPE          [i],_queue[index]._type);
-	    PORT_WRITE(out_RETIRE_HAS_IMMEDIAT  [i],_queue[index]._has_immediat);
-	    PORT_WRITE(out_RETIRE_IMMEDIAT      [i],_queue[index]._immediat);
-	    PORT_WRITE(out_RETIRE_DATA_RA       [i],_queue[index]._data_ra);
-	    PORT_WRITE(out_RETIRE_DATA_RB       [i],_queue[index]._data_rb);
-	    PORT_WRITE(out_RETIRE_DATA_RC       [i],_queue[index]._data_rc);
-	    PORT_WRITE(out_RETIRE_WRITE_RD      [i],_queue[index]._write_rd);
-	    PORT_WRITE(out_RETIRE_NUM_REG_RD    [i],_queue[index]._num_reg_rd);
-	    PORT_WRITE(out_RETIRE_WRITE_RE      [i],_queue[index]._write_re);
-	    PORT_WRITE(out_RETIRE_NUM_REG_RE    [i],_queue[index]._num_reg_re);
+	    PORT_WRITE(out_RETIRE_ROB_ID        [i],_queue[index_find]._rob_id);
+	    PORT_WRITE(out_RETIRE_OPERATION     [i],_queue[index_find]._operation);
+	    PORT_WRITE(out_RETIRE_TYPE          [i],_queue[index_find]._type);
+	    PORT_WRITE(out_RETIRE_HAS_IMMEDIAT  [i],_queue[index_find]._has_immediat);
+	    PORT_WRITE(out_RETIRE_IMMEDIAT      [i],_queue[index_find]._immediat);
+	    PORT_WRITE(out_RETIRE_DATA_RA       [i],_queue[index_find]._data_ra);
+	    PORT_WRITE(out_RETIRE_DATA_RB       [i],_queue[index_find]._data_rb);
+	    PORT_WRITE(out_RETIRE_DATA_RC       [i],_queue[index_find]._data_rc);
+	    PORT_WRITE(out_RETIRE_WRITE_RD      [i],_queue[index_find]._write_rd);
+	    PORT_WRITE(out_RETIRE_NUM_REG_RD    [i],_queue[index_find]._num_reg_rd);
+	    PORT_WRITE(out_RETIRE_WRITE_RE      [i],_queue[index_find]._write_re);
+	    PORT_WRITE(out_RETIRE_NUM_REG_RE    [i],_queue[index_find]._num_reg_re);
 	  }
       }
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp	(revision 69)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp	(revision 70)
@@ -89,5 +89,5 @@
 		//uint32_t index = (*_queue_control)[i];
 
-		log_printf(TRACE,Reservation_station,FUNCTION,"POP  [%d]",i);
+		log_printf(NONE,Reservation_station,FUNCTION,"POP  [%d]",i);
 
 		uint32_t index  = internal_RETIRE_SLOT[i];
@@ -98,8 +98,13 @@
 		_queue_control->pop(index);
 #endif
-		log_printf(TRACE,Reservation_station,FUNCTION," * index         : %d",index);
-// 		dump_queue();
+// 		cout << "========== Transition : " << endl
+// 		     << " * i           : " << i << endl
+// 		     << " * index       : " << index << endl;
+
+		log_printf(NONE,Reservation_station,FUNCTION," * index         : %d",index);
 	      }
 	  }
+	
+// 	dump_queue();
 
 	// ***** Bypass
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_body.cpp	(revision 69)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_body.cpp	(revision 70)
@@ -63,5 +63,5 @@
 	    for (uint32_t k=0; k<i; k++)
 	      {
-		vhdl->set_body ("\t\tnot (internal_RETIRE_SLOT_"+toString(k)+" = "+std_logic_conv(log2(_param->_size_queue),j)+std_logic_range(log2(_param->_size_queue))+") and");
+		vhdl->set_body ("\t\tnot (internal_RETIRE_SLOT_"+toString(k)+std_logic_range(log2(_param->_size_queue)+1,log2(_param->_size_queue)-1,0)+" = "+std_logic_conv(log2(_param->_size_queue),j)+std_logic_range(log2(_param->_size_queue))+") and");
 	      }
 	    vhdl->set_body ("\t\t(reg_VAL        ("+toString(j)+")='1') and");
