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 115)
+++ 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);
 }
