Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp	(revision 139)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp	(revision 145)
@@ -534,4 +534,7 @@
             COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_IS_DELAY_SLOT" ,
                                      dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_IS_DELAY_SLOT" );
+            if (_param->_rat_scheme[i] == RAT_DEPTH_SAVE)
+            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_SAVE_RAT"      ,
+                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_SAVE_RAT"      );
 //          COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_HAVE_EVENT"    ,
 //                                   dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_HAVE_EVENT"    );
@@ -633,6 +636,4 @@
 #endif
 
-
-
             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_VAL"               ,
                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_VAL"               );
@@ -670,16 +671,16 @@
             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_LOAD_QUEUE_PTR_WRITE" ,
                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_LOAD_QUEUE_PTR_WRITE" );
-//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RA"              ,
-//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RA"              );
-//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RA_PHY"       ,
-//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RA_PHY"       );
-//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RB"              ,
-//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RB"              );
-//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RB_PHY"       ,
-//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RB_PHY"       );
-//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RC"              ,
-//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RC"              );
-//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RC_PHY"       ,
-//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RC_PHY"       );
+//          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RA"              ,
+//                                   dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RA"              );
+//          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RA_PHY"       ,
+//                                   dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RA_PHY"       );
+//          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RB"              ,
+//                                   dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RB"              );
+//          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RB_PHY"       ,
+//                                   dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RB_PHY"       );
+//          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RC"              ,
+//                                   dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RC"              );
+//          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RC_PHY"       ,
+//                                   dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RC_PHY"       );
             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RD_LOG"       ,
                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD_LOG"       );
@@ -755,4 +756,36 @@
               }
         }
+
+        // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        {
+          std::vector<uint32_t>::iterator it = _param->_link_front_end_with_rename_unit[i].begin();
+          uint32_t x = 0;
+          for (uint32_t j=0; j<_param->_nb_front_end; j++)
+            if (j == *it)
+              {
+                for (uint32_t k=0; k<_param->_nb_context[j]; k++)
+                  {
+                    dest = _name;
+                    
+#ifdef POSITION
+                    _component->interface_map (src ,"spr_read_"+toString(x)+"_"+toString(k),
+                                               dest,"spr_"     +toString(j)+"_"+toString(k));
+#endif
+
+                    if (_param->_have_port_depth)
+                      {
+                    PORT_MAP(_component,src , "in_DEPTH_"+toString(x)+"_"+toString(k)+"_MIN" ,
+                                        dest, "in_DEPTH_"+toString(j)+"_"+toString(k)+"_MIN" );
+                    PORT_MAP(_component,src , "in_DEPTH_"+toString(x)+"_"+toString(k)+"_MAX" ,
+                                        dest, "in_DEPTH_"+toString(j)+"_"+toString(k)+"_MAX" );
+                      }
+                    PORT_MAP(_component,src , "in_DEPTH_"+toString(x)+"_"+toString(k)+"_FULL",
+                                        dest, "in_DEPTH_"+toString(j)+"_"+toString(k)+"_FULL");
+                  }
+                x++;
+                ++it;
+              }
+        }
+
 
         // ~~~~~[ Interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -919,4 +952,5 @@
             //  out_RETIRE_CONTEXT_ID                - component_rename_unit
             ////out_RETIRE_RENAME_UNIT_ID            - component_rename_unit
+            //  out_RETIRE_DEPTH                     - component_rename_unit
             //  out_RETIRE_USE_STORE_QUEUE           - component_rename_unit
             //  out_RETIRE_USE_LOAD_QUEUE            - component_rename_unit
@@ -981,5 +1015,4 @@
           COMPONENT_MAP(_component,src ,"out_COMMIT_"+toString(i)+"_NUM_REG_RD" ,
                                    dest, "in_COMMIT_"+toString(i)+"_NUM_REG_RD" );
-          //@@@@@@@@@@
 	}
       
@@ -1111,24 +1144,24 @@
           }
 
-      // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	   
-      for (uint32_t i=0; i<_param->_nb_front_end; i++)
-        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
-          {
-            dest = _name;
-#ifdef POSITION
-            _component->interface_map (src ,"depth_"+toString(i)+"_"+toString(j),
-                                       dest,"depth_"+toString(i)+"_"+toString(j));
-#endif
-
-            if (_param->_have_port_depth)
-              {
-            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MIN",
-                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MIN");
-            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MAX",
-                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MAX");
-              }
-            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_FULL",
-                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_FULL");
-          }
+//      // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	   
+//      for (uint32_t i=0; i<_param->_nb_front_end; i++)
+//        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
+//          {
+//            dest = _name;
+//#ifdef POSITION
+//            _component->interface_map (src ,"depth_"+toString(i)+"_"+toString(j),
+//                                       dest,"depth_"+toString(i)+"_"+toString(j));
+//#endif
+//
+//            if (_param->_have_port_depth)
+//              {
+//            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MIN",
+//                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MIN");
+//            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MAX",
+//                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MAX");
+//              }
+//            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_FULL",
+//                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_FULL");
+//          }
 
       // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp	(revision 139)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp	(revision 145)
