Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/configuration.cfg	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/configuration.cfg	(revision 110)
@@ -5,4 +5,5 @@
 2	4	*2	# size_store_queue                 [0]    [nb_load_store_queue]
 1	4	*2	# size_load_queue                  [0]    [nb_load_store_queue]
+1	4	*4	# nb_inst_memory                   [0]    [nb_load_store_queue]
 0	0	+1	# link_load_store_unit_with_thread [0][0] [nb_front_end][nb_context]
 1	4	*4	# nb_inst_insert
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/src/main.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/src/main.cpp	(revision 110)
@@ -19,4 +19,5 @@
   err (_(" * size_store_queue                 [nb_load_store_queue]     (uint32_t)\n"));
   err (_(" * size_load_queue                  [nb_load_store_queue]     (uint32_t)\n"));
+  err (_(" * nb_inst_memory                   [nb_load_store_queue]     (uint32_t)\n"));
   err (_(" * link_load_store_unit_with_thread [nb_front_end][nb_context](uint32_t)\n"));
   err (_(" * nb_inst_insert                                             (uint32_t)\n"));
@@ -53,9 +54,10 @@
   uint32_t    _nb_load_store_queue              = fromString<uint32_t>(argv[x++]);
   
-  if (argc != static_cast<int>(2+NB_PARAMS+_nb_front_end+2*_nb_load_store_queue+nb_thread))
+  if (argc != static_cast<int>(2+NB_PARAMS+_nb_front_end+3*_nb_load_store_queue+nb_thread))
     usage (argc, argv);
 
   uint32_t  * _size_store_queue                 = new uint32_t [_nb_load_store_queue];
   uint32_t  * _size_load_queue                  = new uint32_t [_nb_load_store_queue];
+  uint32_t  * _nb_inst_memory                   = new uint32_t [_nb_load_store_queue];
   
   for (uint32_t i=0; i<_nb_load_store_queue; i++)
@@ -63,4 +65,6 @@
   for (uint32_t i=0; i<_nb_load_store_queue; i++)
     _size_load_queue  [i] = atoi(argv[x++]);
+  for (uint32_t i=0; i<_nb_load_store_queue; i++)
+    _nb_inst_memory   [i] = atoi(argv[x++]);
   
   uint32_t ** _link_load_store_unit_with_thread = new uint32_t * [_nb_front_end];
@@ -84,4 +88,5 @@
 	 _size_store_queue                ,
 	 _size_load_queue                 ,
+	 _nb_inst_memory                  ,
 	 _link_load_store_unit_with_thread,
 	 _nb_inst_insert                  ,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/include/Parameters.h	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/include/Parameters.h	(revision 110)
@@ -29,7 +29,11 @@
   public : uint32_t  * _size_store_queue                ; //[nb_load_store_queue]
   public : uint32_t  * _size_load_queue                 ; //[nb_load_store_queue]
+  public : uint32_t  * _nb_inst_memory                  ; //[nb_load_store_queue]
   public : uint32_t ** _link_load_store_unit_with_thread; //[nb_front_end][nb_context]
   public : uint32_t    _nb_inst_insert                  ;
   public : uint32_t    _nb_inst_retire                  ;
+
+  public : uint32_t    _max_size_store_queue            ;
+  public : uint32_t    _max_size_load_queue             ;
 
 //public : uint32_t    _size_front_end_id               ;
@@ -50,4 +54,5 @@
 			uint32_t  * size_store_queue                ,
 			uint32_t  * size_load_queue                 ,
+			uint32_t  * nb_inst_memory                  ,
 			uint32_t ** link_load_store_unit_with_thread,
 			uint32_t    nb_inst_insert                  ,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_insert.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_insert.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_insert.cpp	(revision 110)
