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