Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/Operation/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/Operation/include/Types.h	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/Operation/include/Types.h	(revision 128)
@@ -109,5 +109,5 @@
       for (uint32_t i=0; i<NB_GROUP; i++)
 	{
-	  _spr               [i] = NULL;
+	  _spr [i] = NULL;
 	}
     }
@@ -117,7 +117,7 @@
       for (uint32_t x=0; x<NB_GROUP; x++)
 	if (_spr[x] != NULL)
-	  delete _spr[x];
-      delete _spr;
-      delete _spr_access_mode;
+	  delete [] _spr[x];
+      delete [] _spr;
+      delete    _spr_access_mode;
     }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp	(revision 128)
@@ -32,23 +32,23 @@
         DELETE0_SIGNAL( in_EXECUTE_IN_VAL                   ,1);
         DELETE0_SIGNAL(out_EXECUTE_IN_ACK                   ,1);
-        DELETE0_SIGNAL( in_EXECUTE_IN_CONTEXT_ID            , _param->_size_context_id   );
-        DELETE0_SIGNAL( in_EXECUTE_IN_FRONT_END_ID          , _param->_size_front_end_id );
-        DELETE0_SIGNAL( in_EXECUTE_IN_OOO_ENGINE_ID         , _param->_size_ooo_engine_id);
-        DELETE0_SIGNAL( in_EXECUTE_IN_PACKET_ID             , _param->_size_rob_ptr    );
-        DELETE0_SIGNAL( in_EXECUTE_IN_OPERATION             , _param->_size_operation    );
-        DELETE0_SIGNAL( in_EXECUTE_IN_TYPE                  , _param->_size_type         );
+        DELETE0_SIGNAL( in_EXECUTE_IN_CONTEXT_ID            ,_param->_size_context_id   );
+        DELETE0_SIGNAL( in_EXECUTE_IN_FRONT_END_ID          ,_param->_size_front_end_id );
+        DELETE0_SIGNAL( in_EXECUTE_IN_OOO_ENGINE_ID         ,_param->_size_ooo_engine_id);
+        DELETE0_SIGNAL( in_EXECUTE_IN_PACKET_ID             ,_param->_size_rob_ptr      );
+        DELETE0_SIGNAL( in_EXECUTE_IN_OPERATION             ,_param->_size_operation    );
+        DELETE0_SIGNAL( in_EXECUTE_IN_TYPE                  ,_param->_size_type         );
         DELETE0_SIGNAL( in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE ,_param->_size_store_queue_ptr);
         DELETE0_SIGNAL( in_EXECUTE_IN_STORE_QUEUE_PTR_READ  ,_param->_size_store_queue_ptr);
-        DELETE0_SIGNAL( in_EXECUTE_IN_STORE_QUEUE_EMPTY     , 1);
+        DELETE0_SIGNAL( in_EXECUTE_IN_STORE_QUEUE_EMPTY     ,1);
         DELETE0_SIGNAL( in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE  ,_param->_size_load_queue_ptr);
-        DELETE0_SIGNAL( in_EXECUTE_IN_HAS_IMMEDIAT          , 1);
-        DELETE0_SIGNAL( in_EXECUTE_IN_IMMEDIAT              , _param->_size_general_data);
-        DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RA               , _param->_size_general_data);
-        DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RB               , _param->_size_general_data);
-        DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RC               , _param->_size_special_data);
-        DELETE0_SIGNAL( in_EXECUTE_IN_WRITE_RD              , 1);
-        DELETE0_SIGNAL( in_EXECUTE_IN_NUM_REG_RD            , _param->_size_general_register);
-        DELETE0_SIGNAL( in_EXECUTE_IN_WRITE_RE              , 1);
-        DELETE0_SIGNAL( in_EXECUTE_IN_NUM_REG_RE            , _param->_size_special_register);
+        DELETE0_SIGNAL( in_EXECUTE_IN_HAS_IMMEDIAT          ,1);
+        DELETE0_SIGNAL( in_EXECUTE_IN_IMMEDIAT              ,_param->_size_general_data);
+        DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RA               ,_param->_size_general_data);
+        DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RB               ,_param->_size_general_data);
+        DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RC               ,_param->_size_special_data);
+        DELETE0_SIGNAL( in_EXECUTE_IN_WRITE_RD              ,1);
+        DELETE0_SIGNAL( in_EXECUTE_IN_NUM_REG_RD            ,_param->_size_general_register);
+        DELETE0_SIGNAL( in_EXECUTE_IN_WRITE_RE              ,1);
+        DELETE0_SIGNAL( in_EXECUTE_IN_NUM_REG_RE            ,_param->_size_special_register);
 
         DELETE0_SIGNAL(out_EXECUTE_OUT_VAL            ,1);
@@ -72,15 +72,24 @@
         // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
         
+        for (uint32_t i=0; i<_param->_nb_type; i++)
+        delete [] _function_execute [i];
+        delete [] _function_execute;
+
 	for (uint32_t i=0; i<_param->_nb_context; i++)
-	  for (uint32_t j=0; j<_param->_nb_front_end; j++)
-	    for (uint32_t k=0; k<_param->_nb_ooo_engine; k++)
-	      delete _execute_register [i][j][k];
+          {
+            for (uint32_t j=0; j<_param->_nb_front_end; j++)
+              {
+                for (uint32_t k=0; k<_param->_nb_ooo_engine; k++)
+                delete    _execute_register [i][j][k];
+                delete [] _execute_register [i][j];
+              }
+            delete [] _execute_register [i];
+          }
+        delete [] _execute_register;
 
-        DELETE3(_execute_register,_param->_nb_context,_param->_nb_front_end,_param->_nb_ooo_engine);
-        DELETE0(_execute_param);
+        delete    _execute_param;
+        delete    _execute_operation_out;
         if (_param->_have_pipeline_in)
-        DELETE0(_execute_operation_in);
-        DELETE0(_execute_operation_out);
-        DELETE2(_function_execute,_param->_nb_type,_param->_nb_operation);
+        delete    _execute_operation_in;
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp	(revision 128)
@@ -132,4 +132,7 @@
 	    execute_operation->_num_reg_re    = PORT_READ(in_EXECUTE_IN_NUM_REG_RE  );
 	    execute_operation->_data_re       = 0; // no necessaray
+	    execute_operation->_exception     = 0; // no necessaray
+	    execute_operation->_no_sequence   = 0; // no necessaray
+	    execute_operation->_address       = 0; // no necessaray
 
             log_printf(TRACE,Functionnal_unit,FUNCTION,"    * context_id    : %d",execute_operation->_context_id   );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp	(revision 128)
@@ -122,9 +122,12 @@
 
 #if defined(DEBUG) and defined(DEBUG_Load_store_unit) and (DEBUG_Load_store_unit == true)
-    for (uint32_t i=0; i<_param->_nb_thread; ++i)
-      if (_param->_num_thread_valid [i])
-        {
-          memory_log_file [i].close();
-        }
+    {
+      for (uint32_t i=0; i<_param->_nb_thread; ++i)
+        if (_param->_num_thread_valid [i])
+          {
+            memory_log_file [i].close();
+          }
+      delete [] memory_log_file;
+    }
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp	(revision 128)
@@ -239,18 +239,65 @@
 	_speculative_access_queue_control->clear();
 
-	reg_STORE_QUEUE_PTR_READ = 0;
+	reg_STORE_QUEUE_PTR_READ       = 0;
 	reg_LOAD_QUEUE_CHECK_PRIORITY  = 0;
 
 	for (uint32_t i=0; i< _param->_size_store_queue             ; i++)
           {
-          reg_STORE_QUEUE_NB_CHECK  [i] = 0;
-	  _store_queue              [i]._state = STORE_QUEUE_EMPTY;
+            reg_STORE_QUEUE_NB_CHECK  [i] = 0;
+  	    _store_queue              [i]._state                 = STORE_QUEUE_EMPTY;
+  	    _store_queue              [i]._context_id            = 0; // not necessary
+  	    _store_queue              [i]._front_end_id          = 0; // not necessary
+  	    _store_queue              [i]._ooo_engine_id         = 0; // not necessary
+  	    _store_queue              [i]._packet_id             = 0; // not necessary
+  	    _store_queue              [i]._operation             = 0; // not necessary
+  	    _store_queue              [i]._load_queue_ptr_write  = 0; // not necessary
+  	    _store_queue              [i]._address               = 0; // not necessary
+  	    _store_queue              [i]._wdata                 = 0; // not necessary
+//	    _store_queue              [i]._write_rd              = 0; // not necessary
+//	    _store_queue              [i]._num_reg_rd            = 0; // not necessary
+  	    _store_queue              [i]._exception             = 0; // not necessary
+  	    _store_queue              [i]._send_commit           = 0; // not necessary
           }
 
 	for (uint32_t i=0; i< _param->_size_load_queue              ; i++)
-	  _load_queue               [i]._state = LOAD_QUEUE_EMPTY;
+          {
+            _load_queue               [i]._state                 = LOAD_QUEUE_EMPTY;
+            _load_queue               [i]._context_id            = 0; // not necessary
+            _load_queue               [i]._front_end_id          = 0; // not necessary
+            _load_queue               [i]._ooo_engine_id         = 0; // not necessary
+            _load_queue               [i]._packet_id             = 0; // not necessary
+            _load_queue               [i]._operation             = 0; // not necessary
+            _load_queue               [i]._store_queue_ptr_write = 0; // not necessary
+            _load_queue               [i]._store_queue_ptr_read  = 0; // not necessary
+            _load_queue               [i]._store_queue_empty     = 0; // not necessary
+            _load_queue               [i]._address               = 0; // not necessary
+            _load_queue               [i]._check_hit_byte        = 0; // not necessary 
+            _load_queue               [i]._check_hit             = 0; // not necessary
+            _load_queue               [i]._shift                 = 0; // not necessary
+            _load_queue               [i]._is_load_signed        = 0; // not necessary
+            _load_queue               [i]._access_size           = 0; // not necessary
+            _load_queue               [i]._rdata                 = 0; // not necessary
+            _load_queue               [i]._write_rd              = 0; // not necessary
+            _load_queue               [i]._num_reg_rd            = 0; // not necessary
+            _load_queue               [i]._exception             = 0; // not necessary
+          }
 
 	for (uint32_t i=0; i< _param->_size_speculative_access_queue; i++)
-	  _speculative_access_queue [i]._state = SPECULATIVE_ACCESS_QUEUE_EMPTY;
+          {
+            _speculative_access_queue [i]._state                 = SPECULATIVE_ACCESS_QUEUE_EMPTY;
+            _speculative_access_queue [i]._context_id            = 0; // not necessary
+            _speculative_access_queue [i]._front_end_id          = 0; // not necessary
+            _speculative_access_queue [i]._ooo_engine_id         = 0; // not necessary
+            _speculative_access_queue [i]._packet_id             = 0; // not necessary
+            _speculative_access_queue [i]._operation             = 0; // not necessary
+            _speculative_access_queue [i]._load_queue_ptr_write  = 0; // not necessary
+            _speculative_access_queue [i]._store_queue_ptr_write = 0; // not necessary
+            _speculative_access_queue [i]._store_queue_ptr_read  = 0; // not necessary
+            _speculative_access_queue [i]._store_queue_empty     = 0; // not necessary
+            _speculative_access_queue [i]._address               = 0; // not necessary
+            _speculative_access_queue [i]._write_rd              = 0; // not necessary
+            _speculative_access_queue [i]._num_reg_rd            = 0; // not necessary
+            _speculative_access_queue [i]._exception             = 0; // not necessary
+          }
       }
     else
@@ -1000,7 +1047,7 @@
 	    bool         have_exception = (exception != EXCEPTION_MEMORY_NONE);
             bool         need_check= false;
-            Tlsq_ptr_t        store_queue_ptr_write = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._store_queue_ptr_write;
-            Tlsq_ptr_t        store_queue_ptr_read  = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._store_queue_ptr_read ;
-            Tcontrol_t        store_queue_empty     = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._store_queue_empty    ;
+            Tlsq_ptr_t   store_queue_ptr_write = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._store_queue_ptr_write;
+            Tlsq_ptr_t   store_queue_ptr_read  = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._store_queue_ptr_read ;
+            Tcontrol_t   store_queue_empty     = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._store_queue_empty    ;
 	    
 	    if (have_exception)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp	(revision 128)
@@ -62,5 +62,7 @@
         DELETE0_SIGNAL(out_READ_QUEUE_OUT_OPERATION            ,_param->_size_operation        );
         DELETE0_SIGNAL(out_READ_QUEUE_OUT_TYPE                 ,_param->_size_type             );
