Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp	(revision 53)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp	(revision 62)
@@ -20,5 +20,6 @@
     _nb_word           (param->_nb_word      ), 
     _size_word         (param->_size_word    ), 
-    _size_address      (param->_size_address )
+    _size_address      (param->_size_address ),
+    _have_port_address (param->_have_port_address)
   {
     log_printf(FUNC,RegisterFile,"Parameters","Begin");
@@ -37,5 +38,6 @@
     _nb_word           (param->_nb_word      ), 
     _size_word         (param->_size_word    ), 
-    _size_address      (param->_size_address )
+    _size_address      (param->_size_address ),
+    _have_port_address (param->_have_port_address)
   {
     log_printf(FUNC,RegisterFile,"Parameters","Begin");
@@ -54,5 +56,6 @@
     _nb_word           (param._nb_word      ), 
     _size_word         (param._size_word    ), 
-    _size_address      (param._size_address )
+    _size_address      (param._size_address ),
+    _have_port_address (param._have_port_address)
   {
     log_printf(FUNC,RegisterFile,"Parameters (copy)","Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp	(revision 53)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp	(revision 62)
@@ -20,12 +20,12 @@
 #endif
 #ifdef STATISTICS
-			      morpheo::behavioural::Parameters_Statistics             param_statistics,
+			      morpheo::behavioural::Parameters_Statistics             * param_statistics,
 #endif
-			      morpheo::behavioural::generic::registerfile::Parameters param ):
+			      morpheo::behavioural::generic::registerfile::Parameters * param ):
 			      _name              (name)
 			      ,_param            (param)
-// #ifdef STATISTICS
-// 			      ,_param_statistics (param_statistics)
-// #endif
+#ifdef STATISTICS
+			      ,_param_statistics (param_statistics)
+#endif
   {
     log_printf(FUNC,RegisterFile,"RegisterFile","Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp	(revision 53)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp	(revision 62)
@@ -28,10 +28,11 @@
     // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param._nb_port_read];
-    out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param._nb_port_read];
-     in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param._nb_port_read];
-    out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param._nb_port_read];
+     in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read];
+    out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read];
+    if (_param->_have_port_address == true)
+     in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read];
+    out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param->_nb_port_read];
 
-    for (uint32_t i=0; i<_param._nb_port_read; i++)
+    for (uint32_t i=0; i<_param->_nb_port_read; i++)
       { 
 	rename =  "in_READ_"+toString(i)+"_VAL"    ;
@@ -39,6 +40,9 @@
 	rename = "out_READ_"+toString(i)+"_ACK"    ;
 	out_READ_ACK     [i]  = new SC_OUT(Tcontrol_t) (rename.c_str());
+	if (_param->_have_port_address == true)
+	  {
 	rename =  "in_READ_"+toString(i)+"_ADDRESS";
 	 in_READ_ADDRESS [i]  = new SC_IN (Taddress_t) (rename.c_str());
+	  }
 	rename = "out_READ_"+toString(i)+"_DATA"   ;
 	out_READ_DATA    [i]  = new SC_OUT(Tdata_t   ) (rename.c_str());
@@ -47,10 +51,11 @@
     // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param._nb_port_write];
-    out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param._nb_port_write];
-     in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param._nb_port_write];
-     in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param._nb_port_write];
+     in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param->_nb_port_write];
+    out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write];
+    if (_param->_have_port_address == true)
+     in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param->_nb_port_write];
+     in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_write];
     
-    for (uint32_t i=0; i<_param._nb_port_write; i++)
+    for (uint32_t i=0; i<_param->_nb_port_write; i++)
       {
 	rename =  "in_WRITE_"+toString(i)+"_VAL"    ;
@@ -58,6 +63,9 @@
 	rename = "out_WRITE_"+toString(i)+"_ACK"    ;
 	out_WRITE_ACK     [i]  = new SC_OUT(Tcontrol_t) (rename.c_str());
+	if (_param->_have_port_address == true)
+	  {
 	rename =  "in_WRITE_"+toString(i)+"_ADDRESS";
 	 in_WRITE_ADDRESS [i]  = new SC_IN (Taddress_t) (rename.c_str());
+	  }
 	rename =  "in_WRITE_"+toString(i)+"_DATA"   ;
 	 in_WRITE_DATA    [i]  = new SC_IN (Tdata_t   ) (rename.c_str());
@@ -65,5 +73,5 @@
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                
-    if (_param._instance == instance_RegisterFile_Monolithic)
+    if (_param->_instance == instance_RegisterFile_Monolithic)
     // =====[ component_RegisterFile_Monolithic ]=========================
       {
@@ -72,5 +80,5 @@
 																					       ,_param_statistics
 #endif
-																					       ,*(_param._param_registerfile_monolithic)
+																					       ,_param->_param_registerfile_monolithic
 																					       );
 	
@@ -83,5 +91,5 @@
 																						,_param_statistics
 #endif
-																						,*(_param._param_registerfile_multi_banked)
+																						,_param->_param_registerfile_multi_banked
 																						);
 	
