Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile	(revision 88)
@@ -24,4 +24,6 @@
 library_clean			: RegisterFile_Multi_Banked_library_clean
 
+local_clean			:
+
 include                         ../Makefile.deps
 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
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 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp	(revision 88)
@@ -23,4 +23,14 @@
 #endif
 
+  Tusage_t _usage = USE_ALL;
+
+//   _usage = usage_unset(_usage,USE_SYSTEMC              );
+//   _usage = usage_unset(_usage,USE_VHDL                 );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
+//   _usage = usage_unset(_usage,USE_POSITION             );
+   _usage = usage_unset(_usage,USE_STATISTICS           );
+//   _usage = usage_unset(_usage,USE_INFORMATION          );
+
   RegisterFile_Multi_Banked * _RegisterFile_Multi_Banked = new RegisterFile_Multi_Banked 
     (name.c_str(),
@@ -29,5 +39,5 @@
 #endif
      _param,
-     USE_ALL);
+     _usage);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h	(revision 88)
@@ -61,11 +61,14 @@
 			uint32_t    nb_port_write_by_bank,
 			Tcrossbar_t crossbar             );
-  public : Parameters  (Parameters & param) ;
+//   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
 
+  public :        void            copy       (void);
+
   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::registerfile::registerfile_multi_banked::Parameters & x);
+
+  public :        std::string     print      (uint32_t depth);
+  public : friend std::ostream&   operator<< (std::ostream& output_stream,
+                                              morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters & x);
   };
 
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 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h	(revision 88)
@@ -106,8 +106,8 @@
   public  :          ~RegisterFile_Multi_Banked             (void);
 					       
-#ifdef SYSTEMC				       
   private : void     allocation                (void);
   private : void     deallocation              (void);
 					       
+#ifdef SYSTEMC				       
   private : Taddress_t address_bank                 (Taddress_t address);
   private : Taddress_t address_num_reg              (Taddress_t address);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp	(revision 88)
@@ -87,49 +87,49 @@
   };
   
-  Parameters::Parameters (Parameters & param):
-    _nb_port_read          (param._nb_port_read         ),
-    _nb_port_write         (param._nb_port_write        ),
-    _nb_word               (param._nb_word              ),
-    _size_word             (param._size_word            ),
-    _nb_bank               (param._nb_bank              ),
-    _nb_port_read_by_bank  (param._nb_port_read_by_bank ),
-    _nb_port_write_by_bank (param._nb_port_write_by_bank),
-    _crossbar              (param._crossbar             ),
-    _size_address          (param._size_address         ),
-    _size_address_by_bank  (param._size_address_by_bank ),
-    _bank_shift            (param._bank_shift           ),
-    _bank_mask             (param._bank_mask            ),
-    _num_reg_shift         (param._num_reg_shift        ),
-    _num_reg_mask          (param._num_reg_mask         ),
-    _nb_word_by_bank       (param._nb_word_by_bank      ),
-    _have_port_address     (param._have_port_address     ),
-    _have_bank_port_address(param._have_bank_port_address)
-  {
-    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters (copy)","Begin");
+//   Parameters::Parameters (Parameters & param):
+//     _nb_port_read          (param._nb_port_read         ),
+//     _nb_port_write         (param._nb_port_write        ),
+//     _nb_word               (param._nb_word              ),
+//     _size_word             (param._size_word            ),
+//     _nb_bank               (param._nb_bank              ),
+//     _nb_port_read_by_bank  (param._nb_port_read_by_bank ),
+//     _nb_port_write_by_bank (param._nb_port_write_by_bank),
+//     _crossbar              (param._crossbar             ),
+//     _size_address          (param._size_address         ),
+//     _size_address_by_bank  (param._size_address_by_bank ),
+//     _bank_shift            (param._bank_shift           ),
+//     _bank_mask             (param._bank_mask            ),
+//     _num_reg_shift         (param._num_reg_shift        ),
+//     _num_reg_mask          (param._num_reg_mask         ),
+//     _nb_word_by_bank       (param._nb_word_by_bank      ),
+//     _have_port_address     (param._have_port_address     ),
+//     _have_bank_port_address(param._have_bank_port_address)
+//   {
+//     log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters (copy)","Begin");
 
-    if (_crossbar == PARTIAL_CROSSBAR)
-      {
-	// All port_src is connected with one port_dest on each bank
+//     if (_crossbar == PARTIAL_CROSSBAR)
+//       {
+// 	// All port_src is connected with one port_dest on each bank
 	
-	_link_port_read_to_bank_read     = new uint32_t [_nb_port_read ];
-// 	_link_port_read_to_num_bank         = new uint32_t [_nb_port_read ];
-	_link_port_write_to_bank_write   = new uint32_t [_nb_port_write];
-// 	_link_port_write_to_num_bank        = new uint32_t [_nb_port_write];
+// 	_link_port_read_to_bank_read     = new uint32_t [_nb_port_read ];
+// // 	_link_port_read_to_num_bank         = new uint32_t [_nb_port_read ];
+// 	_link_port_write_to_bank_write   = new uint32_t [_nb_port_write];
+// // 	_link_port_write_to_num_bank        = new uint32_t [_nb_port_write];
 
-	for (uint32_t i=0; i<_nb_port_read         ;i++)
-	  {
-	    _link_port_read_to_bank_read   [i] = param._link_port_read_to_bank_read     [i];
-// 	    _link_port_read_to_num_bank       [i] = param._link_port_read_to_num_bank    [i];
-	  }
-	for (uint32_t i=0; i<_nb_port_write        ;i++)
-	  {
-	    _link_port_write_to_bank_write [i] = param._link_port_write_to_bank_write    [i];
-// 	    _link_port_write_to_num_bank      [i] = param._link_port_write_to_num_bank   [i];
-	  }
-      }
+// 	for (uint32_t i=0; i<_nb_port_read         ;i++)
+// 	  {
+// 	    _link_port_read_to_bank_read   [i] = param._link_port_read_to_bank_read     [i];
+// // 	    _link_port_read_to_num_bank       [i] = param._link_port_read_to_num_bank    [i];
+// 	  }
+// 	for (uint32_t i=0; i<_nb_port_write        ;i++)
+// 	  {
+// 	    _link_port_write_to_bank_write [i] = param._link_port_write_to_bank_write    [i];
+// // 	    _link_port_write_to_num_bank      [i] = param._link_port_write_to_num_bank   [i];
+// 	  }
+//       }
 
-    test();
-    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters (copy)","End");
-  };
+//     test();
+//     log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters (copy)","End");
+//   };
 
   Parameters::~Parameters () 