@@ -22,52 +22,99 @@
   void Load_Store_pointer_unit::genMealy_insert (void)
   {
-    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin");
+    log_begin(Load_Store_pointer_unit,FUNCTION);
+    log_function(Load_Store_pointer_unit,FUNCTION,_name.c_str());
 
-    bool use_lsq [_param->_nb_load_store_queue];
+    // TODO : limité à nb_inst_memory le nombre d'accès par lsq !!!
+
+    uint32_t   nb_use_lsq            [_param->_nb_load_store_queue];
+    Tlsq_ptr_t STORE_QUEUE_PTR_WRITE [_param->_nb_load_store_queue];
+    bool       STORE_QUEUE_USE       [_param->_nb_load_store_queue][_param->_max_size_store_queue];
+    Tlsq_ptr_t STORE_QUEUE_NB_USE    [_param->_nb_load_store_queue];
+    Tlsq_ptr_t LOAD_QUEUE_PTR_WRITE  [_param->_nb_load_store_queue];
+    bool       LOAD_QUEUE_USE        [_param->_nb_load_store_queue][_param->_max_size_load_queue];
+    
     for (uint32_t i=0; i<_param->_nb_load_store_queue; i++)
-      use_lsq [i] = false;
+      {
+        nb_use_lsq            [i] = _param->_nb_inst_memory[i];
+
+        STORE_QUEUE_PTR_WRITE [i] = reg_STORE_QUEUE_PTR_WRITE [i];
+        STORE_QUEUE_NB_USE    [i] = reg_STORE_QUEUE_NB_USE    [i];
+        LOAD_QUEUE_PTR_WRITE  [i] = reg_LOAD_QUEUE_PTR_WRITE  [i];
+	
+        for (uint32_t j=0; j<_param->_size_store_queue[i]; j++)
+          STORE_QUEUE_USE [i][j] = reg_STORE_QUEUE_USE [i][j];
+        for (uint32_t j=0; j<_param->_size_load_queue[i]; j++)
+          LOAD_QUEUE_USE  [i][j] = reg_LOAD_QUEUE_USE  [i][j];
+      }
 
     for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
       {
+        log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * INSERT [%d]",i);
+
 	Tcontrol_t ack                   = false;
-	Tlsq_ptr_t store_queue_ptr_write = 0;
-	Tlsq_ptr_t load_queue_ptr_write  = 0;
 
 	if ( (PORT_READ(in_INSERT_VAL  [i]) == true       ) and
 	     (PORT_READ(in_INSERT_TYPE [i]) == TYPE_MEMORY))
 	  {
+            log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * type is memory");
+
 	    Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_INSERT_FRONT_END_ID [i]):0;
 	    Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_INSERT_CONTEXT_ID   [i]):0;
-	    
 	    uint32_t   lsq          = _param->_link_load_store_unit_with_thread[front_end_id][context_id];
+
+            log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * front_end_id : %d",front_end_id);
+            log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * context_id   : %d",context_id  );
+            log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lsq          : %d",lsq         );
 
 	    // Test if a previous instruction use the same lsq
 	    // Authorize once memory access by load store unit
-	    if (use_lsq [lsq] == false)
+	    if (nb_use_lsq [lsq] > 0)
 	      {
-		use_lsq [lsq] = true;
+		nb_use_lsq [lsq] --;
 
 		uint32_t   ptr;
-		
-		store_queue_ptr_write   = reg_STORE_QUEUE_PTR_WRITE [lsq];
-		load_queue_ptr_write    = reg_LOAD_QUEUE_PTR_WRITE  [lsq];
+
+                PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_WRITE [i], STORE_QUEUE_PTR_WRITE [lsq]);
+                if (_param->_have_port_load_queue_ptr)
+                PORT_WRITE(out_INSERT_LOAD_QUEUE_PTR_WRITE  [i], LOAD_QUEUE_PTR_WRITE  [lsq]);
+
+                log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * sq_ptr_write : %d",STORE_QUEUE_PTR_WRITE [lsq]);
+                log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lq_ptr_write : %d",LOAD_QUEUE_PTR_WRITE [lsq]);
 		
 		// operation became of decod_stage. Also operation is != store_head_ok and store_head_ko
 		if (is_operation_memory_store(PORT_READ(in_INSERT_OPERATION [i])))
 		  {
+                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * USE_STORE_QUEUE");
+                
 		    internal_INSERT_OPERATION_USE [i] = OPERATION_USE_STORE_QUEUE;
 		    
-		    ptr = reg_STORE_QUEUE_PTR_WRITE [lsq];
+		    ptr = STORE_QUEUE_PTR_WRITE [lsq];
+		    ack = not STORE_QUEUE_USE [lsq][ptr] and (static_cast<uint32_t>(STORE_QUEUE_NB_USE [lsq]+1) < _param->_size_store_queue[lsq]);
 
-		    ack = not reg_STORE_QUEUE_USE [lsq][ptr] and (static_cast<uint32_t>(reg_STORE_QUEUE_NB_USE [lsq]+1) < _param->_size_store_queue[lsq]);
+                    if (ack)
+                      {
+                        STORE_QUEUE_PTR_WRITE [lsq]      = (ptr+1)%_param->_size_store_queue[lsq];
+                        STORE_QUEUE_NB_USE    [lsq]      ++;
+                        STORE_QUEUE_USE       [lsq][ptr] = true;
+                      }
 		  }
 		else
 		  {
+                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * USE_LOAD_QUEUE");
+
 		    internal_INSERT_OPERATION_USE [i] = OPERATION_USE_LOAD_QUEUE;
 		    
-		    ptr = reg_LOAD_QUEUE_PTR_WRITE [lsq];
+		    ptr = LOAD_QUEUE_PTR_WRITE [lsq];
+		    ack = (not LOAD_QUEUE_USE [lsq][ptr]);
 
-		    ack = (not reg_LOAD_QUEUE_USE [lsq][ptr]);
+                    if (ack)
+                      {
+                        LOAD_QUEUE_PTR_WRITE [lsq]      = (ptr+1)%_param->_size_load_queue[lsq];
+                        LOAD_QUEUE_USE       [lsq][ptr] = true;
+                      }
 		  }
+
+                log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr          : %d",ptr         );
+                log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ack          : %d",ack         );
 		
 		internal_INSERT_LSQ [i] = lsq;
@@ -85,10 +132,7 @@
 	internal_INSERT_ACK [i] = ack;
 	PORT_WRITE(out_INSERT_ACK                   [i], ack);
-	PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_WRITE [i], store_queue_ptr_write);
-	if (_param->_have_port_load_queue_ptr)
-	PORT_WRITE(out_INSERT_LOAD_QUEUE_PTR_WRITE  [i], load_queue_ptr_write );
       }
 