@@ -89,5 +97,5 @@
     // ~~~~~[ Component - Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    if (_param._instance == instance_RegisterFile_Monolithic)
+    if (_param->_instance == instance_RegisterFile_Monolithic)
     // =====[ Component_RegisterFile_Monolithic - Instanciation ]=========
       {
@@ -95,16 +103,18 @@
 	(*(component_RegisterFile_Monolithic  ->in_NRESET)) (*(in_NRESET));
 	
-	for (uint32_t i=0; i<_param._nb_port_read; i++)
+	for (uint32_t i=0; i<_param->_nb_port_read; i++)
 	  { 
 	    (*(component_RegisterFile_Monolithic  -> in_READ_VAL     [i])) (*( in_READ_VAL     [i]));   
 	    (*(component_RegisterFile_Monolithic  ->out_READ_ACK     [i])) (*(out_READ_ACK     [i]));
+	    if (_param->_have_port_address == true)
 	    (*(component_RegisterFile_Monolithic  -> in_READ_ADDRESS [i])) (*( in_READ_ADDRESS [i]));
 	    (*(component_RegisterFile_Monolithic  ->out_READ_DATA    [i])) (*(out_READ_DATA    [i]));
 	  }
 	
-	for (uint32_t i=0; i<_param._nb_port_write; i++)
+	for (uint32_t i=0; i<_param->_nb_port_write; i++)
 	  {
 	    (*(component_RegisterFile_Monolithic  -> in_WRITE_VAL     [i])) (*( in_WRITE_VAL     [i]));
 	    (*(component_RegisterFile_Monolithic  ->out_WRITE_ACK     [i])) (*(out_WRITE_ACK     [i]));
+	    if (_param->_have_port_address == true)
 	    (*(component_RegisterFile_Monolithic  -> in_WRITE_ADDRESS [i])) (*( in_WRITE_ADDRESS [i]));
 	    (*(component_RegisterFile_Monolithic  -> in_WRITE_DATA    [i])) (*( in_WRITE_DATA    [i]));
@@ -117,16 +127,18 @@
 	(*(component_RegisterFile_Multi_Banked->in_NRESET)) (*(in_NRESET));
 	
-	for (uint32_t i=0; i<_param._nb_port_read; i++)
+	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++)
+	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]));
@@ -134,5 +146,5 @@
       }
 
-    if (_param._instance == instance_RegisterFile_Monolithic)
+    if (_param->_instance == instance_RegisterFile_Monolithic)
       _component = component_RegisterFile_Monolithic  ->_component;
     else
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 53)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_deallocation.cpp	(revision 62)
@@ -24,4 +24,5 @@
     delete []  in_READ_VAL    ;
     delete [] out_READ_ACK    ;
+    if (_param->_have_port_address == true)
     delete []  in_READ_ADDRESS;
     delete [] out_READ_DATA   ;
@@ -30,4 +31,5 @@
     delete []  in_WRITE_VAL    ;
     delete [] out_WRITE_ACK    ;
+    if (_param->_have_port_address == true)
     delete []  in_WRITE_ADDRESS;
     delete []  in_WRITE_DATA   ;
@@ -37,5 +39,5 @@
 //   delete _component;
 
-    if (_param._instance == instance_RegisterFile_Monolithic)
+    if (_param->_instance == instance_RegisterFile_Monolithic)
       delete component_RegisterFile_Monolithic  ;
     else
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_statistics.cpp	(revision 53)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_statistics.cpp	(revision 62)
@@ -19,10 +19,10 @@
     log_printf(FUNC,RegisterFile,"statistics","Begin");
     
-    if (_param->_instance == instance_RegisterFile_Monilithic)
-      component_RegisterFile_Monolithic  ->statistics(depth);
+    string txt;
+
+    if (_param->_instance == instance_RegisterFile_Monolithic)
+      txt = component_RegisterFile_Monolithic  ->statistics(depth);
     else
-      component_RegisterFile_Multi_Banked->statistics(depth);
-
-    string txt = _stat->print(depth);
+      txt = component_RegisterFile_Multi_Banked->statistics(depth);
     
     log_printf(FUNC,RegisterFile,"statistics","End");
