Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.deps	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.deps	(revision 146)
@@ -19,4 +19,7 @@
 include                         $(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.deps
 endif
+ifndef RegisterFile_Internal_Banked
+include                         $(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/Makefile.deps
+endif
 
 #-----[ Library ]------------------------------------------
@@ -25,4 +28,5 @@
 					$(RegisterFile_Monolithic_LIBRARY)      \
 					$(RegisterFile_Multi_Banked_LIBRARY)    \
+					$(RegisterFile_Internal_Banked_LIBRARY) \
 					$(Behavioural_LIBRARY)	
 
@@ -41,5 +45,6 @@
 				$(MAKE) Behavioural_library; \
 				$(MAKE) RegisterFile_Monolithic_library;\
-				$(MAKE) RegisterFile_Multi_Banked_library;
+				$(MAKE) RegisterFile_Multi_Banked_library;\
+				$(MAKE) RegisterFile_Internal_Banked_library;
 	
 RegisterFile_library_clean	: RegisterFile_library_clean_only
@@ -47,3 +52,4 @@
 				$(MAKE) Behavioural_library_clean; \
 				$(MAKE) RegisterFile_Monolithic_library_clean;\
-				$(MAKE) RegisterFile_Multi_Banked_library_clean;
+				$(MAKE) RegisterFile_Multi_Banked_library_clean;\
+				$(MAKE) RegisterFile_Internal_Banked_library_clean;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/include/Types.h	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/include/Types.h	(revision 146)
@@ -18,6 +18,6 @@
 
 //typedef uint32_t Taddress_t;
-typedef uint64_t Tdata_t;
-  // typedef Tgeneral_data_t Tdata_t;
+//typedef uint64_t Tdata_t;
+typedef Tgeneral_data_t Tdata_t;
  
 }; // end namespace registerfile_internal_banked
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_mixte.gen
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_mixte.gen	(revision 145)
+++ 	(revision )
@@ -1,6 +1,0 @@
-RegisterFile_Monolithic
-0	0 	*2	# nb_port_read
-0	0	*2	# nb_port_write
-1	8	*2	# nb_port_read_write
-32 	32 	*2	# nb_word
-32	32	*2	# size_word
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_read.gen
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_read.gen	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_read.gen	(revision 146)
@@ -2,5 +2,4 @@
 1	8 	*2	# nb_port_read
 1	1	*2	# nb_port_write
-0	0	*2	# nb_port_read_write
 512 	512	*2	# nb_word
 32	32	*2	# size_word
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_size.gen
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_size.gen	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_size.gen	(revision 146)
@@ -2,5 +2,4 @@
 4	4 	*2	# nb_port_read
 2	2	*2	# nb_port_write
-0	0	*2	# nb_port_read_write
 1   	128	*2	# nb_word
 32	32	*2	# size_word
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_write.gen
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_write.gen	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_write.gen	(revision 146)
@@ -2,5 +2,4 @@
 1	1 	*2	# nb_port_read
 2	8	*2	# nb_port_write
-0	0	*2	# nb_port_read_write
 512	512	*2	# nb_word
 32	32	*2	# size_word
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/main.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/main.cpp	(revision 146)
@@ -8,5 +8,5 @@
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h"
 
-#define NB_PARAMS 5
+#define NB_PARAMS 4
 
 void usage (string exec)
@@ -16,5 +16,4 @@
        << " - nb_port_read       (unsigned int)" << endl
        << " - nb_port_write      (unsigned int)" << endl
-       << " - nb_port_read_write (unsigned int)" << endl
        << " - nb_word            (unsigned int)" << endl
        << " - size_word          (unsigned int)" << endl;
@@ -34,12 +33,10 @@
   const uint32_t nb_port_read       = atoi(argv[2]);
   const uint32_t nb_port_write      = atoi(argv[3]);
-  const uint32_t nb_port_read_write = atoi(argv[4]);
-  const uint32_t nb_word            = atoi(argv[5]);
-  const uint32_t size_word          = atoi(argv[6]);
+  const uint32_t nb_word            = atoi(argv[4]);
+  const uint32_t size_word          = atoi(argv[5]);
   
   morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * param = new morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters
     (nb_port_read ,
      nb_port_write,
-     nb_port_read_write,
      nb_word      ,
      size_word    );
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 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 146)
@@ -73,11 +73,4 @@
   sc_signal<Tdata_t>                       WRITE_DATA    [_param->_nb_port_write];
 