-    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"End");
+    log_end(Load_Store_pointer_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_retire.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_retire.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_retire.cpp	(revision 110)
@@ -24,11 +24,11 @@
     log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin");
     
-    bool use_lsq [_param->_nb_load_store_queue];
-    for (uint32_t i=0; i<_param->_nb_load_store_queue; i++)
-      use_lsq [i] = false;
+//     bool use_lsq [_param->_nb_load_store_queue];
+//     for (uint32_t i=0; i<_param->_nb_load_store_queue; i++)
+//       use_lsq [i] = false;
 
     for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
       {
-	Tcontrol_t ack = false;
+	Tcontrol_t ack = true; // always accept
 	Tcontrol_t use_sq  = PORT_READ(in_RETIRE_USE_STORE_QUEUE [i]);
 	Tcontrol_t use_lq  = PORT_READ(in_RETIRE_USE_LOAD_QUEUE  [i]);
@@ -41,9 +41,9 @@
 
 	    // Test if a previous instruction use the same lsq
-	    // Authorize once memory access by load store unit
-	    if (use_lsq [lsq] == false)
+// 	    // Authorize once memory access by load store unit
+// 	    if (use_lsq [lsq] == false)
 	      {
-		use_lsq [lsq] = true;
-		ack = true;
+// 		use_lsq [lsq] = true;
+// 		ack = true;
 
 		uint32_t   ptr;
@@ -70,5 +70,5 @@
 	else
 	  {
-	    ack = true;
+// 	    ack = true;
 
 	    internal_RETIRE_OPERATION_USE [i] = OPERATION_USE_NONE;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_transition.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_transition.cpp	(revision 110)
@@ -22,5 +22,6 @@
   void Load_Store_pointer_unit::transition (void)
   {
-    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin");
+    log_begin(Load_Store_pointer_unit,FUNCTION);
+    log_function(Load_Store_pointer_unit,FUNCTION,_name.c_str());
 
     if (PORT_READ(in_NRESET) == 0)
@@ -47,5 +48,5 @@
 	  if (PORT_READ(in_INSERT_VAL [i]) and internal_INSERT_ACK [i])
 	    {
-// 	      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"INSERT [%d]",i);
+ 	      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * INSERT [%d]",i);
 	      
 	      switch (internal_INSERT_OPERATION_USE [i])
@@ -53,11 +54,11 @@
 		case OPERATION_USE_STORE_QUEUE :
 		  {
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * use STORE_QUEUE");
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * use STORE_QUEUE");
 
 		    uint32_t   lsq = internal_INSERT_LSQ [i];
 		    Tlsq_ptr_t ptr = internal_INSERT_PTR [i];
 
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * lsq : %d",lsq);
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * ptr : %d",ptr);
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lsq : %d",lsq);
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr : %d",ptr);
 
 		    reg_STORE_QUEUE_PTR_WRITE [lsq]      = (ptr+1)%_param->_size_store_queue[lsq];
@@ -69,11 +70,11 @@
 		case OPERATION_USE_LOAD_QUEUE :
 		  {
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * use LOAD_QUEUE");
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * use LOAD_QUEUE");
 
 		    uint32_t   lsq = internal_INSERT_LSQ [i];
 		    Tlsq_ptr_t ptr = internal_INSERT_PTR [i];
 		    
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * lsq : %d",lsq);
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * ptr : %d",ptr);
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lsq : %d",lsq);
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr : %d",ptr);
 
 		    reg_LOAD_QUEUE_PTR_WRITE [lsq]      = (ptr+1)%_param->_size_load_queue[lsq];
@@ -95,5 +96,5 @@
 	  if (PORT_READ(in_RETIRE_VAL [i]) and internal_RETIRE_ACK [i])
 	    {
-// 	      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"RETIRE [%d]",i);
+ 	      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * RETIRE [%d]",i);
 
 	      switch (internal_RETIRE_OPERATION_USE [i])
@@ -101,11 +102,11 @@
 		case OPERATION_USE_STORE_QUEUE :
 		  {
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * use STORE_QUEUE");
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * use STORE_QUEUE");
 
 		    uint32_t   lsq = internal_RETIRE_LSQ [i];
 		    Tlsq_ptr_t ptr = internal_RETIRE_PTR [i];
 
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * lsq : %d",lsq);
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * ptr : %d",ptr);
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lsq : %d",lsq);
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr : %d",ptr);
 		    
 // 		    reg_STORE_QUEUE_PTR_WRITE [lsq]      = ((ptr==0)?_param->_size_store_queue[lsq]:ptr)-1;
@@ -117,11 +118,11 @@
 		case OPERATION_USE_LOAD_QUEUE :
 		  {
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * use LOAD_QUEUE");
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * use LOAD_QUEUE");
 
 		    uint32_t   lsq = internal_RETIRE_LSQ [i];
 		    Tlsq_ptr_t ptr = internal_RETIRE_PTR [i];
 		    
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * lsq : %d",lsq);
-// 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * ptr : %d",ptr);
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lsq : %d",lsq);
+ 		    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr : %d",ptr);
 		    
 // 		    reg_LOAD_QUEUE_PTR_WRITE [lsq]      = ((ptr==0)?_param->_size_load_queue[lsq]:ptr)-1;
@@ -138,26 +139,27 @@
       }
 
+    // ===================================================================
+    // =====[ OTHER ]=====================================================
+    // ===================================================================
 
-//     for (uint32_t i=0; i<_param->_nb_load_store_queue; i++)
-//       {
-// 	std::string str;
-
-// 	log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"LOAD_STORE_QUEUE [%d]",i);
-
-// 	log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * STORE_QUEUE_PTR_WRITE : %d",reg_STORE_QUEUE_PTR_WRITE [i]);
-// 	log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * STORE_QUEUE_NB_USE    : %d",reg_STORE_QUEUE_NB_USE    [i]);
-
-// 	str = "";
-// 	for (uint32_t j=0; j<_param->_size_store_queue[i]; j++)
-// 	  str += toString(reg_STORE_QUEUE_USE [i][j]) + " ";
-// 	log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * %s",str.c_str());
-	
-// 	log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * LOAD_QUEUE_PTR_WRITE  : %d",reg_LOAD_QUEUE_PTR_WRITE [i]);
-
-// 	str = "";
-// 	for (uint32_t j=0; j<_param->_size_load_queue[i]; j++)
-// 	  str += toString(reg_LOAD_QUEUE_USE [i][j]) + " ";
-// 	log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * %s",str.c_str());
-//       }
+#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Commit_unit == true)
+    {
+      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * Dump Load_Store_pointer Unit");
+      
+      for (uint32_t i=0; i<_param->_nb_load_store_queue; ++i)
+        {
+          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * Load_Store_unit [%d]",i);
+          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"      * reg_STORE_QUEUE_NB_USE    : %d", reg_STORE_QUEUE_NB_USE   [i]);
+          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"      * reg_STORE_QUEUE_PTR_WRITE : %d", reg_STORE_QUEUE_PTR_WRITE[i]);
+          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"      * reg_STORE_QUEUE_USE       :");
+          for (uint32_t j=0; j<_param->_size_store_queue [i]; ++j)
+          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"        [%d] %d",j,reg_STORE_QUEUE_USE [i][j]);
+          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"      * reg_LOAD_QUEUE_PTR_WRITE  : %d", reg_LOAD_QUEUE_PTR_WRITE [i]);
+          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"      * reg_LOAD_QUEUE_USE        :");
+          for (uint32_t j=0; j<_param->_size_load_queue [i]; ++j)
+          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"        [%d] %d",j,reg_LOAD_QUEUE_USE [i][j]);
+        }
+    }
+#endif
 
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
@@ -165,5 +167,5 @@
 #endif
 
-    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"End");
+    log_end(Load_Store_pointer_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Parameters.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Parameters.cpp	(revision 110)
@@ -22,9 +22,10 @@
   Parameters::Parameters (uint32_t    nb_front_end                    ,
 			  uint32_t  * nb_context                      ,
-//                           uint32_t    size_front_end_id               ,
-//                           uint32_t    size_context_id                 ,
+//                        uint32_t    size_front_end_id               ,
+//                        uint32_t    size_context_id                 ,
 			  uint32_t    nb_load_store_queue             ,
 			  uint32_t  * size_store_queue                ,
 			  uint32_t  * size_load_queue                 ,
+                          uint32_t  * nb_inst_memory                  ,
 			  uint32_t ** link_load_store_unit_with_thread,
 			  uint32_t    nb_inst_insert                  ,
@@ -40,9 +41,13 @@
     _size_store_queue                 = size_store_queue                ;
     _size_load_queue                  = size_load_queue                 ;
+    _nb_inst_memory                   = nb_inst_memory                  ;
     _link_load_store_unit_with_thread = link_load_store_unit_with_thread;
     _nb_inst_insert                   = nb_inst_insert                  ;
     _nb_inst_retire                   = nb_inst_retire                  ;
-    
+   
     test();
+
+    _max_size_store_queue             = max<uint32_t>(_size_store_queue,_nb_load_store_queue);
+    _max_size_load_queue              = max<uint32_t>(_size_load_queue ,_nb_load_store_queue);
 
     if (is_toplevel)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h	(revision 110)
@@ -55,4 +55,11 @@
 #ifdef STATISTICS
   public    : Stat                           * _stat;
+  private   : counter_t                      * _stat_nb_inst_pop     ;
+  private   : counter_t                      * _stat_nb_inst_pop_gpr ;
+  private   : counter_t                      * _stat_nb_inst_pop_spr ;
+  private   : counter_t                      * _stat_nb_inst_push_gpr;
+  private   : counter_t                      * _stat_nb_inst_push_spr;
+  private   : counter_t                     ** _stat_bank_gpr_nb_elt ; //[nb_bank]
+  private   : counter_t                     ** _stat_bank_spr_nb_elt ; //[nb_bank]
 #endif
 
@@ -146,5 +153,6 @@
 
 #ifdef STATISTICS
-  public  : void        statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
+  public  : void        statistics_allocation     (morpheo::behavioural::Parameters_Statistics * param_statistics);
+  public  : void        statistics_deallocation   (void);
 #endif
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp	(revision 110)
@@ -58,5 +58,5 @@
 	log_printf(INFO,Free_List_unit,FUNCTION,"Allocation of statistics");
 
-	statistics_declaration(param_statistics);
+	statistics_allocation(param_statistics);
       }
 #endif
@@ -157,9 +157,6 @@
 #ifdef STATISTICS
     if (usage_is_set(_usage,USE_STATISTICS))
-      {
-	log_printf(INFO,Free_List_unit,FUNCTION,"Generate Statistics file");
-	
-	delete _stat;
-      }
+      statistics_deallocation ();
+
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_allocation.cpp	(revision 110)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_allocation.cpp	(revision 110)
@@ -0,0 +1,94 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_ooo_engine {
+namespace ooo_engine {
+namespace rename_unit {
+namespace register_translation_unit {
+namespace free_list_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Free_List_unit::statistics_allocation"
+  void Free_List_unit::statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics)
+  {
+    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
+
+    _stat = new Stat (static_cast<std::string>(_name),
+		      "Free_List_unit",
+		      param_statistics);
+
+    std::string sum_bank_gpr_nb_elt = "0";
+    _stat_bank_gpr_nb_elt = new counter_t * [_param->_nb_bank];
+    
+    for (uint32_t i=0; i<_param->_nb_bank; ++i)
+      {
+        std::string str = "bank_gpr_nb_elt_"+toString(i);
+        
+        sum_bank_gpr_nb_elt = "+ "+str+" "+sum_bank_gpr_nb_elt;
+        
+        _stat_bank_gpr_nb_elt [i]  = _stat->create_variable(str);
+        
+        _stat->create_expr_average_by_cycle("average_occupation_bank_gpr_"+toString(i), str, "", toString(_("Average free list occupation (bank %d)"),i));
+        _stat->create_expr_percent         ("percent_occupation_bank_gpr_"+toString(i) , "average_occupation_bank_gpr_"+toString(i), toString(_param->_bank_gpr_nb_slot), toString(_("Percent free list occupation (bank %d)"),i));
+      }
+
+    _stat->create_expr_average_by_cycle("average_occupation_bank_gpr", sum_bank_gpr_nb_elt, "", _("Average free list occupation (bank all)"));
+    _stat->create_expr_percent         ("percent_occupation_bank_gpr", "average_occupation_bank_gpr", toString(_param->_bank_gpr_nb_slot*_param->_nb_bank), _("Percent free list occupation (bank all)"));
+    
+    std::string sum_bank_spr_nb_elt = "0";
+    _stat_bank_spr_nb_elt = new counter_t * [_param->_nb_bank];
+
+    for (uint32_t i=0; i<_param->_nb_bank; ++i)
+      {
+        std::string str = "bank_spr_nb_elt_"+toString(i);
+        
+        sum_bank_spr_nb_elt = "+ "+str+" "+sum_bank_spr_nb_elt;
+        
+        _stat_bank_spr_nb_elt [i]  = _stat->create_variable(str);
+        
+        _stat->create_expr_average_by_cycle("average_occupation_bank_spr_"+toString(i), str, "", toString(_("Average free list occupation (bank %d)"),i));
+        _stat->create_expr_percent         ("percent_occupation_bank_spr_"+toString(i) , "average_occupation_bank_spr_"+toString(i), toString(_param->_bank_spr_nb_slot), toString(_("Percent free list occupation (bank %d)"),i));
+      }
+
+    _stat->create_expr_average_by_cycle("average_occupation_bank_spr", sum_bank_spr_nb_elt, "", _("Average free list occupation (bank all)"));
+    _stat->create_expr_percent         ("percent_occupation_bank_spr", "average_occupation_bank_spr", toString(_param->_bank_spr_nb_slot*_param->_nb_bank), _("Percent free list occupation (bank all)"));
+
+    _stat_nb_inst_pop      = _stat->create_variable("nb_inst_pop"     );
+    _stat_nb_inst_pop_gpr  = _stat->create_variable("nb_inst_pop_gpr" );
+    _stat_nb_inst_pop_spr  = _stat->create_variable("nb_inst_pop_spr" );
+    _stat_nb_inst_push_gpr = _stat->create_variable("nb_inst_push_gpr");
+    _stat_nb_inst_push_spr = _stat->create_variable("nb_inst_push_spr");
+    
+    _stat->create_expr_average_by_cycle("average_use_interface_pop"     , "nb_inst_pop"     , "", _("Average instruction per cycle on pop interface"));
+    _stat->create_expr_average_by_cycle("average_use_interface_pop_gpr" , "nb_inst_pop_gpr" , "", _("Average instruction per cycle on pop interface for gpr"));
+    _stat->create_expr_average_by_cycle("average_use_interface_pop_spr" , "nb_inst_pop_spr" , "", _("Average instruction per cycle on pop interface for spr"));
+    _stat->create_expr_average_by_cycle("average_use_interface_push_gpr", "nb_inst_push_gpr", "", _("Average instruction per cycle on push_gpr interface"));
+    _stat->create_expr_average_by_cycle("average_use_interface_push_spr", "nb_inst_push_spr", "", _("Average instruction per cycle on push_spr interface"));
+
+    _stat->create_expr_percent         ("percent_inst_pop_need_gpr"     , "nb_inst_pop_gpr" , "nb_inst_pop", _("Percent of pop instruction that need gpr"));
+    _stat->create_expr_percent         ("percent_inst_pop_need_spr"     , "nb_inst_pop_spr" , "nb_inst_pop", _("Percent of pop instruction that need spr"));
+
+    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
+  };
+
+}; // end namespace free_list_unit
+}; // end namespace register_translation_unit
+}; // end namespace rename_unit
+}; // end namespace ooo_engine
+}; // end namespace multi_ooo_engine
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_deallocation.cpp	(revision 110)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_deallocation.cpp	(revision 110)
@@ -0,0 +1,45 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_ooo_engine {
+namespace ooo_engine {
+namespace rename_unit {
+namespace register_translation_unit {
+namespace free_list_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Free_List_unit::statistics_deallocation"
+  void Free_List_unit::statistics_deallocation (void)
+  {
+    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
+
+    log_printf(INFO,Free_List_unit,FUNCTION,"Generate Statistics file");
+    
+    delete _stat;
+   
+    delete [] _stat_bank_gpr_nb_elt;
+ 
+    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
+  };
+
+}; // end namespace free_list_unit
+}; // end namespace register_translation_unit
+}; // end namespace rename_unit
+}; // end namespace ooo_engine
+}; // end namespace multi_ooo_engine
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_declaration.cpp	(revision 109)
+++ 	(revision )
@@ -1,43 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h"
-
-namespace morpheo {
-namespace behavioural {
-namespace core {
-namespace multi_ooo_engine {
-namespace ooo_engine {
-namespace rename_unit {
-namespace register_translation_unit {
-namespace free_list_unit {
-
-
-#undef  FUNCTION
-#define FUNCTION "Free_List_unit::statistics_declaration"
-  void Free_List_unit::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
-  {
-    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
-
-    _stat = new Stat (static_cast<std::string>(_name),
-		      "Free_List_unit",
-		      param_statistics);
-    
-    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
-  };
-
-}; // end namespace free_list_unit
-}; // end namespace register_translation_unit
-}; // end namespace rename_unit
-}; // end namespace ooo_engine
-}; // end namespace multi_ooo_engine
-}; // end namespace core
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp	(revision 110)
@@ -50,9 +50,23 @@
               log_printf(TRACE,Free_List_unit,FUNCTION,"  * POP [%d]",i);
 
+#ifdef STATISTICS
+              (*_stat_nb_inst_pop) ++;
+#endif
+
 	      if (PORT_READ(in_POP_GPR_VAL [i]))
-		_gpr_list [internal_POP_GPR_BANK[i]].pop_front();
+                {
+#ifdef STATISTICS
+                  (*_stat_nb_inst_pop_gpr) ++;
+#endif
+                  _gpr_list [internal_POP_GPR_BANK[i]].pop_front();
+                }
 	 
 	      if (PORT_READ(in_POP_SPR_VAL [i]))
-		_spr_list [internal_POP_SPR_BANK[i]].pop_front();
+                {
+#ifdef STATISTICS
+                  (*_stat_nb_inst_pop_spr) ++;
+#endif
+                  _spr_list [internal_POP_SPR_BANK[i]].pop_front();
+                }
 	    }
 
@@ -67,4 +81,8 @@
               log_printf(TRACE,Free_List_unit,FUNCTION,"    * num_reg : %d",PORT_READ(in_PUSH_GPR_NUM_REG [i]));
 
+#ifdef STATISTICS
+              (*_stat_nb_inst_push_gpr) ++;
+#endif
+
               _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(PORT_READ(in_PUSH_GPR_NUM_REG [i]));
             }
