Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp	(revision 146)
@@ -26,6 +26,28 @@
     _have_port_address = param->_have_port_address;
 
-    _param_registerfile_monolithic   = param;
-    _param_registerfile_multi_banked = NULL;
+    _param_registerfile_monolithic      = param;
+    _param_registerfile_internal_banked = NULL;
+    _param_registerfile_multi_banked    = NULL;
+
+    test();
+
+    log_printf(FUNC,RegisterFile,"Parameters","End");
+  };
+
+  Parameters::Parameters (morpheo::behavioural::generic::registerfile::registerfile_internal_banked  ::Parameters * param)
+  {
+    log_printf(FUNC,RegisterFile,"Parameters","Begin");
+
+    _instance          = instance_RegisterFile_Internal_Banked;
+    _nb_port_read      = param->_nb_port_read ;
+    _nb_port_write     = param->_nb_port_write;
+    _nb_word           = param->_nb_word      ; 
+    _size_word         = param->_size_word    ; 
+    _size_address      = param->_size_address ;
+    _have_port_address = param->_have_port_address;
+
+    _param_registerfile_monolithic      = NULL;
+    _param_registerfile_internal_banked = param;
+    _param_registerfile_multi_banked    = NULL;
 
     test();
@@ -45,6 +67,7 @@
     log_printf(FUNC,RegisterFile,"Parameters","Begin");
 
-    _param_registerfile_monolithic   = NULL;
-    _param_registerfile_multi_banked = param;
+    _param_registerfile_monolithic      = NULL;
+    _param_registerfile_internal_banked = NULL;
+    _param_registerfile_multi_banked    = param;
 
     test();
@@ -53,21 +76,4 @@
   };
   
-//   Parameters::Parameters (Parameters & param):
-//     _instance          (param._instance     ),
-//     _nb_port_read      (param._nb_port_read ),
-//     _nb_port_write     (param._nb_port_write),
-//     _nb_word           (param._nb_word      ), 
-//     _size_word         (param._size_word    ), 
-//     _size_address      (param._size_address ),
-//     _have_port_address (param._have_port_address)
-//   {
-//     log_printf(FUNC,RegisterFile,"Parameters (copy)","Begin");
-
-//     _param_registerfile_multi_banked = param._param_registerfile_multi_banked;
-//     _param_registerfile_monolithic   = param._param_registerfile_monolithic;
-//     test();
-//     log_printf(FUNC,RegisterFile,"Parameters (copy)","End");
-//   };
-
   Parameters::~Parameters () 
   {
@@ -84,4 +90,6 @@
 //     if (_instance == instance_RegisterFile_Monolithic)
 //       COPY(_param_registerfile_monolithic);
+//     if (_instance == instance_RegisterFile_Internal_Banked)
+//       COPY(_param_registerfile_internal_banked);
 //     if (_instance == instance_RegisterFile_Multi_Banked)
 //       COPY(_param_registerfile_multi_banked);
@@ -92,5 +100,4 @@
 }; // end namespace registerfile
 }; // end namespace generic
-
 }; // end namespace behavioural
 }; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_msg_error.cpp	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_msg_error.cpp	(revision 146)
@@ -10,16 +10,20 @@
 #include <sstream>
 
