Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp	(revision 68)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp	(revision 71)
@@ -32,7 +32,11 @@
       exit (EXIT_FAILURE);
     }
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * param_stat = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
   Counter * _Counter = new Counter (name.c_str(),
 #ifdef STATISTICS
-				    morpheo::behavioural::Parameters_Statistics(5,50),
+				    param_stat,
 #endif
 				    param);
@@ -119,5 +123,5 @@
 	  TEST(Tdata_t,DATA_OUT [i].read(),data_out [i]);
 	   
-	  cout << dec << endl;
+	  cout << std::dec << endl;
 	}
       
@@ -136,3 +140,7 @@
 
   delete _Counter;
+#ifdef STATISTICS
+  delete param_stat;
+#endif
+
 }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h	(revision 68)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h	(revision 71)
@@ -20,5 +20,5 @@
 #include "Behavioural/Generic/Counter/include/Types.h"
 #ifdef STATISTICS
-#include "Behavioural/Generic/Counter/include/Statistics.h"
+#include "Behavioural/include/Stat.h"
 #endif
 #ifdef VHDL
@@ -44,10 +44,7 @@
 
   protected : const Parameters _param;
-//#ifdef STATISTICS
-//  protected : const morpheo::behavioural::Parameters_Statistics _param_statistics;
-//#endif
 
 #ifdef STATISTICS
-  private   : Statistics                     * _stat;
+  private   : Stat                           * _stat;
 #endif
 
@@ -81,5 +78,5 @@
 #endif					       
 #ifdef STATISTICS
-					   morpheo::behavioural::Parameters_Statistics param_statistics,
+					   morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
 					   Parameters                                  param );
@@ -98,5 +95,6 @@
 #endif					       
 #ifdef STATISTICS
-  public  : string   statistics                (uint32_t depth);
+  public  : void     statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
+  public  : string   statistics_print          (uint32_t depth);
 #endif
 					       
@@ -108,6 +106,6 @@
 #endif					       
 					       
-#ifdef VHDL_TESTBENCH			       
-  private : void     vhdl_testbench_transition (void);
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  private : void     end_cycle                 (void);
 #endif
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Statistics.h	(revision 68)
+++ 	(revision )
@@ -1,55 +1,0 @@
-#ifdef STATISTICS
-#ifndef morpheo_behavioural_generic_counter_Statistics_h
-#define morpheo_behavioural_generic_counter_Statistics_h
-
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Common/include/Debug.h"
-#include "Behavioural/include/Statistics.h"
-#include "Behavioural/include/Parameters_Statistics.h"
-//#include "Behavioural/Generic/Group/include/Statistics.h"
-#include "Behavioural/Generic/Counter/include/Parameters.h"
-
-//using namespace morpheo::behavioural::generic::group;
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace counter {
-
-
-  class Statistics : public morpheo::behavioural::Statistics
-  {
-    // -----[ fields ]----------------------------------------------------
-  private  : const Parameters                                   _parameters;
-
-    // -----[ methods ]---------------------------------------------------
-  public   : Statistics  (string                                      name                       ,
-			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
-			  Parameters                                  parameters
-			  );
-//public   : Statistics  (Statistics & stat);
-  public   : ~Statistics () ;
-    
-  public   : string   print_body (uint32_t depth);
-  public   : string   print      (uint32_t depth);
-  public   : void     add        ();
-
-  public   : friend ostream& operator<< (ostream& output_stream,
-					 const Statistics & x);
-
-  };
-
-}; // end namespace counter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo
-
-#endif
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp	(revision 68)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp	(revision 71)
@@ -20,12 +20,9 @@
 #endif
 #ifdef STATISTICS
-			      morpheo::behavioural::Parameters_Statistics             param_statistics,
+			      morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
 			      morpheo::behavioural::generic::counter::Parameters param ):
 			      _name              (name)
 			      ,_param            (param)