-  sc_signal<Tcontrol_t>                    READ_WRITE_VAL     [_param->_nb_port_read_write];
-  sc_signal<Tcontrol_t>                    READ_WRITE_ACK     [_param->_nb_port_read_write];
-  sc_signal<Tcontrol_t>                    READ_WRITE_RW      [_param->_nb_port_read_write];
-  sc_signal<Taddress_t>                    READ_WRITE_ADDRESS [_param->_nb_port_read_write];
-  sc_signal<Tdata_t>                       READ_WRITE_RDATA   [_param->_nb_port_read_write];
-  sc_signal<Tdata_t>                       READ_WRITE_WDATA   [_param->_nb_port_read_write];
-
   /********************************************************
    * Instanciation
@@ -105,14 +98,4 @@
       (*(registerfile-> in_WRITE_DATA    [i]))        (WRITE_DATA    [i]);
     }
-  for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
-    {
-      (*(registerfile-> in_READ_WRITE_VAL     [i])) (READ_WRITE_VAL      [i]);
-      (*(registerfile->out_READ_WRITE_ACK     [i])) (READ_WRITE_ACK      [i]);
-      (*(registerfile-> in_READ_WRITE_RW      [i])) (READ_WRITE_RW       [i]);
-      if (_param->_have_port_address)
-      (*(registerfile-> in_READ_WRITE_ADDRESS [i])) (READ_WRITE_ADDRESS  [i]);
-      (*(registerfile-> in_READ_WRITE_WDATA   [i])) (READ_WRITE_WDATA    [i]);
-      (*(registerfile->out_READ_WRITE_RDATA   [i])) (READ_WRITE_RDATA    [i]);
-    }
   
   cout << "<" << name << "> Start Simulation ............" << endl;
@@ -131,6 +114,4 @@
   for (uint32_t i=0; i<_param->_nb_port_read; i++)
     READ_VAL  [i] .write (0);
-  for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
-    READ_WRITE_VAL  [i] .write (0);
 
   NRESET.write(0);
@@ -144,6 +125,4 @@
   for (uint32_t i=0; i<_param->_nb_port_read; i++)
     TEST(Tcontrol_t,READ_ACK  [i],1);
-  for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
-    TEST(Tcontrol_t,READ_WRITE_ACK  [i],1);
 
   for (uint32_t nb_iteration=0; nb_iteration < NB_ITERATION; nb_iteration ++)
@@ -187,22 +166,4 @@
 	    }
 
-	  for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
-	    {
-	      if ((address_next < _param->_nb_word) and
-		  (READ_WRITE_VAL [num_port].read() == 0))
-		{
-		  cout << "(" << num_port << ") [" << address_next << "] <= " << tab[address_next] << endl;
-		  
-		  READ_WRITE_VAL     [num_port] .write(1);
-		  READ_WRITE_RW      [num_port] .write(RW_WRITE);
-		  READ_WRITE_WDATA   [num_port] .write(tab[address_next]);
-		  READ_WRITE_ADDRESS [num_port] .write(address_next++);
-		  
-		  // Address can be not a multiple of nb_port_write
-		  if (address_next >= _param->_nb_word)
-		    break;
-		}
-	    }
-	  
 	  SC_START(1);
 
@@ -217,14 +178,4 @@
 		}
 	    }
-	  // reset write_val port
-	  for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
-	    {
-	      if ((READ_WRITE_ACK [num_port].read() == 1) and
-		  (READ_WRITE_VAL [num_port].read() == 1))
-		{
-		  READ_WRITE_VAL  [num_port] .write(0);
-		  nb_ack ++;
-		}
-	    }
 
 // 	  SC_START(0);
@@ -237,5 +188,4 @@
       
       Tdata_t read_address       [_param->_nb_port_read];
-      Tdata_t read_write_address [_param->_nb_port_read_write];
 
       while (nb_ack < _param->_nb_word)
@@ -258,20 +208,4 @@
 	    }
 
-	  for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
-	    {
-	      if ((address_next < _param->_nb_word) and
-		  (READ_WRITE_VAL [num_port].read() == 0))
-		{
-		  read_write_address [num_port] = address_next++;
-
-		  READ_WRITE_VAL     [num_port].write(1);
-		  READ_WRITE_RW      [num_port].write(RW_READ);
-		  READ_WRITE_ADDRESS [num_port].write(read_write_address [num_port]);
-
-		  if (address_next >= _param->_nb_word)
-		    break;
-		}
-	    }
-
 
 	  SC_START(1);
@@ -288,18 +222,4 @@
 
 		  TEST(Tdata_t,READ_DATA [num_port].read(), tab[read_address [num_port]]);
-		  nb_ack ++;
-		}
-	    }
-
-	  for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
-	    {
-	      if ((READ_WRITE_ACK [num_port].read() == 1) and
-		  (READ_WRITE_VAL [num_port].read() == 1))
-		{
-		  READ_WRITE_VAL  [num_port] .write(0);
-
-		  cout << "(" << num_port << ") [" << read_write_address [num_port] << "] => " << READ_WRITE_RDATA [num_port].read() << endl;
-
-		  TEST(Tdata_t,READ_WRITE_RDATA [num_port].read(), tab[read_write_address [num_port]]);
 		  nb_ack ++;
 		}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h	(revision 146)
@@ -23,5 +23,4 @@
   public : uint32_t    _nb_port_read ;
   public : uint32_t    _nb_port_write;
-  public : uint32_t    _nb_port_read_write;
   public : uint32_t    _nb_word      ;
   public : uint32_t    _size_word    ;
@@ -34,5 +33,4 @@
   public : Parameters (uint32_t    nb_port_read ,
 		       uint32_t    nb_port_write,
-		       uint32_t    nb_port_read_write,
 		       uint32_t    nb_word      ,
 		       uint32_t    size_word    ,
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 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 146)
@@ -5,5 +5,5 @@
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -22,5 +22,5 @@
 #include "Behavioural/include/Stat.h"
 #endif
-// #include "Behavioural/include/Component.h"
+#include "Behavioural/include/Component.h"
 #ifdef VHDL
 #include "Behavioural/include/Vhdl.h"
@@ -28,12 +28,6 @@
 #include "Behavioural/include/Usage.h"
 
-
-
 namespace morpheo                    {
 namespace behavioural                {
-
-  class Component;
-  class Interfaces;
-
 namespace generic                    {
 namespace registerfile               {
@@ -62,5 +56,4 @@
   private   : counters_t                     * _stat_port_read;
   private   : counters_t                     * _stat_port_write;
-  private   : counters_t                     * _stat_port_read_write;
 #endif
 
@@ -85,12 +78,4 @@
   public    : SC_IN       (Taddress_t)     **  in_WRITE_ADDRESS;
   public    : SC_IN       (Tdata_t)        **  in_WRITE_DATA   ;
-
-    // ----- Interface Read_Write
-  public    : SC_IN       (Tcontrol_t)     **  in_READ_WRITE_VAL    ;
-  public    : SC_OUT      (Tcontrol_t)     ** out_READ_WRITE_ACK    ;
-  public    : SC_IN       (Tcontrol_t)     **  in_READ_WRITE_RW     ;
-  public    : SC_IN       (Taddress_t)     **  in_READ_WRITE_ADDRESS;
-  public    : SC_OUT      (Tdata_t)        ** out_READ_WRITE_RDATA  ;
-  public    : SC_IN       (Tdata_t)        **  in_READ_WRITE_WDATA  ;
 
     // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp	(revision 146)
@@ -17,5 +17,4 @@
   Parameters::Parameters (uint32_t    nb_port_read ,
 			  uint32_t    nb_port_write,
-			  uint32_t    nb_port_read_write ,
 			  uint32_t    nb_word      ,
 			  uint32_t    size_word    ,
@@ -25,5 +24,4 @@
     _nb_port_read       = nb_port_read ;
     _nb_port_write      = nb_port_write;
-    _nb_port_read_write = nb_port_read_write;
     _nb_word            = nb_word      ;
     _size_word          = size_word    ;
@@ -40,5 +38,4 @@
 //     _nb_port_read      (param._nb_port_read ),
 //     _nb_port_write     (param._nb_port_write),
-//     _nb_port_read_write(param._nb_port_read_write),
 //     _nb_word           (param._nb_word      ),
 //     _size_word         (param._size_word    ),
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp	(revision 146)
@@ -27,8 +27,8 @@
       test.error("type \"Taddress_t\" is too little to the size defined by nb_word");
 
-    if ((_nb_port_read + _nb_port_read_write) < 1)
+    if (_nb_port_read < 1)
       test.error("you need a read port");
 
-    if ((_nb_port_write + _nb_port_read_write) < 1)
+    if (_nb_port_write < 1)
       test.error("you need a write port");
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_print.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_print.cpp	(revision 146)
@@ -23,5 +23,4 @@
     xml.singleton_begin("nb_port_read      "); xml.attribut("value",toString(_nb_port_read      )); xml.singleton_end();
     xml.singleton_begin("nb_port_write     "); xml.attribut("value",toString(_nb_port_write     )); xml.singleton_end();
-    xml.singleton_begin("nb_port_read_write"); xml.attribut("value",toString(_nb_port_read_write)); xml.singleton_end();
     xml.singleton_begin("nb_word           "); xml.attribut("value",toString(_nb_word           )); xml.singleton_end();
     xml.singleton_begin("size_word         "); xml.attribut("value",toString(_size_word         )); xml.singleton_end();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp	(revision 146)
@@ -79,11 +79,4 @@
 	      sensitive << *(in_READ_ADDRESS [i]);
 	  }
-	for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
-	  {
-	    sensitive << *(in_READ_WRITE_VAL     [i])
-		      << *(in_READ_WRITE_RW      [i]);
-	    if (_param->_have_port_address)
-	      sensitive << *(in_READ_WRITE_ADDRESS [i]);
-	  }
 	
 # ifdef SYSTEMCASS_SPECIFIC
@@ -94,11 +87,4 @@
 	    if (_param->_have_port_address)
 	      (*(out_READ_DATA  [i])) (*( in_READ_ADDRESS [i]));
-	  }
-	for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
-	  {  
-	    (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_VAL     [i]));
-	    (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_RW      [i]));
-	    if (_param->_have_port_address)
-	      (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i]));
 	  }
 # endif    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp	(revision 146)
@@ -8,5 +8,4 @@
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
 #include "Behavioural/include/Allocation.h"
-#include "Behavioural/include/Component.h"
 
 namespace morpheo                    {
@@ -67,18 +66,4 @@
     }
 
-    // ~~~~~[ Interface : "read_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    { 
-      ALLOC1_INTERFACE_BEGIN("read_write",IN,WEST,_("Interface Read_Write"),_param->_nb_port_read_write);
-
-      ALLOC1_VALACK_IN ( in_READ_WRITE_VAL    ,VAL);
-      ALLOC1_VALACK_OUT(out_READ_WRITE_ACK    ,ACK);
-      ALLOC1_SIGNAL_IN ( in_READ_WRITE_RW     ,"rw"     ,Tcontrol_t,1);
-      ALLOC1_SIGNAL_IN ( in_READ_WRITE_ADDRESS,"address",Taddress_t,_param->_size_address);
-      ALLOC1_SIGNAL_IN ( in_READ_WRITE_WDATA  ,"wdata"  ,Tdata_t   ,_param->_size_word);
-      ALLOC1_SIGNAL_OUT(out_READ_WRITE_RDATA  ,"rdata"  ,Tdata_t   ,_param->_size_word);
-
-      ALLOC1_INTERFACE_END(_param->_nb_port_read_write);
-    }
-
     if (usage_is_set(_usage,USE_SYSTEMC))
       ALLOC1(reg_DATA,Tdata_t,_param->_nb_word);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_constant.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_constant.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_constant.cpp	(revision 146)
@@ -26,6 +26,4 @@
     for (uint32_t i=0; i<_param->_nb_port_write      ; i++)
       PORT_WRITE(out_WRITE_ACK       [i], 1);
-    for (uint32_t i=0; i<_param->_nb_port_read_write ; i++)
-      PORT_WRITE(out_READ_WRITE_ACK  [i], 1);
 
     log_end(RegisterFile_Monolithic,FUNCTION);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp	(revision 146)
@@ -8,5 +8,4 @@
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
 #include "Behavioural/include/Allocation.h"
-#include "Behavioural/include/Component.h"
 
 namespace morpheo                    {
@@ -34,12 +33,5 @@
         DELETE1_SIGNAL( in_WRITE_ADDRESS,_param->_nb_port_write,_param->_size_address);
         DELETE1_SIGNAL( in_WRITE_DATA   ,_param->_nb_port_write,_param->_size_word);
-        
-        DELETE1_SIGNAL( in_READ_WRITE_VAL    ,_param->_nb_port_read_write,1);
-        DELETE1_SIGNAL(out_READ_WRITE_ACK    ,_param->_nb_port_read_write,1);
-        DELETE1_SIGNAL( in_READ_WRITE_RW     ,_param->_nb_port_read_write,1);
-        DELETE1_SIGNAL( in_READ_WRITE_ADDRESS,_param->_nb_port_read_write,_param->_size_address);
-        DELETE1_SIGNAL( in_READ_WRITE_WDATA  ,_param->_nb_port_read_write,_param->_size_word);
-        DELETE1_SIGNAL(out_READ_WRITE_RDATA  ,_param->_nb_port_read_write,_param->_size_word);
-        
+                
         DELETE1(reg_DATA,_param->_nb_word);
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp	(revision 146)
@@ -47,32 +47,4 @@
 	  }
       }
-
-    for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
-      {
-	Tdata_t data;
-
-	// Have a write?
- 	if ( (PORT_READ(in_READ_WRITE_VAL [i]) == 1) and
-	     (PORT_READ(in_READ_WRITE_RW  [i]) == RW_READ)
-	     )
- 	  {
-	    Taddress_t address;
-	    if (_param->_have_port_address)
-	      address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
-	    else
-	      address = 0;
-	    
-	    data = reg_DATA[address];
-
-	    log_printf(TRACE,RegisterFile,FUNCTION,"  * [%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
- 	  }
-	else
-	  {
-	    //log_printf(TRACE,RegisterFile,FUNCTION,"Read  [%d] : No   transaction",i);
-	    data = 0;
-	  }
-
-	PORT_WRITE(out_READ_WRITE_RDATA[i],data);
-      }
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics_declaration.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics_declaration.cpp	(revision 146)
@@ -34,20 +34,4 @@
                                                      _("Average of write per cycle.")
                                                      );
-    if (_param->_nb_port_read_write>0)
-    _stat_port_read_write   = _stat->create_counters("port_read_write",_param->_nb_port_read_write,"",
-                                                     _("Cycle number cycle with %d read_write(s)."),
-                                                     _("Percent of cycle number cycle with %d read_write(s)."),
-                                                     _("Average of read_write per cycle.")
-                                                     );
-
-    // _stat_nb_read           = _stat->create_variable("nb_read" );
-    // _stat_nb_write          = _stat->create_variable("nb_write");
-
-    // _stat->create_expr_average_by_cycle("average_read" , "nb_read" , "", _("Average read by cycle" ));
-    // _stat->create_expr_average_by_cycle("average_write", "nb_write", "", _("Average write by cycle"));
-
-    // _stat->create_expr_percent         ("percent_use_read" , "average_read" , toString(_param->_nb_port_read +_param->_nb_port_read_write), _("Percent read by cycle" ));
-    // _stat->create_expr_percent         ("percent_use_write", "average_write", toString(_param->_nb_port_write+_param->_nb_port_read_write), _("Percent write by cycle"));
-
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp	(revision 146)
@@ -40,5 +40,4 @@
         uint32_t stat_nb_read      =0;
         uint32_t stat_nb_write     =0;
-        uint32_t stat_nb_read_write=0;
 #endif
         for (uint32_t i=0; i<_param->_nb_port_write; i++)
@@ -76,46 +75,4 @@
               }
           }
-        for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
-          {
-            log_printf(TRACE,RegisterFile,FUNCTION,"  * READ_WRITE [%d] : %d",i,PORT_READ(in_READ_WRITE_VAL[i]));
-
-            // Have a read_write?
-            if (PORT_READ(in_READ_WRITE_VAL[i]) == true)
-              {
-#ifdef STATISTICS
-                stat_nb_read_write++;
-#endif
-
-                if (PORT_READ(in_READ_WRITE_RW [i]) == RW_WRITE)
-                  {
-// #ifdef STATISTICS
-//                     if (usage_is_set(_usage,USE_STATISTICS))
-//                       (*_stat_nb_write) ++;
-// #endif    
-                    
-                    Taddress_t address = (_param->_have_port_address)?PORT_READ(in_READ_WRITE_ADDRESS[i]):0;
-                    Tdata_t    data    = PORT_READ(in_READ_WRITE_WDATA  [i]);
-                    
-                    log_printf(TRACE,RegisterFile,FUNCTION,"  * [%d] <- %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
-                    
-
-#ifdef DEBUG_TEST
-                if (address >= _param->_nb_word)
-                  throw ERRORMORPHEO(FUNCTION,toString(_("Address (%d) is invalid (size : %d).\n"),address,_param->_nb_word));
-#endif
-
-                    // Write in registerFile
-                    reg_DATA[address] = data;
-                  }
-// #ifdef STATISTICS
-//                 else
-//                   {
-//                     if (usage_is_set(_usage,USE_STATISTICS))
-//                       (*_stat_nb_read) ++;
-//                   }
-// #endif    
-              }
-          }
-
         
 #ifdef STATISTICS
@@ -133,6 +90,4 @@
             if (_param->_nb_port_write>0)
             (*_stat_port_write     ) += stat_nb_write;
-            if (_param->_nb_port_read_write>0)
-            (*_stat_port_read_write) += stat_nb_read_write;
           }
 #endif    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp	(revision 146)
@@ -10,5 +10,4 @@
 #include "Behavioural/include/Vhdl.h"
 #include "Common/include/ToString.h"
-#include "Behavioural/include/Component.h"
 
 namespace morpheo                    {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp	(revision 146)
@@ -29,6 +29,4 @@
     for (uint32_t i = 0; i < _param->_nb_port_write; i++)
       vhdl->set_body   (0,"out_WRITE_"+toString(i)+"_ACK <= '1';");
-    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
-      vhdl->set_body   (0,"out_READ_WRITE_"+toString(i)+"_ACK  <= '1';");
 
     vhdl->set_body   (0,"");
@@ -47,13 +45,4 @@
 
 	vhdl->set_body   (0,"out_READ_"+toString(i)+"_DATA <= reg_DATA ("+str_address+") when in_READ_"+toString(i)+"_VAL = '1' else "+std_logic_others(_param->_size_word,0)+";");
-      }
-    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
-      {
-	std::string str_address;
-	if (_param->_have_port_address)
-	  str_address = "conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)";
-	else
-	  str_address = "0";
-	vhdl->set_body   (0,"out_READ_WRITE_"+toString(i)+"_RDATA <= reg_DATA ("+str_address+") when in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_READ)+"' else "+std_logic_others(_param->_size_word,0)+";");
       }
 
@@ -92,16 +81,4 @@
 	vhdl->set_body   (2,"end if;");
       }
-    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
-      {
-	std::string str_address;
-	if (_param->_have_port_address)
-	  str_address = "conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)";
-	else
-	  str_address = "0";
-	
-	vhdl->set_body   (2,"if (in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_WRITE)+"') then");
-	vhdl->set_body   (3,"reg_DATA("+str_address+") <= in_READ_WRITE_"+toString(i)+"_WDATA;");
-	vhdl->set_body   (2,"end if;");
-      }
 
     vhdl->set_body   (1,"end if;");
@@ -122,6 +99,4 @@
     // for (uint32_t i = 0; i < _param->_nb_port_write; i++)
     //   vhdl->set_body   (0,"out_WRITE_"+toString(i)+"_ACK <= '1';");
-    // for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
-    //   vhdl->set_body   (0,"out_READ_WRITE_"+toString(i)+"_ACK  <= '1';");
 
     // vhdl->set_body   (0,"");
@@ -195,6 +170,4 @@
     for (uint32_t i = 0; i < _param->_nb_port_write; i++)
       vhdl->set_body   (1,"out_WRITE_"+toString(i)+"_ACK <= '1';");
-    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
-      vhdl->set_body   (1,"out_READ_WRITE_"+toString(i)+"_ACK  <= '1';");
     vhdl->set_body   (1,"");
     vhdl->set_body   (1," -- Read");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h	(revision 146)
@@ -12,4 +12,5 @@
 #include "Behavioural/include/Parameters.h"
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/include/Parameters.h"
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
 #include <math.h>
@@ -20,5 +21,6 @@
 namespace registerfile {
 
-  typedef enum {instance_RegisterFile_Monolithic  ,
+  typedef enum {instance_RegisterFile_Monolithic,
+		instance_RegisterFile_Internal_Banked,
 		instance_RegisterFile_Multi_Banked} Tinstance_t;
 
@@ -34,10 +36,12 @@
   public : bool        _have_port_address;
 
-  public : morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * _param_registerfile_monolithic;
-  public : morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * _param_registerfile_multi_banked;
+  public : morpheo::behavioural::generic::registerfile::registerfile_monolithic     ::Parameters * _param_registerfile_monolithic;
+  public : morpheo::behavioural::generic::registerfile::registerfile_internal_banked::Parameters * _param_registerfile_internal_banked;
+  public : morpheo::behavioural::generic::registerfile::registerfile_multi_banked   ::Parameters * _param_registerfile_multi_banked;
 
     //-----[ methods ]-----------------------------------------------------------
-  public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * param);
-  public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param);
+  public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_monolithic     ::Parameters * param);
+  public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_internal_banked::Parameters * param);
+  public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked   ::Parameters * param);
 //   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h	(revision 146)
@@ -18,4 +18,5 @@
 
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/include/RegisterFile_Internal_Banked.h"
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
 
@@ -76,6 +77,7 @@
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-  protected : morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic   * component_RegisterFile_Monolithic  ;
-  protected : morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked * component_RegisterFile_Multi_Banked;
+  protected : morpheo::behavioural::generic::registerfile::registerfile_monolithic     ::RegisterFile_Monolithic     ::RegisterFile_Monolithic      * component_RegisterFile_Monolithic;
+  protected : morpheo::behavioural::generic::registerfile::registerfile_internal_banked::RegisterFile_Internal_Banked::RegisterFile_Internal_Banked * component_RegisterFile_Internal_Banked;
+  protected : morpheo::behavioural::generic::registerfile::registerfile_multi_banked   ::RegisterFile_Multi_Banked   ::RegisterFile_Multi_Banked    * component_RegisterFile_Multi_Banked;
 
     // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp	(revision 145)
+++ 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 145)
+++ 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 145)
+++ 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 145)
+++ 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 145)
+++ 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 145)
+++ 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");