@@ -82,51 +82,50 @@
     log_begin(OOO_Engine,FUNCTION);
 
-    _nb_front_end                      = nb_front_end                     ;
-    _nb_context                        = nb_context                       ;
-    _nb_rename_unit                    = nb_rename_unit                   ;
-    _nb_execute_loop                   = nb_execute_loop                  ;
-    _nb_inst_decod                     = nb_inst_decod                    ;
-    _nb_inst_insert                    = nb_inst_insert                   ;
-    _nb_inst_retire                    = nb_inst_retire                   ;
-//  _nb_inst_issue                     = nb_inst_issue                    ;
-    _nb_inst_execute                   = nb_inst_execute                  ;
-    _nb_inst_reexecute                 = nb_inst_reexecute                ;
-    _nb_inst_commit                    = nb_inst_commit                   ;
-    _nb_inst_branch_complete           = nb_inst_branch_complete          ;
-    _nb_branch_speculated              = nb_branch_speculated             ;
-    _nb_rename_unit_select             = nb_rename_unit_select            ;
-    _nb_execute_loop_select            = nb_execute_loop_select           ;
-//  _size_general_data                 = size_general_data                ;
-//  _size_special_data                 = size_special_data                ;
-    _link_rename_unit_with_front_end   = link_rename_unit_with_front_end  ;
-    _size_re_order_buffer              = size_re_order_buffer             ;
-    _nb_re_order_buffer_bank           = nb_re_order_buffer_bank          ;
-    _retire_ooo_scheme                 = retire_ooo_scheme                ;
-    _commit_priority                   = commit_priority                  ;
-    _commit_load_balancing             = commit_load_balancing            ;
-    _size_issue_queue                  = size_issue_queue                 ;
-    _issue_queue_scheme                = issue_queue_scheme               ;
-    _nb_issue_queue_bank               = nb_issue_queue_bank              ;
-    _issue_priority                    = issue_priority                   ;
-    _issue_load_balancing              = issue_load_balancing             ;
-//  _table_routing                     = table_routing                    ;
-//  _table_issue_type                  = table_issue_type                 ;
-    _size_reexecute_queue              = size_reexecute_queue             ;
-    _rename_select_priority            = rename_select_priority           ;
-    _rename_select_load_balancing      = rename_select_load_balancing     ;
-    _rename_select_nb_front_end_select = rename_select_nb_front_end_select;
-    _nb_general_register               = nb_general_register              ;
-    _nb_special_register               = nb_special_register              ;
-    _rat_scheme                        = rat_scheme                       ;
-    _nb_reg_free                       = nb_reg_free                      ;
-    _nb_rename_unit_bank               = nb_rename_unit_bank              ;
-//  _size_read_counter                 = size_read_counter                ;
-    _nb_load_store_queue               = nb_load_store_queue              ;
-    _size_store_queue                  = size_store_queue                 ;
-    _size_load_queue                   = size_load_queue                  ;
-    _nb_inst_memory                    = nb_inst_memory                   ;
-    _link_load_store_unit_with_thread  = link_load_store_unit_with_thread ;
-    _implement_group                   = implement_group                  ;
-
+    _nb_front_end                        = nb_front_end                     ;
+    _nb_context                          = nb_context                       ;
+    _nb_rename_unit                      = nb_rename_unit                   ;
+    _nb_execute_loop                     = nb_execute_loop                  ;
+    _nb_inst_decod                       = nb_inst_decod                    ;
+    _nb_inst_insert                      = nb_inst_insert                   ;
+    _nb_inst_retire                      = nb_inst_retire                   ;
+//  _nb_inst_issue                       = nb_inst_issue                    ;
+    _nb_inst_execute                     = nb_inst_execute                  ;
+    _nb_inst_reexecute                   = nb_inst_reexecute                ;
+    _nb_inst_commit                      = nb_inst_commit                   ;
+    _nb_inst_branch_complete             = nb_inst_branch_complete          ;
+    _nb_branch_speculated                = nb_branch_speculated             ;
+    _nb_rename_unit_select               = nb_rename_unit_select            ;
+    _nb_execute_loop_select              = nb_execute_loop_select           ;
+//  _size_general_data                   = size_general_data                ;
+//  _size_special_data                   = size_special_data                ;
+    _link_rename_unit_with_front_end     = link_rename_unit_with_front_end  ;
+    _size_re_order_buffer                = size_re_order_buffer             ;
+    _nb_re_order_buffer_bank             = nb_re_order_buffer_bank          ;
+    _retire_ooo_scheme                   = retire_ooo_scheme                ;
+    _commit_priority                     = commit_priority                  ;
+    _commit_load_balancing               = commit_load_balancing            ;
+    _size_issue_queue                    = size_issue_queue                 ;
+    _issue_queue_scheme                  = issue_queue_scheme               ;
+    _nb_issue_queue_bank                 = nb_issue_queue_bank              ;
+    _issue_priority                      = issue_priority                   ;
+    _issue_load_balancing                = issue_load_balancing             ;
+//  _table_routing                       = table_routing                    ;
+//  _table_issue_type                    = table_issue_type                 ;
+    _size_reexecute_queue                = size_reexecute_queue             ;
+    _rename_select_priority              = rename_select_priority           ;
+    _rename_select_load_balancing        = rename_select_load_balancing     ;
+    _rename_select_nb_front_end_select   = rename_select_nb_front_end_select;
+    _nb_general_register                 = nb_general_register              ;
+    _nb_special_register                 = nb_special_register              ;
+    _rat_scheme                          = rat_scheme                       ;
+    _nb_reg_free                         = nb_reg_free                      ;
+    _nb_rename_unit_bank                 = nb_rename_unit_bank              ;
+//  _size_read_counter                   = size_read_counter                ;
+    _nb_load_store_queue                 = nb_load_store_queue              ;
+    _size_store_queue                    = size_store_queue                 ;
+    _size_load_queue                     = size_load_queue                  ;
+    _nb_inst_memory                      = nb_inst_memory                   ;
+    _link_load_store_unit_with_thread    = link_load_store_unit_with_thread ;
+    _implement_group                     = implement_group                  ;
     _nb_thread                           = nb_thread                          ;
     _translate_num_context_to_num_thread = translate_num_context_to_num_thread;