-        DELETE0_SIGNAL(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE, _param->_size_store_queue_ptr );
+        DELETE0_SIGNAL(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr  );
+        DELETE0_SIGNAL(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_READ ,_param->_size_store_queue_ptr  );
+        DELETE0_SIGNAL(out_READ_QUEUE_OUT_STORE_QUEUE_EMPTY    ,1                              );
         DELETE0_SIGNAL(out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE , _param->_size_load_queue_ptr  );
         DELETE0_SIGNAL(out_READ_QUEUE_OUT_HAS_IMMEDIAT         ,1                              );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp	(revision 128)
@@ -42,17 +42,37 @@
 
 	// Init, else error in registerfile
-	_queue_head->_ooo_engine_id = 0;
-        // not necessary
-        _queue_head->_read_ra_val = false;
-        _queue_head->_read_rb_val = false;
-        _queue_head->_read_rc_val = false;
-
-        _queue_head->_data_ra_val = false;
-        _queue_head->_data_rb_val = false;
-        _queue_head->_data_rc_val = false;
-
-        _queue_head->_num_reg_ra  = 0;
-        _queue_head->_num_reg_rb  = 0;
-        _queue_head->_num_reg_rc  = 0;
+	_queue_head->_context_id           = 0;// not necessary
+	_queue_head->_front_end_id         = 0;// not necessary
+	_queue_head->_ooo_engine_id        = 0;// not necessary
+
+        _queue_head->_rob_id                = 0;// not necessary
+        _queue_head->_operation             = 0;// not necessary
+        _queue_head->_type                  = 0;// not necessary
+        _queue_head->_store_queue_ptr_write = 0;// not necessary
+        _queue_head->_store_queue_ptr_read  = 0;// not necessary
+        _queue_head->_store_queue_empty     = 0;// not necessary
+        _queue_head->_load_queue_ptr_write  = 0;// not necessary
+        _queue_head->_has_immediat          = 0;// not necessary
+        _queue_head->_immediat              = 0;// not necessary
+
+        _queue_head->_read_ra               = 0;// not necessary
+        _queue_head->_read_rb               = 0;// not necessary
+        _queue_head->_read_rc               = 0;// not necessary
+        _queue_head->_write_rd              = 0;// not necessary
+        _queue_head->_write_re              = 0;// not necessary
+
+        _queue_head->_read_ra_val          = false;
+        _queue_head->_read_rb_val          = false;
+        _queue_head->_read_rc_val          = false;
+
+        _queue_head->_data_ra_val          = false;
+        _queue_head->_data_rb_val          = false;
+        _queue_head->_data_rc_val          = false;
+
+        _queue_head->_num_reg_ra           = 0;// not necessary
+        _queue_head->_num_reg_rb           = 0;// not necessary
+        _queue_head->_num_reg_rc           = 0;// not necessary
+        _queue_head->_num_reg_rd           = 0;// not necessary
+        _queue_head->_num_reg_re           = 0;// not necessary
       }
     else
@@ -76,31 +96,26 @@
 	    Tread_queue_entry_t * entry = new Tread_queue_entry_t;
 
-	    if(_param->_have_port_context_id   )
-	    entry->_context_id   = PORT_READ(in_READ_QUEUE_IN_CONTEXT_ID  );
-	    if(_param->_have_port_front_end_id )
-	    entry->_front_end_id = PORT_READ(in_READ_QUEUE_IN_FRONT_END_ID);
-	    if(_param->_have_port_ooo_engine_id)
-	    entry->_ooo_engine_id= PORT_READ(in_READ_QUEUE_IN_OOO_ENGINE_ID);
-	    if(_param->_have_port_rob_ptr      )
-	    entry->_rob_id       = PORT_READ(in_READ_QUEUE_IN_ROB_ID      );
-	    entry->_operation    = PORT_READ(in_READ_QUEUE_IN_OPERATION   );
-	    entry->_type         = PORT_READ(in_READ_QUEUE_IN_TYPE        );
+            entry->_context_id            = (_param->_have_port_context_id    )?PORT_READ(in_READ_QUEUE_IN_CONTEXT_ID   ):0;
+	    entry->_front_end_id          = (_param->_have_port_front_end_id  )?PORT_READ(in_READ_QUEUE_IN_FRONT_END_ID ):0;
+	    entry->_ooo_engine_id         = (_param->_have_port_ooo_engine_id )?PORT_READ(in_READ_QUEUE_IN_OOO_ENGINE_ID):0;
+            entry->_rob_id                = (_param->_have_port_rob_ptr       )?PORT_READ(in_READ_QUEUE_IN_ROB_ID       ):0;
+	    entry->_operation             = PORT_READ(in_READ_QUEUE_IN_OPERATION   );
+	    entry->_type                  = PORT_READ(in_READ_QUEUE_IN_TYPE        );
 	    entry->_store_queue_ptr_write = PORT_READ(in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE);
 	    entry->_store_queue_ptr_read  = PORT_READ(in_READ_QUEUE_IN_STORE_QUEUE_PTR_READ );
 	    entry->_store_queue_empty     = PORT_READ(in_READ_QUEUE_IN_STORE_QUEUE_EMPTY    );
-	    if (_param->_have_port_load_queue_ptr)
-	    entry->_load_queue_ptr_write  = PORT_READ(in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE );
-	    entry->_has_immediat = PORT_READ(in_READ_QUEUE_IN_HAS_IMMEDIAT);
-	    entry->_immediat     = PORT_READ(in_READ_QUEUE_IN_IMMEDIAT    );
-	    entry->_read_ra      = PORT_READ(in_READ_QUEUE_IN_READ_RA     );
-	    entry->_num_reg_ra   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RA  );
-	    entry->_read_rb      = PORT_READ(in_READ_QUEUE_IN_READ_RB     );
-	    entry->_num_reg_rb   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RB  );
-	    entry->_read_rc      = PORT_READ(in_READ_QUEUE_IN_READ_RC     );
-	    entry->_num_reg_rc   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RC  );
-	    entry->_write_rd     = PORT_READ(in_READ_QUEUE_IN_WRITE_RD    );
-	    entry->_num_reg_rd   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RD  );
-	    entry->_write_re     = PORT_READ(in_READ_QUEUE_IN_WRITE_RE    );
-	    entry->_num_reg_re   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RE  );
+            entry->_load_queue_ptr_write  = (_param->_have_port_load_queue_ptr)?PORT_READ(in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ):0;
+	    entry->_has_immediat          = PORT_READ(in_READ_QUEUE_IN_HAS_IMMEDIAT);
+	    entry->_immediat              = PORT_READ(in_READ_QUEUE_IN_IMMEDIAT    );
+	    entry->_read_ra               = PORT_READ(in_READ_QUEUE_IN_READ_RA     );
+	    entry->_num_reg_ra            = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RA  );
+	    entry->_read_rb               = PORT_READ(in_READ_QUEUE_IN_READ_RB     );
+	    entry->_num_reg_rb            = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RB  );
+	    entry->_read_rc               = PORT_READ(in_READ_QUEUE_IN_READ_RC     );
+	    entry->_num_reg_rc            = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RC  );
+	    entry->_write_rd              = PORT_READ(in_READ_QUEUE_IN_WRITE_RD    );
+	    entry->_num_reg_rd            = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RD  );
+	    entry->_write_re              = PORT_READ(in_READ_QUEUE_IN_WRITE_RE    );
+	    entry->_num_reg_re            = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RE  );
 
 	    log_printf(TRACE,Read_queue,FUNCTION,"    * push (id : %d-%d)",entry->_context_id, entry->_rob_id);
@@ -122,4 +137,5 @@
 	    // Pop the entry
 	    log_printf(TRACE,Read_queue,FUNCTION,"    * pop  (id : %d-%d)",_queue->front()->_context_id, _queue->front()->_rob_id);
+            delete _queue->front();
 	    _queue->pop_front();
 
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 124)
+++ 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 128)
@@ -112,4 +112,36 @@
 	_queue_control->clear();
 #endif
+
+	for (uint32_t i=0; i<_param->_size_queue; i++)
+          {
+	    _queue[i]._context_id            = 0; // not necessary
+	    _queue[i]._front_end_id          = 0; // not necessary
+	    _queue[i]._ooo_engine_id         = 0; // not necessary
+	    _queue[i]._rob_id                = 0; // not necessary
+  	    _queue[i]._operation             = 0; // not necessary
+  	    _queue[i]._type                  = 0; // not necessary
+  	    _queue[i]._store_queue_ptr_write = 0; // not necessary
+  	    _queue[i]._store_queue_ptr_read  = 0; // not necessary
+  	    _queue[i]._store_queue_empty     = 0; // not necessary
+  	    _queue[i]._load_queue_ptr_write  = 0; // not necessary
+  	    _queue[i]._has_immediat          = 0; // not necessary
+  	    _queue[i]._immediat              = 0; // not necessary
+//	    _queue[i]._read_ra               = 0; // not necessary
+  	    _queue[i]._num_reg_ra            = 0; // not necessary
+  	    _queue[i]._data_ra_val           = 0; // not necessary
+  	    _queue[i]._data_ra               = 0; // not necessary
+//	    _queue[i]._read_rb               = 0; // not necessary
+  	    _queue[i]._num_reg_rb            = 0; // not necessary
+  	    _queue[i]._data_rb_val           = 0; // not necessary
+  	    _queue[i]._data_rb               = 0; // not necessary
+//	    _queue[i]._read_rc               = 0; // not necessary
+  	    _queue[i]._num_reg_rc            = 0; // not necessary
+  	    _queue[i]._data_rc_val           = 0; // not necessary
+  	    _queue[i]._data_rc               = 0; // not necessary
+  	    _queue[i]._write_rd              = 0; // not necessary
+  	    _queue[i]._num_reg_rd            = 0; // not necessary
+  	    _queue[i]._write_re              = 0; // not necessary
+  	    _queue[i]._num_reg_re            = 0; // not necessary
+          }
       }
     else
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp	(revision 128)
@@ -38,4 +38,6 @@
         DELETE0_SIGNAL( in_READ_UNIT_IN_TYPE                 ,_param->_size_type         );
         DELETE0_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr);
+        DELETE0_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_READ ,_param->_size_store_queue_ptr);
+        DELETE0_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_EMPTY    ,1);
         DELETE0_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr);
         DELETE0_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT         ,1);
@@ -61,4 +63,6 @@
         DELETE1_SIGNAL(out_READ_UNIT_OUT_TYPE                 ,_param->_nb_inst_retire,_param->_size_type            );
         DELETE1_SIGNAL(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr);
+        DELETE1_SIGNAL(out_READ_UNIT_OUT_STORE_QUEUE_PTR_READ ,_param->_nb_inst_retire,_param->_size_store_queue_ptr);
+        DELETE1_SIGNAL(out_READ_UNIT_OUT_STORE_QUEUE_EMPTY    ,_param->_nb_inst_retire,1);
         DELETE1_SIGNAL(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr);
         DELETE1_SIGNAL(out_READ_UNIT_OUT_HAS_IMMEDIAT         ,_param->_nb_inst_retire,1                             );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp	(revision 128)
@@ -91,7 +91,13 @@
     delete _queue;
 
+#ifdef VHDL
+     if (usage_is_set(_usage,USE_VHDL))
+       {
+         delete _component_queue;
+         delete _param_queue;
+       }
+#endif
+
     delete _component;
-    delete _component_queue;
-    delete _param_queue;
 
     log_printf(FUNC,Write_queue,FUNCTION,"End");
@@ -104,5 +110,4 @@
 }; // end namespace multi_execute_loop
 }; // end namespace core
-
 }; // end namespace behavioural
 }; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_transition.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_transition.cpp	(revision 128)
@@ -18,5 +18,4 @@
 namespace write_unit {
 namespace write_queue {
-
 
 #undef  FUNCTION
@@ -114,4 +113,19 @@
                      (*it)->_no_sequence  ,
                      (*it)->_address      );
+
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * context_id   : %d",  (*it)->_context_id   );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * front_end_id : %d",  (*it)->_front_end_id );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * ooo_engine_id: %d",  (*it)->_ooo_engine_id);
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * packet_id    : %d",  (*it)->_packet_id    );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * write_rd     : %d",  (*it)->_write_rd     );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * num_reg_rd   : %d",  (*it)->_num_reg_rd   );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * data_rd      : %d",  (*it)->_data_rd      );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * write_re     : %d",  (*it)->_write_re     );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * num_reg_re   : %d",  (*it)->_num_reg_re   );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * data_re      : %d",  (*it)->_data_re      );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * exception    : %d",  (*it)->_exception    );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * no_sequence  : %d",  (*it)->_no_sequence  );
+//           log_printf(TRACE,Write_queue,FUNCTION,"    * address      : %d",  (*it)->_address      );
+
           i++;
         }
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_deallocation.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_deallocation.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_deallocation.cpp	(revision 128)
@@ -38,4 +38,6 @@
          DELETE2_SIGNAL( in_READ_UNIT_OUT_TYPE                   , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_type             );
          DELETE2_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE  , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_store_queue_ptr  );