-// #ifdef STATISTICS
-// 			      ,_param_statistics (param_statistics)
-// #endif
   {
     log_printf(FUNC,Counter,"Counter","Begin");
@@ -37,7 +34,5 @@
 #ifdef STATISTICS
     // Allocation of statistics
-    _stat = new Statistics (static_cast<string>(_name),
-			    param_statistics          ,
-			    param);
+    statistics_declaration(param_statistics);
 #endif
 
@@ -82,6 +77,4 @@
 
 #ifdef STATISTICS
-    _stat->generate_file(statistics(0));
-    
     delete _stat;
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_end_cycle.cpp	(revision 71)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_end_cycle.cpp	(revision 71)
@@ -0,0 +1,38 @@
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Counter/include/Counter.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace counter {
+
+
+  void Counter::end_cycle ()
+  {
+    log_printf(FUNC,Counter,"end_cycle","Begin");
+
+#ifdef STATISTICS
+    _stat->end_cycle();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    // Evaluation before read the ouput signal
+//  sc_start(0);
+    _interfaces->testbench();
+#endif
+
+    log_printf(FUNC,Counter,"end_cycle","End");
+  };
+
+}; // end namespace counter
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_statistics.cpp	(revision 68)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Counter/include/Counter.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace counter {
-
-  string Counter::statistics (uint32_t depth)
-  {
-    log_printf(FUNC,Counter,"statistics","Begin");
-
-    string txt = _stat->print(depth);
-
-    log_printf(FUNC,Counter,"statistics","End");
-
-    return txt;
-  };
-
-}; // end namespace counter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_statistics_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_statistics_declaration.cpp	(revision 71)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_statistics_declaration.cpp	(revision 71)
@@ -0,0 +1,34 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Counter/include/Counter.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace counter {
+
+#undef  FUNCTION
+#define FUNCTION "Counter::statistics_declaration"
+  void Counter::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
+  {
+    log_printf(FUNC,Counter,FUNCTION,"Begin");
+
+    _stat = new Stat (static_cast<string>(_name),
+		      "Counter",
+		      param_statistics);
+    
+    log_printf(FUNC,Counter,FUNCTION,"End");
+  };
+
+}; // end namespace counter
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_statistics_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_statistics_print.cpp	(revision 71)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_statistics_print.cpp	(revision 71)
@@ -0,0 +1,34 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Counter/include/Counter.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace counter {
+
+#undef  FUNCTION
+#define FUNCTION "Counter::statistics_print"
+  string Counter::statistics_print (uint32_t depth)
+  {
+    log_printf(FUNC,Counter,FUNCTION,"Begin");
+
+    string txt = _stat->print(depth);
+    
+    log_printf(FUNC,Counter,FUNCTION,"End");
+
+    return txt;
+  };
+
+}; // end namespace counter
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_transition.cpp	(revision 68)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_transition.cpp	(revision 71)
@@ -20,11 +20,5 @@
     log_printf(FUNC,Counter,"transition","Begin");
 
-#ifdef STATISTICS
-    _stat->add();
-#endif    
-
-#ifdef VHDL_TESTBENCH
-    vhdl_testbench_transition ();
-#endif
+    end_cycle();
 
     log_printf(FUNC,Counter,"transition","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_transition.cpp	(revision 68)
+++ 	(revision )
@@ -1,33 +1,0 @@
-#ifdef VHDL_TESTBENCH
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Counter/include/Counter.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace counter {
-
-
-  void Counter::vhdl_testbench_transition ()
-  {
-    log_printf(FUNC,Counter,"vhdl_testbench_transition","Begin");
-
-//     sc_start(0);
-
-    _interfaces->testbench();
-
-    log_printf(FUNC,Counter,"vhdl_testbench_transition","End");
-  };
-
-}; // end namespace counter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Statistics.cpp	(revision 68)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Counter/include/Statistics.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace counter {
-
-
-  Statistics::Statistics (string                                      name                       ,
-			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
-			  Parameters                                  parameters
-			  ) :
-    morpheo::behavioural::Statistics(name                  ,
-				     parameters_statistics ),
-    _parameters(parameters)
-  {
-    log_printf(FUNC,Counter,"Statistics","Begin");
-    log_printf(FUNC,Counter,"Statistics","End");
-  };
-  
-  Statistics::~Statistics () 
-  { 
-    log_printf(FUNC,Counter,"~Statistics","Begin");
-    log_printf(FUNC,Counter,"~Statistics","End");
-  };
-
-}; // end namespace counter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Statistics_add.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Statistics_add.cpp	(revision 68)
+++ 	(revision )
@@ -1,31 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Counter/include/Statistics.h"
-
-#include <sstream>
-using namespace std;
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace counter {
-
-
-  void Statistics::add ()
-  {
-    log_printf(FUNC,Counter,"add","Begin");
-    log_printf(FUNC,Counter,"add","End");
-  };
-
-}; // end namespace counter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Statistics_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Statistics_print.cpp	(revision 68)
+++ 	(revision )
@@ -1,49 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Counter/include/Statistics.h"
-
-#include <sstream>
-using namespace std;
-
-namespace morpheo {
-namespace behavioural {
-namespace generic {
-namespace counter {
-
-
-  string Statistics::print (uint32_t depth)
-  {
-    log_printf(FUNC,Counter,"print","Begin");
-
-    string        tab = string(depth,'\t');
-    ostringstream msg;
-
-    msg << tab << "<counter name=\"" << _name << "\" >" << endl
-        << print_body(depth+1)
-	<< tab << "</counter>" << endl;
-    
-    log_printf(FUNC,Counter,"print","End");
-
-    return msg.str();
-  };
-
-  ostream& operator<< (ostream& output_stream ,
-		       morpheo::behavioural::generic::counter::Statistics & x)
-  {
-    output_stream << x.print(0);
-
-    return output_stream;
-  };
-
-}; // end namespace counter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Statistics_print_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Statistics_print_body.cpp	(revision 68)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Counter/include/Statistics.h"
-
-#include <sstream>
-using namespace std;
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace counter {
-
-
-  string Statistics::print_body (uint32_t depth)
-  {
-    log_printf(FUNC,Counter,"print_body","Begin");
-
-    string        tab = string(depth,'\t');
-    ostringstream msg;
-
-    msg << tab << "";
-    
-    log_printf(FUNC,Counter,"print_body","End");
-
-    return msg.str();
-  };
-
-}; // end namespace counter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.deps	(revision 68)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.deps	(revision 71)
@@ -13,15 +13,10 @@
 include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
 endif
-ifndef Group
-include 			$(DIR_MORPHEO)/Behavioural/Generic/Group/Makefile.deps
-endif
 
 #-----[ Library ]------------------------------------------
 RegisterFile_Monolithic_LIBRARY		= 	-lRegisterFile_Monolithic		\
-					$(Group_LIBRARY)	\
 					$(Behavioural_LIBRARY)	
 
 RegisterFile_Monolithic_DIR_LIBRARY	=	-L$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/lib	\
-					$(Group_DIR_LIBRARY)					\
 					$(Behavioural_DIR_LIBRARY)	
 
@@ -31,5 +26,4 @@
 				@\
 				$(MAKE)  Behavioural_library; \
-				$(MAKE)  Group_library; \
 				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic --makefile=Makefile;
 	
@@ -37,4 +31,3 @@
 				@\
 				$(MAKE)  Behavioural_library_clean; \
-				$(MAKE)  Group_library_clean; \
 				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic --makefile=Makefile clean;
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 68)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 71)
@@ -34,5 +34,5 @@
 
 #ifdef STATISTICS
-  morpheo::behavioural::Parameters_Statistics * _param_stat = new morpheo::behavioural::Parameters_Statistics (5,1000);
+  morpheo::behavioural::Parameters_Statistics * _param_stat = new morpheo::behavioural::Parameters_Statistics (5,100);
 #endif
   RegisterFile_Monolithic * registerfile = new RegisterFile_Monolithic (name.c_str()
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 68)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 71)
@@ -21,5 +21,5 @@
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h"
 #ifdef STATISTICS
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h"
+#include "Behavioural/include/Stat.h"
 #endif
 #include "Behavioural/include/Component.h"
@@ -51,8 +51,12 @@
 
 #ifdef STATISTICS
-  private   : Statistics                     * _stat;
+  private   : Stat                           * _stat;
     
-  private   : uint32_t                         _stat_nb_read;
-  private   : uint32_t                         _stat_nb_write;
+  private   : counter_t                      * _stat_nb_read;
+  private   : counter_t                      * _stat_nb_write;
+  private   : counter_t                      * _stat_average_read ;
+  private   : counter_t                      * _stat_average_write;
+  private   : counter_t                      * _stat_percent_use_read ;
+  private   : counter_t                      * _stat_percent_use_write;
 #endif
 
@@ -123,6 +127,8 @@
 
 #ifdef STATISTICS
-  public  : string  statistics                 (uint32_t depth);
+  public  : void     statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
+  public  : string   statistics_print          (uint32_t depth);
 #endif					       
+
 #if VHDL				       
   private : void     vhdl                      (void);
@@ -131,7 +137,5 @@
 #endif					       
 					       
-#ifdef VHDL_TESTBENCH			       
-  private : void     vhdl_testbench_transition (void);
-#endif
+  private : void     end_cycle                 (void);
 
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h	(revision 68)
+++ 	(revision )
@@ -1,60 +1,0 @@
-#ifdef STATISTICS
-#ifndef morpheo_behavioural_generic_registerfile_registerfile_monolithic_Statistics_h
-#define morpheo_behavioural_generic_registerfile_registerfile_monolithic_Statistics_h
-
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Common/include/Debug.h"
-#include "Behavioural/include/Statistics.h"
-#include "Behavioural/include/Parameters_Statistics.h"
-#include "Behavioural/Generic/Group/include/Statistics.h"
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h"
-
-using namespace morpheo::behavioural::generic::group;
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  class Statistics : public morpheo::behavioural::Statistics
-  {
-    // -----[ fields ]----------------------------------------------------
-  private  : const Parameters                                 * _parameters;
-  private  : morpheo::behavioural::generic::group::Parameters * _param_port_read;
-  private  : morpheo::behavioural::generic::group::Parameters * _param_port_write;
-  private  : morpheo::behavioural::generic::group::Statistics * _stat_port_read;
-  private  : morpheo::behavioural::generic::group::Statistics * _stat_port_write;
-
-    // -----[ methods ]---------------------------------------------------
-  public   : Statistics (string                                      name                       ,
-			 morpheo::behavioural::Parameters_Statistics * parameters_statistics    ,
-			 Parameters                                  * parameters
-			 );
-//public   : Statistics (Statistics & stat);
-  public   : ~Statistics () ;
-    
-  public   : string   print_body (uint32_t depth);
-  public   : string   print      (uint32_t depth);
-  public   : void     add        (uint32_t nb_read,
-				  uint32_t nb_write);
-
-  public   : friend ostream& operator<< (ostream& output_stream,
-					 const Statistics & x);
-
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile 
-}; // end namespace generic
-}; // end namespace behavioural
-}; // end namespace morpheo
-
-#endif
-#endif
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 68)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp	(revision 71)
@@ -37,7 +37,5 @@
 
 #ifdef STATISTICS