@@ -79,6 +97,18 @@
               log_printf(TRACE,Free_List_unit,FUNCTION,"    * num_reg : %d",PORT_READ(in_PUSH_SPR_NUM_REG [i]));
 
+#ifdef STATISTICS
+              (*_stat_nb_inst_push_spr) ++;
+#endif
+
               _spr_list [internal_PUSH_SPR_BANK[i]].push_back(PORT_READ(in_PUSH_SPR_NUM_REG [i]));
             }
+
+#ifdef STATISTICS
+          for (uint32_t i=0; i<_param->_nb_bank; ++i)
+            {
+              (*(_stat_bank_gpr_nb_elt [i])) += _gpr_list[i].size();
+              (*(_stat_bank_spr_nb_elt [i])) += _spr_list[i].size();
+            }
+#endif
 
 #if (DEBUG >= DEBUG_TRACE) and (DEBUG_Free_List_unit == true)
@@ -140,5 +170,5 @@
         if (1)
           for (uint32_t i=0; i<_param->_nb_bank; ++i)
-          {
+            {
             for (std::list<Tgeneral_address_t>::iterator it1=_gpr_list[i].begin();
                  it1!=_gpr_list[i].end();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h	(revision 110)
@@ -52,4 +52,12 @@
 #ifdef STATISTICS
   public    : Stat                           * _stat;
+
+  private   : counter_t                      * _stat_nb_inst_issue_rename_select;
+  private   : counter_t                      * _stat_nb_inst_issue_rename_select_req;
+  private   : counter_t                      * _stat_nb_inst_issue_stall_by_commit           ;
+  private   : counter_t                      * _stat_nb_inst_issue_stall_by_rat_rename       ;
+  private   : counter_t                      * _stat_nb_inst_issue_stall_by_rat_insert       ;
+  private   : counter_t                      * _stat_nb_inst_issue_stall_by_free_list        ;
+  private   : counter_t                      * _stat_nb_inst_issue_stall_by_stat_list        ;
 #endif
 
@@ -139,4 +147,8 @@
 
     // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#ifdef STATISTICS
+  private   : Tcontrol_t                    * internal_INSERT_RENAME_ACK; //[nb_inst_insert]
+#endif
+
 #endif
 
@@ -186,5 +198,6 @@
 
 #ifdef STATISTICS
-  public  : void        statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
+  public  : void        statistics_allocation     (morpheo::behavioural::Parameters_Statistics * param_statistics);
+  public  : void        statistics_deallocation   (void);
 #endif
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue.cpp	(revision 110)
@@ -58,5 +58,5 @@
 	log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Allocation of statistics");
 
-	statistics_declaration(param_statistics);
+	statistics_allocation(param_statistics);
       }
 #endif
@@ -199,9 +199,5 @@
 #ifdef STATISTICS
     if (usage_is_set(_usage,USE_STATISTICS))
-      {
-	log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Generate Statistics file");
-	
-	delete _stat;
-      }
+      statistics_deallocation ();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp	(revision 110)
@@ -136,6 +136,9 @@
     }
 
+#ifdef STATISTICS
+    ALLOC1(internal_INSERT_RENAME_ACK, Tcontrol_t,_param->_nb_inst_insert);
+#endif
+
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-
 #ifdef POSITION
     if (usage_is_set(_usage,USE_POSITION))
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_deallocation.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_deallocation.cpp	(revision 110)
@@ -99,5 +99,9 @@
 	DELETE1_SIGNAL( in_RETIRE_STAT_LIST_ACK,_param->_nb_inst_retire,1);
 
+#ifdef STATISTICS
+        DELETE1(internal_INSERT_RENAME_ACK, _param->_nb_inst_insert);
+#endif
       }