+         DELETE2_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_PTR_READ   , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_store_queue_ptr  );
+         DELETE2_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_EMPTY      , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],1                              );
          DELETE2_SIGNAL( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE   , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_load_queue_ptr   );
          DELETE2_SIGNAL( in_READ_UNIT_OUT_HAS_IMMEDIAT           , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],1                              );
@@ -63,4 +65,6 @@
          DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RE           , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_special_register );
          DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE, _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_store_queue_ptr  );
+         DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_READ , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_store_queue_ptr  );
+         DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_EMPTY    , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],1                              );
          DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_load_queue_ptr   );
          DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_IMMEDIAT             , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_general_data     );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h	(revision 128)
@@ -61,6 +61,6 @@
   public    : SC_CLOCK                      *  in_CLOCK  ;
   public    : SC_IN (Tcontrol_t)            *  in_NRESET ;
-  public    : SC_OUT(Tcontrol_t        )    * out_CONST_0;
-  public    : SC_OUT(Tcontrol_t        )    * out_CONST_1;
+//public    : SC_OUT(Tcontrol_t        )    * out_CONST_0;
+//public    : SC_OUT(Tcontrol_t        )    * out_CONST_1;
 
     // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -77,5 +77,5 @@
   public    : SC_OUT(Tcontrol_t        )  *** out_GPR_READ_STATUS_VAL       ;
   public    : SC_IN (Tcontrol_t        )  ***  in_GPR_READ_STATUS_ACK       ;
-  public    : SC_IN (Tcontrol_t        )  ***  in_GPR_READ_STATUS_DATA_VAL  ;
+  public    : SC_IN (Tgeneral_data_t   )  ***  in_GPR_READ_STATUS_DATA_VAL  ; // type for compatibility with the registerFile
 
     // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -92,5 +92,5 @@
   public    : SC_OUT(Tcontrol_t        )  *** out_SPR_READ_STATUS_VAL       ;
   public    : SC_IN (Tcontrol_t        )  ***  in_SPR_READ_STATUS_ACK       ;
-  public    : SC_IN (Tcontrol_t        )  ***  in_SPR_READ_STATUS_DATA_VAL  ;
+  public    : SC_IN (Tspecial_data_t   )  ***  in_SPR_READ_STATUS_DATA_VAL  ; // type for compatibility with the registerFile
 
     // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -104,4 +104,5 @@
   public    : SC_OUT(Tcontrol_t        )  *** out_GPR_WRITE_STATUS_VAL      ;
   public    : SC_IN (Tcontrol_t        )  ***  in_GPR_WRITE_STATUS_ACK      ;
+  public    : SC_OUT(Tgeneral_data_t   )  *** out_GPR_WRITE_STATUS_DATA     ; // type for compatibility with the registerFile
     
     // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -115,4 +116,5 @@
   public    : SC_OUT(Tcontrol_t        )  *** out_SPR_WRITE_STATUS_VAL      ;
   public    : SC_IN (Tcontrol_t        )  ***  in_SPR_WRITE_STATUS_ACK      ;
+  public    : SC_OUT(Tspecial_data_t   )  *** out_SPR_WRITE_STATUS_DATA     ; // type for compatibility with the registerFile
 
     // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -124,7 +126,9 @@
   public    : SC_OUT(Tcontrol_t        )  *** out_INSERT_ROB_GPR_STATUS_VAL            ;
   public    : SC_IN (Tcontrol_t        )  ***  in_INSERT_ROB_GPR_STATUS_ACK            ;
+  public    : SC_OUT(Tgeneral_data_t   )  *** out_INSERT_ROB_GPR_STATUS_DATA           ; // type for compatibility with the registerFile
 
   public    : SC_OUT(Tcontrol_t        )  *** out_INSERT_ROB_SPR_STATUS_VAL            ;
   public    : SC_IN (Tcontrol_t        )  ***  in_INSERT_ROB_SPR_STATUS_ACK            ;
+  public    : SC_OUT(Tspecial_data_t   )  *** out_INSERT_ROB_SPR_STATUS_DATA           ; // type for compatibility with the registerFile
 
 //     // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp	(revision 128)
@@ -71,7 +71,19 @@
       {
     // Constant
-
-    PORT_WRITE(out_CONST_0 ,0);
-    PORT_WRITE(out_CONST_1 ,1);
+//     PORT_WRITE(out_CONST_0 ,0);
+//     PORT_WRITE(out_CONST_1 ,1);
+        for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
+          {
+            for (uint32_t j=0; j<_param->_nb_gpr_write; ++j)
+              PORT_WRITE(out_GPR_WRITE_STATUS_DATA [i][j],1);
+            for (uint32_t j=0; j<_param->_nb_spr_write; ++j)
+              PORT_WRITE(out_SPR_WRITE_STATUS_DATA [i][j],1);
+
+            for (uint32_t j=0; j<_param->_nb_inst_insert_rob[i]; ++j)
+              {
+                PORT_WRITE(out_INSERT_ROB_GPR_STATUS_DATA [i][j],0);
+                PORT_WRITE(out_INSERT_ROB_SPR_STATUS_DATA [i][j],0);
+              }
+          }
 
     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - transition");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_allocation.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_allocation.cpp	(revision 128)
@@ -48,6 +48,6 @@
      in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_NO);
      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_NO);
-    out_CONST_0      = interface->set_signal_out <Tcontrol_t> ("const_0",1);
-    out_CONST_1      = interface->set_signal_out <Tcontrol_t> ("const_1",1);
+//     out_CONST_0      = interface->set_signal_out <Tcontrol_t> ("const_0",1);
+//     out_CONST_1      = interface->set_signal_out <Tcontrol_t> ("const_1",1);
 
     // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -79,5 +79,5 @@
       ALLOC2_VALACK_OUT(out_GPR_READ_STATUS_VAL      ,VAL);
       ALLOC2_VALACK_IN ( in_GPR_READ_STATUS_ACK      ,ACK);
-      ALLOC2_SIGNAL_IN ( in_GPR_READ_STATUS_DATA_VAL,"data_val",Tcontrol_t,1);
+      ALLOC2_SIGNAL_IN ( in_GPR_READ_STATUS_DATA_VAL,"data_val",Tgeneral_data_t,1);
 
       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_read);
@@ -112,5 +112,5 @@
       ALLOC2_VALACK_OUT(out_SPR_READ_STATUS_VAL      ,VAL);
       ALLOC2_VALACK_IN ( in_SPR_READ_STATUS_ACK      ,ACK);
-      ALLOC2_SIGNAL_IN ( in_SPR_READ_STATUS_DATA_VAL,"data_val",Tcontrol_t,1);
+      ALLOC2_SIGNAL_IN ( in_SPR_READ_STATUS_DATA_VAL,"data_val",Tspecial_data_t,1);
       
       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_read);
@@ -140,6 +140,7 @@
       ALLOC2_INTERFACE_BEGIN("gpr_write_status",IN,NORTH,_("Interface to write generalist register - from/to status"),_param->_nb_ooo_engine,_param->_nb_gpr_write);
       
-      ALLOC2_VALACK_OUT(out_GPR_WRITE_STATUS_VAL,VAL);
-      ALLOC2_VALACK_IN ( in_GPR_WRITE_STATUS_ACK,ACK);
+      ALLOC2_VALACK_OUT(out_GPR_WRITE_STATUS_VAL ,VAL);
+      ALLOC2_VALACK_IN ( in_GPR_WRITE_STATUS_ACK ,ACK);
+      ALLOC2_SIGNAL_OUT(out_GPR_WRITE_STATUS_DATA,"data",Tgeneral_data_t,1);
 
       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_write);
@@ -171,4 +172,5 @@
       ALLOC2_VALACK_OUT(out_SPR_WRITE_STATUS_VAL,VAL);
       ALLOC2_VALACK_IN ( in_SPR_WRITE_STATUS_ACK,ACK);
+      ALLOC2_SIGNAL_OUT(out_SPR_WRITE_STATUS_DATA,"data",Tspecial_data_t,1);
 
       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_write);