-    _stat = new Statistics (static_cast<string>(_name),
-			    param_statistics          ,
-			    param);
+    statistics_declaration(param_statistics);
 #endif
 
@@ -71,5 +69,5 @@
 	  }
 	
-#  ifdef SYSTEMCASS_SPECIFIC
+# ifdef SYSTEMCASS_SPECIFIC
 	// List dependency information
 	for (uint32_t i=0; i<_param->_nb_port_read; i++)
@@ -86,5 +84,5 @@
 	      (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i]));
 	  }
-#  endif    
+# endif    
 	
 	for (uint32_t i=0; i<_param->_nb_port_read       ; i++)
@@ -105,5 +103,4 @@
     if (_usage & USE_STATISTICS)
       {
-	_stat->generate_file(statistics(0));
 	delete _stat;
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_end_cycle.cpp	(revision 71)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_end_cycle.cpp	(revision 71)
@@ -0,0 +1,38 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
+
+namespace morpheo                    {
+namespace behavioural                {
+namespace generic                    {
+namespace registerfile               {
+namespace registerfile_monolithic    {
+
+  void RegisterFile_Monolithic::end_cycle (void)
+  {
+    log_printf(FUNC,RegisterFile,"end_cycle","Begin");
+
+#ifdef STATISTICS
+    _stat->end_cycle();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    // Evaluation before read the ouput signal
+    
+//  sc_start(0);
+    _interfaces->testbench();
+#endif
+
+    log_printf(FUNC,RegisterFile,"end_cycle","End");
+  };
+
+}; // end namespace registerfile_monolithic
+}; // end namespace registerfile 
+}; // end namespace generic
+}; // end namespace behavioural          
+}; // end namespace morpheo              
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 68)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp	(revision 71)
@@ -19,8 +19,4 @@
     log_printf(FUNC,RegisterFile,"genMealy_read","Begin");
 