-namespace morpheo                    {
+namespace morpheo {
 namespace behavioural {
 namespace generic {
 namespace registerfile {
 
-
   Parameters_test Parameters::msg_error(void)
   {
     if (_instance == instance_RegisterFile_Monolithic)
-      return _param_registerfile_monolithic  ->msg_error();
+      return _param_registerfile_monolithic->msg_error();
     else
-      return _param_registerfile_multi_banked->msg_error();
+      {
+	if (_instance == instance_RegisterFile_Internal_Banked)
+	  return _param_registerfile_internal_banked->msg_error();
+	else
+	  return _param_registerfile_multi_banked->msg_error();
+      }
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_print.cpp	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_print.cpp	(revision 146)
@@ -9,9 +9,8 @@
 #include "Behavioural/include/XML.h"
 
-namespace morpheo                    {
+namespace morpheo {
 namespace behavioural {
 namespace generic {
 namespace registerfile {
-
 
   std::string Parameters::print (uint32_t depth)
@@ -22,7 +21,12 @@
 
     if (_instance == instance_RegisterFile_Monolithic)
-      _return = _param_registerfile_monolithic  ->print(depth);
+      _return = _param_registerfile_monolithic->print(depth);
     else
-      _return = _param_registerfile_multi_banked->print(depth);
+      {
+	if (_instance == instance_RegisterFile_Internal_Banked)
+	  _return = _param_registerfile_internal_banked->print(depth);
+	else
+	  _return = _param_registerfile_multi_banked->print(depth);
+      }
 
     log_printf(FUNC,RegisterFile,"print","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp	(revision 146)
@@ -43,7 +43,12 @@
 #ifdef STATISTICS
     if (_param->_instance == instance_RegisterFile_Monolithic)
-      _stat = component_RegisterFile_Monolithic  ->_stat;
+      _stat = component_RegisterFile_Monolithic->_stat;
     else
-      _stat = component_RegisterFile_Multi_Banked->_stat;
+      {
+	if (_param->_instance == instance_RegisterFile_Internal_Banked)
+	  _stat = component_RegisterFile_Internal_Banked->_stat;
+	else
+	  _stat = component_RegisterFile_Multi_Banked->_stat;
+      }
 #endif
 
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 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp	(revision 146)
@@ -15,11 +15,12 @@
 namespace registerfile {
 
-  void RegisterFile::allocation (
-#ifdef STATISTICS
-				 morpheo::behavioural::Parameters_Statistics * param_statistics
-#else
-				 void
-#endif
-				 )
+  void RegisterFile::allocation 
+  (
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+   void
+#endif
+   )
   {
     std::string rename;
@@ -60,26 +61,41 @@
 #endif
 
-     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                
+     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
     if (_param->_instance == instance_RegisterFile_Monolithic)
     // =====[ component_RegisterFile_Monolithic ]=========================
       {
-	component_RegisterFile_Monolithic  = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic   (_name.c_str()
-#ifdef STATISTICS
-																					       ,param_statistics
-#endif
-																					       ,_param->_param_registerfile_monolithic
-																					       ,_usage);
-	
+	component_RegisterFile_Monolithic  = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic
+	  (_name.c_str()
+#ifdef STATISTICS
+	   ,param_statistics
+#endif
+	   ,_param->_param_registerfile_monolithic
+	   ,_usage);
       }
     else
-    // =====[ component_RegisterFile_Multi_Banked ]=======================
-      {
-	component_RegisterFile_Multi_Banked = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (_name.c_str()
-#ifdef STATISTICS
-																						,param_statistics
-#endif
-																						,_param->_param_registerfile_multi_banked
-																						,_usage);
-	
+      {
+	if (_param->_instance == instance_RegisterFile_Internal_Banked)
+	  // =====[ component_RegisterFile_Internal_Banked ]=========================
+	  {
+	    component_RegisterFile_Internal_Banked  = new morpheo::behavioural::generic::registerfile::registerfile_internal_banked  ::RegisterFile_Internal_Banked  ::RegisterFile_Internal_Banked
+	      (_name.c_str()
+#ifdef STATISTICS
+	       ,param_statistics
+#endif
+	       ,_param->_param_registerfile_internal_banked
+	       ,_usage);
+	  }
+	else
+	  {
+	    // =====[ component_RegisterFile_Multi_Banked ]=======================
+	    component_RegisterFile_Multi_Banked = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked
+	      (_name.c_str()
+#ifdef STATISTICS
+	       ,param_statistics
+#endif
+	       ,_param->_param_registerfile_multi_banked
+	       ,_usage);
+	  }
       }
     // ~~~~~[ Component - Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -125,49 +141,94 @@
       }
     else
-    // =====[ Component_RegisterFile_Multi_Banked - Instanciation ]=======
-      {
-#ifdef SYSTEMCASS_SPECIFIC
-	(*(component_RegisterFile_Multi_Banked->in_CLOCK )) (*(in_CLOCK ));
-	(*(component_RegisterFile_Multi_Banked->in_NRESET)) (*(in_NRESET));
-	
-	for (uint32_t i=0; i<_param->_nb_port_read; i++)
-	  { 
-	    (*(component_RegisterFile_Multi_Banked-> in_READ_VAL     [i])) (*( in_READ_VAL     [i]));   
-	    (*(component_RegisterFile_Multi_Banked->out_READ_ACK     [i])) (*(out_READ_ACK     [i]));
-	    if (_param->_have_port_address == true)
-	    (*(component_RegisterFile_Multi_Banked-> in_READ_ADDRESS [i])) (*( in_READ_ADDRESS [i]));
-	    (*(component_RegisterFile_Multi_Banked->out_READ_DATA    [i])) (*(out_READ_DATA    [i]));
-	  }
-	
-	for (uint32_t i=0; i<_param->_nb_port_write; i++)
-	  {
-	    (*(component_RegisterFile_Multi_Banked-> in_WRITE_VAL     [i])) (*( in_WRITE_VAL     [i]));
-	    (*(component_RegisterFile_Multi_Banked->out_WRITE_ACK     [i])) (*(out_WRITE_ACK     [i]));
-	    if (_param->_have_port_address == true)
-	    (*(component_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS [i])) (*( in_WRITE_ADDRESS [i]));
-	    (*(component_RegisterFile_Multi_Banked-> in_WRITE_DATA    [i])) (*( in_WRITE_DATA    [i]));
-	  }
-#else
-	 in_CLOCK         = component_RegisterFile_Multi_Banked-> in_CLOCK        ;
-	 in_NRESET        = component_RegisterFile_Multi_Banked-> in_NRESET       ;
-	
-         in_READ_VAL      = component_RegisterFile_Multi_Banked-> in_READ_VAL     ;   
-        out_READ_ACK      = component_RegisterFile_Multi_Banked->out_READ_ACK     ;
-         in_READ_ADDRESS  = component_RegisterFile_Multi_Banked-> in_READ_ADDRESS ;
-        out_READ_DATA     = component_RegisterFile_Multi_Banked->out_READ_DATA    ;
-        
-         in_WRITE_VAL     = component_RegisterFile_Multi_Banked-> in_WRITE_VAL    ;
-        out_WRITE_ACK     = component_RegisterFile_Multi_Banked->out_WRITE_ACK    ;
-         in_WRITE_ADDRESS = component_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS;
-         in_WRITE_DATA    = component_RegisterFile_Multi_Banked-> in_WRITE_DATA   ;
-#endif
-
+      {
+	if (_param->_instance == instance_RegisterFile_Internal_Banked)
+	  // =====[ Component_RegisterFile_Internal_Banked - Instanciation ]=========
+	  {
+#ifdef SYSTEMCASS_SPECIFIC
+	    (*(component_RegisterFile_Internal_Banked  ->in_CLOCK )) (*(in_CLOCK ));
+	    (*(component_RegisterFile_Internal_Banked  ->in_NRESET)) (*(in_NRESET));
+	    
+	    for (uint32_t i=0; i<_param->_nb_port_read; i++)
+	      { 
+		(*(component_RegisterFile_Internal_Banked  -> in_READ_VAL     [i])) (*( in_READ_VAL     [i]));   
+		(*(component_RegisterFile_Internal_Banked  ->out_READ_ACK     [i])) (*(out_READ_ACK     [i]));
+		if (_param->_have_port_address == true)
+		(*(component_RegisterFile_Internal_Banked  -> in_READ_ADDRESS [i])) (*( in_READ_ADDRESS [i]));
+		(*(component_RegisterFile_Internal_Banked  ->out_READ_DATA    [i])) (*(out_READ_DATA    [i]));
+	      }
+	    
+	    for (uint32_t i=0; i<_param->_nb_port_write; i++)
+	      {
+		(*(component_RegisterFile_Internal_Banked  -> in_WRITE_VAL     [i])) (*( in_WRITE_VAL     [i]));
+		(*(component_RegisterFile_Internal_Banked  ->out_WRITE_ACK     [i])) (*(out_WRITE_ACK     [i]));
+		if (_param->_have_port_address == true)
+		(*(component_RegisterFile_Internal_Banked  -> in_WRITE_ADDRESS [i])) (*( in_WRITE_ADDRESS [i]));
+		(*(component_RegisterFile_Internal_Banked  -> in_WRITE_DATA    [i])) (*( in_WRITE_DATA    [i]));
+	      }
+#else
+	     in_CLOCK         = component_RegisterFile_Internal_Banked-> in_CLOCK        ;
+	     in_NRESET        = component_RegisterFile_Internal_Banked-> in_NRESET       ;
+	    
+	     in_READ_VAL      = component_RegisterFile_Internal_Banked-> in_READ_VAL     ;   
+	    out_READ_ACK      = component_RegisterFile_Internal_Banked->out_READ_ACK     ;
+	     in_READ_ADDRESS  = component_RegisterFile_Internal_Banked-> in_READ_ADDRESS ;
+	    out_READ_DATA     = component_RegisterFile_Internal_Banked->out_READ_DATA    ;
+	    
+	     in_WRITE_VAL     = component_RegisterFile_Internal_Banked-> in_WRITE_VAL    ;
+	    out_WRITE_ACK     = component_RegisterFile_Internal_Banked->out_WRITE_ACK    ;
+	     in_WRITE_ADDRESS = component_RegisterFile_Internal_Banked-> in_WRITE_ADDRESS;
+	     in_WRITE_DATA    = component_RegisterFile_Internal_Banked-> in_WRITE_DATA   ;
+#endif
+	  }
+	else
+	  // =====[ Component_RegisterFile_Multi_Banked - Instanciation ]=======
+	  {
+#ifdef SYSTEMCASS_SPECIFIC
+	    (*(component_RegisterFile_Multi_Banked->in_CLOCK )) (*(in_CLOCK ));
+	    (*(component_RegisterFile_Multi_Banked->in_NRESET)) (*(in_NRESET));
+	    
+	    for (uint32_t i=0; i<_param->_nb_port_read; i++)
+	      { 
+		(*(component_RegisterFile_Multi_Banked-> in_READ_VAL     [i])) (*( in_READ_VAL     [i]));   
+		(*(component_RegisterFile_Multi_Banked->out_READ_ACK     [i])) (*(out_READ_ACK     [i]));
+		if (_param->_have_port_address == true)
+		(*(component_RegisterFile_Multi_Banked-> in_READ_ADDRESS [i])) (*( in_READ_ADDRESS [i]));
+		(*(component_RegisterFile_Multi_Banked->out_READ_DATA    [i])) (*(out_READ_DATA    [i]));
+	      }
+	    
+	    for (uint32_t i=0; i<_param->_nb_port_write; i++)
+	      {
+		(*(component_RegisterFile_Multi_Banked-> in_WRITE_VAL     [i])) (*( in_WRITE_VAL     [i]));
+		(*(component_RegisterFile_Multi_Banked->out_WRITE_ACK     [i])) (*(out_WRITE_ACK     [i]));
+		if (_param->_have_port_address == true)
+		(*(component_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS [i])) (*( in_WRITE_ADDRESS [i]));
+		(*(component_RegisterFile_Multi_Banked-> in_WRITE_DATA    [i])) (*( in_WRITE_DATA    [i]));
+	      }
+#else
+	     in_CLOCK         = component_RegisterFile_Multi_Banked-> in_CLOCK        ;
+	     in_NRESET        = component_RegisterFile_Multi_Banked-> in_NRESET       ;
+	    
+	     in_READ_VAL      = component_RegisterFile_Multi_Banked-> in_READ_VAL     ;   
+	    out_READ_ACK      = component_RegisterFile_Multi_Banked->out_READ_ACK     ;
+	     in_READ_ADDRESS  = component_RegisterFile_Multi_Banked-> in_READ_ADDRESS ;
+	    out_READ_DATA     = component_RegisterFile_Multi_Banked->out_READ_DATA    ;
+	    
+	     in_WRITE_VAL     = component_RegisterFile_Multi_Banked-> in_WRITE_VAL    ;
+	    out_WRITE_ACK     = component_RegisterFile_Multi_Banked->out_WRITE_ACK    ;
+	     in_WRITE_ADDRESS = component_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS;
+	     in_WRITE_DATA    = component_RegisterFile_Multi_Banked-> in_WRITE_DATA   ;
+#endif
+	  }
       }
 
     if (_param->_instance == instance_RegisterFile_Monolithic)
-      _component = component_RegisterFile_Monolithic  ->_component;
+      _component = component_RegisterFile_Monolithic->_component;
     else
-      _component = component_RegisterFile_Multi_Banked->_component;
-
+      {
+	if (_param->_instance == instance_RegisterFile_Internal_Banked)
+	  _component = component_RegisterFile_Internal_Banked->_component;
+	else
+	  _component = component_RegisterFile_Multi_Banked->_component;
+      }
     log_printf(FUNC,RegisterFile,"allocation","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_deallocation.cpp	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_deallocation.cpp	(revision 146)
@@ -60,7 +60,12 @@
 
     if (_param->_instance == instance_RegisterFile_Monolithic)
-      delete component_RegisterFile_Monolithic  ;
+      delete component_RegisterFile_Monolithic;
     else
-      delete component_RegisterFile_Multi_Banked;
+      {
+	if (_param->_instance == instance_RegisterFile_Internal_Banked)
+	  delete component_RegisterFile_Internal_Banked;
+	else
+	  delete component_RegisterFile_Multi_Banked;
+      }
 
     log_printf(FUNC,RegisterFile,"deallocation","End");