@@ -190,6 +192,7 @@
       ALLOC2_INTERFACE_BEGIN("insert_rob_gpr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
       
-      _ALLOC2_VALACK_OUT(out_INSERT_ROB_GPR_STATUS_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
-      _ALLOC2_VALACK_IN ( in_INSERT_ROB_GPR_STATUS_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
+      _ALLOC2_VALACK_OUT(out_INSERT_ROB_GPR_STATUS_VAL ,VAL                   ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
+      _ALLOC2_VALACK_IN ( in_INSERT_ROB_GPR_STATUS_ACK ,ACK                   ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
+      _ALLOC2_SIGNAL_OUT(out_INSERT_ROB_GPR_STATUS_DATA,"data",Tgeneral_data_t,1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
 
       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
@@ -199,6 +202,7 @@
       ALLOC2_INTERFACE_BEGIN("insert_rob_spr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
       
-      _ALLOC2_VALACK_OUT(out_INSERT_ROB_SPR_STATUS_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
-      _ALLOC2_VALACK_IN ( in_INSERT_ROB_SPR_STATUS_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
+      _ALLOC2_VALACK_OUT(out_INSERT_ROB_SPR_STATUS_VAL ,VAL                   ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
+      _ALLOC2_VALACK_IN ( in_INSERT_ROB_SPR_STATUS_ACK ,ACK                   ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
+      _ALLOC2_SIGNAL_OUT(out_INSERT_ROB_SPR_STATUS_DATA,"data",Tspecial_data_t,1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
 
       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_deallocation.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_deallocation.cpp	(revision 128)
@@ -24,5 +24,5 @@
     log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
 
-    if (usage_is_set(_usage,USE_VHDL))
+//     if (usage_is_set(_usage,USE_VHDL))
       {
 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
@@ -30,6 +30,6 @@
 //#endif
     delete  in_NRESET;
-    delete out_CONST_0;
-    delete out_CONST_1;
+//     delete out_CONST_0;
+//     delete out_CONST_1;
 
     DELETE1_SIGNAL( in_GPR_READ_VAL           ,_param->_nb_gpr_read,1  );
@@ -69,27 +69,31 @@
     DELETE2_SIGNAL( in_GPR_WRITE_REGISTERFILE_ACK,_param->_nb_ooo_engine,_param->_nb_gpr_write,1  );
 
-    DELETE2_SIGNAL(out_GPR_WRITE_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_gpr_write,1  );
-    DELETE2_SIGNAL( in_GPR_WRITE_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_gpr_write,1  );
+    DELETE2_SIGNAL(out_GPR_WRITE_STATUS_VAL      ,_param->_nb_ooo_engine,_param->_nb_gpr_write,1  );
+    DELETE2_SIGNAL( in_GPR_WRITE_STATUS_ACK      ,_param->_nb_ooo_engine,_param->_nb_gpr_write,1  );
+    DELETE2_SIGNAL(out_GPR_WRITE_STATUS_DATA     ,_param->_nb_ooo_engine,_param->_nb_gpr_write,1  );
 
-    DELETE1_SIGNAL( in_SPR_WRITE_VAL          ,_param->_nb_spr_write,1  );
-    DELETE1_SIGNAL(out_SPR_WRITE_ACK          ,_param->_nb_spr_write,1  );
-    DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id);
+    DELETE1_SIGNAL( in_SPR_WRITE_VAL             ,_param->_nb_spr_write,1  );
+    DELETE1_SIGNAL(out_SPR_WRITE_ACK             ,_param->_nb_spr_write,1  );
+    DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID   ,_param->_nb_spr_write,_param->_size_ooo_engine_id);
 
     DELETE2_SIGNAL(out_SPR_WRITE_REGISTERFILE_VAL,_param->_nb_ooo_engine,_param->_nb_spr_write,1  );
     DELETE2_SIGNAL( in_SPR_WRITE_REGISTERFILE_ACK,_param->_nb_ooo_engine,_param->_nb_spr_write,1  );
 
-    DELETE2_SIGNAL(out_SPR_WRITE_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_spr_write,1  );
-    DELETE2_SIGNAL( in_SPR_WRITE_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_spr_write,1  );
+    DELETE2_SIGNAL(out_SPR_WRITE_STATUS_VAL      ,_param->_nb_ooo_engine,_param->_nb_spr_write,1  );
+    DELETE2_SIGNAL( in_SPR_WRITE_STATUS_ACK      ,_param->_nb_ooo_engine,_param->_nb_spr_write,1  );
+    DELETE2_SIGNAL(out_SPR_WRITE_STATUS_DATA     ,_param->_nb_ooo_engine,_param->_nb_spr_write,1  );
 
-    DELETE2_SIGNAL( in_INSERT_ROB_VAL   ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
-    DELETE2_SIGNAL(out_INSERT_ROB_ACK   ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
-    DELETE2_SIGNAL( in_INSERT_ROB_RD_USE,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
-    DELETE2_SIGNAL( in_INSERT_ROB_RE_USE,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
+    DELETE2_SIGNAL( in_INSERT_ROB_VAL            ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
+    DELETE2_SIGNAL(out_INSERT_ROB_ACK            ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
+    DELETE2_SIGNAL( in_INSERT_ROB_RD_USE         ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
+    DELETE2_SIGNAL( in_INSERT_ROB_RE_USE         ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
 
-    DELETE2_SIGNAL(out_INSERT_ROB_GPR_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
-    DELETE2_SIGNAL( in_INSERT_ROB_GPR_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
+    DELETE2_SIGNAL(out_INSERT_ROB_GPR_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
+    DELETE2_SIGNAL( in_INSERT_ROB_GPR_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
+    DELETE2_SIGNAL(out_INSERT_ROB_GPR_STATUS_DATA,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
 
-    DELETE2_SIGNAL(out_INSERT_ROB_SPR_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
-    DELETE2_SIGNAL( in_INSERT_ROB_SPR_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
+    DELETE2_SIGNAL(out_INSERT_ROB_SPR_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
+    DELETE2_SIGNAL( in_INSERT_ROB_SPR_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
+    DELETE2_SIGNAL(out_INSERT_ROB_SPR_STATUS_DATA,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
       }
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp	(revision 128)
@@ -38,4 +38,7 @@
 	      {
 		Tcontrol_t id = (i == ooo_engine_id)?1:0;
+
+                log_printf(TRACE,Register_unit_Glue,FUNCTION,"  * GPR_WRITE_STATUS_VAL [%d (%d)][%d] : %d (%d and %d)",i, ooo_engine_id,j,id and status_val, id, status_val);
+
 		PORT_WRITE(out_GPR_WRITE_STATUS_VAL       [i][j], (id and status_val));
 	      }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_insert.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_insert.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_insert.cpp	(revision 128)
@@ -46,18 +46,17 @@
                                        gpr_status_ack);
 
-          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"  * insert_rob [%d][%d]",i,j);
-          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * val            (r) : %d",val           );
-          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * ack            (w) : %d",ack           );
-          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * gpr_use (rd)   (r) : %d",gpr_use       );
-          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * gpr_status_val (w) : %d",gpr_status_val);
-          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * gpr_status_ack (r) : %d",gpr_status_ack);
-          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * spr_use (re)   (r) : %d",spr_use       );
-          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * spr_status_val (w) : %d",spr_status_val);
-          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * spr_status_ack (r) : %d",spr_status_ack);
+          log_printf(TRACE,Register_unit_Glue,FUNCTION,"  * insert_rob [%d][%d]",i,j);
+          log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * val            (r) : %d",val           );
+          log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * ack            (w) : %d",ack           );
+          log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_use (rd)   (r) : %d",gpr_use       );
+          log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_status_val (w) : %d",gpr_status_val);
+          log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_status_ack (r) : %d",gpr_status_ack);
+          log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_use (re)   (r) : %d",spr_use       );
+          log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_status_val (w) : %d",spr_status_val);
+          log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_status_ack (r) : %d",spr_status_ack);
 
           PORT_WRITE(out_INSERT_ROB_ACK            [i][j], ack           );
           PORT_WRITE(out_INSERT_ROB_GPR_STATUS_VAL [i][j], gpr_status_val);
           PORT_WRITE(out_INSERT_ROB_SPR_STATUS_VAL [i][j], spr_status_val);
-
         }
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read.cpp	(revision 128)
@@ -1,2 +1,3 @@
+
 #ifdef SYSTEMC
 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/src/test.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/src/test.cpp	(revision 128)
@@ -21,4 +21,10 @@
   morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
 #endif
+
+  _model.set_model(NAME_Register_unit            ,MODEL_SYSTEMC, true);
+  _model.set_model(NAME_RegisterFile             ,MODEL_SYSTEMC, true);
+  _model.set_model(NAME_RegisterFile_Monolithic  ,MODEL_SYSTEMC, true);
+  _model.set_model(NAME_RegisterFile_Multi_Banked,MODEL_SYSTEMC, true);
+  _model.set_model(NAME_Register_unit_Glue       ,MODEL_SYSTEMC, true);
 
   Tusage_t _usage = USE_ALL;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp	(revision 128)
@@ -292,58 +292,64 @@
      
     // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-    std::string name_component;
+    std::string src,dest;
     
     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
       {
-	name_component = _name+"_gpr_"+toString(i);
+	src = _name+"_gpr_"+toString(i);
 	
-        log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),name_component.c_str());
+        log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),src.c_str());
 	
-#ifdef POSITION
-	_component->interface_map (name_component,"",
-				   _name         ,"");
-#endif
-	
-	_component->port_map(name_component,"in_CLOCK"   , _name, "in_CLOCK");
-	_component->port_map(name_component,"in_NRESET"  , _name, "in_NRESET");
+        {
+          dest = _name;
+#ifdef POSITION
+          _component->interface_map (src ,"",
+                                     dest,"");
+#endif
+          PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
+          PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
+        }
 
 	for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
 	  {
-	    _component->port_map(name_component,
-				 "in_READ_"+toString(j)+"_VAL",
-				 _name+"_glue",
-				 "out_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
-	    _component->port_map(name_component,
-				 "out_READ_"+toString(j)+"_ACK",
-				 _name+"_glue",
-				 "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
-	    _component->port_map(name_component,
-				 "out_READ_"+toString(j)+"_DATA",
-				 _name+"_glue",
-				 "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA");
-	    _component->port_map(name_component,
-				 "in_READ_"+toString(j)+"_ADDRESS",
-				 _name,
-				 "in_GPR_READ_"+toString(j)+"_NUM_REG");
+            dest = _name+"_glue";
+            
+#ifdef POSITION
+            _component->interface_map (src ,    "read_"+toString(j),
+                                       dest,"gpr_read_registerfile_"+toString(i)+"_"+toString(j));
+#endif
+
+	    COMPONENT_MAP(_component,src , "in_READ_"                                 +toString(j)+"_VAL",
+                                     dest,"out_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
+	    COMPONENT_MAP(_component,src ,"out_READ_"                                 +toString(j)+"_ACK",
+                                     dest, "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
+	    COMPONENT_MAP(_component,src ,"out_READ_"                                 +toString(j)+"_DATA",
+                                     dest, "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA");
+
+            dest = _name;
+
+	    PORT_MAP     (_component,src , "in_READ_"    +toString(j)+"_ADDRESS",
+                                     dest, "in_GPR_READ_"+toString(j)+"_NUM_REG");
 	  }
+
 	for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
 	  {
-	    _component->port_map(name_component,
-				 "in_WRITE_"+toString(j)+"_VAL",
-				 _name+"_glue",
-				 "out_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
-	    _component->port_map(name_component,
-				 "out_WRITE_"+toString(j)+"_ACK",
-				 _name+"_glue",
-				 "in_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
-	    _component->port_map(name_component,
-				 "in_WRITE_"+toString(j)+"_ADDRESS",
-				 _name,
-				 "in_GPR_WRITE_"+toString(j)+"_NUM_REG"
-				 );
-	    _component->port_map(name_component,
-				 "in_WRITE_"+toString(j)+"_DATA",
-				 _name,
-				 "in_GPR_WRITE_"+toString(j)+"_DATA");
+            dest = _name+"_glue";
+            
+#ifdef POSITION
+            _component->interface_map (src ,    "write_"+toString(j),
+                                       dest,"gpr_write_registerfile_"+toString(i)+"_"+toString(j));
+#endif
+
+	    COMPONENT_MAP(_component,src , "in_WRITE_"                                 +toString(j)+"_VAL",
+                                     dest,"out_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
+	    COMPONENT_MAP(_component,src ,"out_WRITE_"                                 +toString(j)+"_ACK",
+                                     dest, "in_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
+
+            dest = _name;
+
+	    PORT_MAP     (_component,src , "in_WRITE_"    +toString(j)+"_ADDRESS",
+                                     dest, "in_GPR_WRITE_"+toString(j)+"_NUM_REG");
+	    PORT_MAP     (_component,src , "in_WRITE_"    +toString(j)+"_DATA",
+                                     dest, "in_GPR_WRITE_"+toString(j)+"_DATA");
 	  }
 
@@ -353,34 +359,38 @@
       for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
 	{
-	  name_component = _name+"_gpr_status_"+toString(i);
+	  src = _name+"_gpr_status_"+toString(i);
 	  
-	  log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),name_component.c_str());
-	  
-#ifdef POSITION
-	  _component->interface_map (name_component,"",
-				     _name         ,"");
-#endif
-	  
-	  _component->port_map(name_component,"in_CLOCK" , _name, "in_CLOCK");
-	  _component->port_map(name_component,"in_NRESET", _name, "in_NRESET");
-	  
+	  log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),src.c_str());
+
+          {
+            dest = _name;
+#ifdef POSITION
+            _component->interface_map (src ,"",
+                                       dest,"");
+#endif
+            PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
+            PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
+          }
+          
 	  for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
 	    {
-	      _component->port_map(name_component,
-				   "in_READ_"+toString(j)+"_VAL" ,
-				   _name+"_glue",
-				   "out_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        );
-	      _component->port_map(name_component,
-				   "out_READ_"+toString(j)+"_ACK",
-				   _name+"_glue",
-				   "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
-	      _component->port_map(name_component,
-				   "out_READ_"+toString(j)+"_DATA",
-				   _name+"_glue",
-				   "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL"   );
-	      _component->port_map(name_component,
-				   "in_READ_"+toString(j)+"_ADDRESS",
-				   _name,
-				   "in_GPR_READ_"+toString(j)+"_NUM_REG");
+              dest = _name+"_glue";
+              
+#ifdef POSITION
+              _component->interface_map (src ,    "read_"+toString(j),
+                                         dest,"gpr_read_status_"+toString(i)+"_"+toString(j));
+#endif
+
+	      COMPONENT_MAP(_component,src , "in_READ_"                           +toString(j)+"_VAL",
+                                       dest,"out_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
+	      COMPONENT_MAP(_component,src ,"out_READ_"                           +toString(j)+"_ACK",
+                                       dest, "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
+	      COMPONENT_MAP(_component,src ,"out_READ_"                           +toString(j)+"_DATA",
+                                       dest, "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL");
+
+              dest = _name;
+              
+              PORT_MAP     (_component,src , "in_READ_"    +toString(j)+"_ADDRESS",
+                                       dest, "in_GPR_READ_"+toString(j)+"_NUM_REG");
 	    }
 
@@ -388,107 +398,51 @@
 	  for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
 	    {
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x)+"_VAL" ,
-				   _name+"_glue",
-				   "out_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
-	      _component->port_map(name_component,
-				   "out_WRITE_"+toString(x)+"_ACK",
-				   _name+"_glue",
-				   "in_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x)+"_DATA" ,
-				   _name+"_glue",
-				   "out_CONST_1");
-
-	      _component->port_map(_name+"_glue",
-				   "out_CONST_1",
-				   name_component,
-				   "in_WRITE_"+toString(x)+"_DATA" );
-
-
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x++)+"_ADDRESS",
-				   _name,
-				   "in_GPR_WRITE_"+toString(j)+"_NUM_REG");
+              dest = _name+"_glue";
+              
+#ifdef POSITION
+              _component->interface_map (src ,    "write_"+toString(j),
+                                         dest,"gpr_write_status_"+toString(i)+"_"+toString(j));
+#endif
+
+              COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_VAL",
+                                       dest,"out_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
+              COMPONENT_MAP(_component,src ,"out_WRITE_"                           +toString(x)+"_ACK",
+                                       dest, "in_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
+              COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_DATA",
+                                       dest,"out_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_DATA");
+//                                     dest,"out_CONST_1");
+              
+              dest = _name;
+              
+              PORT_MAP     (_component,src , "in_WRITE_"    +toString(x)+"_ADDRESS",
+                                       dest, "in_GPR_WRITE_"+toString(j)+"_NUM_REG");
+
+              x++;
 	    }
 	  
 	  for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
 	    {
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x)+"_VAL" ,
-				   _name+"_glue",
-				   "out_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
-	      _component->port_map(name_component,
-				   "out_WRITE_"+toString(x)+"_ACK",
-				   _name+"_glue",
-				   "in_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
-
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x)+"_DATA",
-				    _name+"_glue",
-				   "out_CONST_0"
-				   );
-	      _component->port_map( _name+"_glue",
-				    "out_CONST_0",
-				    name_component,
-				   "in_WRITE_"+toString(x)+"_DATA");
-
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x++)+"_ADDRESS",
-				   _name,
-				   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG");
-
+              dest = _name+"_glue";
+              
+#ifdef POSITION
+              _component->interface_map (src ,    "write_"+toString(j),
+                                         dest,"insert_rob_gpr_status_"+toString(i)+"_"+toString(j));
+#endif
+
+              COMPONENT_MAP(_component,src , "in_WRITE_"                                +toString(x)+"_VAL",
+                                       dest,"out_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
+              COMPONENT_MAP(_component,src ,"out_WRITE_"                                +toString(x)+"_ACK",
+                                       dest, "in_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
+              COMPONENT_MAP(_component,src , "in_WRITE_"                                +toString(x)+"_DATA",
+                                       dest,"out_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_DATA");
+//                                     dest,"out_CONST_0");
+              
+              dest = _name;
+              
+              PORT_MAP     (_component,src , "in_WRITE_"                     +toString(x)+"_ADDRESS",
+                                       dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG");
+
+              x++;
 	    }
-
-// 	  for (uint32_t j=0; j<_param->_nb_inst_retire_rob [i]; j++)
-// 	    {
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x)+"_VAL" ,
-// 				   _name+"_glue",
-// 				   "out_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL");
-// 	      _component->port_map(name_component,
-// 				   "out_WRITE_"+toString(x)+"_ACK",
-// 				   _name+"_glue",
-// 				   "in_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK" );
-
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x)+"_DATA" ,
-// 				   _name+"_glue",
-// 				   "out_CONST_0");
-// 	      _component->port_map(_name+"_glue",
-// 				   "out_CONST_0",
-// 				   name_component,
-// 				   "in_WRITE_"+toString(x)+"_DATA" );
-
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x++)+"_ADDRESS",
-// 				   _name,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_NUM_REG");
-	      
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x)+"_VAL" ,
-// 				   _name+"_glue",
-// 				   "out_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL");
-// 	      _component->port_map(name_component,
-// 				   "out_WRITE_"+toString(x)+"_ACK",
-// 				   _name+"_glue",
-// 				   "in_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK" );
-
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x)+"_DATA" ,
-// 				   _name+"_glue",
-// 				   "out_CONST_1"
-// 				   );
-// 	      _component->port_map(_name+"_glue",
-// 				   "out_CONST_1",
-// 				   name_component,
-// 				   "in_WRITE_"+toString(x)+"_DATA"
-// 				   );
-
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x++)+"_ADDRESS",
-// 				   _name,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_NUM_REG");
-// 	    }
 
 	}
@@ -497,54 +451,60 @@
     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
       {
-	name_component = _name+"_spr_"+toString(i);
+	src = _name+"_spr_"+toString(i);
 	
-	log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),name_component.c_str());
+	log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),src.c_str());
 	
-#ifdef POSITION
-	_component->interface_map (name_component,"",
-				   _name         ,"");
-#endif
-	
-	_component->port_map(name_component,"in_CLOCK" , _name, "in_CLOCK");
-	_component->port_map(name_component,"in_NRESET", _name, "in_NRESET");
+        {
+          dest = _name;
+#ifdef POSITION
+          _component->interface_map (src ,"",
+                                     dest,"");
+#endif
+          PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
+          PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
+        }
 
 	for (uint32_t j=0; j<_param->_nb_spr_read; j++)
 	  {
-	    _component->port_map(name_component,
-				 "in_READ_"+toString(j)+"_VAL",
-				 _name+"_glue",
-				 "out_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
-	    _component->port_map(name_component,
-				 "out_READ_"+toString(j)+"_ACK",
-				 _name+"_glue",
-				 "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
-	    _component->port_map(name_component,
-				 "out_READ_"+toString(j)+"_DATA",
-				 _name+"_glue",
-				 "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA");
-	    _component->port_map(name_component,
-				 "in_READ_"+toString(j)+"_ADDRESS",
-				 _name,
-				 "in_SPR_READ_"+toString(j)+"_NUM_REG");
+            dest = _name+"_glue";
+            
+#ifdef POSITION
+            _component->interface_map (src ,    "read_"+toString(j),
+                                       dest,"spr_read_registerfile_"+toString(i)+"_"+toString(j));
+#endif
+
+	    COMPONENT_MAP(_component,src , "in_READ_"                                 +toString(j)+"_VAL",
+                                     dest,"out_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
+	    COMPONENT_MAP(_component,src ,"out_READ_"                                 +toString(j)+"_ACK",
+                                     dest, "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
+	    COMPONENT_MAP(_component,src ,"out_READ_"                                 +toString(j)+"_DATA",
+                                     dest, "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA");
+
+            dest = _name;
+
+	    PORT_MAP     (_component,src , "in_READ_"    +toString(j)+"_ADDRESS",
+                                     dest, "in_SPR_READ_"+toString(j)+"_NUM_REG");
 	  }
+
 	for (uint32_t j=0; j<_param->_nb_spr_write; j++)
 	  {
-	    _component->port_map(name_component,
-				 "in_WRITE_"+toString(j)+"_VAL",
-				 _name+"_glue",
-				 "out_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
-	    _component->port_map(name_component,
-				 "out_WRITE_"+toString(j)+"_ACK",
-				 _name+"_glue",
-				 "in_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
-	    _component->port_map(name_component,
-				 "in_WRITE_"+toString(j)+"_ADDRESS",
-				 _name,
-				 "in_SPR_WRITE_"+toString(j)+"_NUM_REG"
-				 );
-	    _component->port_map(name_component,
-				 "in_WRITE_"+toString(j)+"_DATA",
-				 _name,
-				 "in_SPR_WRITE_"+toString(j)+"_DATA");
+            dest = _name+"_glue";
+            
+#ifdef POSITION
+            _component->interface_map (src ,    "write_"+toString(j),
+                                       dest,"spr_write_registerfile_"+toString(i)+"_"+toString(j));
+#endif
+
+	    COMPONENT_MAP(_component,src , "in_WRITE_"                                 +toString(j)+"_VAL",
+                                     dest,"out_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
+	    COMPONENT_MAP(_component,src ,"out_WRITE_"                                 +toString(j)+"_ACK",
+                                     dest, "in_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
+
+            dest = _name;
+
+	    PORT_MAP     (_component,src , "in_WRITE_"    +toString(j)+"_ADDRESS",
+                                     dest, "in_SPR_WRITE_"+toString(j)+"_NUM_REG");
+	    PORT_MAP     (_component,src , "in_WRITE_"    +toString(j)+"_DATA",
+                                     dest, "in_SPR_WRITE_"+toString(j)+"_DATA");
 	  }
 
@@ -554,34 +514,38 @@
       for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
 	{
-	  name_component = _name+"_spr_status_"+toString(i);
+	  src = _name+"_spr_status_"+toString(i);
 	  
-	  log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),name_component.c_str());	
+	  log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),src.c_str());	
   
-#ifdef POSITION
-	  _component->interface_map (name_component,"",
-				     _name         ,"");
-#endif
-	  
-	  _component->port_map(name_component,"in_CLOCK" , _name, "in_CLOCK");
-	  _component->port_map(name_component,"in_NRESET", _name, "in_NRESET");
-	  
+          {
+            dest = _name;
+#ifdef POSITION
+            _component->interface_map (src ,"",
+                                       dest,"");
+#endif
+            PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
+            PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
+          }
+
 	  for (uint32_t j=0; j<_param->_nb_spr_read; j++)
 	    {
-	      _component->port_map(name_component,
-				   "in_READ_"+toString(j)+"_VAL" ,
-				   _name+"_glue",
-				   "out_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        );
-	      _component->port_map(name_component,
-				   "out_READ_"+toString(j)+"_ACK",
-				   _name+"_glue",
-				   "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
-	      _component->port_map(name_component,
-				   "out_READ_"+toString(j)+"_DATA",
-				   _name+"_glue",
-				   "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL"   );
-	      _component->port_map(name_component,
-				   "in_READ_"+toString(j)+"_ADDRESS",
-				   _name,
-				   "in_SPR_READ_"+toString(j)+"_NUM_REG");
+              dest = _name+"_glue";
+              
+#ifdef POSITION
+              _component->interface_map (src ,    "read_"+toString(j),
+                                         dest,"spr_read_status_"+toString(i)+"_"+toString(j));
+#endif
+
+	      COMPONENT_MAP(_component,src , "in_READ_"                           +toString(j)+"_VAL",
+                                       dest,"out_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
+	      COMPONENT_MAP(_component,src ,"out_READ_"                           +toString(j)+"_ACK",
+                                       dest, "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
+	      COMPONENT_MAP(_component,src ,"out_READ_"                           +toString(j)+"_DATA",
+                                       dest, "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL");
+
+              dest = _name;
+              
+              PORT_MAP     (_component,src , "in_READ_"    +toString(j)+"_ADDRESS",
+                                       dest, "in_SPR_READ_"+toString(j)+"_NUM_REG");
 	    }
 
@@ -589,108 +553,52 @@
 	  for (uint32_t j=0; j<_param->_nb_spr_write; j++)
 	    {
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x)+"_VAL" ,
-				   _name+"_glue",
-				   "out_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
-	      _component->port_map(name_component,
-				   "out_WRITE_"+toString(x)+"_ACK",
-				   _name+"_glue",
-				   "in_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x)+"_DATA" ,
-				   _name+"_glue",
-				   "out_CONST_1");
-	      _component->port_map(_name+"_glue",
-				   "out_CONST_1",
-				   name_component,
-				   "in_WRITE_"+toString(x)+"_DATA"
-				   );
-
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x++)+"_ADDRESS",
-				   _name,
-				   "in_SPR_WRITE_"+toString(j)+"_NUM_REG");
+              dest = _name+"_glue";
+              
+#ifdef POSITION
+              _component->interface_map (src ,    "write_"+toString(j),
+                                         dest,"spr_write_status_"+toString(i)+"_"+toString(j));
+#endif
+
+              COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_VAL",
+                                       dest,"out_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
+              COMPONENT_MAP(_component,src ,"out_WRITE_"                           +toString(x)+"_ACK",
+                                       dest, "in_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
+              COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_DATA",
+                                       dest,"out_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_DATA");
+//                                     dest,"out_CONST_1");
+              
+              dest = _name;
+              
+              PORT_MAP     (_component,src , "in_WRITE_"    +toString(x)+"_ADDRESS",
+                                       dest, "in_SPR_WRITE_"+toString(j)+"_NUM_REG");
+
+              x++;
 	    }
 	  
 	  for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
 	    {
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x)+"_VAL" ,
-				   _name+"_glue",
-				   "out_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
-	      _component->port_map(name_component,
-				   "out_WRITE_"+toString(x)+"_ACK",
-				   _name+"_glue",
-				   "in_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
-
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x)+"_DATA",
-				    _name+"_glue",
-				   "out_CONST_0"
-				   );
-	      _component->port_map( _name+"_glue",
-				    "out_CONST_0",
-				   name_component,
-				   "in_WRITE_"+toString(x)+"_DATA"
-				   );
-
-	      _component->port_map(name_component,
-				   "in_WRITE_"+toString(x++)+"_ADDRESS",
-				   _name,
-				   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG");
-
+              dest = _name+"_glue";
+              
+#ifdef POSITION
+              _component->interface_map (src ,    "write_"+toString(j),
+                                         dest,"insert_rob_spr_status_"+toString(i)+"_"+toString(j));
+#endif
+
+              COMPONENT_MAP(_component,src , "in_WRITE_"                                +toString(x)+"_VAL",
+                                       dest,"out_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
+              COMPONENT_MAP(_component,src ,"out_WRITE_"                                +toString(x)+"_ACK",
+                                       dest, "in_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
+              COMPONENT_MAP(_component,src , "in_WRITE_"                                +toString(x)+"_DATA",
+                                       dest,"out_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_DATA");
+//                                     dest,"out_CONST_0");
+              
+              dest = _name;
+              
+              PORT_MAP     (_component,src , "in_WRITE_"                     +toString(x)+"_ADDRESS",
+                                       dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG");
+
+              x++;
 	    }
 
-// 	  for (uint32_t j=0; j<_param->_nb_inst_retire_rob [i]; j++)
-// 	    {
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x)+"_VAL" ,
-// 				   _name+"_glue",
-// 				   "out_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL");
-// 	      _component->port_map(name_component,
-// 				   "out_WRITE_"+toString(x)+"_ACK",
-// 				   _name+"_glue",
-// 				   "in_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK" );
-
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x)+"_DATA" ,
-// 				   _name+"_glue",
-// 				   "out_CONST_0");
-// 	      _component->port_map(_name+"_glue",
-// 				   "out_CONST_0",
-// 				   name_component,
-// 				   "in_WRITE_"+toString(x)+"_DATA"
-// 				   );
-
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x++)+"_ADDRESS",
-// 				   _name,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_NUM_REG");
-	      
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x)+"_VAL" ,
-// 				   _name+"_glue",
-// 				   "out_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL");
-// 	      _component->port_map(name_component,
-// 				   "out_WRITE_"+toString(x)+"_ACK",
-// 				   _name+"_glue",
-// 				   "in_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK" );
-
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x)+"_DATA" ,
-// 				   _name+"_glue",
-// 				   "out_CONST_1"
-// 				   );
-// 	      _component->port_map(_name+"_glue",
-// 				   "out_CONST_1",
-// 				   name_component,
-// 				   "in_WRITE_"+toString(x)+"_DATA"
-// 				   );
-
-// 	      _component->port_map(name_component,
-// 				   "in_WRITE_"+toString(x++)+"_ADDRESS",
-// 				   _name,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_NUM_REG");
-// 	    }
 
 	}
@@ -698,308 +606,157 @@
 
     {
-      name_component = _name+"_glue";
+      src = _name+"_glue";
      
-      log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),name_component.c_str());  
+      log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),src.c_str());  
    
-#ifdef POSITION
-      _component->interface_map (name_component,"",
-				 _name         ,"");
-#endif
-    
-      _component->port_map(name_component,"in_CLOCK" , _name, "in_CLOCK" );
-      _component->port_map(name_component,"in_NRESET", _name, "in_NRESET");
-//       _component->port_map(name_component,"out_CONST_0",_name,"out_CONST_0");
-//       _component->port_map(name_component,"out_CONST_1",_name,"out_CONST_1");
+        {
+          dest = _name;
+#ifdef POSITION
+          _component->interface_map (src ,"",
+                                     dest,"");
+#endif
+          PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
+          PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
+        }
 
       for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
 	{
-	  _component->port_map(name_component,
-			       "in_GPR_READ_"+toString(j)+"_VAL",
-			       _name, 
-			       "in_GPR_READ_"+toString(j)+"_VAL");
-	  _component->port_map(name_component,
-			       "out_GPR_READ_"+toString(j)+"_ACK",
-			       _name,
-			       "out_GPR_READ_"+toString(j)+"_ACK"           );
+          dest = _name;
+              
+#ifdef POSITION
+          _component->interface_map (src ,"gpr_read_"+toString(j),
+                                     dest,"gpr_read_"+toString(j));
+#endif
+
+          PORT_MAP(_component,src , "in_GPR_READ_"+toString(j)+"_VAL",
+                              dest, "in_GPR_READ_"+toString(j)+"_VAL");
+          PORT_MAP(_component,src ,"out_GPR_READ_"+toString(j)+"_ACK",
+                              dest,"out_GPR_READ_"+toString(j)+"_ACK");
 	  if (_param->_have_port_ooo_engine_id == true)
-	    _component->port_map(name_component,
-				 "in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID" , 
-				 _name,
-				 "in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID");
-	  _component->port_map(name_component,
-			       "out_GPR_READ_"+toString(j)+"_DATA"          , 
-			       _name,
-			       "out_GPR_READ_"+toString(j)+"_DATA");
-	  _component->port_map(name_component,
-			       "out_GPR_READ_"+toString(j)+"_DATA_VAL"      , 
-			       _name,
-			       "out_GPR_READ_"+toString(j)+"_DATA_VAL");
-
-	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	    {
-	      _component->port_map(name_component ,
-				   "out_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL",
-				   _name+"_gpr_"+toString(i),
-				   "in_READ_"+toString(j)+"_VAL"  );
-	      _component->port_map(name_component,
-				   "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK"  ,
-				   _name+"_gpr_"+toString(i),
-				   "out_READ_"+toString(j)+"_ACK" );
-	      _component->port_map(name_component,
-				   "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA" ,
-				   _name+"_gpr_"+toString(i),
-				   "out_READ_"+toString(j)+"_DATA");
-	      _component->port_map(name_component,
-				   "out_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        ,
-				   _name+"_gpr_status_"+toString(i),
-				   "in_READ_"+toString(j)+"_VAL" );
-	      _component->port_map(name_component,
-				   "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" ,
-				   _name+"_gpr_status_"+toString(i),
-				   "out_READ_"+toString(j)+"_ACK");
-	      _component->port_map(name_component,
-				   "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL"   ,
-				   _name+"_gpr_status_"+toString(i),
-				   "out_READ_"+toString(j)+"_DATA");
-	    }
+          PORT_MAP(_component,src , "in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID",
+                              dest, "in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID");
+          PORT_MAP(_component,src ,"out_GPR_READ_"+toString(j)+"_DATA",
+                              dest,"out_GPR_READ_"+toString(j)+"_DATA");
+          PORT_MAP(_component,src ,"out_GPR_READ_"+toString(j)+"_DATA_VAL",
+                              dest,"out_GPR_READ_"+toString(j)+"_DATA_VAL");
+
+          // out_GPR_READ_REGISTERFILE_VAL   - gpr. in_READ_VAL
+          //  in_GPR_READ_REGISTERFILE_ACK   - gpr.out_READ_ACK
+          //  in_GPR_READ_REGISTERFILE_DATA  - gpr.out_READ_DATA
+          
+          // out_GPR_READ_STATUS_VAL         - gpr. in_READ_VAL
+          //  in_GPR_READ_STATUS_ACK         - gpr.out_READ_ACK
+          //  in_GPR_READ_STATUS_DATA_VAL    - gpr.out_READ_DATA
 	}
 
       for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
 	{
-	  _component->port_map(name_component,
-			       "in_GPR_WRITE_"+toString(j)+"_VAL",
-			       _name, 
-			       "in_GPR_WRITE_"+toString(j)+"_VAL"           );
-	  _component->port_map(name_component,
-			       "out_GPR_WRITE_"+toString(j)+"_ACK", 
-			       _name,
-			       "out_GPR_WRITE_"+toString(j)+"_ACK"           );
+          dest = _name;
+
+#ifdef POSITION
+          _component->interface_map (src ,"gpr_write_"+toString(j),
+                                     dest,"gpr_write_"+toString(j));
+#endif
+
+          PORT_MAP(_component,src , "in_GPR_WRITE_"+toString(j)+"_VAL",
+                              dest, "in_GPR_WRITE_"+toString(j)+"_VAL");
+          PORT_MAP(_component,src ,"out_GPR_WRITE_"+toString(j)+"_ACK",
+                              dest,"out_GPR_WRITE_"+toString(j)+"_ACK");
 	  if (_param->_have_port_ooo_engine_id == true)
-	    _component->port_map(name_component,
-				 "in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID", 
-				 _name,
-				 "in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID" );
-	  
-	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+          PORT_MAP(_component,src , "in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID",
+                              dest, "in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID");
+
+          // out_GPR_WRITE_REGISTERFILE_VAL - gpr. in_WRITE_VAL
+          //  in_GPR_WRITE_REGISTERFILE_ACK - gpr.out_WRITE_ACK
+          // out_GPR_WRITE_STATUS_VAL       - gpr. in_WRITE_VAL
+          //  in_GPR_WRITE_STATUS_ACK       - gpr.out_WRITE_ACK
+          // out_GPR_WRITE_STATUS_DATA      - gpr. in_WRITE_DATA
+	}
+
+      for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+	{
+          dest = _name;
+              
+#ifdef POSITION
+          _component->interface_map (src ,"spr_read_"+toString(j),
+                                     dest,"spr_read_"+toString(j));
+#endif
+
+          PORT_MAP(_component,src , "in_SPR_READ_"+toString(j)+"_VAL",
+                              dest, "in_SPR_READ_"+toString(j)+"_VAL");
+          PORT_MAP(_component,src ,"out_SPR_READ_"+toString(j)+"_ACK",
+                              dest,"out_SPR_READ_"+toString(j)+"_ACK");
+	  if (_param->_have_port_ooo_engine_id == true)
+          PORT_MAP(_component,src , "in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID",
+                              dest, "in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID");
+          PORT_MAP(_component,src ,"out_SPR_READ_"+toString(j)+"_DATA",
+                              dest,"out_SPR_READ_"+toString(j)+"_DATA");
+          PORT_MAP(_component,src ,"out_SPR_READ_"+toString(j)+"_DATA_VAL",
+                              dest,"out_SPR_READ_"+toString(j)+"_DATA_VAL");
+
+          // out_SPR_READ_REGISTERFILE_VAL   - spr. in_READ_VAL
+          //  in_SPR_READ_REGISTERFILE_ACK   - spr.out_READ_ACK
+          //  in_SPR_READ_REGISTERFILE_DATA  - spr.out_READ_DATA
+          
+          // out_SPR_READ_STATUS_VAL         - spr. in_READ_VAL
+          //  in_SPR_READ_STATUS_ACK         - spr.out_READ_ACK
+          //  in_SPR_READ_STATUS_DATA_VAL    - spr.out_READ_DATA
+	}
+
+      for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+	{
+          dest = _name;
+
+#ifdef POSITION
+          _component->interface_map (src ,"spr_write_"+toString(j),
+                                     dest,"spr_write_"+toString(j));
+#endif
+
+          PORT_MAP(_component,src , "in_SPR_WRITE_"+toString(j)+"_VAL",
+                              dest, "in_SPR_WRITE_"+toString(j)+"_VAL");
+          PORT_MAP(_component,src ,"out_SPR_WRITE_"+toString(j)+"_ACK",
+                              dest,"out_SPR_WRITE_"+toString(j)+"_ACK");
+	  if (_param->_have_port_ooo_engine_id == true)
+          PORT_MAP(_component,src , "in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID",
+                              dest, "in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID");
+
+          // out_SPR_WRITE_REGISTERFILE_VAL - spr. in_WRITE_VAL
+          //  in_SPR_WRITE_REGISTERFILE_ACK - spr.out_WRITE_ACK
+          // out_SPR_WRITE_STATUS_VAL       - spr. in_WRITE_VAL
+          //  in_SPR_WRITE_STATUS_ACK       - spr.out_WRITE_ACK
+          // out_SPR_WRITE_STATUS_DATA      - spr. in_WRITE_DATA
+	}
+
+      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	{
+	  uint32_t x     =_param->_nb_inst_insert_rob [i];
+
+	  for (uint32_t j=0; j<x; j++)
 	    {
-	      _component->port_map(name_component,
-				   "out_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL"  ,
-				   _name+"_gpr_"+toString(i),
-				   "in_WRITE_"+toString(j)+"_VAL" );
-	      _component->port_map(name_component,
-				   "in_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK"  ,
-				   _name+"_gpr_"+toString(i),
-				   "out_WRITE_"+toString(j)+"_ACK" );
-	      _component->port_map(name_component,
-				   "out_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        ,
-				   _name+"_gpr_status_"+toString(i),
-				   "in_WRITE_"+toString(j)+"_VAL" );
-	      _component->port_map(name_component,
-				   "in_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK"        ,
-				   _name+"_gpr_status_"+toString(i),
-				   "out_WRITE_"+toString(j)+"_ACK" );
+              dest = _name;
+
+#ifdef POSITION
+              _component->interface_map (src ,"insert_rob_"+toString(i)+"_"+toString(j),
+                                         dest,"insert_rob_"+toString(i)+"_"+toString(j));
+#endif
+
+	      PORT_MAP(_component,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL",
+                                  dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL");
+	      PORT_MAP(_component,src ,"out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK",
+                                  dest,"out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK");
+	      PORT_MAP(_component,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE",
+                                  dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE");
+	      PORT_MAP(_component,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE",
+                                  dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE");
+              
+              // out_INSERT_ROB_GPR_STATUS_VAL - gpr_status.  in_WRITE_VAL
+              //  in_INSERT_ROB_GPR_STATUS_ACK - gpr_status. out_WRITE_ACK
+              // out_INSERT_ROB_GPR_STATUS_DATA- gpr_status.  in_WRITE_DATA
+              // out_INSERT_ROB_SPR_STATUS_VAL - spr_status.  in_WRITE_VAL
+              //  in_INSERT_ROB_SPR_STATUS_ACK - spr_status. out_WRITE_ACK
+              //  in_INSERT_ROB_SPR_STATUS_DATA- spr_status. out_WRITE_DATA
 	    }
 	}
       
-      for (uint32_t j=0; j<_param->_nb_spr_read; j++)
-	{
-	  _component->port_map(name_component,
-			       "in_SPR_READ_"+toString(j)+"_VAL",
-			       _name, 
-			       "in_SPR_READ_"+toString(j)+"_VAL");
-	  _component->port_map(name_component,
-			       "out_SPR_READ_"+toString(j)+"_ACK",
-			       _name,
-			       "out_SPR_READ_"+toString(j)+"_ACK"           );
-	  if (_param->_have_port_ooo_engine_id == true)
-	    _component->port_map(name_component,
-				 "in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID" , 
-				 _name,
-				 "in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID");
-	  _component->port_map(name_component,
-			       "out_SPR_READ_"+toString(j)+"_DATA"          , 
-			       _name,
-			       "out_SPR_READ_"+toString(j)+"_DATA");
-	  _component->port_map(name_component,
-			       "out_SPR_READ_"+toString(j)+"_DATA_VAL"      , 
-			       _name,
-			       "out_SPR_READ_"+toString(j)+"_DATA_VAL");
-
-	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	    {
-	      _component->port_map(name_component ,
-				   "out_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL",
-				   _name+"_spr_"+toString(i),
-				   "in_READ_"+toString(j)+"_VAL"  );
-	      _component->port_map(name_component,
-				   "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK"  ,
-				   _name+"_spr_"+toString(i),
-				   "out_READ_"+toString(j)+"_ACK" );
-	      _component->port_map(name_component,
-				   "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA" ,
-				   _name+"_spr_"+toString(i),
-				   "out_READ_"+toString(j)+"_DATA");
-	      _component->port_map(name_component,
-				   "out_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        ,
-				   _name+"_spr_status_"+toString(i),
-				   "in_READ_"+toString(j)+"_VAL" );
-	      _component->port_map(name_component,
-				   "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" ,
-				   _name+"_spr_status_"+toString(i),
-				   "out_READ_"+toString(j)+"_ACK");
-	      _component->port_map(name_component,
-				   "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL"   ,
-				   _name+"_spr_status_"+toString(i),
-				   "out_READ_"+toString(j)+"_DATA");
-	    }
-	}
-
-      for (uint32_t j=0; j<_param->_nb_spr_write; j++)
-	{
-	  _component->port_map(name_component,
-			       "in_SPR_WRITE_"+toString(j)+"_VAL",
-			       _name, 
-			       "in_SPR_WRITE_"+toString(j)+"_VAL"           );
-	  _component->port_map(name_component,
-			       "out_SPR_WRITE_"+toString(j)+"_ACK", 
-			       _name,
-			       "out_SPR_WRITE_"+toString(j)+"_ACK"           );
-	  if (_param->_have_port_ooo_engine_id == true)
-	    _component->port_map(name_component,
-				 "in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID", 
-				 _name,
-				 "in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID" );
-	  
-	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	    {
-	      _component->port_map(name_component,
-				   "out_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL"  ,
-				   _name+"_spr_"+toString(i),
-				   "in_WRITE_"+toString(j)+"_VAL" );
-	      _component->port_map(name_component,
-				   "in_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK"  ,
-				   _name+"_spr_"+toString(i),
-				   "out_WRITE_"+toString(j)+"_ACK" );
-	      _component->port_map(name_component,
-				   "out_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        ,
-				   _name+"_spr_status_"+toString(i),
-				   "in_WRITE_"+toString(j)+"_VAL" );
-	      _component->port_map(name_component,
-				   "in_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK"        ,
-				   _name+"_spr_status_"+toString(i),
-				   "out_WRITE_"+toString(j)+"_ACK" );
-	    }
-	}
-
-      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	{
-	  uint32_t x     =_param->_nb_inst_insert_rob [i];
-	  uint32_t gpr_j = _param->_nb_gpr_write;
-	  uint32_t spr_j = _param->_nb_spr_write;
-
-	  for (uint32_t j=0; j<x; j++)
-	    {
-	      _component->port_map(name_component,
-				   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL",
-				   _name,
-				   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL");
-	      _component->port_map(name_component,
-				   "out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK",
-				   _name,
-				   "out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK");
-	      _component->port_map(name_component,
-				   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE",
-				   _name,
-				   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE");
-	      _component->port_map(name_component,
-				   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE",
-				   _name,
-				   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE");
-	      _component->port_map(name_component,
-				   "out_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL",
-				   _name+"_gpr_status_"+toString(i),
-				   "in_WRITE_"+toString(gpr_j)+"_VAL");
-	      _component->port_map(name_component,
-				   "in_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK",
-				   _name+"_gpr_status_"+toString(i),
-				   "out_WRITE_"+toString(gpr_j++)+"_ACK");
-	      _component->port_map(name_component,
-				   "out_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL",
-				   _name+"_spr_status_"+toString(i),
-				   "in_WRITE_"+toString(spr_j)+"_VAL");
-	      _component->port_map(name_component,
-				   "in_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK",
-				   _name+"_spr_status_"+toString(i),
-				   "out_WRITE_"+toString(spr_j++)+"_ACK");
-	    }
-	}
-
-//       for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-// 	{
-// 	  uint32_t x     =_param->_nb_inst_retire_rob [i];
-// 	  uint32_t gpr_j = _param->_nb_gpr_write + _param->_nb_inst_insert_rob [i];
-// 	  uint32_t spr_j = _param->_nb_spr_write + _param->_nb_inst_insert_rob [i];
-
-// 	  for (uint32_t j=0; j<x; j++)
-// 	    {
-// 	      _component->port_map(name_component,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL",
-// 				   _name,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL");
-// 	      _component->port_map(name_component,
-// 				   "out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK",
-// 				   _name,
-// 				   "out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK");
-// 	      _component->port_map(name_component,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE",
-// 				   _name,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE");
-// 	      _component->port_map(name_component,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE",
-// 				   _name,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE");
-// 	      _component->port_map(name_component,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE",
-// 				   _name, 
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE");
-// 	      _component->port_map(name_component,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE",
-// 				   _name,
-// 				   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE");
-	    
-// 	      _component->port_map(name_component,
-// 				   "out_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL",
-// 				   _name+"_gpr_status_"+toString(i),
-// 				   "in_WRITE_"+toString(gpr_j)+"_VAL");
-// 	      _component->port_map(name_component,
-// 				   "in_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK",
-// 				   _name+"_gpr_status_"+toString(i),
-// 				   "out_WRITE_"+toString(gpr_j++)+"_ACK");
-// 	      _component->port_map(name_component,
-// 				   "out_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL",
-// 				   _name+"_gpr_status_"+toString(i),
-// 				   "in_WRITE_"+toString(gpr_j)+"_VAL");
-// 	      _component->port_map(name_component,
-// 				   "in_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK",
-// 				   _name+"_gpr_status_"+toString(i),
-// 				   "out_WRITE_"+toString(gpr_j++)+"_ACK");
-// 	      _component->port_map(name_component,
-// 				   "out_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL",
-// 				   _name+"_spr_status_"+toString(i),
-// 				   "in_WRITE_"+toString(spr_j)+"_VAL");
-// 	      _component->port_map(name_component,
-// 				   "in_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK",
-// 				   _name+"_spr_status_"+toString(i),
-// 				   "out_WRITE_"+toString(spr_j++)+"_ACK");
-// 	      _component->port_map(name_component,
-// 				   "out_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL",
-// 				   _name+"_spr_status_"+toString(i),
-// 				   "in_WRITE_"+toString(spr_j)+"_VAL");
-// 	      _component->port_map(name_component,
-// 				   "in_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK",
-// 				   _name+"_spr_status_"+toString(i),
-// 				   "out_WRITE_"+toString(spr_j++)+"_ACK");
-// 	    }
-// 	}
     }// glue
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_deallocation.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_deallocation.cpp	(revision 128)
@@ -74,5 +74,11 @@
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-
+    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+      {
+    delete    component_gpr        [i];
+    delete    component_gpr_status [i];
+    delete    component_spr        [i];
+    delete    component_spr_status [i];
+      }
     delete [] component_gpr       ;
     delete [] component_gpr_status;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/src/main.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/src/main.cpp	(revision 128)
@@ -7,4 +7,5 @@
 
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/include/test.h"
+#include "Behavioural/include/Allocation.h"
 
 #define NB_PARAMS 18
@@ -309,4 +310,9 @@
   morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void) = &(morpheo::behavioural::custom::default_get_custom_information);
 
+  bool * num_thread_valid;
+  ALLOC1(num_thread_valid              ,bool, nb_thread);
+  for (uint32_t i=0; i<nb_thread; ++i)
+    num_thread_valid [i] = true;
+
   try 
     {
@@ -367,8 +373,11 @@
          is_load_store_unit                            , //[nb_execute_unit]
          translate_num_execute_unit                    , //[nb_execute_unit]
+         num_thread_valid                              , //[nb_thread]
          true // is_toplevel
          );
       
       test (name,param);
+
+      delete param;
     }
   catch (morpheo::ErrorMorpheo & error)
@@ -383,4 +392,62 @@
     }
 
+  for (uint32_t i=0; i< nb_functionnal_unit; i++)
+    {
+  for (uint32_t j=0; j< MAX_TYPE; j++)
+  delete [] timing [i][j];
+  delete [] timing [i];
+    }
+  delete [] timing;
+
+  DELETE1(translate_num_execute_unit    ,_nb_execute_unit);
+  DELETE1(is_load_store_unit            ,_nb_execute_unit);
+
+  for (uint32_t i=0; i<nb_execute_unit; i++)
+  delete    read_unit_to_execution_unit_table_thread [i];
+  delete [] read_unit_to_execution_unit_table_thread;
+
+  for (uint32_t i=0; i<nb_read_unit; i++)
+    {
+  for (uint32_t j=0; j<nb_execute_unit; j++)
+  delete [] read_unit_to_execution_unit_table_routing [i][j];
+  delete [] read_unit_to_execution_unit_table_routing [i];
+   }
+  delete [] read_unit_to_execution_unit_table_routing;
+
+  for (uint32_t i=0; i<nb_write_unit; i++)
+  delete    execution_unit_to_write_unit_table_thread [i];
+  delete [] execution_unit_to_write_unit_table_thread;
+
+  for (uint32_t i=0; i<nb_execute_unit; i++)
+    {
+      uint32_t nb_execute_unit_port = (i<nb_load_store_unit)?nb_inst_memory[i]:nb_inst_functionnal_unit[i-nb_load_store_unit];
+  for (uint32_t j=0; j<nb_execute_unit_port; j++)
+  delete [] execution_unit_to_write_unit_table_routing [i][j];
+  delete [] execution_unit_to_write_unit_table_routing [i];
+   }
+  delete [] execution_unit_to_write_unit_table_routing;
+
+  DELETE1(nb_inst_retire_rob            ,_nb_ooo_engine);
+  DELETE1(nb_inst_insert_rob            ,_nb_ooo_engine);
+  DELETE1(nb_special_register           ,_nb_ooo_engine);
+  DELETE1(nb_general_register           ,_nb_ooo_engine);
+  DELETE1(write_queue_scheme            ,_nb_write_unit);
+  DELETE1(nb_bypass_write               ,_nb_write_unit);
+  DELETE1(size_execute_queue            ,_nb_write_unit);
+  DELETE1(size_write_queue              ,_nb_write_unit);
+  DELETE1(nb_inst_memory                ,_nb_load_store_unit);
+  DELETE1(nb_cache_port                 ,_nb_load_store_unit);
+  DELETE1(nb_bypass_memory              ,_nb_load_store_unit);
+  DELETE1(speculative_load              ,_nb_load_store_unit);
+  DELETE1(nb_port_check                 ,_nb_load_store_unit);
+  DELETE1(size_speculative_access_queue ,_nb_load_store_unit);
+  DELETE1(size_load_queue               ,_nb_load_store_unit);
+  DELETE1(size_store_queue              ,_nb_load_store_unit);
+  DELETE1(nb_inst_functionnal_unit      ,_nb_functionnal_unit);
+  DELETE1(nb_inst_retire                ,_nb_read_unit);
+  DELETE1(size_reservation_station      ,_nb_read_unit);
+  DELETE1(size_read_queue               ,_nb_read_unit);
+  DELETE1(num_thread_valid              , nb_thread);
+
   return (EXIT_SUCCESS);
 }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/src/test.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/src/test.cpp	(revision 128)
@@ -50,4 +50,69 @@
   sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);	 
   sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
+
+  sc_signal<Tcontrol_t        >  **  in_EXECUTE_LOOP_IN_VAL                  ;
+  sc_signal<Tcontrol_t        >  ** out_EXECUTE_LOOP_IN_ACK                  ;
+  sc_signal<Tcontext_t        >  **  in_EXECUTE_LOOP_IN_CONTEXT_ID           ;
+  sc_signal<Tcontext_t        >  **  in_EXECUTE_LOOP_IN_FRONT_END_ID         ;
+  sc_signal<Tcontext_t        >  **  in_EXECUTE_LOOP_IN_OOO_ENGINE_ID        ;
+  sc_signal<Tpacket_t         >  **  in_EXECUTE_LOOP_IN_PACKET_ID            ;
+  sc_signal<Toperation_t      >  **  in_EXECUTE_LOOP_IN_OPERATION            ;
+  sc_signal<Ttype_t           >  **  in_EXECUTE_LOOP_IN_TYPE                 ;
+  sc_signal<Tlsq_ptr_t        >  **  in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_WRITE;
+  sc_signal<Tlsq_ptr_t        >  **  in_EXECUTE_LOOP_IN_LOAD_QUEUE_PTR_WRITE ;
+  sc_signal<Tcontrol_t        >  **  in_EXECUTE_LOOP_IN_HAS_IMMEDIAT         ;
+  sc_signal<Tgeneral_data_t   >  **  in_EXECUTE_LOOP_IN_IMMEDIAT             ;
+  sc_signal<Tcontrol_t        >  **  in_EXECUTE_LOOP_IN_READ_RA              ;
+  sc_signal<Tgeneral_address_t>  **  in_EXECUTE_LOOP_IN_NUM_REG_RA           ;
+  sc_signal<Tcontrol_t        >  **  in_EXECUTE_LOOP_IN_READ_RB              ;
+  sc_signal<Tgeneral_address_t>  **  in_EXECUTE_LOOP_IN_NUM_REG_RB           ;
+  sc_signal<Tcontrol_t        >  **  in_EXECUTE_LOOP_IN_READ_RC              ;
+  sc_signal<Tspecial_address_t>  **  in_EXECUTE_LOOP_IN_NUM_REG_RC           ;
+  sc_signal<Tcontrol_t        >  **  in_EXECUTE_LOOP_IN_WRITE_RD             ;
+  sc_signal<Tgeneral_address_t>  **  in_EXECUTE_LOOP_IN_NUM_REG_RD           ;
+  sc_signal<Tcontrol_t        >  **  in_EXECUTE_LOOP_IN_WRITE_RE             ;
+  sc_signal<Tspecial_address_t>  **  in_EXECUTE_LOOP_IN_NUM_REG_RE           ;
+  sc_signal<Tcontrol_t        >  ** out_EXECUTE_LOOP_OUT_VAL                 ;
+  sc_signal<Tcontrol_t        >  **  in_EXECUTE_LOOP_OUT_ACK                 ;
+  sc_signal<Tcontext_t        >  ** out_EXECUTE_LOOP_OUT_CONTEXT_ID          ;
+  sc_signal<Tcontext_t        >  ** out_EXECUTE_LOOP_OUT_FRONT_END_ID        ;
+  sc_signal<Tcontext_t        >  ** out_EXECUTE_LOOP_OUT_OOO_ENGINE_ID       ;
+  sc_signal<Tpacket_t         >  ** out_EXECUTE_LOOP_OUT_PACKET_ID           ;
+//sc_signal<Toperation_t      >  ** out_EXECUTE_LOOP_OUT_OPERATION           ;
+//sc_signal<Ttype_t           >  ** out_EXECUTE_LOOP_OUT_TYPE                ;
+  sc_signal<Tspecial_data_t   >  ** out_EXECUTE_LOOP_OUT_FLAGS               ;
+  sc_signal<Texception_t      >  ** out_EXECUTE_LOOP_OUT_EXCEPTION           ;
+  sc_signal<Tcontrol_t        >  ** out_EXECUTE_LOOP_OUT_NO_SEQUENCE         ;
+  sc_signal<Taddress_t        >  ** out_EXECUTE_LOOP_OUT_ADDRESS             ;
+  sc_signal<Tgeneral_data_t   >  ** out_EXECUTE_LOOP_OUT_DATA                ;
+  sc_signal<Tcontrol_t        > *** out_DCACHE_REQ_VAL                       ;
+  sc_signal<Tcontrol_t        > ***  in_DCACHE_REQ_ACK                       ;
+  sc_signal<Tcontext_t        > *** out_DCACHE_REQ_CONTEXT_ID                ;
+  sc_signal<Tpacket_t         > *** out_DCACHE_REQ_PACKET_ID                 ;
+  sc_signal<Tdcache_address_t > *** out_DCACHE_REQ_ADDRESS                   ;
+  sc_signal<Tdcache_type_t    > *** out_DCACHE_REQ_TYPE                      ;
+  sc_signal<Tdcache_data_t    > *** out_DCACHE_REQ_WDATA                     ;
+  sc_signal<Tcontrol_t        > ***  in_DCACHE_RSP_VAL                       ;
+  sc_signal<Tcontrol_t        > *** out_DCACHE_RSP_ACK                       ;
+  sc_signal<Tcontext_t        > ***  in_DCACHE_RSP_CONTEXT_ID                ;
+  sc_signal<Tpacket_t         > ***  in_DCACHE_RSP_PACKET_ID                 ;
+  sc_signal<Tdcache_data_t    > ***  in_DCACHE_RSP_RDATA                     ;
+  sc_signal<Tdcache_error_t   > ***  in_DCACHE_RSP_ERROR                     ; 
+  sc_signal<Tcontrol_t        > ***  in_INSERT_ROB_VAL                       ;
+  sc_signal<Tcontrol_t        > *** out_INSERT_ROB_ACK                       ;
+  sc_signal<Tcontrol_t        > ***  in_INSERT_ROB_RD_USE                    ;
+  sc_signal<Tgeneral_address_t> ***  in_INSERT_ROB_RD_NUM_REG                ;
+  sc_signal<Tcontrol_t        > ***  in_INSERT_ROB_RE_USE                    ;
+  sc_signal<Tspecial_address_t> ***  in_INSERT_ROB_RE_NUM_REG                ;
+//sc_signal<Tcontrol_t        > ***  in_RETIRE_ROB_VAL                       ;
+//sc_signal<Tcontrol_t        > *** out_RETIRE_ROB_ACK                       ;
+//sc_signal<Tcontrol_t        > ***  in_RETIRE_ROB_RD_OLD_USE                ; 
+//sc_signal<Tgeneral_address_t> ***  in_RETIRE_ROB_RD_OLD_NUM_REG            ;
+//sc_signal<Tcontrol_t        > ***  in_RETIRE_ROB_RD_NEW_USE                ;
+//sc_signal<Tgeneral_address_t> ***  in_RETIRE_ROB_RD_NEW_NUM_REG            ;
+//sc_signal<Tcontrol_t        > ***  in_RETIRE_ROB_RE_OLD_USE                ; 
+//sc_signal<Tspecial_address_t> ***  in_RETIRE_ROB_RE_OLD_NUM_REG            ;
+//sc_signal<Tcontrol_t        > ***  in_RETIRE_ROB_RE_NEW_USE                ;
+//sc_signal<Tspecial_address_t> ***  in_RETIRE_ROB_RE_NEW_NUM_REG            ;
   
   ALLOC1_SC_SIGNAL( in_EXECUTE_LOOP_IN_VAL                  ," in_EXECUTE_LOOP_IN_VAL                  ",Tcontrol_t        ,_param->_nb_read_unit);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp	(revision 124)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp	(revision 128)
@@ -7,4 +7,5 @@
 
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Parameters.h"
+#include "Behavioural/include/Allocation.h"
 #include "Common/include/Max.h"
 
@@ -139,13 +140,10 @@
     _nb_execute_unit                            = _nb_functionnal_unit + _nb_load_store_unit;
 
-    _nb_execute_unit_port                       = new uint32_t [_nb_execute_unit];
-    
-    _read_unit_to_execution_unit_table_execute_type = new bool * [_nb_execute_unit];
+    ALLOC1(_nb_execute_unit_port                          ,uint32_t,_nb_execute_unit);
+    ALLOC2(_read_unit_to_execution_unit_table_execute_type,bool    ,_nb_execute_unit,_nb_type);
+
     for (uint32_t i=0; i<_nb_execute_unit; i++)
-      {
-	_read_unit_to_execution_unit_table_execute_type [i] = new bool [_nb_type];
-	for (uint32_t j=0; j<_nb_type; j++)
-	  _read_unit_to_execution_unit_table_execute_type [i][j] = false;
-      }
+      for (uint32_t j=0; j<_nb_type; j++)
+        _read_unit_to_execution_unit_table_execute_type [i][j] = false;
 
     // Fill execute_type
@@ -203,15 +201,15 @@
     uint32_t _max_nb_inst_memory = max<uint32_t>(_nb_inst_memory,_nb_load_store_unit);
 
-    _set_read_unit_source_register_write = new std::set<uint32_t> [_nb_read_unit];
-    _set_read_unit_source_bypass_write   = new std::set<uint32_t> [_nb_read_unit];
-    _set_read_unit_source_bypass_memory  = new std::set<uint32_t> [_nb_read_unit];
-    
-    _read_unit_nb_register_write          = new uint32_t [_nb_read_unit];
-    _read_unit_nb_bypass_write            = new uint32_t [_nb_read_unit];
-    _read_unit_nb_bypass_memory           = new uint32_t [_nb_read_unit];
-
-    _link_read_unit_with_load_store_unit  = new bool ** [nb_read_unit];
-    _link_read_unit_with_write_unit       = new bool *  [nb_read_unit];
-    _link_read_unit_with_thread           = new bool *  [nb_read_unit];
+    ALLOC1(_set_read_unit_source_register_write  ,std::set<uint32_t>,_nb_read_unit);
+    ALLOC1(_set_read_unit_source_bypass_write    ,std::set<uint32_t>,_nb_read_unit);
+    ALLOC1(_set_read_unit_source_bypass_memory   ,std::set<uint32_t>,_nb_read_unit);
+
+    ALLOC1(_read_unit_nb_register_write          ,uint32_t          ,_nb_read_unit);
+    ALLOC1(_read_unit_nb_bypass_write            ,uint32_t          ,_nb_read_unit);
+    ALLOC1(_read_unit_nb_bypass_memory           ,uint32_t          ,_nb_read_unit);
+
+    ALLOC3(_link_read_unit_with_load_store_unit  ,bool              ,_nb_read_unit,_nb_execute_unit,_max_nb_inst_memory);
+    ALLOC2(_link_read_unit_with_write_unit       ,bool              ,_nb_read_unit,_nb_write_unit  );
+    ALLOC2(_link_read_unit_with_thread           ,bool              ,_nb_read_unit,_nb_thread      );
 
     for (uint32_t i=0; i<_nb_read_unit; i++)
@@ -221,15 +219,8 @@
 	_read_unit_nb_bypass_memory  [i] = 0;
 
-	_link_read_unit_with_load_store_unit [i] = new bool * [_nb_execute_unit];
-	_link_read_unit_with_write_unit      [i] = new bool   [_nb_write_unit];
-	_link_read_unit_with_thread          [i] = new bool   [_nb_thread];
-
 	for (uint32_t j=0; j<_nb_execute_unit; j++)
-	  {
-	    _link_read_unit_with_load_store_unit [i][j] = new bool [_max_nb_inst_memory];
-
-	    for (uint32_t k=0; k<_max_nb_inst_memory; k++)
-	      _link_read_unit_with_load_store_unit [i][j][k] = false;
-	  }
+          for (uint32_t k=0; k<_max_nb_inst_memory; k++)
+            _link_read_unit_with_load_store_unit [i][j][k] = false;
+
 	for (uint32_t j=0; j<_nb_write_unit; j++)
 	  _link_read_unit_with_write_unit [i][j] = false;
@@ -594,13 +585,13 @@
     delete    _param_read_unit [i];
     delete [] _param_read_unit;
-
+    
     for (uint32_t i=0; i<_nb_execute_unit; i++)
       {
         uint32_t x = _translate_num_execute_unit [i];
-
+        
         if (_is_load_store_unit [i] == false)
           delete _param_functionnal_unit [x];
         else
-          delete _param_load_store_unit [x];
+          delete _param_load_store_unit  [x];
       }
     delete [] _param_functionnal_unit;
@@ -613,17 +604,24 @@
     delete    _param_register_unit;
 
-    delete [] _read_unit_to_execution_unit_table_execute_type;
-    delete [] _read_unit_nb_register_write;
-    delete [] _read_unit_nb_bypass_write;
-    delete [] _read_unit_nb_bypass_memory;
-    delete [] _set_read_unit_source_register_write ;
-    delete [] _set_read_unit_source_bypass_write   ;
-    delete [] _set_read_unit_source_bypass_memory  ;
-    delete [] _link_read_unit_with_load_store_unit;
-    delete [] _link_read_unit_with_write_unit;
-    delete [] _link_read_unit_with_thread;
-    delete [] _is_load_store_unit;
-    delete [] _translate_num_execute_unit;
-    delete [] _nb_execute_unit_port;
+    uint32_t _nb_thread = get_nb_thread(_nb_context,
+					_nb_front_end,
+					_nb_ooo_engine);
+    uint32_t _max_nb_inst_memory = max<uint32_t>(_nb_inst_memory,_nb_load_store_unit);
+
+    DELETE2(_link_read_unit_with_thread           ,_nb_read_unit,_nb_thread      );
+    DELETE2(_link_read_unit_with_write_unit       ,_nb_read_unit,_nb_write_unit  );
+    DELETE3(_link_read_unit_with_load_store_unit  ,_nb_read_unit,_nb_execute_unit,_max_nb_inst_memory);
+
+    DELETE1(_read_unit_nb_bypass_memory           ,_nb_read_unit);
+    DELETE1(_read_unit_nb_bypass_write            ,_nb_read_unit);
+    DELETE1(_read_unit_nb_register_write          ,_nb_read_unit);
+
+    DELETE1(_set_read_unit_source_bypass_memory   ,_nb_read_unit);
+    DELETE1(_set_read_unit_source_bypass_write    ,_nb_read_unit);
+    DELETE1(_set_read_unit_source_register_write  ,_nb_read_unit);
+
+    DELETE2(_read_unit_to_execution_unit_table_execute_type,_nb_execute_unit,_nb_type);
+    DELETE1(_nb_execute_unit_port                          ,_nb_execute_unit);
+
     log_printf(FUNC,Execute_loop,FUNCTION,"End");
   };
