Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp	(revision 82)
@@ -8,4 +8,5 @@
 
 #define NB_ITERATION 1024
+#define CYCLE_MAX    1024*NB_ITERATION
 
 #include "Behavioural/Generic/Counter/SelfTest/include/test.h"
@@ -40,5 +41,6 @@
 				    param_stat,
 #endif
-				    param);
+				    param,
+				    USE_ALL);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h	(revision 82)
@@ -26,4 +26,5 @@
 #endif
 #include "Behavioural/include/Component.h"
+#include "Behavioural/include/Usage.h"
 
 namespace morpheo {
@@ -39,7 +40,7 @@
     // -----[ fields ]----------------------------------------------------
     // Parameters
-  protected : const std::string     _name;
-
-  protected : const Parameters _param;
+  protected : const std::string _name;
+  protected : const Parameters  _param;
+  private   : const Tusage_t    _usage;
 
 #ifdef STATISTICS
@@ -78,5 +79,6 @@
 					   morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-					   Parameters                                  param );
+					   Parameters param,
+					   Tusage_t   usage);
 					       
   public  :          Counter              (Parameters param );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp	(revision 82)
@@ -14,15 +14,19 @@
 
 
+  Counter::Counter 
+  (
 #ifdef SYSTEMC
-  Counter::Counter (sc_module_name name,
+  sc_module_name name,
 #else
-  Counter::Counter (string name,
+  std::string name,
 #endif
 #ifdef STATISTICS
-			      morpheo::behavioural::Parameters_Statistics * param_statistics,
+  morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-			      morpheo::behavioural::generic::counter::Parameters param ):
-			      _name              (name)
-			      ,_param            (param)
+  morpheo::behavioural::generic::counter::Parameters param,
+   Tusage_t usage):
+    _name  (name),
+    _param (param),
+    _usage (usage)
   {
     log_printf(FUNC,Counter,"Counter","Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_allocation.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_allocation.cpp	(revision 82)
@@ -14,10 +14,9 @@
 namespace counter {
 
-
   void Counter::allocation (void)
   {
     log_printf(FUNC,Counter,"allocation","Begin");
 
-    _component   = new Component ();
+    _component   = new Component (_usage);
 
     Entity * entity = _component->set_entity (_name     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/test.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/test.cpp	(revision 82)
@@ -7,36 +7,9 @@
  */
 
-#include "Behavioural/Generic/Queue/SelfTest/include/test.h"
-#include "Common/include/Test.h"
-
 #define NB_ITERATION  1
 #define CYCLE_MAX     (2048*NB_ITERATION)
 
-#define LABEL(str)                                                                       \
-{                                                                                        \
-  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; \
-} while(0)
-
-static uint32_t cycle = 0;
-
-#define SC_START(cycle_offset)                                          \
-do                                                                      \
-{                                                                       \
-/*cout << "SC_START (begin)" << endl;*/                                 \
-                                                                        \
-  uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time()); \
-  if (cycle_current != cycle)                                           \
-    {                                                                   \
-      cycle = cycle_current;                                            \
-      cout << "##########[ cycle "<< cycle << " ]" << endl;             \
-    }                                                                   \
-                                                                        \
-  if (cycle_current > CYCLE_MAX)                                        \
-    {                                                                   \
-      TEST_KO("Maximal cycles Reached");                                \
-    }                                                                   \
-  sc_start(cycle_offset);                                               \
-/*cout << "SC_START (end  )" << endl;*/                                 \
-} while(0)
+#include "Behavioural/Generic/Queue/SelfTest/include/test.h"
+#include "Common/include/Test.h"
 
 void test (string name,
@@ -49,9 +22,11 @@
 #endif
 
-  Queue * _Queue = new Queue (name.c_str(),
+  Queue * _Queue = new Queue 
+    (name.c_str(),
 #ifdef STATISTICS
-					     _parameters_statistics,
+     _parameters_statistics,
 #endif
-					     _param);
+     _param,
+     USE_ALL);
   
 #ifdef SYSTEMC
@@ -121,5 +96,5 @@
   for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
     {
-      LABEL("Iteration "+toString(iteration));
+      LABEL("Iteration %d",iteration);
 
       while (data_out <= nb_request)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Queue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Queue.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Queue.h	(revision 82)
@@ -102,5 +102,5 @@
 #endif
    Parameters                                  * param,
-   morpheo::behavioural::Tusage_t                usage=USE_ALL
+   morpheo::behavioural::Tusage_t                usage
    );
   public  :          ~Queue             (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 82)
@@ -8,5 +8,5 @@
 
 #define NB_ITERATION 16
-
+#define CYCLE_MAX    1024*NB_ITERATION
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h"
 #include "Common/include/Test.h"
@@ -36,9 +36,11 @@
   morpheo::behavioural::Parameters_Statistics * _param_stat = new morpheo::behavioural::Parameters_Statistics (5,100);
 #endif
-  RegisterFile_Monolithic * registerfile = new RegisterFile_Monolithic (name.c_str()
+  RegisterFile_Monolithic * registerfile = new RegisterFile_Monolithic 
+    (name.c_str()
 #ifdef STATISTICS
-									,_param_stat
+     ,_param_stat
 #endif
-									,_param);
+     ,_param
+     ,USE_ALL);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 82)
@@ -105,5 +105,5 @@
 #endif
    ,Parameters                                  * param
-   ,morpheo::behavioural::Tusage_t                usage=USE_ALL
+   ,morpheo::behavioural::Tusage_t                usage
    );
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h	(revision 82)
@@ -17,5 +17,5 @@
 namespace registerfile_monolithic    {
 
-  typedef uint32_t Taddress_t;
+//   typedef uint32_t Taddress_t;
   typedef uint32_t Tdata_t;
  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp	(revision 82)
@@ -13,20 +13,4 @@
 #include "Common/include/Test.h"
 
-
-#define LABEL(str)                                                                       \
-{                                                                                        \
-  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; \
-} while(0)
-
-#define SC_START(cycle)                                        \
-do                                                             \
-{                                                              \
-  if (static_cast<uint32_t>(sc_simulation_time()) > CYCLE_MAX) \
-    {                                                          \
-      TEST_KO("Maximal cycles Reached");                       \
-    }                                                          \
-  sc_start(cycle);                                             \
-} while(0)
-
 void test (string name,
 	   morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * _param)
@@ -39,9 +23,11 @@
 #endif
 
-  RegisterFile_Multi_Banked * _RegisterFile_Multi_Banked = new RegisterFile_Multi_Banked (name.c_str(),
+  RegisterFile_Multi_Banked * _RegisterFile_Multi_Banked = new RegisterFile_Multi_Banked 
+    (name.c_str(),
 #ifdef STATISTICS
-											  _param_stat,
+     _param_stat,
 #endif
-											  _param);
+     _param,
+     USE_ALL);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h	(revision 82)
@@ -26,4 +26,5 @@
 #include "Behavioural/include/Vhdl.h"
 #endif
+#include "Behavioural/include/Usage.h"
 
 namespace morpheo {
@@ -41,8 +42,8 @@
     // -----[ fields ]----------------------------------------------------
     // Parameters
-  protected : const std::string       _name;
-
+  protected : const std::string  _name;
   protected : const Parameters * _param;
-
+  private   : const Tusage_t     _usage;
+    
 #ifdef STATISTICS
   public    : Stat                           * _stat;
@@ -100,5 +101,6 @@
 					      morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-					      Parameters                                  * param );
+					      Parameters * param,
+					      Tusage_t     usage);
 					       
   public  :          ~RegisterFile_Multi_Banked             (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h	(revision 82)
@@ -18,5 +18,5 @@
 namespace registerfile_multi_banked {
 
-  typedef uint32_t Taddress_t;
+//typedef uint32_t Taddress_t;
   typedef uint32_t Tdata_t;
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp	(revision 82)
@@ -14,16 +14,19 @@
 namespace registerfile_multi_banked {
 
-
+  RegisterFile_Multi_Banked::RegisterFile_Multi_Banked 
+  (
 #ifdef SYSTEMC
-  RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (sc_module_name name,
+   sc_module_name name,
 #else
-  RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (string name,
+   std::string name,
 #endif
 #ifdef STATISTICS
-			      morpheo::behavioural::Parameters_Statistics * param_statistics,
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-			      morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param ):
-			      _name              (name)
-			      ,_param            (param)
+   morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param,
+   Tusage_t usage):
+    _name              (name)
+    ,_param            (param)
+    ,_usage (usage)
   {
     log_printf(FUNC,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp	(revision 82)
@@ -20,5 +20,5 @@
     log_printf(FUNC,RegisterFile_Multi_Banked,"allocation","Begin");
 
-    _component   = new Component ();
+    _component   = new Component (_usage);
 
     Entity * entity = _component->set_entity (_name       
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/test.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/test.cpp	(revision 82)
@@ -7,24 +7,9 @@
  */
 
+#define NB_ITERATION  1
+#define CYCLE_MAX     (256*NB_ITERATION)
+
 #include "Behavioural/Generic/RegisterFile/SelfTest/include/test.h"
 #include "Common/include/Test.h"
-
-#define NB_ITERATION  1
-#define CYCLE_MAX     (256*NB_ITERATION)
-
-#define LABEL(str)                                                                       \
-{                                                                                        \
-  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; \
-} while(0)
-
-#define SC_START(cycle)                                        \
-do                                                             \
-{                                                              \
-  if (static_cast<uint32_t>(sc_simulation_time()) > CYCLE_MAX) \
-    {                                                          \
-      TEST_KO("Maximal cycles Reached");                       \
-    }                                                          \
-  sc_start(cycle);                                             \
-} while(0)
 
 void test (string name,
@@ -41,5 +26,6 @@
 						   _param_stat,
 #endif
-						   _param);
+						   _param,
+						   USE_ALL);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h	(revision 82)
@@ -29,4 +29,5 @@
 #include "Behavioural/include/Vhdl.h"
 #endif
+#include "Behavioural/include/Usage.h"
 
 namespace morpheo {
@@ -43,7 +44,7 @@
     // -----[ fields ]----------------------------------------------------
     // Parameters
-  protected : const std::string       _name;
-
+  protected : const std::string  _name;
   protected : const Parameters * _param;
+  private   : const Tusage_t     _usage;
 
 #ifdef STATISTICS
@@ -95,5 +96,6 @@
 						morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-						Parameters                                  * param );
+						Parameters                                  * param ,
+						Tusage_t usage);
     
   public  :          ~RegisterFile             (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp	(revision 82)
@@ -14,15 +14,18 @@
 
 
+  RegisterFile::RegisterFile (
 #ifdef SYSTEMC
-  RegisterFile::RegisterFile (sc_module_name name,
+			      sc_module_name name,
 #else
-  RegisterFile::RegisterFile (string name,
+			      std::string name,
 #endif
 #ifdef STATISTICS
 			      morpheo::behavioural::Parameters_Statistics             * param_statistics,
 #endif
-			      morpheo::behavioural::generic::registerfile::Parameters * param ):
-			      _name              (name)
-			      ,_param            (param)
+			      morpheo::behavioural::generic::registerfile::Parameters * param,
+			      Tusage_t usage):
+    _name              (name)
+    ,_param            (param)
+    ,_usage (usage)
   {
     log_printf(FUNC,RegisterFile,"RegisterFile","Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp	(revision 82)
@@ -87,5 +87,5 @@
 #endif
 																					       ,_param->_param_registerfile_monolithic
-																					       );
+																					       ,_usage);
 	
       }
@@ -98,5 +98,5 @@
 #endif
 																						,_param->_param_registerfile_multi_banked
-																						);
+																						,_usage);
 	
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp	(revision 82)
@@ -8,4 +8,5 @@
 
 #define NB_ITERATION 512
+#define CYCLE_MAX    (1024*NB_ITERATION)
 
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/include/test.h"
@@ -21,9 +22,11 @@
   morpheo::behavioural::Parameters_Statistics * _param_stat = new morpheo::behavioural::Parameters_Statistics (5,50);
 #endif
-  Select_Priority_Fixed * _Select_Priority_Fixed = new Select_Priority_Fixed (name.c_str(),
+  Select_Priority_Fixed * _Select_Priority_Fixed = new Select_Priority_Fixed 
+    (name.c_str(),
 #ifdef STATISTICS
-									      _param_stat,
+     _param_stat,
 #endif
-									      _param);
+     _param,
+     USE_ALL);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 82)
@@ -91,5 +91,5 @@
 #endif
    Parameters                                  * param ,
-   morpheo::behavioural::Tusage_t                usage=USE_ALL);
+   morpheo::behavioural::Tusage_t                usage);
     
   public  :          ~Select_Priority_Fixed             (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp	(revision 82)
@@ -7,9 +7,10 @@
  */
 
+#define NB_ITERATION 64
+#define CYCLE_MAX    (1024*NB_ITERATION)
+
 #include "Behavioural/Generic/Shifter/SelfTest/include/test.h"
 #include "Common/include/BitManipulation.h"
 #include "Common/include/Test.h"
-
-#define NB_ITERATION 64
 
 void test (string name,
@@ -41,5 +42,6 @@
 				    param_stat,
 #endif
-				    param);
+				    &param,
+				    USE_ALL);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Parameters.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Parameters.h	(revision 82)
@@ -59,8 +59,8 @@
   public : ~Parameters () ;
 
-  public :        std::string   msg_error  (void);
-  public :        std::string   print      (uint32_t depth);
-  public : friend std::ostream& operator<< (std::ostream& output_stream,
-					    morpheo::behavioural::generic::shifter::Parameters & x);
+  public :        Parameters_test msg_error  (void);
+  public :        std::string     print      (uint32_t depth);
+  public : friend std::ostream&   operator<< (std::ostream& output_stream,
+					      morpheo::behavioural::generic::shifter::Parameters & x);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h	(revision 82)
@@ -25,4 +25,5 @@
 #endif
 #include "Behavioural/include/Component.h"
+#include "Behavioural/include/Usage.h"
 
 namespace morpheo                    {
@@ -39,7 +40,8 @@
     // -----[ fields ]----------------------------------------------------
     // Parameters
-  protected : const std::string     _name;
+  protected : const std::string  _name;
+  protected : const Parameters * _param;
+  private   : const Tusage_t     _usage;
 
-  protected : const Parameters _param;
 #ifdef STATISTICS
   public    : Stat                           * _stat;
@@ -84,5 +86,7 @@
 					   morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-					   Parameters                                    param );
+					   Parameters                                  * param,
+					   morpheo::behavioural::Tusage_t                usage
+					   );
     
   public  :          Shifter              (Parameters param );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Parameters_msg_error.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Parameters_msg_error.cpp	(revision 82)
@@ -15,41 +15,24 @@
 namespace shifter {
 
-  std::string Parameters::msg_error(void)
+  Parameters_test Parameters::msg_error(void)
   {
-    std::string msg = "";
+    Parameters_test test ("Shifter");
 
     if (_size_data < 2)
-      {
-        msg += "  - size_data must be > 1\n";
-        msg += "    * size_data                       : " + toString(_size_data) + "\n";
-      }
-
+      test.error("size_data must be > 1\n");
+    
     if (is_positive(_nb_port) == false)
-      {
-        msg += "  - nb_port must be > 0\n";
-        msg += "    * nb_port                         : " + toString(_nb_port) + "\n";
-      }
-
+      test.error("nb_port must be > 0\n");
+    
     if (_shift_value > _size_data) 
-      {
-	msg += "  - shift_value must be < size_data\n";	
-        msg += "    * shift_value                     : " + toString(_shift_value) + "\n";
-        msg += "    * size_data                       : " + toString(_size_data)   + "\n";
-      }    
-
+      test.error("shift_value must be < size_data\n");	
+    
     if ( (_rotate == internal_rotate) && (_carry != internal_logic))
-      {
-	msg += "  - Incompatible parameters : internal_rotate have never carry (must be set at \"internal_logic\"\n";
-        msg += "    * rotate                          : " + toString(_rotate) + "\n";
-        msg += "    * carry                           : " + toString(_carry ) + "\n";
-      }    
-
+      test.error("Incompatible parameters : internal_rotate have never carry (must be set at \"internal_logic\"\n");
+    
     if (_type_completion_bool && (_size_data_completion != 1))
-      {
-	msg += "  - Incompatible parameters : you can't have the type of port in_SHIFTER_COMPLETION at bool. Because, This port must be more bits\n";
-	msg += "    * size_data_completion            : " + toString (_size_data_completion) + "\n";
-      }
+      test.error("Incompatible parameters : you can't have the type of port in_SHIFTER_COMPLETION at bool. Because, This port must be more bits\n");
       
-    return msg;
+    return test;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter.cpp	(revision 82)
@@ -14,15 +14,18 @@
 
 
+  Shifter::Shifter (
 #ifdef SYSTEMC
-  Shifter::Shifter (sc_module_name name
+		    sc_module_name name
 #else
-  Shifter::Shifter (string name
+		    std::string name
 #endif
 #ifdef STATISTICS
 		    ,morpheo::behavioural::Parameters_Statistics * param_statistics
 #endif
-		    ,morpheo::behavioural::generic::shifter::Parameters param ):
-		    _name   (name)
-		    ,_param (param)
+		    ,morpheo::behavioural::generic::shifter::Parameters *param
+		    ,morpheo::behavioural::Tusage_t                usage ):
+    _name   (name)
+    ,_param (param)
+    ,_usage (usage)
   {
 #ifdef SYSTEMC
@@ -50,17 +53,17 @@
     dont_initialize ();
     sensitive << (*(in_CLOCK)).neg();
-    for (uint32_t i=0; i<param._nb_port; i++)
+    for (uint32_t i=0; i<param->_nb_port; i++)
       {
 	sensitive << (*(in_SHIFTER_DATA      [i]));
-	if (param._shift_value == 0)
+	if (param->_shift_value == 0)
 	sensitive << (*(in_SHIFTER_SHIFT     [i]));
-	if (param._direction   == external_direction)
+	if (param->_direction   == external_direction)
 	sensitive << (*(in_SHIFTER_DIRECTION [i]));
-	if (_param._rotate     == external_rotate)
+	if (_param->_rotate     == external_rotate)
 	sensitive << (*(in_SHIFTER_TYPE      [i]));
-	if (param._carry       == external_carry)
+	if (param->_carry       == external_carry)
 	sensitive << (*(in_SHIFTER_CARRY     [i]));
-	if (param._carry       == external_completion)
-	  if (_param._type_completion_bool == true)
+	if (param->_carry       == external_completion)
+	  if (_param->_type_completion_bool == true)
 	    sensitive << (*(in_SHIFTER_CARRY_IN  [i]));
 	  else
@@ -70,17 +73,17 @@
 #ifdef SYSTEMCASS_SPECIFIC
     // List dependency information
-    for (uint32_t i=0; i<param._nb_port; i++)
+    for (uint32_t i=0; i<param->_nb_port; i++)
       {
 	(*(out_SHIFTER_DATA [i])) (*(in_SHIFTER_DATA      [i]));
-	if (param._shift_value == 0)
+	if (param->_shift_value == 0)
 	(*(out_SHIFTER_DATA [i])) (*(in_SHIFTER_SHIFT     [i]));
-	if (param._direction   == external_direction)
+	if (param->_direction   == external_direction)
 	(*(out_SHIFTER_DATA [i])) (*(in_SHIFTER_DIRECTION [i]));
-	if (_param._rotate     == external_rotate)
+	if (_param->_rotate     == external_rotate)
 	(*(out_SHIFTER_DATA [i])) (*(in_SHIFTER_TYPE      [i]));
-	if (param._carry       == external_carry)
+	if (param->_carry       == external_carry)
 	(*(out_SHIFTER_DATA [i])) (*(in_SHIFTER_CARRY     [i]));
-	if (param._carry       == external_completion)
-	if (_param._type_completion_bool == true)
+	if (param->_carry       == external_completion)
+	if (_param->_type_completion_bool == true)
 	(*(out_SHIFTER_DATA [i])) (*(in_SHIFTER_CARRY_IN  [i]));
 	else
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_allocation.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_allocation.cpp	(revision 82)
@@ -17,5 +17,5 @@
   void Shifter::allocation (void)
   {
-    _component   = new Component ();
+    _component   = new Component (_usage);
 
     Entity * entity = _component->set_entity (_name       
@@ -45,21 +45,21 @@
     {
       // Interface "shifter"
-       in_SHIFTER_DATA      = new SC_IN (Tdata_t)      * [_param._nb_port];
-      if (_param._shift_value == 0)
-       in_SHIFTER_SHIFT     = new SC_IN (Tshift_t)     * [_param._nb_port];
-      if (_param._direction   == external_direction)
-       in_SHIFTER_DIRECTION = new SC_IN (Tdirection_t) * [_param._nb_port];
-      if (_param._rotate      == external_rotate)
-       in_SHIFTER_TYPE      = new SC_IN (Ttype_t)      * [_param._nb_port];
-      if (_param._carry       == external_carry)
-       in_SHIFTER_CARRY     = new SC_IN (Tcarry_t)     * [_param._nb_port];
-      if (_param._carry       == external_completion)
-      if (_param._type_completion_bool == true)
-       in_SHIFTER_CARRY_IN  = new SC_IN (Tcontrol_t)   * [_param._nb_port];
+       in_SHIFTER_DATA      = new SC_IN (Tdata_t)      * [_param->_nb_port];
+      if (_param->_shift_value == 0)
+       in_SHIFTER_SHIFT     = new SC_IN (Tshift_t)     * [_param->_nb_port];
+      if (_param->_direction   == external_direction)
+       in_SHIFTER_DIRECTION = new SC_IN (Tdirection_t) * [_param->_nb_port];
+      if (_param->_rotate      == external_rotate)
+       in_SHIFTER_TYPE      = new SC_IN (Ttype_t)      * [_param->_nb_port];
+      if (_param->_carry       == external_carry)
+       in_SHIFTER_CARRY     = new SC_IN (Tcarry_t)     * [_param->_nb_port];
+      if (_param->_carry       == external_completion)
+      if (_param->_type_completion_bool == true)
+       in_SHIFTER_CARRY_IN  = new SC_IN (Tcontrol_t)   * [_param->_nb_port];
       else
-       in_SHIFTER_COMPLETION= new SC_IN (Tdata_t)      * [_param._nb_port];
-      out_SHIFTER_DATA      = new SC_OUT(Tdata_t)      * [_param._nb_port];
+       in_SHIFTER_COMPLETION= new SC_IN (Tdata_t)      * [_param->_nb_port];
+      out_SHIFTER_DATA      = new SC_OUT(Tdata_t)      * [_param->_nb_port];
       
-      for (uint32_t i=0; i<_param._nb_port; i++)
+      for (uint32_t i=0; i<_param->_nb_port; i++)
 	{
 	  Interface_fifo * interface = _interfaces->set_interface("shifter_"+toString(i)
@@ -71,19 +71,19 @@
 								  );
 	 
-	   in_SHIFTER_DATA       [i] = interface->set_signal_in  <Tdata_t     > ("data"      ,_param._size_data);
-	  if (_param._shift_value == 0)
-	   in_SHIFTER_SHIFT      [i] = interface->set_signal_in  <Tshift_t    > ("shift"     ,static_cast<uint32_t>(ceil(log2(_param._size_data))));
-	  if (_param._direction == external_direction)
+	   in_SHIFTER_DATA       [i] = interface->set_signal_in  <Tdata_t     > ("data"      ,_param->_size_data);
+	  if (_param->_shift_value == 0)
+	   in_SHIFTER_SHIFT      [i] = interface->set_signal_in  <Tshift_t    > ("shift"     ,static_cast<uint32_t>(ceil(log2(_param->_size_data))));
+	  if (_param->_direction == external_direction)
 	   in_SHIFTER_DIRECTION  [i] = interface->set_signal_in  <Tdirection_t> ("direction" ,1);
-	  if (_param._rotate  == external_rotate)
+	  if (_param->_rotate  == external_rotate)
 	   in_SHIFTER_TYPE       [i] = interface->set_signal_in  <Ttype_t     > ("type"      ,1);
-	  if (_param._carry == external_carry)
+	  if (_param->_carry == external_carry)
 	   in_SHIFTER_CARRY      [i] = interface->set_signal_in  <Tcarry_t    > ("carry"     ,1);
-	  if (_param._carry       == external_completion)
-	  if (_param._type_completion_bool == true)
+	  if (_param->_carry       == external_completion)
+	  if (_param->_type_completion_bool == true)
 	   in_SHIFTER_CARRY_IN   [i] = interface->set_signal_in  <Tcontrol_t  > ("carry_in"  ,1);
 	  else
-	   in_SHIFTER_COMPLETION [i] = interface->set_signal_in  <Tdata_t     > ("completion",_param._size_data_completion);
-	  out_SHIFTER_DATA       [i] = interface->set_signal_out <Tdata_t     > ("data"      ,_param._size_data);
+	   in_SHIFTER_COMPLETION [i] = interface->set_signal_in  <Tdata_t     > ("completion",_param->_size_data_completion);
+	  out_SHIFTER_DATA       [i] = interface->set_signal_out <Tdata_t     > ("data"      ,_param->_size_data);
 	}										                                         
     }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_deallocation.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_deallocation.cpp	(revision 82)
@@ -22,14 +22,14 @@
 
     delete []  in_SHIFTER_DATA      ;
-    if (_param._shift_value == 0)
+    if (_param->_shift_value == 0)
     delete []  in_SHIFTER_SHIFT     ;
-    if (_param._direction   == external_direction )
+    if (_param->_direction   == external_direction )
     delete []  in_SHIFTER_DIRECTION ;
-    if (_param._rotate      == external_rotate    )
+    if (_param->_rotate      == external_rotate    )
     delete []  in_SHIFTER_TYPE      ;
-    if (_param._carry       == external_carry     )
+    if (_param->_carry       == external_carry     )
     delete []  in_SHIFTER_CARRY     ;
-    if (_param._carry       == external_completion)
-    if (_param._type_completion_bool == true)
+    if (_param->_carry       == external_completion)
+    if (_param->_type_completion_bool == true)
     delete []  in_SHIFTER_CARRY_IN  ;
     else
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_genMealy_shift.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_genMealy_shift.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_genMealy_shift.cpp	(revision 82)
@@ -18,40 +18,40 @@
   void Shifter::genMealy_shift (void)
   {
-    for (uint32_t i=0; i<_param._nb_port; i++)
+    for (uint32_t i=0; i<_param->_nb_port; i++)
       {
 	// Read
 	Tdata_t      data_in     = PORT_READ(in_SHIFTER_DATA [i]);
 	Tdata_t      data_out    = data_in;
-	Tshift_t     shift_value = _param._shift_value;
+	Tshift_t     shift_value = _param->_shift_value;
 	if (shift_value == 0)
 	  shift_value = PORT_READ(in_SHIFTER_SHIFT [i]);
 
  	Tdirection_t direction; 
- 	if (_param._direction == external_direction)
+ 	if (_param->_direction == external_direction)
 	  direction = PORT_READ(in_SHIFTER_DIRECTION [i]);
 	else
-	  direction = _param._internal_direction;
+	  direction = _param->_internal_direction;
 
 	Ttype_t      type;
-	if (_param._rotate    == external_rotate)
+	if (_param->_rotate    == external_rotate)
 	  type      = PORT_READ(in_SHIFTER_TYPE      [i]);
 	else
-	  type      = _param._internal_type; 
+	  type      = _param->_internal_type; 
 
 	Tcarry_t     carry;	
-	if (_param._carry     == external_carry)
+	if (_param->_carry     == external_carry)
 	  carry     = PORT_READ(in_SHIFTER_CARRY     [i]);
 	else
-	  carry     = _param._internal_carry; 
+	  carry     = _param->_internal_carry; 
 	
 	if (type == _shift)
 	  {
-	    data_out = shift  <Tdata_t> (_param._size_data, data_in, shift_value, direction == _left, carry == _arithmetic);
+	    data_out = shift  <Tdata_t> (_param->_size_data, data_in, shift_value, direction == _left, carry == _arithmetic);
 
-	    if (_param._size_data_completion > 0)
+	    if (_param->_size_data_completion > 0)
 	      {
 		Tdata_t completion;
 
-		if (_param._type_completion_bool == true)
+		if (_param->_type_completion_bool == true)
 		  completion = (PORT_READ(in_SHIFTER_CARRY_IN   [i])==true)?1:0;
 		else
@@ -66,5 +66,5 @@
 		else
 		  {
-		    mask       = gen_mask<Tdata_t> (shift_value)      << (_param._size_data-shift_value);
+		    mask       = gen_mask<Tdata_t> (shift_value)      << (_param->_size_data-shift_value);
 		  }
 		  
@@ -73,5 +73,5 @@
 	  }
 	else
-	  data_out = rotate <Tdata_t> (_param._size_data, data_in, shift_value, direction == _left);
+	  data_out = rotate <Tdata_t> (_param->_size_data, data_in, shift_value, direction == _left);
 
 	// Write
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_body.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_body.cpp	(revision 82)
@@ -17,45 +17,45 @@
   void Shifter::vhdl_body (Vhdl * & vhdl)
   {
-    //uint32_t log2_size_data = static_cast<uint32_t>(ceil(log2(_param._size_data)));
+    //uint32_t log2_size_data = static_cast<uint32_t>(ceil(log2(_param->_size_data)));
 
     vhdl->set_body ("-- Compute all case of shift");
 
-    for (uint32_t i=0; i<_param._nb_port; i++)
+    for (uint32_t i=0; i<_param->_nb_port; i++)
       {
 	//-----[ Shift logic Left ]--------------------------------------------
-	if (_param._have_shift_logic_left)
+	if (_param->_have_shift_logic_left)
 	  vhdl->set_body ("shift_logic_left_"+toString(i)+"        <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) sll CONV_INTEGER(shift_"+toString(i)+"));");
 	//-----[ Shift logic Right ]-------------------------------------------
-	if (_param._have_shift_logic_right)
+	if (_param->_have_shift_logic_right)
 	  vhdl->set_body ("shift_logic_right_"+toString(i)+"       <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) srl CONV_INTEGER(shift_"+toString(i)+"));");
 	//-----[ Shift arithmetic Left ]---------------------------------------
-	if (_param._have_shift_arithmetic_left)
+	if (_param->_have_shift_arithmetic_left)
 	  vhdl->set_body ("shift_arithmetic_left_"+toString(i)+"   <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) sla CONV_INTEGER(shift_"+toString(i)+"));");
 	//-----[ Shift arithmetic Right ]--------------------------------------
-	if (_param._have_shift_arithmetic_right)
+	if (_param->_have_shift_arithmetic_right)
 	  vhdl->set_body ("shift_arithmetic_right_"+toString(i)+"  <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) sra CONV_INTEGER(shift_"+toString(i)+"));");
 	//-----[ Rotate Left ]-------------------------------------------------
-	if (_param._have_rotate_left)
+	if (_param->_have_rotate_left)
 	  vhdl->set_body ("rotate_left_"+toString(i)+"             <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) rol CONV_INTEGER(shift_"+toString(i)+"));");
 	//-----[ Rotate Right ]------------------------------------------------
-	if (_param._have_rotate_right)
+	if (_param->_have_rotate_right)
 	  vhdl->set_body ("rotate_right_"+toString(i)+"            <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) ror CONV_INTEGER(shift_"+toString(i)+"));");
       }
 
-    if (_param._size_data_completion > 0)
+    if (_param->_size_data_completion > 0)
       {
 	vhdl->set_body ("");
 	vhdl->set_body ("-- Mask");
 
-	for (uint32_t i=0; i<_param._nb_port; i++)
+	for (uint32_t i=0; i<_param->_nb_port; i++)
 	  {
 	    std::string print_shifter_completion;
 	    
-	    if (_param._type_completion_bool == true)
+	    if (_param->_type_completion_bool == true)
 	      print_shifter_completion = "in_SHIFTER_"+toString(i)+"_CARRY_IN";
 	    else
 	      print_shifter_completion = "in_SHIFTER_"+toString(i)+"_COMPLETION";
 
-	    if (_param._size_data == _param._size_data_completion)
+	    if (_param->_size_data == _param->_size_data_completion)
 	      {
 		vhdl->set_body ("shifter_completion_left_"+toString(i)+"  <= "+print_shifter_completion+";");
@@ -64,9 +64,9 @@
 	    else
 	      {
-		vhdl->set_body ("shifter_completion_left_"+toString(i)+std_logic_range(_param._size_data-1,_param._size_data_completion)+"  <= "+std_logic_others(_param._size_data-_param._size_data_completion,0)+";");
-		vhdl->set_body ("shifter_completion_left_"+toString(i)+std_logic_range(_param._size_data_completion                    )+"  <= "+print_shifter_completion+";");
-
-		vhdl->set_body ("shifter_completion_right_"+toString(i)+std_logic_range(_param._size_data-1,_param._size_data-_param._size_data_completion)+" <= "+print_shifter_completion+";");
-		vhdl->set_body ("shifter_completion_right_"+toString(i)+std_logic_range(_param._size_data-_param._size_data_completion                    )+" <= "+std_logic_others(_param._size_data-_param._size_data_completion,0)+";");
+		vhdl->set_body ("shifter_completion_left_"+toString(i)+std_logic_range(_param->_size_data-1,_param->_size_data_completion)+"  <= "+std_logic_others(_param->_size_data-_param->_size_data_completion,0)+";");
+		vhdl->set_body ("shifter_completion_left_"+toString(i)+std_logic_range(_param->_size_data_completion                    )+"  <= "+print_shifter_completion+";");
+
+		vhdl->set_body ("shifter_completion_right_"+toString(i)+std_logic_range(_param->_size_data-1,_param->_size_data-_param->_size_data_completion)+" <= "+print_shifter_completion+";");
+		vhdl->set_body ("shifter_completion_right_"+toString(i)+std_logic_range(_param->_size_data-_param->_size_data_completion                    )+" <= "+std_logic_others(_param->_size_data-_param->_size_data_completion,0)+";");
 	      }
 	    
@@ -80,5 +80,5 @@
     vhdl->set_body ("-- Multiplexor");
 
-    for (uint32_t i=0; i<_param._nb_port; i++)
+    for (uint32_t i=0; i<_param->_nb_port; i++)
       {
 	vhdl->set_body ("out_SHIFTER_"+toString(i)+"_DATA       <=");
@@ -86,11 +86,11 @@
 
 	//-----[ Shift arithmetic Left ]---------------------------------------
-	if (_param._have_shift_arithmetic_left)
-	  {
-	    bool   have_when  = false;
-	    std::string print_when = "";
-	    std::string print_and  = "";
-	    
-	    if (_param._direction   == external_direction)
+	if (_param->_have_shift_arithmetic_left)
+	  {
+	    bool   have_when  = false;
+	    std::string print_when = "";
+	    std::string print_and  = "";
+	    
+	    if (_param->_direction   == external_direction)
 	      {
 		have_when = true;
@@ -98,5 +98,5 @@
 		print_and = " and ";
 	      }
-	    if (_param._rotate      == external_rotate)
+	    if (_param->_rotate      == external_rotate)
 	      {
 		have_when = true;
@@ -104,5 +104,5 @@
 		print_and = " and ";
 	      }
-	    if (_param._carry       == external_carry)
+	    if (_param->_carry       == external_carry)
 	      {
 		have_when = true;
@@ -117,11 +117,11 @@
 	  }
 	//-----[ Shift arithmetic Right ]--------------------------------------
-	if (_param._have_shift_arithmetic_right)
-	  {
-	    bool   have_when  = false;
-	    std::string print_when = "";
-	    std::string print_and  = "";
-	    
-	    if (_param._direction   == external_direction)
+	if (_param->_have_shift_arithmetic_right)
+	  {
+	    bool   have_when  = false;
+	    std::string print_when = "";
+	    std::string print_and  = "";
+	    
+	    if (_param->_direction   == external_direction)
 	      {
 		have_when = true;
@@ -129,5 +129,5 @@
 		print_and = " and ";
 	      }
-	    if (_param._rotate      == external_rotate)
+	    if (_param->_rotate      == external_rotate)
 	      {
 		have_when = true;
@@ -135,5 +135,5 @@
 		print_and = " and ";
 	      }
-	    if (_param._carry       == external_carry)
+	    if (_param->_carry       == external_carry)
 	      {
 		have_when = true;
@@ -148,11 +148,11 @@
 	  }
 	//-----[ Shift logic Left ]--------------------------------------------
-	if (_param._have_shift_logic_left)
-	  {
-	    bool   have_when  = false;
-	    std::string print_when = "";
-	    std::string print_and  = "";
-	    
-	    if (_param._direction   == external_direction)
+	if (_param->_have_shift_logic_left)
+	  {
+	    bool   have_when  = false;
+	    std::string print_when = "";
+	    std::string print_and  = "";
+	    
+	    if (_param->_direction   == external_direction)
 	      {
 		have_when = true;
@@ -160,5 +160,5 @@
 		print_and = " and ";
 	      }
-	    if (_param._rotate      == external_rotate)
+	    if (_param->_rotate      == external_rotate)
 	      {
 		have_when = true;
@@ -166,5 +166,5 @@
 		print_and = " and ";
 	      }
-	    if (_param._carry       == external_carry)
+	    if (_param->_carry       == external_carry)
 	      {
 		have_when = true;
@@ -177,5 +177,5 @@
 	    std::string print_expr_completion;
 
-	    if (_param._size_data_completion == 0)
+	    if (_param->_size_data_completion == 0)
 	      print_expr_completion = "shift_logic_left_"+toString(i)+" ";
 	    else
@@ -186,11 +186,11 @@
 	  }
 	//-----[ Shift logic Right ]-------------------------------------------
-	if (_param._have_shift_logic_right)
-	  {
-	    bool   have_when  = false;
-	    std::string print_when = "";
-	    std::string print_and  = "";
-	    
-	    if (_param._direction   == external_direction)
+	if (_param->_have_shift_logic_right)
+	  {
+	    bool   have_when  = false;
+	    std::string print_when = "";
+	    std::string print_and  = "";
+	    
+	    if (_param->_direction   == external_direction)
 	      {
 		have_when = true;
@@ -198,5 +198,5 @@
 		print_and = " and ";
 	      }
-	    if (_param._rotate      == external_rotate)
+	    if (_param->_rotate      == external_rotate)
 	      {
 		have_when = true;
@@ -204,5 +204,5 @@
 		print_and = " and ";
 	      }
-	    if (_param._carry       == external_carry)
+	    if (_param->_carry       == external_carry)
 	      {
 		have_when = true;
@@ -215,5 +215,5 @@
 	    std::string print_expr_completion;
 
-	    if (_param._size_data_completion == 0)
+	    if (_param->_size_data_completion == 0)
 	      print_expr_completion = "shift_logic_right_"+toString(i);
 	    else
@@ -224,11 +224,11 @@
 	  }
 	//-----[ Rotate Left ]-------------------------------------------------
-	if (_param._have_rotate_left)
-	  {
-	    bool   have_when  = false;
-	    std::string print_when = "";
-	    std::string print_and  = "";
-	    
-	    if (_param._direction   == external_direction)
+	if (_param->_have_rotate_left)
+	  {
+	    bool   have_when  = false;
+	    std::string print_when = "";
+	    std::string print_and  = "";
+	    
+	    if (_param->_direction   == external_direction)
 	      {
 		have_when = true;
@@ -236,5 +236,5 @@
 		print_and = " and ";
 	      }
-	    if (_param._rotate      == external_rotate)
+	    if (_param->_rotate      == external_rotate)
 	      {
 		have_when = true;
@@ -250,11 +250,11 @@
 	  }
 	//-----[ Rotate Right ]------------------------------------------------
-	if (_param._have_rotate_right)
-	  {
-	    bool   have_when  = false;
-	    std::string print_when = "";
-	    std::string print_and  = "";
-	    
-	    if (_param._direction   == external_direction)
+	if (_param->_have_rotate_right)
+	  {
+	    bool   have_when  = false;
+	    std::string print_when = "";
+	    std::string print_and  = "";
+	    
+	    if (_param->_direction   == external_direction)
 	      {
 		have_when = true;
@@ -262,5 +262,5 @@
 		print_and = " and ";
 	      }
-	    if (_param._rotate      == external_rotate)
+	    if (_param->_rotate      == external_rotate)
 	      {
 		have_when = true;
@@ -281,5 +281,5 @@
   /*
   //-----[ Shift logic Left ]--------------------------------------------
-  if (_param._have_shift_logic_left)
+  if (_param->_have_shift_logic_left)
     {
 
@@ -287,5 +287,5 @@
 
   //-----[ Shift logic Right ]-------------------------------------------
-  if (_param._have_shift_logic_right)
+  if (_param->_have_shift_logic_right)
     {
       
@@ -293,5 +293,5 @@
 
   //-----[ Shift arithmetic Left ]---------------------------------------
-  if (_param._have_shift_arithmetic_left)
+  if (_param->_have_shift_arithmetic_left)
     {
 
@@ -299,5 +299,5 @@
 
   //-----[ Shift arithmetic Right ]--------------------------------------
-  if (_param._have_shift_arithmetic_right)
+  if (_param->_have_shift_arithmetic_right)
     {
       
@@ -305,5 +305,5 @@
   
   //-----[ Rotate Left ]-------------------------------------------------
-  if (_param._have_rotate_left)
+  if (_param->_have_rotate_left)
     {
       
@@ -311,5 +311,5 @@
   
   //-----[ Rotate Right ]------------------------------------------------
-  if (_param._have_rotate_right)
+  if (_param->_have_rotate_right)
     {
       
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/SelfTest/src/test.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/SelfTest/src/test.cpp	(revision 82)
@@ -7,40 +7,11 @@
  */
 
+#define NB_ITERATION  1024
+#define CYCLE_MAX     (128*NB_ITERATION)
+
 #include "Behavioural/Generic/Sort/SelfTest/include/test.h"
 #include "Common/include/Test.h"
 #include "Common/include/BitManipulation.h"
 #include "Behavioural/include/Allocation.h"
-
-#define NB_ITERATION  1024
-#define CYCLE_MAX     (128*NB_ITERATION)
-
-#define LABEL(str...)							\
-  {									\
-    msg (_("{%d} "),static_cast<uint32_t>(sc_simulation_time()));	\
-    msg (str);								\
-    msg (_("\n"));							\
-  } while(0)
-
-#define SC_START(cycle_offset)                                                       \
-  do									             \
-    {									             \
-      /*cout << "SC_START (begin)" << endl;*/				             \
-									             \
-      uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time());          \
-      if (cycle_offset != 0)						             \
-	{								             \
-	  cout << "##########[ cycle "<< cycle_current+cycle_offset << " ]" << endl; \
-	}								             \
-									             \
-      if (cycle_current > CYCLE_MAX)					             \
-	{								             \
-	  TEST_KO("Maximal cycles Reached");				             \
-	}								             \
-									             \
-      sc_start(cycle_offset);						             \
-									             \
-      /*cout << "SC_START (end  )" << endl;*/				             \
-    } while(0)
-
 
 class entry_t
@@ -62,7 +33,8 @@
   Sort * _Sort = new Sort (name.c_str(),
 #ifdef STATISTICS
-					     _parameters_statistics,
+			   _parameters_statistics,
 #endif
-					     _param);
+			   _param,
+			   USE_ALL);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/include/Sort.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/include/Sort.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/include/Sort.h	(revision 82)
@@ -91,5 +91,5 @@
 #endif
    Parameters                                  * param,
-   morpheo::behavioural::Tusage_t                usage=USE_ALL
+   morpheo::behavioural::Tusage_t                usage
    );
   public  :          ~Sort             (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/include/Types.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/include/Types.h	(revision 82)
@@ -16,5 +16,5 @@
 namespace sort {
 
-  typedef uint32_t Taddress_t;
+//   typedef uint32_t Taddress_t;
   typedef uint32_t Tdata_t;
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/src/test.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/src/test.cpp	(revision 82)
@@ -7,38 +7,10 @@
  */
 
+#define NB_ITERATION  10
+#define CYCLE_MAX     (128*NB_ITERATION)
+
 #include "Behavioural/Generic/Victim/SelfTest/include/test.h"
 #include "Common/include/Test.h"
 #include "Behavioural/include/Allocation.h"
-
-#define NB_ITERATION  10
-#define CYCLE_MAX     (128*NB_ITERATION)
-
-#define LABEL(str...)							\
-  {									\
-    msg (_("{%d} "),static_cast<uint32_t>(sc_simulation_time()));	\
-    msg (str);								\
-    msg (_("\n"));							\
-  } while(0)
-
-#define SC_START(cycle_offset)                                                       \
-  do									             \
-    {									             \
-      /*cout << "SC_START (begin)" << endl;*/				             \
-									             \
-      uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time());          \
-      if (cycle_offset != 0)						             \
-	{								             \
-	  cout << "##########[ cycle "<< cycle_current+cycle_offset << " ]" << endl; \
-	}								             \
-									             \
-      if (cycle_current > CYCLE_MAX)					             \
-	{								             \
-	  TEST_KO("Maximal cycles Reached");				             \
-	}								             \
-									             \
-      sc_start(cycle_offset);						             \
-									             \
-      /*cout << "SC_START (end  )" << endl;*/				             \
-    } while(0)
 
 void test (string name,
@@ -53,7 +25,8 @@
   Victim * _Victim = new Victim (name.c_str(),
 #ifdef STATISTICS
-					     _parameters_statistics,
+				 _parameters_statistics,
 #endif
-					     _param);
+				 _param,
+				 USE_ALL);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp	(revision 82)
@@ -7,4 +7,7 @@
  */
 
+#define NB_ITERATION  1
+#define CYCLE_MAX     (128*NB_ITERATION)
+
 #include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/include/test.h"
 #include "Common/include/Test.h"
@@ -39,5 +42,6 @@
 								  param_stat,
 #endif
-								  &param);
+								  &param,
+								  USE_ALL);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h	(revision 82)
@@ -41,4 +41,5 @@
 #endif
 #include "Behavioural/include/Component.h"
+#include "Behavioural/include/Usage.h"
 
 namespace morpheo {
@@ -55,7 +56,8 @@
     // -----[ fields ]----------------------------------------------------
     // Parameters
-  protected : const std::string   _name;
+  protected : const std::string  _name;
+  protected : const Parameters * _param;
+  private   : const Tusage_t     _usage;
 
-  protected : const Parameters  * _param;
 #ifdef STATISTICS
   public    : Stat                           * _stat;
@@ -104,5 +106,6 @@
    morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-   Parameters                                  * param );
+   Parameters                                  * param ,
+   morpheo::behavioural::Tusage_t                usage);
 					       
   public  :          Victim_Pseudo_LRU              (Parameters param );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp	(revision 82)
@@ -14,15 +14,19 @@
 namespace victim_pseudo_lru {
 
+  Victim_Pseudo_LRU::Victim_Pseudo_LRU 
+  (
 #ifdef SYSTEMC
-  Victim_Pseudo_LRU::Victim_Pseudo_LRU (sc_module_name name,
+   sc_module_name name,
 #else
-  Victim_Pseudo_LRU::Victim_Pseudo_LRU (std::string name,
+   std::string name,
 #endif
 #ifdef STATISTICS
-			  morpheo::behavioural::Parameters_Statistics * param_statistics,
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-			  morpheo::behavioural::generic::victim::victim_pseudo_lru::Parameters * param ):
-			  _name   (name)
-			  ,_param (param)
+   morpheo::behavioural::generic::victim::victim_pseudo_lru::Parameters * param ,
+   morpheo::behavioural::Tusage_t usage):
+    _name   (name)
+    ,_param (param)
+    ,_usage (usage)
   {
     log_printf(FUNC,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp	(revision 82)
@@ -18,5 +18,5 @@
   void Victim_Pseudo_LRU::allocation (void)
   {
-    _component   = new Component ();
+    _component   = new Component (_usage);
 
     Entity * entity = _component->set_entity (_name                  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Types.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Types.h	(revision 82)
@@ -16,5 +16,5 @@
 namespace victim {
 
-  typedef uint32_t Taddress_t;
+//   typedef uint32_t Taddress_t;
   typedef uint32_t Tentity_t;
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Victim.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Victim.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Victim.h	(revision 82)
@@ -102,5 +102,5 @@
 #endif
    Parameters                                  * param,
-   morpheo::behavioural::Tusage_t                usage=USE_ALL
+   morpheo::behavioural::Tusage_t                usage
    );
   public  :          ~Victim             (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_allocation.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_allocation.cpp	(revision 82)
@@ -65,5 +65,6 @@
 	     ,param_statistics
 #endif
-	     ,_param->_param_victim_pseudo_lru);
+	     ,_param->_param_victim_pseudo_lru
+	     ,_usage);
 	  break;
 	}