+
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert_valack.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert_valack.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert_valack.cpp	(revision 110)
@@ -75,4 +75,7 @@
         log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * stat_list_ack  (r): %d",stat_list_ack );
 
+#ifdef STATISTICS
+        internal_INSERT_RENAME_ACK [i] = rename_ack;
+#endif
 
 	PORT_WRITE(out_INSERT_RENAME_ACK     [i], rename_ack    );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_retire.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_retire.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_retire.cpp	(revision 110)
@@ -32,7 +32,31 @@
 	Tcontrol_t stat_list_ack = PORT_READ(in_RETIRE_STAT_LIST_ACK [i]);
 
-	PORT_WRITE(out_RETIRE_ACK           [i], rat_ack and stat_list_ack);
-	PORT_WRITE(out_RETIRE_RAT_VAL       [i], val and stat_list_ack);
-	PORT_WRITE(out_RETIRE_STAT_LIST_VAL [i], val and rat_ack);
+	Tcontrol_t ack           = (true
+//                                     and val
+                                    and rat_ack
+                                    and stat_list_ack
+                                    );
+	Tcontrol_t rat_val       = (true
+                                    and val
+//                                     and rat_ack
+                                    and stat_list_ack
+                                    );
+	Tcontrol_t stat_list_val = (true
+                                    and val
+                                    and rat_ack
+//                                     and stat_list_ack
+                                    );
+
+	PORT_WRITE(out_RETIRE_ACK           [i], ack          );
+	PORT_WRITE(out_RETIRE_RAT_VAL       [i], rat_val      );
+	PORT_WRITE(out_RETIRE_STAT_LIST_VAL [i], stat_list_val);
+
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"  * inst_insert [%d]",i);
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * val            (r): %d",val           );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * ack            (w): %d",ack           );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * rat_val        (w): %d",rat_val       );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * rat_ack        (r): %d",rat_ack       );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * stat_list_val  (w): %d",stat_list_val );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * stat_list_ack  (r): %d",stat_list_ack );
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_statistics_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_statistics_allocation.cpp	(revision 110)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_statistics_allocation.cpp	(revision 110)
@@ -0,0 +1,65 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_ooo_engine {
+namespace ooo_engine {
+namespace rename_unit {
+namespace register_translation_unit {
+namespace register_translation_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_translation_unit_Glue::statistics_allocation"
+  void Register_translation_unit_Glue::statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics)
+  {
+    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
+
+    _stat = new Stat (static_cast<std::string>(_name),
+		      "Register_translation_unit_Glue",
+		      param_statistics);
+
+    _stat_nb_inst_issue_rename_select        = _stat->create_variable("nb_inst_issue_rename_select");
+    _stat_nb_inst_issue_rename_select_req    = _stat->create_variable("nb_inst_issue_rename_select_req");
+
+    _stat_nb_inst_issue_stall_by_commit      = _stat->create_variable("nb_inst_issue_stall_by_commit");
+    _stat_nb_inst_issue_stall_by_rat_rename  = _stat->create_variable("nb_inst_issue_stall_by_rat_rename");
+    _stat_nb_inst_issue_stall_by_rat_insert  = _stat->create_variable("nb_inst_issue_stall_by_rat_insert");
+    _stat_nb_inst_issue_stall_by_free_list   = _stat->create_variable("nb_inst_issue_stall_by_free_list");
+    _stat_nb_inst_issue_stall_by_stat_list   = _stat->create_variable("nb_inst_issue_stall_by_stat_list");
+
+//  std::string nb_inst_issue_stall = "+ + + nb_inst_issue_stall_by_commit nb_inst_issue_stall_by_rat_rename + nb_inst_issue_stall_by_rat_insert nb_inst_issue_stall_by_free_list + nb_inst_issue_stall_by_stat_list nb_inst_issue_stall_by_rename_select";
+    std::string nb_inst_issue_stall = "+ + + nb_inst_issue_stall_by_commit nb_inst_issue_stall_by_rat_rename + nb_inst_issue_stall_by_rat_insert nb_inst_issue_stall_by_free_list nb_inst_issue_stall_by_stat_list";
+
+    _stat->create_expr_average_by_cycle("average_req_interface_insert", "nb_inst_issue_rename_select_req", "", _("Average instruction by cycle on issue interface (request)"));
+    _stat->create_expr_average_by_cycle("average_use_interface_insert", "nb_inst_issue_rename_select"    , "", _("Average instruction by cycle on issue interface"));
+
+//  _stat->create_expr_percent ("percent_issue_stall_by_rename_select", "nb_inst_issue_stall_by_rename_select", nb_inst_issue_stall, _("Percent of instruction stalled by Rename_Select"));
+    _stat->create_expr_percent ("percent_issue_stall_by_commit"       , "nb_inst_issue_stall_by_commit", nb_inst_issue_stall, _("Percent of instruction stalled by Commit_unit or Issue_queue or RegisterFile"));
+    _stat->create_expr_percent ("percent_issue_stall_by_rat_rename"   , "nb_inst_issue_stall_by_rat_rename", nb_inst_issue_stall, _("Percent of instruction stalled by Rat_Rename"));
+    _stat->create_expr_percent ("percent_issue_stall_by_rat_insert"   , "nb_inst_issue_stall_by_rat_insert", nb_inst_issue_stall, _("Percent of instruction stalled by Rat_Insert"));
+    _stat->create_expr_percent ("percent_issue_stall_by_free_list"    , "nb_inst_issue_stall_by_free_list", nb_inst_issue_stall, _("Percent of instruction stalled by Free_List"));
+    _stat->create_expr_percent ("percent_issue_stall_by_stat_list"    , "nb_inst_issue_stall_by_stat_list", nb_inst_issue_stall, _("Percent of instruction stalled by Stat_List"));
+    
+    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
+  };
+
+}; // end namespace register_translation_unit_glue
+}; // end namespace register_translation_unit
+}; // end namespace rename_unit
+}; // end namespace ooo_engine
+}; // end namespace multi_ooo_engine
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_statistics_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_statistics_deallocation.cpp	(revision 110)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_statistics_deallocation.cpp	(revision 110)
@@ -0,0 +1,43 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_ooo_engine {
+namespace ooo_engine {
+namespace rename_unit {
+namespace register_translation_unit {
+namespace register_translation_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_translation_unit_Glue::statistics_deallocation"
+  void Register_translation_unit_Glue::statistics_deallocation (void)
+  {
+    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
+
+    log_printf(INFO,Register_translation_unit_Glue,FUNCTION,_("<%s> : Generate Statistics file"),_name.c_str());
+    
+    delete _stat;
+
+    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
+  };
+
+}; // end namespace register_translation_unit_glue
+}; // end namespace register_translation_unit
+}; // end namespace rename_unit
+}; // end namespace ooo_engine
+}; // end namespace multi_ooo_engine
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_statistics_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_statistics_declaration.cpp	(revision 109)
+++ 	(revision )
@@ -1,43 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h"
-
-namespace morpheo {
-namespace behavioural {
-namespace core {
-namespace multi_ooo_engine {
-namespace ooo_engine {
-namespace rename_unit {
-namespace register_translation_unit {
-namespace register_translation_unit_glue {
-
-
-#undef  FUNCTION
-#define FUNCTION "Register_translation_unit_Glue::statistics_declaration"
-  void Register_translation_unit_Glue::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
-  {
-    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
-
-    _stat = new Stat (static_cast<std::string>(_name),
-		      "Register_translation_unit_Glue",
-		      param_statistics);
-    
-    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
-  };
-
-}; // end namespace register_translation_unit_glue
-}; // end namespace register_translation_unit
-}; // end namespace rename_unit
-}; // end namespace ooo_engine
-}; // end namespace multi_ooo_engine
-}; // end namespace core
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_transition.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_transition.cpp	(revision 110)
@@ -26,4 +26,29 @@
     log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
 
+#ifdef STATISTICS
+    if (usage_is_set(_usage,USE_STATISTICS))
+      {
+        for (uint32_t i=0; i<_param->_nb_inst_insert; ++i)
+          // Test request
+          if (PORT_READ(in_INSERT_RENAME_VAL [i]))
+            {
+              (* _stat_nb_inst_issue_rename_select_req) ++;
+
+              if (internal_INSERT_RENAME_ACK [i])
+                (* _stat_nb_inst_issue_rename_select)++;
+              if (PORT_READ(in_INSERT_INSERT_ACK     [i]) == 0)
+                (*_stat_nb_inst_issue_stall_by_commit    ) ++;
+              if (PORT_READ(in_INSERT_RAT_RENAME_ACK [i]) == 0)
+                (*_stat_nb_inst_issue_stall_by_rat_rename) ++;
+              if (PORT_READ(in_INSERT_RAT_INSERT_ACK [i]) == 0)
+                (*_stat_nb_inst_issue_stall_by_rat_insert) ++;
+              if (PORT_READ(in_INSERT_FREE_LIST_ACK  [i]) == 0)
+                (*_stat_nb_inst_issue_stall_by_free_list ) ++;
+              if (PORT_READ(in_INSERT_STAT_LIST_ACK  [i]) == 0)
+                (*_stat_nb_inst_issue_stall_by_stat_list ) ++;
+            }
+      }
+#endif
+
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     end_cycle ();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp	(revision 110)
@@ -43,5 +43,5 @@
     for (uint32_t i=0; i<_param->_nb_inst_rename; i++)
       {
-        log_printf(TRACE,Rename_select,FUNCTION,"  * inst_rename [%d]",i);
+        log_printf(TRACE,Rename_select,FUNCTION,"  * RENAME_OUT [%d]",i);
 
         // Scan all instruction until find
@@ -65,14 +65,13 @@
                 log_printf(TRACE,Rename_select,FUNCTION,"      * rename_out_ack       : %d",PORT_READ(in_RENAME_OUT_ACK[i]));
 
-                Tcontext_t     front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_IN_FRONT_END_ID [x][y]):0;
-                Tcontext_t     context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RENAME_IN_CONTEXT_ID   [x][y]):0;
+                Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_IN_FRONT_END_ID [x][y]):0;
+                Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RENAME_IN_CONTEXT_ID   [x][y]):0;
                 