@@ -144,4 +143,5 @@
         _link_front_end_with_rename_unit[num_rename_unit].push_back(i);
       }
+
     _rename_unit_size_front_end_id                = new uint32_t    [_nb_rename_unit];
     _rename_unit_size_context_id                  = new uint32_t    [_nb_rename_unit];
@@ -197,9 +197,4 @@
           }
       }
-
-    ALLOC1(_commit_unit_rat_scheme,Trat_scheme_t,_nb_front_end);
-
-    for (uint32_t num_front_end=0; num_front_end<_nb_front_end; ++num_front_end)
-      _commit_unit_rat_scheme [num_front_end] = rat_scheme [_link_rename_unit_with_front_end [num_front_end]];
 
     _max_nb_context                = max<uint32_t>(_nb_context,_nb_front_end);
@@ -265,27 +260,28 @@
     _param_commit_unit           = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Parameters  
       (
-       _nb_front_end            ,
-       _nb_context              ,
-       _nb_rename_unit          ,
-       _size_re_order_buffer    ,
-       _nb_re_order_buffer_bank ,
-       _retire_ooo_scheme       ,
-       _nb_inst_insert          ,
-       _nb_inst_retire          ,
-       _nb_inst_commit          ,
-       _nb_inst_reexecute       ,
-       _nb_inst_branch_complete ,
-       _nb_branch_speculated    ,
-        size_nb_inst_decod      ,
-        size_general_data       ,
-        size_store_queue_ptr    ,
-        size_load_queue_ptr     ,
-        size_general_register   ,
-        size_special_register   ,
-       _commit_unit_rat_scheme  ,
-       _issue_priority          ,
-       _issue_load_balancing    ,
-       _nb_rename_unit_select   ,
-       _nb_thread               ,
+       _nb_front_end                   ,
+       _nb_context                     ,
+       _nb_rename_unit                 ,
+       _size_re_order_buffer           ,
+       _nb_re_order_buffer_bank        ,
+       _retire_ooo_scheme              ,
+       _nb_inst_insert                 ,
+       _nb_inst_retire                 ,
+       _nb_inst_commit                 ,
+       _nb_inst_reexecute              ,
+       _nb_inst_branch_complete        ,
+       _nb_branch_speculated           ,
+        size_nb_inst_decod             ,
+        size_general_data              ,
+        size_store_queue_ptr           ,
+        size_load_queue_ptr            ,
+        size_general_register          ,
+        size_special_register          ,
+       _rat_scheme                     ,
+       _link_front_end_with_rename_unit,
+       _issue_priority                 ,
+       _issue_load_balancing           ,
+       _nb_rename_unit_select          ,
+       _nb_thread                      ,
        _translate_num_context_to_num_thread
        );
@@ -430,6 +426,4 @@
     delete [] _link_front_end_with_rename_unit             ;
 
-    DELETE1(_commit_unit_rat_scheme,_nb_front_end);
-
     for (uint32_t i=0; i<_nb_rename_unit; i++)
     delete    _param_rename_unit [i]      ;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters_msg_error.cpp	(revision 139)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters_msg_error.cpp	(revision 145)
@@ -36,5 +36,10 @@
           test.error(toString(_("Front_end [%d] is linked with invalid rename_unit.\n"),i));
         else
-          _is_link [x] = true;
+          {
+            if (_is_link [x])
+              test.error(toString(_("Front_end [%d] can't be connected with multiple rename_unit.\n"),i));
+            else
+              _is_link [x] = true;
+          }
       }
 