@@ -147,4 +147,10 @@
   };
 
+  void Parameters::copy (void) 
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"copy","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,"copy","End");
+  };
+
 }; // end namespace registerfile_multi_banked
 }; // end namespace registerfile
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 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp	(revision 88)
@@ -14,4 +14,6 @@
 namespace registerfile_multi_banked {
 
+#undef  FUNCTION
+#define FUNCTION "RegisterFile_Multi_Banked::RegisterFile_Multi_Banked"
   RegisterFile_Multi_Banked::RegisterFile_Multi_Banked 
   (
@@ -30,27 +32,39 @@
     ,_usage (usage)
   {
-    log_printf(FUNC,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,FUNCTION,"Begin");
 
-#ifdef SYSTEMC
-    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Allocation");
+#if DEBUG_RegisterFile_Multi_Banked == true
+    log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,_("<%s> Parameters"),_name.c_str());
 
+    std::cout << *param << std::endl;
+#endif    
+
+    log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,"Allocation");
+    
     allocation ();
-#endif
 
 #ifdef STATISTICS
-    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Allocation of statistics");
-
-    // Allocation of statistics
-    statistics_declaration(param_statistics);
+    if (usage_is_set(_usage,USE_STATISTICS))
+      {	
+        log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,"Allocation of statistics");
+        
+        // Allocation of statistics
+        statistics_declaration(param_statistics);
+      }
 #endif
 
 #ifdef VHDL
-    // generate the vhdl
-    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Generate the vhdl");
-
-    vhdl();
+    if (usage_is_set(_usage,USE_VHDL))
+      {	
+        // generate the vhdl
+        log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,"Generate the vhdl");
+        
+        vhdl();
+      }
 #endif
 
 #ifdef SYSTEMC
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {	
     // Function pointer
     if (_param->_crossbar == FULL_CROSSBAR)                             
@@ -67,5 +81,5 @@
       }
 
-    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Method - transition");
+    log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,"Method - transition");
 
     SC_METHOD (transition);
@@ -77,5 +91,5 @@
 #endif    
 
-    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Method - genMealy_write");
+    log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,"Method - genMealy_write");
 
     SC_METHOD (genMealy_read);
@@ -129,26 +143,27 @@
       }
 #endif    
-
+      }
 #endif
-    log_printf(FUNC,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","End");
+    log_printf(FUNC,RegisterFile_Multi_Banked,FUNCTION,"End");
   };
   