-                Tcontrol_t     no_execute   = (PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y]));
-
-		Tcontrol_t read_ra  = (PORT_READ(in_RENAME_IN_READ_RA  [x][y]));
-		Tcontrol_t read_rb  = (PORT_READ(in_RENAME_IN_READ_RB  [x][y]));
-		Tcontrol_t read_rc  = (PORT_READ(in_RENAME_IN_READ_RC  [x][y]));
-		Tcontrol_t write_rd = (PORT_READ(in_RENAME_IN_WRITE_RD [x][y]));
-		Tcontrol_t write_re = (PORT_READ(in_RENAME_IN_WRITE_RE [x][y]));
+                Tcontrol_t no_execute   = (PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y]));
+		Tcontrol_t read_ra      = (PORT_READ(in_RENAME_IN_READ_RA    [x][y]));
+		Tcontrol_t read_rb      = (PORT_READ(in_RENAME_IN_READ_RB    [x][y]));
+		Tcontrol_t read_rc      = (PORT_READ(in_RENAME_IN_READ_RC    [x][y]));
+		Tcontrol_t write_rd     = (PORT_READ(in_RENAME_IN_WRITE_RD   [x][y]));
+		Tcontrol_t write_re     = (PORT_READ(in_RENAME_IN_WRITE_RE   [x][y]));
 
                 // Attention, j'ai enlevé event_state de la liste de sensibilité
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_insert_valack.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_insert_valack.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_insert_valack.cpp	(revision 110)
@@ -25,5 +25,5 @@
     log_function(Rename_unit_Glue,FUNCTION,_name.c_str());
 
