Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp	(revision 101)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp	(revision 108)
@@ -848,16 +848,21 @@
           for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
             for (uint32_t k=0; k<_nb_read_bloc; ++k)
-              // have route between this slot's ooo_engine and an read_bloc
-              if (_table_dispatch [i][j][k])
-                {
-                  uint32_t num_execute_loop = _link_read_unit_with_read_bloc [k].first;
-                  
-                  list_execute_loop[i].push_back(num_execute_loop);
-                }
-
-          sort  (list_execute_loop[i].begin(),
-                 list_execute_loop[i].end());
-          unique(list_execute_loop[i].begin(),
-                 list_execute_loop[i].end());
+              {
+                // have route between this slot's ooo_engine and an read_bloc
+                if (_table_dispatch [i][j][k])
+                  {
+                    uint32_t num_execute_loop = _link_read_unit_with_read_bloc [k].first;
+                    
+                    list_execute_loop[i].push_back(num_execute_loop);
+                  }
+              }
+                
+          {
+            sort  (list_execute_loop[i].begin(),
+                   list_execute_loop[i].end());
+            std::vector<uint32_t>::iterator it=std::unique(list_execute_loop[i].begin(),
+                                                           list_execute_loop[i].end());
+            list_execute_loop[i].erase(it,list_execute_loop[i].end());
+          }
 
           _ooo_engine_nb_execute_loop [i] = list_execute_loop[i].size();
@@ -895,10 +900,10 @@
 
     ALLOC2(_ooo_engine_nb_inst_execute                    ,uint32_t         ,_nb_ooo_engine,_ooo_engine_nb_execute_loop[it1]);
-    
+
     for (uint32_t i=0; i<_nb_ooo_engine; ++i)
       for (uint32_t j=0; j<_ooo_engine_nb_execute_loop[i]; ++j)
         {
           uint32_t num_execute_loop = _translate_ooo_engine_num_execute_loop [i][j];
-          
+
           // each write_unit manage one instruction per cycle.
           _ooo_engine_nb_inst_execute [i][j] = _nb_write_unit [num_execute_loop];
@@ -1052,9 +1057,11 @@
                 }
             // sort and erase duplicate value
-            
-            sort  (list_thread_with_inst_issue [j].begin(),
-                   list_thread_with_inst_issue [j].end());
-            unique(list_thread_with_inst_issue [j].begin(),
-                   list_thread_with_inst_issue [j].end());
+            {
+              sort  (list_thread_with_inst_issue [j].begin(),
+                     list_thread_with_inst_issue [j].end());
+              std::vector<uint32_t>::iterator it=unique(list_thread_with_inst_issue [j].begin(),
+                                                        list_thread_with_inst_issue [j].end());
+              list_thread_with_inst_issue [j].erase(it,list_thread_with_inst_issue [j].end());
+            }
           }
 