+#undef  FUNCTION
+#define FUNCTION "RegisterFile_Multi_Banked::~RegisterFile_Multi_Banked"
   RegisterFile_Multi_Banked::~RegisterFile_Multi_Banked (void)
   {
-    log_printf(FUNC,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,FUNCTION,"Begin");
 
 #ifdef STATISTICS
-    log_printf(INFO,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Generate Statistics file");
-    
-    delete _stat;
+    if (usage_is_set(_usage,USE_STATISTICS))
+      {	
+        log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,"Generate Statistics file");
+        delete _stat;
+      }
 #endif
 
-#ifdef SYSTEMC
-    log_printf(INFO,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Deallocation");
+    log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,"Deallocation");
+    deallocation ();
 
-    deallocation ();
-#endif
-
-    log_printf(FUNC,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","End");
+    log_printf(FUNC,RegisterFile_Multi_Banked,FUNCTION,"End");
   };
 
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 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp	(revision 88)
@@ -1,7 +1,6 @@
-#ifdef SYSTEMC
 /*
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -31,5 +30,5 @@
     _interfaces = entity->set_interfaces();
 
-    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
       Interface * interface = _interfaces->set_interface(""
@@ -44,5 +43,5 @@
      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
 
-    // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
      in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read];
@@ -69,5 +68,5 @@
       }
 
-    // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
      in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param->_nb_port_write];
@@ -94,5 +93,7 @@
       }
 
-    // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {
+    // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
     reg_DATA = new Tdata_t * [_param->_nb_bank];
@@ -103,13 +104,15 @@
       }
 
-    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     internal_WRITE_VAL     = new bool       [_param->_nb_port_write];
     internal_WRITE_BANK    = new Taddress_t [_param->_nb_port_write];
     internal_WRITE_NUM_REG = new Taddress_t [_param->_nb_port_write];
+      }
 
-    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
 #ifdef POSITION
-    _component->generate_file();
+    if (usage_is_set(_usage,USE_POSITION))
+      _component->generate_file();
 #endif
 
@@ -123,3 +126,2 @@
 }; // end namespace behavioural
 }; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp	(revision 88)
@@ -1,3 +1,2 @@
-#ifdef SYSTEMC
 /*
  * $Id$
@@ -20,28 +19,31 @@
     log_printf(FUNC,RegisterFile_Multi_Banked,"deallocation","Begin");
 
-    delete in_CLOCK;
-    delete in_NRESET;
-
-    // ----- Interface Read
-    delete []  in_READ_VAL    ;
-    delete [] out_READ_ACK    ;
-    if (_param->_have_port_address == true)
-    delete []  in_READ_ADDRESS;
-    delete [] out_READ_DATA   ;
-
-    // ----- Interface Write
-    delete []  in_WRITE_VAL    ;
-    delete [] out_WRITE_ACK    ;
-    if (_param->_have_port_address == true)
-    delete []  in_WRITE_ADDRESS;
-    delete []  in_WRITE_DATA   ;
-
-    // ----- Register
-    delete [] reg_DATA;
-
-    // ----- Internal
-    delete [] internal_WRITE_VAL;
-    delete [] internal_WRITE_BANK;
-    delete [] internal_WRITE_NUM_REG;
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {
+        delete in_CLOCK;
+        delete in_NRESET;
+        
+        // ----- Interface Read
+        delete []  in_READ_VAL    ;
+        delete [] out_READ_ACK    ;
+        if (_param->_have_port_address == true)
+        delete []  in_READ_ADDRESS;
+        delete [] out_READ_DATA   ;
+        
+        // ----- Interface Write
+        delete []  in_WRITE_VAL    ;
+        delete [] out_WRITE_ACK    ;
+        if (_param->_have_port_address == true)
+        delete []  in_WRITE_ADDRESS;
+        delete []  in_WRITE_DATA   ;
+        
+        // ----- Register
+        delete [] reg_DATA;
+        
+        // ----- Internal
+        delete [] internal_WRITE_VAL;
+        delete [] internal_WRITE_BANK;
+        delete [] internal_WRITE_NUM_REG;
+      }       
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
@@ -58,3 +60,2 @@
 }; // end namespace behavioural
 }; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_end_cycle.cpp	(revision 88)
@@ -23,5 +23,6 @@
 
 #ifdef STATISTICS
-    _stat->end_cycle();
+    if (usage_is_set(_usage,USE_STATISTICS))
+      _stat->end_cycle();
 #endif    
 
@@ -29,5 +30,6 @@
     // Evaluation before read the ouput signal
 //  sc_start(0);
-    _interfaces->testbench();
+    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
+      _interfaces->testbench();
 #endif
 