-//     // Transaction must be in-order
+//     // Transaction must be in-order - made in rename_select
 //     Tcontrol_t previous_transaction = true;
     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_retire_valack.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_retire_valack.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_retire_valack.cpp	(revision 110)
@@ -25,6 +25,6 @@
     log_function(Rename_unit_Glue,FUNCTION,_name.c_str());
 
-    // Transaction must be in-order
-    Tcontrol_t previous_transaction = true;
+    // Transaction must be in-order - made in commit_unit
+//     Tcontrol_t previous_transaction = true;
     
     for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
@@ -34,11 +34,11 @@
 	Tcontrol_t REGISTER_TRANSLATION_ACK     = PORT_READ(in_RETIRE_REGISTER_TRANSLATION_ACK     [i]);
 
-	Tcontrol_t ACK                          = (previous_transaction         and
+	Tcontrol_t ACK                          = (// previous_transaction         and
 						   LOAD_STORE_QUEUE_POINTER_ACK and
 						   REGISTER_TRANSLATION_ACK     );
-	Tcontrol_t LOAD_STORE_QUEUE_POINTER_VAL = (previous_transaction         and
+	Tcontrol_t LOAD_STORE_QUEUE_POINTER_VAL = (// previous_transaction         and
 						   VAL                          and
 						   REGISTER_TRANSLATION_ACK     );
-	Tcontrol_t REGISTER_TRANSLATION_VAL     = (previous_transaction         and
+	Tcontrol_t REGISTER_TRANSLATION_VAL     = (// previous_transaction         and
 						   VAL                          and
 						   LOAD_STORE_QUEUE_POINTER_ACK );
@@ -48,5 +48,13 @@
 	PORT_WRITE(out_RETIRE_REGISTER_TRANSLATION_VAL     [i], REGISTER_TRANSLATION_VAL    );
 
-	previous_transaction = VAL and ACK;
+// 	previous_transaction = VAL and ACK;
+
+        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"  * retire [%d]",i);
+        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"    * val (commit_unit)            (r) : %d",VAL                         );
+        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"    * ack (commit_unit)            (w) : %d",ACK                         );
+        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"    * register_translation_val     (w) : %d",REGISTER_TRANSLATION_VAL    );
+        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"    * register_translation_ack     (r) : %d",REGISTER_TRANSLATION_ACK    );
+        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"    * load_store_queue_pointer_val (w) : %d",LOAD_STORE_QUEUE_POINTER_VAL);
+        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"    * load_store_queue_pointer_ack (r) : %d",LOAD_STORE_QUEUE_POINTER_ACK);
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-min.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-min.cfg	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-min.cfg	(revision 110)
@@ -8,4 +8,5 @@
 2	2	+1	# size_store_queue                 [0]    [nb_load_store_queue]
 1	1	+1	# size_load_queue                  [0]    [nb_load_store_queue]