-#ifdef STATISTICS
-    _stat_nb_read = 0;
-#endif    
-
     for (uint32_t i=0; i<_param->_nb_port_read; i++)
       {
@@ -38,5 +34,5 @@
 
 #ifdef STATISTICS
-	    _stat_nb_read ++;
+	    (*_stat_nb_read) ++;
 #endif    
 	    // Write in registerFile
@@ -68,10 +64,4 @@
 
 	    log_printf(TRACE,RegisterFile,"genMealy_read","[%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
-
-#ifdef STATISTICS
-	    _stat_nb_read ++;
-#endif    
-	    // Write in registerFile
-	    
  	  }
 	else
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics.cpp	(revision 68)
+++ 	(revision )
@@ -1,27 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  string RegisterFile_Monolithic::statistics (uint32_t depth)
-  {
-    return _stat->print(depth);
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile 
-}; // end namespace generic
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-#endif
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 71)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics_declaration.cpp	(revision 71)
@@ -0,0 +1,45 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
+
+namespace morpheo                    {
+namespace behavioural                {
+namespace generic                    {
+namespace registerfile               {
+namespace registerfile_monolithic    {
+
+  void RegisterFile_Monolithic::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
+  {
+    _stat = new Stat (static_cast<string>(_name),
+		      "RegisterFile_Monolithic",
+		      param_statistics);
+
+    _stat_nb_read           = _stat->create_variable("nb_read" );
+    _stat_nb_write          = _stat->create_variable("nb_write");
+    
+    _stat_average_read      = _stat->create_counter("average_read" , "", "Average read by cycle");
+    _stat_average_write     = _stat->create_counter("average_write", "", "Average write by cycle");
+
+    _stat_percent_use_read  = _stat->create_counter("percent_use_read" , "%", "Read port usage");
+    _stat_percent_use_write = _stat->create_counter("percent_use_write", "%", "Write port usage");
+
+    _stat->create_expr("average_read" , "/ nb_read  cycle", false);
+    _stat->create_expr("average_write", "/ nb_write cycle", false);
+
+    _stat->create_expr("percent_use_read" , "/ * average_read  100 " + toString(_param->_nb_port_read +_param->_nb_port_read_write), false);
+    _stat->create_expr("percent_use_write", "/ * average_write 100 " + toString(_param->_nb_port_write+_param->_nb_port_read_write), false);
+
+  };
+
+}; // end namespace registerfile_monolithic
+}; // end namespace registerfile 
+}; // end namespace generic
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics_print.cpp	(revision 71)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics_print.cpp	(revision 71)
@@ -0,0 +1,27 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
+
+namespace morpheo                    {
+namespace behavioural                {
+namespace generic                    {
+namespace registerfile               {
+namespace registerfile_monolithic    {
+
+  string RegisterFile_Monolithic::statistics_print (uint32_t depth)
+  {
+    return _stat->print(depth);
+  };
+
+}; // end namespace registerfile_monolithic
+}; // end namespace registerfile 
+}; // end namespace generic
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+#endif
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 68)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp	(revision 71)
@@ -17,7 +17,4 @@
   {
     log_printf(FUNC,RegisterFile,"transition","Begin");
-#ifdef STATISTICS
-    _stat_nb_write = 0;
-#endif    
 
     for (uint32_t i=0; i<_param->_nb_port_write; i++)
@@ -27,5 +24,5 @@
  	  {
 #ifdef STATISTICS
-	    _stat_nb_write ++;
+	    (*_stat_nb_write) ++;
 #endif    
 
@@ -47,32 +44,41 @@
       {
 	// Have a read_write?
- 	if ( (PORT_READ(in_READ_WRITE_VAL[i]) == true) and
-	     (PORT_READ(in_READ_WRITE_RW [i]) == RW_WRITE))
- 	  {
+ 	if (PORT_READ(in_READ_WRITE_VAL[i]) == true)
+	  {
+	    if (PORT_READ(in_READ_WRITE_RW [i]) == RW_WRITE)
+	      {
 #ifdef STATISTICS
-	    _stat_nb_write ++;
+		(*_stat_nb_write) ++;
 #endif    
-
-	    Taddress_t address;
-	    if (_param->_have_port_address)
-	      address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
+		
+		Taddress_t address;
+		if (_param->_have_port_address)
+		  address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
+		else
+		  address = 0;
+		Tdata_t    data    = PORT_READ(in_READ_WRITE_WDATA  [i]);
+		
+		log_printf(TRACE,RegisterFile,"transition","[%d] <- %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
+		
+		// Write in registerFile
+		REGISTER_WRITE(reg_DATA[address],data);
+	      }
+#ifdef STATISTICS
 	    else
-	      address = 0;
-	    Tdata_t    data    = PORT_READ(in_READ_WRITE_WDATA  [i]);
-	    
-	    log_printf(TRACE,RegisterFile,"transition","[%d] <- %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
-
-	    // Write in registerFile
-	    REGISTER_WRITE(reg_DATA[address],data);
- 	  }
+	      {
+		(*_stat_nb_read) ++;
+	      }
+#endif    
+	  }
       }
 
 #ifdef STATISTICS
-    _stat->add(_stat_nb_read,_stat_nb_write);
+    for (uint32_t i=0; i<_param->_nb_port_read; i++)
+      if ( PORT_READ(in_READ_VAL [i]) == 1)
+	(*_stat_nb_read) ++;
 #endif    
 
-#ifdef VHDL_TESTBENCH
-    vhdl_testbench_transition ();
-#endif
+    end_cycle();
+
     log_printf(FUNC,RegisterFile,"transition","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_testbench_transition.cpp	(revision 68)
+++ 	(revision )
@@ -1,30 +1,0 @@
-#ifdef VHDL_TESTBENCH
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  void RegisterFile_Monolithic::vhdl_testbench_transition (void)
-  {
-    // Evaluation before read the ouput signal
-    
-//  sc_start(0);
-    _interfaces->testbench();
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile 
-}; // end namespace generic
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics.cpp	(revision 68)
+++ 	(revision )
@@ -1,56 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h"
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  Statistics::Statistics (string                                        name                       ,
-			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
-			  Parameters                                  * parameters
-			  ) :
-    morpheo::behavioural::Statistics(name                  ,
-				     parameters_statistics ),
-    _parameters(parameters)
-  {
-    _param_port_read = new morpheo::behavioural::generic::group::Parameters(_parameters->_nb_port_read);
-    _stat_port_read  = new morpheo::behavioural::generic::group::Statistics (name + "_port_read"   ,
-									     parameters_statistics ,
-									     _param_port_read);
-
-    _param_port_write = new morpheo::behavioural::generic::group::Parameters(_parameters->_nb_port_write);
-    _stat_port_write  = new morpheo::behavioural::generic::group::Statistics (name + "_port_write"   ,
-									     parameters_statistics ,
-									     _param_port_write);
-  };
-  
-  //   Statistics::Statistics (Statistics & stat) :
-  // 		       _nb_port_read      (param._nb_port_read ),
-  // 		       _nb_port_write     (param._nb_port_write),
-  // 		       _nb_word           (param._nb_word      ),
-  // 		       _size_word         (param._size_word    )
-  //     { };
-  
-  Statistics::~Statistics () 
-  { 
-    delete _param_port_read;
-    delete _param_port_write;
-    delete _stat_port_read ;
-    delete _stat_port_write;
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile
-}; // end namespace generic
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics_add.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics_add.cpp	(revision 68)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h"
-
-#include <sstream>
-using namespace std;
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  void Statistics::add (uint32_t nb_read,
-			uint32_t nb_write)
-  {
-    _stat_port_read ->add(nb_read );
-    _stat_port_write->add(nb_write);
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile
-}; // end namespace generic
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics_print.cpp	(revision 68)
+++ 	(revision )
@@ -1,45 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h"
-
-#include <sstream>
-using namespace std;
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  string Statistics::print (uint32_t depth)
-  {
-    string        tab = string(depth,'\t');
-    ostringstream msg;
-
-    msg << tab << "<registerfile_monolithic name=\"" << _name << "\" >" << endl
-	<< print_body(depth+1)
-	<< tab << "</RegisterFile_Monolithic>" << endl;
-    
-    return msg.str();
-  };
-
-  ostream& operator<< (ostream& output_stream ,
-		       morpheo::behavioural::generic::registerfile::registerfile_monolithic::Statistics & x)
-  {
-    output_stream << x.print(0);
-
-    return output_stream;
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile
-}; // end namespace generic
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics_print_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics_print_body.cpp	(revision 68)
+++ 	(revision )
@@ -1,36 +1,0 @@
-#ifdef STATISTICS
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h"
-
-#include <sstream>
-using namespace std;
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  string Statistics::print_body (uint32_t depth)
-  {
-    string        tab = string(depth,'\t');
-    ostringstream msg;
-
-    msg << _stat_port_read ->print(depth+1);
-    msg << _stat_port_write->print(depth+1);
-    
-    return msg.str();
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile
-}; // end namespace generic
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-#endif