@@ -1063,12 +1070,18 @@
           {
             // sort and erase duplicate value
-            sort  (_list_load_store_unit_with_rename_unit  [i][j].begin(),
-                   _list_load_store_unit_with_rename_unit  [i][j].end());
-            unique(_list_load_store_unit_with_rename_unit  [i][j].begin(),
-                   _list_load_store_unit_with_rename_unit  [i][j].end());
-            sort  (_list_functionnal_unit_with_rename_unit [i][j].begin(),
-                   _list_functionnal_unit_with_rename_unit [i][j].end());
-            unique(_list_functionnal_unit_with_rename_unit [i][j].begin(),
-                   _list_functionnal_unit_with_rename_unit [i][j].end());
+            {
+              sort  (_list_load_store_unit_with_rename_unit  [i][j].begin(),
+                     _list_load_store_unit_with_rename_unit  [i][j].end());
+              std::vector<uint32_t>::iterator it=unique(_list_load_store_unit_with_rename_unit  [i][j].begin(),
+                                                        _list_load_store_unit_with_rename_unit  [i][j].end());
+              _list_load_store_unit_with_rename_unit  [i][j].erase(it,_list_load_store_unit_with_rename_unit  [i][j].end());
+            }
+            {
+              sort  (_list_functionnal_unit_with_rename_unit  [i][j].begin(),
+                     _list_functionnal_unit_with_rename_unit  [i][j].end());
+              std::vector<uint32_t>::iterator it=unique(_list_functionnal_unit_with_rename_unit  [i][j].begin(),
+                                                        _list_functionnal_unit_with_rename_unit  [i][j].end());
+              _list_functionnal_unit_with_rename_unit  [i][j].erase(it,_list_functionnal_unit_with_rename_unit  [i][j].end());
+            }
 
             uint32_t num_rename_bloc = _link_rename_bloc_with_rename_unit[i][j];
@@ -1227,13 +1240,18 @@
     for (uint32_t i=0; i<_nb_execute_loop; ++i)
       {
-        sort  (_list_ooo_engine_with_execute_loop[i].begin(),
-               _list_ooo_engine_with_execute_loop[i].end());
-        unique(_list_ooo_engine_with_execute_loop[i].begin(),
-               _list_ooo_engine_with_execute_loop[i].end());
-    
-        sort  (_list_front_end_with_execute_loop [i].begin(),
-               _list_front_end_with_execute_loop [i].end());
-        unique(_list_front_end_with_execute_loop [i].begin(),
-               _list_front_end_with_execute_loop [i].end());
+        {
+          sort  (_list_ooo_engine_with_execute_loop[i].begin(),
+                 _list_ooo_engine_with_execute_loop[i].end());
+          std::vector<uint32_t>::iterator it=unique(_list_ooo_engine_with_execute_loop[i].begin(),
+                                                    _list_ooo_engine_with_execute_loop[i].end());
+          _list_ooo_engine_with_execute_loop[i].erase(it,_list_ooo_engine_with_execute_loop[i].end());
+        }
+        {
+          sort  (_list_front_end_with_execute_loop[i].begin(),
+                 _list_front_end_with_execute_loop[i].end());
+          std::vector<uint32_t>::iterator it=unique(_list_front_end_with_execute_loop[i].begin(),
+                                                    _list_front_end_with_execute_loop[i].end());
+          _list_front_end_with_execute_loop[i].erase(it,_list_front_end_with_execute_loop[i].end());
+        }
       }
 
@@ -1313,14 +1331,21 @@
     ALLOC2(_execute_loop_nb_inst_retire                            ,uint32_t,_nb_execute_loop,_nb_read_unit[it1]);
     
+    log_printf(TRACE,Core,FUNCTION,_(" * execute_loop - Read_unit"));
     for (uint32_t i=0; i<_nb_execute_loop; ++i)
-      for (uint32_t j=0; j<_nb_read_unit[i]; ++j)
-        {
-          uint32_t num_read_bloc = _link_read_bloc_with_read_unit [i][j];
-    
-          _execute_loop_size_read_queue          [i][j] = _size_read_queue          [num_read_bloc];
-          _execute_loop_size_reservation_station [i][j] = _size_reservation_station [num_read_bloc];
-          _execute_loop_nb_inst_retire           [i][j] = _nb_inst_retire           [num_read_bloc];
-        }
-    
+      {
+        log_printf(TRACE,Core,FUNCTION,_("   * [%d] nb_read_unit : %d"),i,_nb_read_unit[i]);
+        
+        for (uint32_t j=0; j<_nb_read_unit[i]; ++j)
+          {
+            uint32_t num_read_bloc = _link_read_bloc_with_read_unit [i][j];
+
+            log_printf(TRACE,Core,FUNCTION,_("     * num_read_bloc : %d"),num_read_bloc);
+            
+            _execute_loop_size_read_queue          [i][j] = _size_read_queue          [num_read_bloc];
+            _execute_loop_size_reservation_station [i][j] = _size_reservation_station [num_read_bloc];
+            _execute_loop_nb_inst_retire           [i][j] = _nb_inst_retire_reservation_station [num_read_bloc];
+          }
+      }
+
     ALLOC2(_execute_loop_nb_inst_functionnal_unit                  ,uint32_t,_nb_execute_loop,_execute_loop_nb_functionnal_unit[it1]);
     ALLOC4(_execute_loop_timing                                    ,multi_execute_loop::execute_loop::execute_timing_t
@@ -1802,4 +1827,5 @@
        _nb_inst_branch_complete                      [i],
        _ooo_engine_nb_branch_speculated              [i],
+       _size_nb_inst_decod                              ,
        _nb_rename_unit_select                        [i],
        _nb_execute_loop_select                       [i],