+1	1	+1	# nb_inst_memory                   [0]    [nb_load_store_queue]
 0	0	+1	# link_load_store_unit_with_thread [0][0] [nb_front_end][nb_context]
 1	1	+1	# rename_select_priority           
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_1a.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_1a.cfg	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_1a.cfg	(revision 110)
@@ -8,4 +8,5 @@
 8	8	+1	# size_store_queue                 [0]    [nb_load_store_queue]
 8	8	+1	# size_load_queue                  [0]    [nb_load_store_queue]
+8	8	+1	# nb_inst_memory                   [0]    [nb_load_store_queue]
 0	0	+1	# link_load_store_unit_with_thread [0][0] [nb_front_end][nb_context]
 1	1	+1	# rename_select_priority           
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4a.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4a.cfg	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4a.cfg	(revision 110)
@@ -8,4 +8,5 @@
 8	8	+1	# size_store_queue                 [0]    [nb_load_store_queue]
 8	8	+1	# size_load_queue                  [0]    [nb_load_store_queue]
+4	4	+1	# nb_inst_memory                   [0]    [nb_load_store_queue]
 0	0	+1	# link_load_store_unit_with_thread [0][0] [nb_front_end][nb_context]
 0	0	+1	# link_load_store_unit_with_thread [0][1] [nb_front_end][nb_context]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4b.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4b.cfg	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4b.cfg	(revision 110)
@@ -10,4 +10,6 @@
 8	8	+1	# size_load_queue                  [0]    [nb_load_store_queue]
 4	4	+1	# size_load_queue                  [1]    [nb_load_store_queue]
+4	4	+1	# nb_inst_memory                   [0]    [nb_load_store_queue]
+2	2	+1	# nb_inst_memory                   [1]    [nb_load_store_queue]
 0	0	+1	# link_load_store_unit_with_thread [0][0] [nb_front_end][nb_context]
 1	1	+1	# link_load_store_unit_with_thread [0][1] [nb_front_end][nb_context]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/src/main.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/src/main.cpp	(revision 110)
@@ -22,4 +22,5 @@
   err (_(" * size_store_queue                  [nb_load_store_queue]      (uint32_t         )\n"));
   err (_(" * size_load_queue                   [nb_load_store_queue]      (uint32_t         )\n"));
+  err (_(" * nb_inst_memory                    [nb_load_store_queue]      (uint32_t         )\n"));
   err (_(" * link_load_store_unit_with_thread  [nb_front_end][nb_context] (uint32_t         )\n"));
   err (_(" * rename_select_priority                                       (Tpriority_t      )\n"));
@@ -71,9 +72,10 @@
   uint32_t             _nb_load_store_queue               = fromString<uint32_t         >(argv[x++]);
 
-  if (argc != static_cast<int>(2+NB_PARAMS+2*_nb_front_end+2*_nb_load_store_queue+_sum_nb_context))
+  if (argc != static_cast<int>(2+NB_PARAMS+2*_nb_front_end+3*_nb_load_store_queue+_sum_nb_context))
     usage (argc, argv);
 
   uint32_t           * _size_store_queue                  = new uint32_t [_nb_load_store_queue];
   uint32_t           * _size_load_queue                   = new uint32_t [_nb_load_store_queue];
+  uint32_t           * _nb_inst_memory                    = new uint32_t [_nb_load_store_queue];
 
   for (uint32_t i=0; i<_nb_load_store_queue; i++)
@@ -81,4 +83,6 @@
   for (uint32_t i=0; i<_nb_load_store_queue; i++)
     _size_load_queue  [i] = fromString<uint32_t>(argv[x++]);
+  for (uint32_t i=0; i<_nb_load_store_queue; i++)
+    _nb_inst_memory   [i] = fromString<uint32_t>(argv[x++]);
 
   uint32_t          ** _link_load_store_unit_with_thread  = new uint32_t * [_nb_front_end];
@@ -113,4 +117,5 @@
 	 _size_store_queue                 ,
 	 _size_load_queue                  ,
+	 _nb_inst_memory                   ,
 	 _link_load_store_unit_with_thread ,
 	 _rename_select_priority           ,
@@ -157,4 +162,5 @@
   delete [] _size_store_queue;
   delete [] _size_load_queue ;
+  delete [] _nb_inst_memory  ;
   delete [] _nb_context      ;
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Parameters.h	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Parameters.h	(revision 110)
@@ -36,4 +36,5 @@
   public : uint32_t           * _size_store_queue                 ;//[nb_load_store_queue]
   public : uint32_t           * _size_load_queue                  ;//[nb_load_store_queue]
+  public : uint32_t           * _nb_inst_memory                   ;//[nb_load_store_queue]
   public : uint32_t          ** _link_load_store_unit_with_thread ;//[nb_front_end][nb_context]
   public : Tpriority_t          _rename_select_priority           ;
@@ -75,4 +76,5 @@
 			uint32_t           * size_store_queue                 ,
 			uint32_t           * size_load_queue                  ,
+			uint32_t           * nb_inst_memory                   ,
 			uint32_t          ** link_load_store_unit_with_thread ,
 			Tpriority_t          rename_select_priority           ,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters.cpp	(revision 109)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters.cpp	(revision 110)
@@ -27,4 +27,5 @@
 			  uint32_t           * size_store_queue                 ,
 			  uint32_t           * size_load_queue                  ,
+			  uint32_t           * nb_inst_memory                   ,
 			  uint32_t          ** link_load_store_unit_with_thread ,
 			  Tpriority_t          rename_select_priority           ,
@@ -50,4 +51,5 @@
     _size_store_queue                  = size_store_queue                 ;
     _size_load_queue                   = size_load_queue                  ;
+    _nb_inst_memory                    = nb_inst_memory                   ;
     _link_load_store_unit_with_thread  = link_load_store_unit_with_thread ;
     _rename_select_priority            = rename_select_priority           ;
@@ -101,4 +103,5 @@
        _size_store_queue                ,
        _size_load_queue                 ,
+       _nb_inst_memory                  ,
        _link_load_store_unit_with_thread,
        _nb_inst_insert                  ,
