Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile	(revision 10)
@@ -0,0 +1,23 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_MORPHEO			= ../../..
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libRegisterFile_Multi_Banked.a
+
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.deps	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.deps	(revision 10)
@@ -0,0 +1,31 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+
+RegisterFile_Multi_Banked			= yes
+
+#-----[ Library ]------------------------------------------
+RegisterFile_Multi_Banked_LIBRARY		= 	-lRegisterFile_Multi_Banked	\
+					$(Behavioural_LIBRARY)	
+
+RegisterFile_Multi_Banked_DIR_LIBRARY		=	-L$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile_Multi_Banked/lib	\
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+RegisterFile_Multi_Banked_library		: 
+				@$(MAKE) Behavioural_library
+				@$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile_Multi_Banked --makefile=Makefile 
+	
+RegisterFile_Multi_Banked_library_clean	: 
+				@$(MAKE) Behavioural_library_clean
+				@$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile_Multi_Banked --makefile=Makefile clean
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile	(revision 10)
@@ -0,0 +1,23 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_MORPHEO			= ../../../..
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libRegisterFile_Multi_Banked_Glue.a
+
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile.deps	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile.deps	(revision 10)
@@ -0,0 +1,31 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+
+RegisterFile_Multi_Banked_Glue			= yes
+
+#-----[ Library ]------------------------------------------
+RegisterFile_Multi_Banked_Glue_LIBRARY		= 	-lRegisterFile_Multi_Banked_Glue	\
+					$(Behavioural_LIBRARY)	
+
+RegisterFile_Multi_Banked_Glue_DIR_LIBRARY		=	-L$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/lib	\
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+RegisterFile_Multi_Banked_Glue_library		: 
+				@$(MAKE) Behavioural_library
+				@$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue --makefile=Makefile 
+	
+RegisterFile_Multi_Banked_Glue_library_clean	: 
+				@$(MAKE) Behavioural_library_clean
+				@$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue --makefile=Makefile clean
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/Makefile	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/Makefile	(revision 10)
@@ -0,0 +1,29 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_MORPHEO			= ../../../../..
+
+LIBRARY				= $(RegisterFile_Multi_Banked_Glue_LIBRARY)
+
+DIR_LIBRARY			= $(RegisterFile_Multi_Banked_Glue_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: RegisterFile_Multi_Banked_Glue_library
+
+library_clean			: RegisterFile_Multi_Banked_Glue_library_clean
+
+include                         ../Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.Synthesis
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/configuration.cfg	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/configuration.cfg	(revision 10)
@@ -0,0 +1,6 @@
+RegisterFile_Multi_Banked_Glue
+2	8 	*2	# nb_port_read
+2	4	*2	# nb_port_write
+6  	8    	+1	# size_address
+32	32	*2	# size_word
+2	2	*2	# nb_bank
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/include/test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/include/test.h	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/include/test.h	(revision 10)
@@ -0,0 +1,27 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::generic;
+using namespace morpheo::behavioural::generic::registerfile_multi_banked;
+
+using namespace morpheo::behavioural::generic::registerfile_multi_banked::registerfile_multi_banked_glue;
+
+void test    (string name,
+	      morpheo::behavioural::generic::registerfile_multi_banked::registerfile_multi_banked_glue::Parameters param);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/main.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/main.cpp	(revision 10)
@@ -0,0 +1,71 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/include/test.h"
+
+#define NB_PARAMS 5
+
+void usage (int argc, char * argv[])
+{
+  cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
+       << "list_params is :" << endl
+       << " - nb_port_read  (unsigned int)" << endl
+       << " - nb_port_write (unsigned int)" << endl
+       << " - size_address  (unsigned int)" << endl
+       << " - size_word     (unsigned int)" << endl
+       << " - nb_bank       (unsigned int)" << endl
+       << "" << endl;
+
+  for (int i=0; i<argc; i++)
+    cerr << argv[i] << " ";
+  cerr << endl;
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  if (argc < 2+NB_PARAMS)
+    usage (argc, argv);
+
+  const string   name          = argv[1];
+  const uint32_t nb_port_read  = atoi(argv[2]);
+  const uint32_t nb_port_write = atoi(argv[3]);
+  const uint32_t size_address  = atoi(argv[4]);
+  const uint32_t size_word     = atoi(argv[5]);
+  const uint32_t nb_bank       = atoi(argv[6]);
+
+  try 
+    {
+      morpheo::behavioural::generic::registerfile_multi_banked::registerfile_multi_banked_glue::Parameters param (nb_port_read ,
+														  nb_port_write,
+														  size_address ,
+														  size_word    ,
+														  nb_bank      );
+      
+      cout << param.print(1);
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      cout << "<" << name << "> : " <<  error.what ();
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      cerr << "<" << name << "> : This test must generate a error" << endl;
+      exit (EXIT_FAILURE);
+    }
+
+  return (EXIT_SUCCESS);
+}
+
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp	(revision 10)
@@ -0,0 +1,313 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#define NB_ITERATION 1
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/include/test.h"
+#include "Include/Test.h"
+
+void test (string name,
+	   morpheo::behavioural::generic::registerfile_multi_banked::registerfile_multi_banked_glue::Parameters _param)
+{
+  cout << "<" << name << "> : Simulation SystemC" << endl;
+
+  RegisterFile_Multi_Banked_Glue * _RegisterFile_Multi_Banked_Glue = new RegisterFile_Multi_Banked_Glue (name.c_str(),
+#ifdef STATISTICS
+					     morpheo::behavioural::Parameters_Statistics(5,50),
+#endif
+					     _param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  sc_clock                               * CLOCK;
+
+  sc_signal<Tcontrol_t>                 ** READ_IN_VAL       ;
+  sc_signal<Tcontrol_t>                 ** READ_IN_ACK       ;
+  sc_signal<Taddress_t>                 ** READ_IN_ADDRESS   ;
+  sc_signal<Tdata_t   >                 ** READ_IN_DATA      ;
+  sc_signal<Tcontrol_t>                 ** READ_SELECT_VAL   ;
+  sc_signal<Tcontrol_t>                 ** READ_SELECT_ACK   ;
+  sc_signal<Tcontrol_t>                *** READ_OUT_VAL      ;
+  sc_signal<Tcontrol_t>                *** READ_OUT_ACK      ;
+  sc_signal<Taddress_t>                *** READ_OUT_ADDRESS  ;
+  sc_signal<Tdata_t   >                *** READ_OUT_DATA     ;
+  sc_signal<Tcontrol_t>                 ** WRITE_IN_VAL      ;
+  sc_signal<Tcontrol_t>                 ** WRITE_IN_ACK      ;
+  sc_signal<Tcontrol_t>                 ** WRITE_SELECT_VAL  ;
+  sc_signal<Tcontrol_t>                 ** WRITE_SELECT_ACK  ;
+  sc_signal<Taddress_t>                 ** WRITE_IN_ADDRESS  ;
+  sc_signal<Tdata_t   >                 ** WRITE_IN_DATA     ;
+  sc_signal<Tcontrol_t>                *** WRITE_OUT_VAL     ;
+  sc_signal<Tcontrol_t>                *** WRITE_OUT_ACK     ;
+  sc_signal<Taddress_t>                *** WRITE_OUT_ADDRESS ;
+  sc_signal<Tdata_t   >                *** WRITE_OUT_DATA    ;
+
+  string rename;
+
+  CLOCK                                  = new sc_clock ("clock", 1.0, 0.5);
+
+  READ_IN_VAL       = new sc_signal<Tcontrol_t>           * [_param._nb_port_read];
+  READ_IN_ACK       = new sc_signal<Tcontrol_t>           * [_param._nb_port_read];
+  READ_IN_ADDRESS   = new sc_signal<Taddress_t>           * [_param._nb_port_read];
+  READ_IN_DATA      = new sc_signal<Tdata_t   >           * [_param._nb_port_read];
+  READ_SELECT_VAL   = new sc_signal<Tcontrol_t>           * [_param._nb_port_read];
+  READ_SELECT_ACK   = new sc_signal<Tcontrol_t>           * [_param._nb_port_read];
+
+  for (uint32_t i=0; i<_param._nb_port_read; i++)
+    {
+      rename = "READ_IN_VAL_"+toString(i)+"      ";
+      READ_IN_VAL       [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+      rename = "READ_IN_ACK_"+toString(i)+"      ";
+      READ_IN_ACK       [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+      rename = "READ_IN_ADDRESS_"+toString(i)+"  ";
+      READ_IN_ADDRESS   [i] = new sc_signal<Taddress_t> (rename.c_str());
+      rename = "READ_IN_DATA_"+toString(i)+"     ";
+      READ_IN_DATA      [i] = new sc_signal<Tdata_t   > (rename.c_str());
+      rename = "READ_SELECT_VAL_"+toString(i)+"  ";
+      READ_SELECT_VAL       [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+      rename = "READ_SELECT_ACK_"+toString(i)+"  ";
+      READ_SELECT_ACK       [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+    }
+   						      
+   READ_OUT_VAL      = new sc_signal<Tcontrol_t>          ** [_param._nb_bank];
+   READ_OUT_ACK      = new sc_signal<Tcontrol_t>          ** [_param._nb_bank];
+   READ_OUT_ADDRESS  = new sc_signal<Taddress_t>          ** [_param._nb_bank];
+   READ_OUT_DATA     = new sc_signal<Tdata_t   >          ** [_param._nb_bank];
+
+   for (uint32_t i=0; i<_param._nb_bank; i++)
+     {
+       READ_OUT_VAL      [i] = new sc_signal<Tcontrol_t>          * [_param._nb_port_read_by_bank];
+       READ_OUT_ACK      [i] = new sc_signal<Tcontrol_t>          * [_param._nb_port_read_by_bank];
+       READ_OUT_ADDRESS  [i] = new sc_signal<Taddress_t>          * [_param._nb_port_read_by_bank];
+       READ_OUT_DATA     [i] = new sc_signal<Tdata_t   >          * [_param._nb_port_read_by_bank];
+       
+       for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+	 {
+	   rename="READ_OUT_VAL_"+toString(i)+"_"+toString(j)+"      ";
+	   READ_OUT_VAL      [i][j] = new sc_signal<Tcontrol_t> (rename.c_str());
+	   rename="READ_OUT_ACK_"+toString(i)+"_"+toString(j)+"      ";
+	   READ_OUT_ACK      [i][j] = new sc_signal<Tcontrol_t> (rename.c_str());
+	   rename="READ_OUT_ADDRESS_"+toString(i)+"_"+toString(j)+"  ";
+	   READ_OUT_ADDRESS  [i][j] = new sc_signal<Taddress_t> (rename.c_str());
+	   rename="READ_OUT_DATA_"+toString(i)+"_"+toString(j)+"     ";
+	   READ_OUT_DATA     [i][j] = new sc_signal<Tdata_t   > (rename.c_str());
+	 }
+     }
+   
+   WRITE_IN_VAL      = new sc_signal<Tcontrol_t>           * [_param._nb_port_write];
+   WRITE_IN_ACK      = new sc_signal<Tcontrol_t>           * [_param._nb_port_write];
+   WRITE_IN_ADDRESS  = new sc_signal<Taddress_t>           * [_param._nb_port_write];
+   WRITE_IN_DATA     = new sc_signal<Tdata_t   >           * [_param._nb_port_write];
+   WRITE_SELECT_VAL  = new sc_signal<Tcontrol_t>           * [_param._nb_port_write];
+   WRITE_SELECT_ACK  = new sc_signal<Tcontrol_t>           * [_param._nb_port_write];
+
+   for (uint32_t i=0; i<_param._nb_port_write; i++)
+     {
+       rename = "WRITE_IN_VAL_"+toString(i)+"     ";
+       WRITE_IN_VAL      [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+       rename = "WRITE_IN_ACK_"+toString(i)+"     ";
+       WRITE_IN_ACK      [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+       rename = "WRITE_IN_ADDRESS_"+toString(i)+" ";
+       WRITE_IN_ADDRESS  [i] = new sc_signal<Taddress_t> (rename.c_str());
+       rename = "WRITE_IN_DATA_"+toString(i)+"    ";
+       WRITE_IN_DATA     [i] = new sc_signal<Tdata_t   > (rename.c_str());
+
+       rename = "WRITE_SELECT_VAL_"+toString(i)+" ";
+       WRITE_SELECT_VAL  [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+       rename = "WRITE_SELECT_ACK_"+toString(i)+" ";
+       WRITE_SELECT_ACK  [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+     }
+      
+   WRITE_OUT_VAL     = new sc_signal<Tcontrol_t>          ** [_param._nb_bank];
+   WRITE_OUT_ACK     = new sc_signal<Tcontrol_t>          ** [_param._nb_bank];
+   WRITE_OUT_ADDRESS = new sc_signal<Taddress_t>          ** [_param._nb_bank];
+   WRITE_OUT_DATA    = new sc_signal<Tdata_t   >          ** [_param._nb_bank];
+   
+   for (uint32_t i=0; i<_param._nb_bank; i++)
+     {
+       WRITE_OUT_VAL     [i] = new sc_signal<Tcontrol_t>          * [_param._nb_port_write_by_bank];
+       WRITE_OUT_ACK     [i] = new sc_signal<Tcontrol_t>          * [_param._nb_port_write_by_bank];
+       WRITE_OUT_ADDRESS [i] = new sc_signal<Taddress_t>          * [_param._nb_port_write_by_bank];
+       WRITE_OUT_DATA    [i] = new sc_signal<Tdata_t   >          * [_param._nb_port_write_by_bank];
+       
+       for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+	 {
+	   rename = "WRITE_OUT_VAL_"+toString(i)+"_"+toString(j)+"     ";
+	   WRITE_OUT_VAL     [i][j] = new sc_signal<Tcontrol_t> (rename.c_str());
+	   rename = "WRITE_OUT_ACK_"+toString(i)+"_"+toString(j)+"     ";
+	   WRITE_OUT_ACK     [i][j] = new sc_signal<Tcontrol_t> (rename.c_str());
+	   rename = "WRITE_OUT_ADDRESS_"+toString(i)+"_"+toString(j)+" ";
+	   WRITE_OUT_ADDRESS [i][j] = new sc_signal<Taddress_t> (rename.c_str());
+	   rename = "WRITE_OUT_DATA_"+toString(i)+"_"+toString(j)+"    ";
+	   WRITE_OUT_DATA    [i][j] = new sc_signal<Tdata_t   > (rename.c_str());
+	 }
+     }
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  cout << "<" << name << "> Instanciation of _RegisterFile_Multi_Banked_Glue" << endl;
+  
+  (*(_RegisterFile_Multi_Banked_Glue->in_CLOCK))        (*(CLOCK));
+
+   for (uint32_t i=0; i<_param._nb_port_read; i++)
+     {
+       (*(_RegisterFile_Multi_Banked_Glue-> in_READ_IN_VAL       [i]))       (*(READ_IN_VAL       [i]));
+       (*(_RegisterFile_Multi_Banked_Glue->out_READ_IN_ACK       [i]))       (*(READ_IN_ACK       [i]));
+       (*(_RegisterFile_Multi_Banked_Glue-> in_READ_IN_ADDRESS   [i]))       (*(READ_IN_ADDRESS   [i]));
+       (*(_RegisterFile_Multi_Banked_Glue->out_READ_IN_DATA      [i]))       (*(READ_IN_DATA      [i]));
+       (*(_RegisterFile_Multi_Banked_Glue-> in_READ_SELECT_VAL   [i]))       (*(READ_SELECT_VAL   [i]));
+       (*(_RegisterFile_Multi_Banked_Glue->out_READ_SELECT_ACK   [i]))       (*(READ_SELECT_ACK   [i]));
+     }
+   for (uint32_t i=0; i<_param._nb_bank; i++)
+       for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+	 {
+	   (*(_RegisterFile_Multi_Banked_Glue->out_READ_OUT_VAL      [i][j]))       (*(READ_OUT_VAL      [i][j]));
+	   (*(_RegisterFile_Multi_Banked_Glue-> in_READ_OUT_ACK      [i][j]))       (*(READ_OUT_ACK      [i][j]));
+	   (*(_RegisterFile_Multi_Banked_Glue->out_READ_OUT_ADDRESS  [i][j]))       (*(READ_OUT_ADDRESS  [i][j]));
+	   (*(_RegisterFile_Multi_Banked_Glue-> in_READ_OUT_DATA     [i][j]))       (*(READ_OUT_DATA     [i][j]));
+	 }
+
+   for (uint32_t i=0; i<_param._nb_port_write; i++)
+     {
+       (*(_RegisterFile_Multi_Banked_Glue-> in_WRITE_IN_VAL      [i]))       (*(WRITE_IN_VAL      [i]));
+       (*(_RegisterFile_Multi_Banked_Glue->out_WRITE_IN_ACK      [i]))       (*(WRITE_IN_ACK      [i]));
+       (*(_RegisterFile_Multi_Banked_Glue-> in_WRITE_IN_ADDRESS  [i]))       (*(WRITE_IN_ADDRESS  [i]));
+       (*(_RegisterFile_Multi_Banked_Glue-> in_WRITE_IN_DATA     [i]))       (*(WRITE_IN_DATA     [i]));
+       (*(_RegisterFile_Multi_Banked_Glue-> in_WRITE_SELECT_VAL  [i]))       (*(WRITE_SELECT_VAL  [i]));
+       (*(_RegisterFile_Multi_Banked_Glue->out_WRITE_SELECT_ACK  [i]))       (*(WRITE_SELECT_ACK  [i]));
+     }
+
+   for (uint32_t i=0; i<_param._nb_bank; i++)
+       for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+	 {
+	   (*(_RegisterFile_Multi_Banked_Glue->out_WRITE_OUT_VAL     [i][j]))       (*(WRITE_OUT_VAL     [i][j]));
+	   (*(_RegisterFile_Multi_Banked_Glue-> in_WRITE_OUT_ACK     [i][j]))       (*(WRITE_OUT_ACK     [i][j]));
+	   (*(_RegisterFile_Multi_Banked_Glue->out_WRITE_OUT_ADDRESS [i][j]))       (*(WRITE_OUT_ADDRESS [i][j]));
+	   (*(_RegisterFile_Multi_Banked_Glue->out_WRITE_OUT_DATA    [i][j]))       (*(WRITE_OUT_DATA    [i][j]));
+	 }
+
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  cout << "<" << name << "> Start Simulation ............" << endl;
+  // Initialisation
+
+  const uint32_t seed = 0;
+//const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  sc_start(0);
+  _RegisterFile_Multi_Banked_Glue->vhdl_testbench_label("Initialisation");
+  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
+
+
+  _RegisterFile_Multi_Banked_Glue->vhdl_testbench_label("Loop of Test");
+  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl;
+
+  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
+    {
+      _RegisterFile_Multi_Banked_Glue->vhdl_testbench_label("Iteration "+toString(iteration));
+
+      sc_start(1);
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  cout << "<" << name << "> ............ Stop Simulation" << endl;
+
+  delete CLOCK;
+
+  for (uint32_t i=0; i<_param._nb_port_read; i++)
+    {
+      delete READ_IN_VAL       [i];
+      delete READ_IN_ACK       [i];
+      delete READ_IN_ADDRESS   [i];
+      delete READ_IN_DATA      [i];
+      delete READ_SELECT_VAL   [i];
+      delete READ_SELECT_ACK   [i];
+    }
+  						      
+  delete READ_IN_VAL    ;
+  delete READ_IN_ACK    ;
+  delete READ_IN_ADDRESS;
+  delete READ_IN_DATA   ;
+  delete READ_SELECT_VAL;
+  delete READ_SELECT_ACK;
+
+   for (uint32_t i=0; i<_param._nb_bank; i++)
+     {
+  	for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+  	  {
+  	    delete READ_OUT_VAL      [i][j];
+  	    delete READ_OUT_ACK      [i][j];
+  	    delete READ_OUT_ADDRESS  [i][j];
+  	    delete READ_OUT_DATA     [i][j];
+  	  }
+
+  	delete READ_OUT_VAL      [i];
+  	delete READ_OUT_ACK      [i];
+  	delete READ_OUT_ADDRESS  [i];
+  	delete READ_OUT_DATA     [i];
+     }
+
+  delete READ_OUT_VAL    ;
+  delete READ_OUT_ACK    ;
+  delete READ_OUT_ADDRESS;
+  delete READ_OUT_DATA   ;
+
+  for (uint32_t i=0; i<_param._nb_port_write; i++)
+    {
+      delete WRITE_IN_VAL      [i];
+      delete WRITE_IN_ACK      [i];
+      delete WRITE_IN_ADDRESS  [i];
+      delete WRITE_IN_DATA     [i];
+      delete WRITE_SELECT_VAL  [i];
+      delete WRITE_SELECT_ACK  [i];
+    }
+
+  delete WRITE_IN_VAL    ;
+  delete WRITE_IN_ACK    ;
+  delete WRITE_IN_ADDRESS;
+  delete WRITE_IN_DATA   ;
+  delete WRITE_SELECT_VAL;
+  delete WRITE_SELECT_ACK;
+  
+  for (uint32_t i=0; i<_param._nb_bank; i++)
+    {
+      for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+  	 {
+  	   delete WRITE_OUT_VAL     [i][j];
+  	   delete WRITE_OUT_ACK     [i][j];
+  	   delete WRITE_OUT_ADDRESS [i][j];
+  	   delete WRITE_OUT_DATA    [i][j];
+  	 }
+      
+      delete WRITE_OUT_VAL     [i];
+      delete WRITE_OUT_ACK     [i];
+      delete WRITE_OUT_ADDRESS [i];
+      delete WRITE_OUT_DATA    [i];
+    }
+     
+  delete WRITE_OUT_VAL    ;
+  delete WRITE_OUT_ACK    ;
+  delete WRITE_OUT_ADDRESS;
+  delete WRITE_OUT_DATA   ;
+
+#endif
+
+  delete _RegisterFile_Multi_Banked_Glue;
+}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/VERSION
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/VERSION	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/VERSION	(revision 10)
@@ -0,0 +1,3 @@
+v0.5
+
+0.5 modif vhdl_port et vhdl_testbench_port -> ajout d'une macro
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h	(revision 10)
@@ -0,0 +1,57 @@
+#ifndef morpheo_behavioural_generic_registerfile_multi_banked_registerfile_multi_banked_glue_Parameters_h
+#define morpheo_behavioural_generic_registerfile_multi_banked_registerfile_multi_banked_glue_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include <math.h>
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t _nb_port_read         ;
+  public : const uint32_t _nb_port_write        ;
+  public : const uint32_t _size_address         ;
+  public : const uint32_t _size_word            ;
+  public : const uint32_t _nb_bank              ;
+
+  public : const uint32_t _nb_port_read_by_bank ;
+  public : const uint32_t _nb_port_write_by_bank;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t nb_port_read ,
+			uint32_t nb_port_write,
+			uint32_t size_address ,
+			uint32_t size_word    ,
+			uint32_t nb_bank      );
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public : string msg_error (void);
+
+  public :        string   print      (uint32_t depth);
+  public : friend ostream& operator<< (ostream& output_stream,
+				       morpheo::behavioural::generic::registerfile_multi_banked::registerfile_multi_banked_glue::Parameters & x);
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h	(revision 10)
@@ -0,0 +1,152 @@
+#ifndef morpheo_behavioural_generic_registerfile_multi_banked_registerfile_multi_banked_glue_RegisterFile_Multi_Banked_Glue_h
+#define morpheo_behavioural_generic_registerfile_multi_banked_registerfile_multi_banked_glue_RegisterFile_Multi_Banked_Glue_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Types.h"
+#ifdef STATISTICS
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h"
+#endif
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#ifdef VHDL_TESTBENCH
+#include "Behavioural/include/Vhdl_Testbench.h"
+#endif
+
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  class RegisterFile_Multi_Banked_Glue 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const string     _name;
+
+  protected : const Parameters _param;
+//#ifdef STATISTICS
+//  protected : const morpheo::behavioural::Parameters_Statistics _param_statistics;
+//#endif
+
+#ifdef STATISTICS
+  private   : Statistics                     * _stat;
+#endif
+
+#ifdef VHDL_TESTBENCH
+  private   : Vhdl_Testbench                 * _vhdl_testbench;
+#endif
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK             ;
+								    
+  public    : SC_IN (Tcontrol_t)           **  in_READ_IN_VAL       ;
+  public    : SC_OUT(Tcontrol_t)           ** out_READ_IN_ACK       ;
+  public    : SC_IN (Taddress_t)           **  in_READ_IN_ADDRESS   ;
+  public    : SC_OUT(Tdata_t   )           ** out_READ_IN_DATA      ;
+
+  public    : SC_IN (Tcontrol_t)           **  in_READ_SELECT_VAL   ;
+  public    : SC_OUT(Tcontrol_t)           ** out_READ_SELECT_ACK   ;
+
+  public    : SC_OUT(Tcontrol_t)          *** out_READ_OUT_VAL      ;
+  public    : SC_IN (Tcontrol_t)          ***  in_READ_OUT_ACK      ;
+  public    : SC_OUT(Taddress_t)          *** out_READ_OUT_ADDRESS  ;
+  public    : SC_IN (Tdata_t   )          ***  in_READ_OUT_DATA     ;
+
+  public    : SC_IN (Tcontrol_t)           **  in_WRITE_IN_VAL      ;
+  public    : SC_OUT(Tcontrol_t)           ** out_WRITE_IN_ACK      ;
+  public    : SC_IN (Taddress_t)           **  in_WRITE_IN_ADDRESS  ;
+  public    : SC_IN (Tdata_t   )           **  in_WRITE_IN_DATA     ;
+
+  public    : SC_IN (Tcontrol_t)           **  in_WRITE_SELECT_VAL  ;
+  public    : SC_OUT(Tcontrol_t)           ** out_WRITE_SELECT_ACK  ;
+
+  public    : SC_OUT(Tcontrol_t)          *** out_WRITE_OUT_VAL     ;
+  public    : SC_IN (Tcontrol_t)          ***  in_WRITE_OUT_ACK     ;
+  public    : SC_OUT(Taddress_t)          *** out_WRITE_OUT_ADDRESS ;
+  public    : SC_OUT(Tdata_t   )          *** out_WRITE_OUT_DATA    ;
+      
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#endif
+
+    // -----[ methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (RegisterFile_Multi_Banked_Glue);
+#endif
+  public  :          RegisterFile_Multi_Banked_Glue              (
+#ifdef SYSTEMC
+					      sc_module_name                              name,
+#else					       
+					      string                                      name,
+#endif					       
+#ifdef STATISTICS
+					      morpheo::behavioural::Parameters_Statistics param_statistics,
+#endif
+					      Parameters                                  param );
+					       
+  public  :          RegisterFile_Multi_Banked_Glue              (Parameters param );
+  public  :          ~RegisterFile_Multi_Banked_Glue             (void);
+					       
+#ifdef SYSTEMC				       
+  private : void     allocation                (void);
+  private : void     deallocation              (void);
+					       
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  public  : void     transition                (void);
+#endif
+
+#endif					       
+#ifdef STATISTICS
+  public  : string   statistics                (uint32_t depth);
+#endif
+					       
+#if VHDL				       
+  public  : void     vhdl                      (void);
+  private : void     vhdl_port                 (Vhdl & vhdl);
+  private : void     vhdl_declaration          (Vhdl & vhdl);
+  private : void     vhdl_body                 (Vhdl & vhdl);
+#endif					       
+					       
+#ifdef VHDL_TESTBENCH			       
+  private : void     vhdl_testbench_transition (void);
+#endif
+  public  : void     vhdl_testbench_label      (string label);
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h	(revision 10)
@@ -0,0 +1,57 @@
+#ifdef STATISTICS
+#ifndef morpheo_behavioural_generic_registerfile_multi_banked_registerfile_multi_banked_glue_Statistics_h
+#define morpheo_behavioural_generic_registerfile_multi_banked_registerfile_multi_banked_glue_Statistics_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "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_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h"
+
+//using namespace morpheo::behavioural::generic::group;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  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 registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo
+
+#endif
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Types.h	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Types.h	(revision 10)
@@ -0,0 +1,29 @@
+#ifndef morpheo_behavioural_generic_registerfile_multi_banked_registerfile_multi_banked_glue_Type_h
+#define morpheo_behavioural_generic_registerfile_multi_banked_registerfile_multi_banked_glue_Type_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Include/Types.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+  typedef uint32_t Taddress_t;
+  typedef uint32_t Tdata_t   ;
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters.cpp	(revision 10)
@@ -0,0 +1,58 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+  Parameters::Parameters (uint32_t nb_port_read ,
+			  uint32_t nb_port_write,
+			  uint32_t size_address ,
+			  uint32_t size_word    ,
+			  uint32_t nb_bank      ):
+    _nb_port_read          (nb_port_read         ),
+    _nb_port_write         (nb_port_write        ),
+    _size_address          (size_address         ),
+    _size_word             (size_word            ),
+    _nb_bank               (nb_bank              ),
+    _nb_port_read_by_bank  (nb_port_read /nb_bank),
+    _nb_port_write_by_bank (nb_port_write/nb_bank)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","Begin");
+    test();
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End");
+  };
+  
+  Parameters::Parameters (Parameters & param):
+   _nb_port_read          (param._nb_port_read ),
+   _nb_port_write         (param._nb_port_write),
+   _size_address          (param._size_address ),
+   _size_word             (param._size_word    ),
+   _nb_bank               (param._nb_bank      ),
+   _nb_port_read_by_bank  (param._nb_port_read ),
+   _nb_port_write_by_bank (param._nb_port_write)
+   {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","Begin");
+    test();
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End");
+  };
+
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~Parameters","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~Parameters","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters_msg_error.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters_msg_error.cpp	(revision 10)
@@ -0,0 +1,36 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Types.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"msg_error","Begin");
+
+    string msg = "";
+
+    return msg;
+
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"msg_error","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters_print.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters_print.cpp	(revision 10)
@@ -0,0 +1,51 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"print","Begin");
+
+    XML xml ("registerfile_multi_banked_glue");
+
+    xml.balise_open("registerfile_multi_banked_glue");
+    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("size_address "); xml.attribut("value",toString(_size_address )); xml.singleton_end();
+    xml.singleton_begin("size_word    "); xml.attribut("value",toString(_size_word    )); xml.singleton_end();
+    xml.singleton_begin("nb_bank      "); xml.attribut("value",toString(_nb_bank      )); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"print","End");
+    
+    return xml.get_body(depth);
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::registerfile_multi_banked::registerfile_multi_banked_glue::Parameters & x)
+  {
+    output_stream << x.print(0);
+    
+    return output_stream;
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue.cpp	(revision 10)
@@ -0,0 +1,118 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+#ifdef SYSTEMC
+  RegisterFile_Multi_Banked_Glue::RegisterFile_Multi_Banked_Glue (sc_module_name name,
+#else
+  RegisterFile_Multi_Banked_Glue::RegisterFile_Multi_Banked_Glue (string name,
+#endif
+#ifdef STATISTICS
+			      morpheo::behavioural::Parameters_Statistics             param_statistics,
+#endif
+			      morpheo::behavioural::generic::registerfile_multi_banked::registerfile_multi_banked_glue::Parameters param ):
+			      _name              (name)
+			      ,_param            (param)
+// #ifdef STATISTICS
+// 			      ,_param_statistics (param_statistics)
+// #endif
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Begin");
+
+#ifdef STATISTICS
+    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Allocation of statistics");
+
+    // Allocation of statistics
+    _stat = new Statistics (static_cast<string>(_name),
+			    param_statistics          ,
+			    param);
+#endif
+
+#ifdef VHDL_TESTBENCH
+    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Creation of a testbench");
+
+    // Creation of a testbench
+    //  -> port
+    //  -> clock's signals
+    _vhdl_testbench = new Vhdl_Testbench (_name);
+#endif
+
+#ifdef VHDL
+    // generate the vhdl
+    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Generate the vhdl");
+
+    vhdl();
+#endif
+
+#ifdef VHDL_TESTBENCH
+    _vhdl_testbench->set_clock    ("in_CLOCK",false);
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Allocation");
+
+    allocation ();
+
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Method - transition");
+
+    SC_METHOD (transition);
+    dont_initialize ();
+    sensitive_pos << *(in_CLOCK);
+//#endif
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+#endif    
+
+#endif
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","End");
+  };
+  
+  RegisterFile_Multi_Banked_Glue::~RegisterFile_Multi_Banked_Glue (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~RegisterFile_Multi_Banked_Glue","Begin");
+
+#ifdef VHDL_TESTBENCH
+    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"~RegisterFile_Multi_Banked_Glue","Generate Testbench  file");
+
+    // generate the test bench
+    _vhdl_testbench->generate_file();
+    delete _vhdl_testbench;
+#endif
+
+#ifdef STATISTICS
+    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"~RegisterFile_Multi_Banked_Glue","Generate Statistics file");
+
+    _stat->generate_file(statistics(0));
+    
+    delete _stat;
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"~RegisterFile_Multi_Banked_Glue","Deallocation");
+
+    deallocation ();
+#endif
+
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~RegisterFile_Multi_Banked_Glue","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_allocation.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_allocation.cpp	(revision 10)
@@ -0,0 +1,153 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  void RegisterFile_Multi_Banked_Glue::allocation (void)
+  {
+    string rename;
+
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"allocation","Begin");
+
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
+#endif
+
+    in_READ_IN_VAL       = new SC_IN (Tcontrol_t)           * [_param._nb_port_read];
+   out_READ_IN_ACK       = new SC_OUT(Tcontrol_t)           * [_param._nb_port_read];
+    in_READ_IN_ADDRESS   = new SC_IN (Taddress_t)           * [_param._nb_port_read];
+   out_READ_IN_DATA      = new SC_OUT(Tdata_t   )           * [_param._nb_port_read];
+    in_READ_SELECT_VAL   = new SC_IN (Tcontrol_t)           * [_param._nb_port_read];
+   out_READ_SELECT_ACK   = new SC_OUT(Tcontrol_t)           * [_param._nb_port_read];
+
+   for (uint32_t i=0; i<_param._nb_port_read; i++)
+     {
+       rename = " in_READ_IN_VAL_"+toString(i)+"      ";
+        in_READ_IN_VAL       [i] = new SC_IN (Tcontrol_t) (rename.c_str());
+
+       rename = "out_READ_IN_ACK_"+toString(i)+"      ";
+       out_READ_IN_ACK       [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
+
+       rename = " in_READ_IN_ADDRESS_"+toString(i)+"  ";
+        in_READ_IN_ADDRESS   [i] = new SC_IN (Taddress_t) (rename.c_str());
+
+       rename = "out_READ_IN_DATA_"+toString(i)+"     ";
+       out_READ_IN_DATA      [i] = new SC_OUT(Tdata_t   ) (rename.c_str());
+
+       rename = " in_READ_SELECT_VAL_"+toString(i)+"  ";
+        in_READ_SELECT_VAL   [i] = new SC_IN (Tcontrol_t) (rename.c_str());
+
+       rename = "out_READ_SELECT_ACK_"+toString(i)+"  ";
+       out_READ_SELECT_ACK   [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
+     }
+   						      
+   out_READ_OUT_VAL      = new SC_OUT(Tcontrol_t)          ** [_param._nb_bank];
+    in_READ_OUT_ACK      = new SC_IN (Tcontrol_t)          ** [_param._nb_bank];
+   out_READ_OUT_ADDRESS  = new SC_OUT(Taddress_t)          ** [_param._nb_bank];
+    in_READ_OUT_DATA     = new SC_IN (Tdata_t   )          ** [_param._nb_bank];
+
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      {
+	out_READ_OUT_VAL      [i] = new SC_OUT(Tcontrol_t)          * [_param._nb_port_read_by_bank];
+	 in_READ_OUT_ACK      [i] = new SC_IN (Tcontrol_t)          * [_param._nb_port_read_by_bank];
+	out_READ_OUT_ADDRESS  [i] = new SC_OUT(Taddress_t)          * [_param._nb_port_read_by_bank];
+	 in_READ_OUT_DATA     [i] = new SC_IN (Tdata_t   )          * [_param._nb_port_read_by_bank];
+
+	for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+	  {
+
+	    rename="out_READ_OUT_VAL_"+toString(i)+"_"+toString(j)+"      ";
+	    out_READ_OUT_VAL      [i][j] = new SC_OUT(Tcontrol_t) (rename.c_str());
+
+	    rename=" in_READ_OUT_ACK_"+toString(i)+"_"+toString(j)+"      ";
+	     in_READ_OUT_ACK      [i][j] = new SC_IN (Tcontrol_t) (rename.c_str());
+
+	    rename="out_READ_OUT_ADDRESS_"+toString(i)+"_"+toString(j)+"  ";
+	    out_READ_OUT_ADDRESS  [i][j] = new SC_OUT(Taddress_t) (rename.c_str());
+
+	    rename=" in_READ_OUT_DATA_"+toString(i)+"_"+toString(j)+"     ";
+	     in_READ_OUT_DATA     [i][j] = new SC_IN (Tdata_t   ) (rename.c_str());
+	  }
+      }
+
+    in_WRITE_IN_VAL      = new SC_IN (Tcontrol_t)           * [_param._nb_port_write];
+   out_WRITE_IN_ACK      = new SC_OUT(Tcontrol_t)           * [_param._nb_port_write];
+    in_WRITE_IN_ADDRESS  = new SC_IN (Taddress_t)           * [_param._nb_port_write];
+    in_WRITE_IN_DATA     = new SC_IN (Tdata_t   )           * [_param._nb_port_write];
+    in_WRITE_SELECT_VAL  = new SC_IN (Tcontrol_t)           * [_param._nb_port_write];
+   out_WRITE_SELECT_ACK  = new SC_OUT(Tcontrol_t)           * [_param._nb_port_write];
+
+   for (uint32_t i=0; i<_param._nb_port_write; i++)
+     {
+       rename = " in_WRITE_IN_VAL_"+toString(i)+"     ";
+        in_WRITE_IN_VAL      [i] = new SC_IN (Tcontrol_t) (rename.c_str());
+
+       rename = "out_WRITE_IN_ACK_"+toString(i)+"     ";
+       out_WRITE_IN_ACK      [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
+
+       rename = " in_WRITE_IN_ADDRESS_"+toString(i)+" ";
+        in_WRITE_IN_ADDRESS  [i] = new SC_IN (Taddress_t) (rename.c_str());
+
+       rename = " in_WRITE_IN_DATA_"+toString(i)+"    ";
+        in_WRITE_IN_DATA     [i] = new SC_IN (Tdata_t   ) (rename.c_str());
+
+       rename = " in_WRITE_SELECT_VAL_"+toString(i)+" ";
+        in_WRITE_SELECT_VAL   [i] = new SC_IN (Tcontrol_t) (rename.c_str());
+
+       rename = "out_WRITE_SELECT_ACK_"+toString(i)+" ";
+       out_WRITE_SELECT_ACK   [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
+     }
+   
+   
+   out_WRITE_OUT_VAL     = new SC_OUT(Tcontrol_t)          ** [_param._nb_bank];
+    in_WRITE_OUT_ACK     = new SC_IN (Tcontrol_t)          ** [_param._nb_bank];
+   out_WRITE_OUT_ADDRESS = new SC_OUT(Taddress_t)          ** [_param._nb_bank];
+   out_WRITE_OUT_DATA    = new SC_OUT(Tdata_t   )          ** [_param._nb_bank];
+
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      {
+	out_WRITE_OUT_VAL     [i] = new SC_OUT(Tcontrol_t)          * [_param._nb_port_write_by_bank];
+	 in_WRITE_OUT_ACK     [i] = new SC_IN (Tcontrol_t)          * [_param._nb_port_write_by_bank];
+	out_WRITE_OUT_ADDRESS [i] = new SC_OUT(Taddress_t)          * [_param._nb_port_write_by_bank];
+	out_WRITE_OUT_DATA    [i] = new SC_OUT(Tdata_t   )          * [_param._nb_port_write_by_bank];
+
+	for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+	  {
+	    rename = "out_WRITE_OUT_VAL_"+toString(i)+"_"+toString(j)+"     ";
+	    out_WRITE_OUT_VAL     [i][j] = new SC_OUT(Tcontrol_t) (rename.c_str());
+
+	    rename = " in_WRITE_OUT_ACK_"+toString(i)+"_"+toString(j)+"     ";
+	     in_WRITE_OUT_ACK     [i][j] = new SC_IN (Tcontrol_t) (rename.c_str());
+
+	    rename = "out_WRITE_OUT_ADDRESS_"+toString(i)+"_"+toString(j)+" ";
+	    out_WRITE_OUT_ADDRESS [i][j] = new SC_OUT(Taddress_t) (rename.c_str());
+
+	    rename = "out_WRITE_OUT_DATA_"+toString(i)+"_"+toString(j)+"    ";
+	    out_WRITE_OUT_DATA    [i][j] = new SC_OUT(Tdata_t   ) (rename.c_str());
+	  }
+      }
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"allocation","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_deallocation.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_deallocation.cpp	(revision 10)
@@ -0,0 +1,111 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+  void RegisterFile_Multi_Banked_Glue::deallocation (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"deallocation","Begin");
+
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    delete in_CLOCK;
+#endif
+
+   for (uint32_t i=0; i<_param._nb_port_read; i++)
+     {
+       delete  in_READ_IN_VAL       [i];
+       delete out_READ_IN_ACK       [i];
+       delete  in_READ_IN_ADDRESS   [i];
+       delete out_READ_IN_DATA      [i];
+       delete  in_READ_SELECT_VAL   [i];
+       delete out_READ_SELECT_ACK   [i];
+     }
+   						      
+   delete  in_READ_IN_VAL    ;
+   delete out_READ_IN_ACK    ;
+   delete  in_READ_IN_ADDRESS;
+   delete out_READ_IN_DATA   ;
+   delete  in_READ_SELECT_VAL;
+   delete out_READ_SELECT_ACK;
+
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      {
+	for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+	  {
+	    delete out_READ_OUT_VAL      [i][j];
+	    delete  in_READ_OUT_ACK      [i][j];
+	    delete out_READ_OUT_ADDRESS  [i][j];
+	    delete  in_READ_OUT_DATA     [i][j];
+	  }
+
+	delete out_READ_OUT_VAL      [i];
+	delete  in_READ_OUT_ACK      [i];
+	delete out_READ_OUT_ADDRESS  [i];
+	delete  in_READ_OUT_DATA     [i];
+      }
+
+   delete out_READ_OUT_VAL    ;
+   delete  in_READ_OUT_ACK    ;
+   delete out_READ_OUT_ADDRESS;
+   delete  in_READ_OUT_DATA   ;
+
+   for (uint32_t i=0; i<_param._nb_port_write; i++)
+     {
+       delete  in_WRITE_IN_VAL      [i];
+       delete out_WRITE_IN_ACK      [i];
+       delete  in_WRITE_IN_ADDRESS  [i];
+       delete  in_WRITE_IN_DATA     [i];
+       delete  in_WRITE_SELECT_VAL  [i];
+       delete out_WRITE_SELECT_ACK  [i];
+     }
+
+   delete  in_WRITE_IN_VAL    ;
+   delete out_WRITE_IN_ACK    ;
+   delete  in_WRITE_IN_ADDRESS;
+   delete  in_WRITE_IN_DATA   ;
+   delete  in_WRITE_SELECT_VAL;
+   delete out_WRITE_SELECT_ACK;
+   
+   for (uint32_t i=0; i<_param._nb_bank; i++)
+     {
+       for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+	 {
+	   delete out_WRITE_OUT_VAL     [i][j];
+	   delete  in_WRITE_OUT_ACK     [i][j];
+	   delete out_WRITE_OUT_ADDRESS [i][j];
+	   delete out_WRITE_OUT_DATA    [i][j];
+	 }
+       
+       delete out_WRITE_OUT_VAL     [i];
+       delete  in_WRITE_OUT_ACK     [i];
+       delete out_WRITE_OUT_ADDRESS [i];
+       delete out_WRITE_OUT_DATA    [i];
+     }
+      
+   delete out_WRITE_OUT_VAL    ;
+   delete  in_WRITE_OUT_ACK    ;
+   delete out_WRITE_OUT_ADDRESS;
+   delete out_WRITE_OUT_DATA   ;
+   
+   // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+   
+   log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"deallocation","End");
+  };
+  
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_statistics.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_statistics.cpp	(revision 10)
@@ -0,0 +1,35 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  string RegisterFile_Multi_Banked_Glue::statistics (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"statistics","Begin");
+
+    string txt = _stat->print(depth);
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"statistics","End");
+
+    return txt;
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_transition.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_transition.cpp	(revision 10)
@@ -0,0 +1,41 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  void RegisterFile_Multi_Banked_Glue::transition (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"transition","Begin");
+
+#ifdef STATISTICS
+    _stat->add();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    vhdl_testbench_transition ();
+#endif
+
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"transition","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl.cpp	(revision 10)
@@ -0,0 +1,41 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  void RegisterFile_Multi_Banked_Glue::vhdl (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl","Begin");
+    Vhdl vhdl (_name);
+
+    vhdl.set_library_work (_name + "_Pack");
+
+    vhdl_port        (vhdl);
+    vhdl_declaration (vhdl);
+    vhdl_body        (vhdl);
+
+    vhdl.generate_file();
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl","End");
+
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_body.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_body.cpp	(revision 10)
@@ -0,0 +1,31 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  void RegisterFile_Multi_Banked_Glue::vhdl_body (Vhdl & vhdl)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl_body","Begin");
+    vhdl.set_body ("");
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl_body","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_declaration.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_declaration.cpp	(revision 10)
@@ -0,0 +1,30 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  void RegisterFile_Multi_Banked_Glue::vhdl_declaration (Vhdl & vhdl)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl_declaration","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl_declaration","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_port.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_port.cpp	(revision 10)
@@ -0,0 +1,79 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+#ifdef VHDL_TESTBENCH
+# define VHDL_SET_PORT(name,direction,size) vhdl.set_port (name,direction,size); _vhdl_testbench->set_port (name,direction,size);
+#else
+# define VHDL_SET_PORT(name,direction,size) vhdl.set_port (name,direction,size);
+#endif
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  void RegisterFile_Multi_Banked_Glue::vhdl_port (Vhdl & vhdl)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl_port","Begin");
+
+   for (uint32_t i=0; i<_param._nb_port_read; i++)
+     {
+       VHDL_SET_PORT(" in_READ_IN_VAL_"+toString(i)+"      ", IN, 1);
+       VHDL_SET_PORT("out_READ_IN_ACK_"+toString(i)+"      ",OUT, 1);
+       VHDL_SET_PORT(" in_READ_IN_ADDRESS_"+toString(i)+"  ", IN, _param._size_address);
+       VHDL_SET_PORT("out_READ_IN_DATA_"+toString(i)+"     ",OUT, _param._size_word   );
+       VHDL_SET_PORT(" in_READ_SELECT_VAL_"+toString(i)+"  ", IN, 1);
+       VHDL_SET_PORT("out_READ_SELECT_ACK_"+toString(i)+"  ",OUT, 1);
+     }
+   						      
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      {
+	for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+	  {
+	    VHDL_SET_PORT("out_READ_OUT_VAL_"+toString(i)+"_"+toString(j)+"      ",OUT, 1);
+	    VHDL_SET_PORT(" in_READ_OUT_ACK_"+toString(i)+"_"+toString(j)+"      ", IN, 1);
+	    VHDL_SET_PORT("out_READ_OUT_ADDRESS_"+toString(i)+"_"+toString(j)+"  ",OUT, _param._size_address);
+	    VHDL_SET_PORT(" in_READ_OUT_DATA_"+toString(i)+"_"+toString(j)+"     ", IN, _param._size_word   );
+	  }
+      }
+
+   for (uint32_t i=0; i<_param._nb_port_write; i++)
+     {
+       VHDL_SET_PORT(" in_WRITE_IN_VAL_"+toString(i)+"     ", IN, 1);
+       VHDL_SET_PORT("out_WRITE_IN_ACK_"+toString(i)+"     ",OUT, 1);
+       VHDL_SET_PORT(" in_WRITE_IN_ADDRESS_"+toString(i)+" ", IN, _param._size_address);
+       VHDL_SET_PORT(" in_WRITE_IN_DATA_"+toString(i)+"    ", IN, _param._size_word   );
+       VHDL_SET_PORT(" in_WRITE_SELECT_VAL_"+toString(i)+" ", IN, 1);
+       VHDL_SET_PORT("out_WRITE_SELECT_ACK_"+toString(i)+" ",OUT, 1);
+     }
+   
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      {
+	for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+	  {
+	    VHDL_SET_PORT("out_WRITE_OUT_VAL_"+toString(i)+"_"+toString(j)+"     ",OUT, 1);
+	    VHDL_SET_PORT(" in_WRITE_OUT_ACK_"+toString(i)+"_"+toString(j)+"     ", IN, 1);
+	    VHDL_SET_PORT("out_WRITE_OUT_ADDRESS_"+toString(i)+"_"+toString(j)+" ",OUT, _param._size_address);
+	    VHDL_SET_PORT("out_WRITE_OUT_DATA_"+toString(i)+"_"+toString(j)+"    ",OUT, _param._size_word   );
+	  }
+      }
+
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl_port","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_testbench_label.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_testbench_label.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_testbench_label.cpp	(revision 10)
@@ -0,0 +1,33 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  void RegisterFile_Multi_Banked_Glue::vhdl_testbench_label (string label)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl_testbench_label","Begin");
+
+#ifdef VHDL_TESTBENCH
+    _vhdl_testbench->add_label(label);
+#endif
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl_testbench_label","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_testbench_transition.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_testbench_transition.cpp	(revision 10)
@@ -0,0 +1,86 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  void RegisterFile_Multi_Banked_Glue::vhdl_testbench_transition ()
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl_testbench_transition","Begin");
+
+    // Evaluation before read the ouput signal
+    sc_start(0);
+
+    // In order with file RegisterFile_Multi_Banked_Glue_vhdl_testbench_port.cpp
+    // Warning : if a output depend of a subcomponent, take directly the port of subcomponent
+    // (because we have no control on the ordonnancer's policy)
+
+    //_vhdl_testbench->add_input (PORT_READ( in_NRESET));
+    
+   for (uint32_t i=0; i<_param._nb_port_read; i++)
+     {
+       _vhdl_testbench->add_input (PORT_READ( in_READ_IN_VAL       [i]));
+       _vhdl_testbench->add_output(PORT_READ(out_READ_IN_ACK       [i]));
+       _vhdl_testbench->add_input (PORT_READ( in_READ_IN_ADDRESS   [i]));
+       _vhdl_testbench->add_input (PORT_READ(out_READ_IN_DATA      [i]));
+       _vhdl_testbench->add_input (PORT_READ( in_READ_SELECT_VAL   [i]));
+       _vhdl_testbench->add_output(PORT_READ(out_READ_SELECT_ACK   [i]));
+     }
+   						      
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+	{
+	  _vhdl_testbench->add_output(PORT_READ(out_READ_OUT_VAL      [i][j]));
+	  _vhdl_testbench->add_input (PORT_READ( in_READ_OUT_ACK      [i][j]));
+	  _vhdl_testbench->add_output(PORT_READ(out_READ_OUT_ADDRESS  [i][j]));
+	  _vhdl_testbench->add_input (PORT_READ( in_READ_OUT_DATA     [i][j]));
+	}
+
+   for (uint32_t i=0; i<_param._nb_port_write; i++)
+     {
+       _vhdl_testbench->add_input (PORT_READ( in_WRITE_IN_VAL      [i]));
+       _vhdl_testbench->add_output(PORT_READ(out_WRITE_IN_ACK      [i]));
+       _vhdl_testbench->add_input (PORT_READ( in_WRITE_IN_ADDRESS  [i]));
+       _vhdl_testbench->add_input (PORT_READ( in_WRITE_IN_DATA     [i]));
+       _vhdl_testbench->add_input (PORT_READ( in_WRITE_SELECT_VAL  [i]));
+       _vhdl_testbench->add_output(PORT_READ(out_WRITE_SELECT_ACK  [i]));
+     }
+   
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+	{
+	  _vhdl_testbench->add_output(PORT_READ(out_WRITE_OUT_VAL     [i][j]));
+	  _vhdl_testbench->add_input (PORT_READ( in_WRITE_OUT_ACK     [i][j]));
+	  _vhdl_testbench->add_output(PORT_READ(out_WRITE_OUT_ADDRESS [i][j]));
+	  _vhdl_testbench->add_output(PORT_READ(out_WRITE_OUT_DATA    [i][j]));
+	}
+    
+
+    // add_test :
+    //  - True  : the cycle must be compare with the output of systemC
+    //  - False : no test
+    _vhdl_testbench->add_test(true);
+
+    _vhdl_testbench->new_cycle (); // always at the end
+
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"vhdl_testbench_transition","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics.cpp	(revision 10)
@@ -0,0 +1,42 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  Statistics::Statistics (string                                      name                       ,
+			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
+			  Parameters                                  parameters
+			  ) :
+    morpheo::behavioural::Statistics(name                  ,
+				     parameters_statistics ),
+    _parameters(parameters)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Statistics","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Statistics","End");
+  };
+  
+  Statistics::~Statistics () 
+  { 
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~Statistics","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~Statistics","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics_add.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics_add.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics_add.cpp	(revision 10)
@@ -0,0 +1,33 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  void Statistics::add ()
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"add","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"add","End");
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics_print.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics_print.cpp	(revision 10)
@@ -0,0 +1,51 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  string Statistics::print (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"print","Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "<registerfile_multi_banked_glue name=\"" << _name << "\" >" << endl
+        << print_body(depth+1) << endl
+	<< tab << "</registerfile_multi_banked_glue>" << endl;
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"print","End");
+
+    return msg.str();
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::registerfile_multi_banked::registerfile_multi_banked_glue::Statistics & x)
+  {
+    output_stream << x.print(0);
+
+    return output_stream;
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics_print_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics_print_body.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Statistics_print_body.cpp	(revision 10)
@@ -0,0 +1,41 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+namespace registerfile_multi_banked_glue {
+
+
+  string Statistics::print_body (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"print_body","Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "";
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"print_body","End");
+
+    return msg.str();
+  };
+
+}; // end namespace registerfile_multi_banked_glue
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile	(revision 10)
@@ -0,0 +1,29 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_MORPHEO			= ../../../..
+
+LIBRARY				= $(RegisterFile_Multi_Banked_LIBRARY)
+
+DIR_LIBRARY			= $(RegisterFile_Multi_Banked_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: RegisterFile_Multi_Banked_library
+
+library_clean			: RegisterFile_Multi_Banked_library_clean
+
+include                         ../Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.Synthesis
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/configuration.cfg	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/configuration.cfg	(revision 10)
@@ -0,0 +1,6 @@
+RegisterFile_Multi_Banked
+2	8 	*2	# nb_port_read
+2	4	*2	# nb_port_write
+64	256 	*2	# nb_word
+32	32	*2	# size_word
+2	2	*2	# nb_bank
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h	(revision 10)
@@ -0,0 +1,26 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::generic;
+
+using namespace morpheo::behavioural::generic::registerfile_multi_banked;
+
+void test    (string name,
+	      morpheo::behavioural::generic::registerfile_multi_banked::Parameters param);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/main.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/main.cpp	(revision 10)
@@ -0,0 +1,70 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/SelfTest/include/test.h"
+
+#define NB_PARAMS 5
+
+void usage (int argc, char * argv[])
+{
+  cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
+       << "list_params is :" << endl
+       << " - nb_port_read  (unsigned int)" << endl
+       << " - nb_port_write (unsigned int)" << endl
+       << " - nb_word       (unsigned int)" << endl
+       << " - size_word     (unsigned int)" << endl
+       << " - nb_bank       (unsigned int)" << endl
+       << "" << endl;
+
+  for (int i=0; i<argc; i++)
+    cerr << argv[i] << " ";
+  cerr << endl;
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  if (argc < 2+NB_PARAMS)
+    usage (argc, argv);
+
+  const string   name          = argv[1];
+  const uint32_t nb_port_read  = atoi(argv[2]);
+  const uint32_t nb_port_write = atoi(argv[3]);
+  const uint32_t nb_word       = atoi(argv[4]);
+  const uint32_t size_word     = atoi(argv[5]);
+  const uint32_t nb_bank       = atoi(argv[6]);
+
+  try 
+    {
+      morpheo::behavioural::generic::registerfile_multi_banked::Parameters param (nb_port_read ,
+										  nb_port_write,
+										  nb_word      ,
+										  size_word    ,
+										  nb_bank      );
+      
+      cout << param.print(1);
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      cout << "<" << name << "> : " <<  error.what ();
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      cerr << "<" << name << "> : This test must generate a error" << endl;
+      exit (EXIT_FAILURE);
+    }
+
+  return (EXIT_SUCCESS);
+}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp	(revision 10)
@@ -0,0 +1,177 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#define NB_ITERATION 1
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/SelfTest/include/test.h"
+#include "Include/Test.h"
+
+void test (string name,
+	   morpheo::behavioural::generic::registerfile_multi_banked::Parameters _param)
+{
+  cout << "<" << name << "> : Simulation SystemC" << endl;
+
+  RegisterFile_Multi_Banked * _RegisterFile_Multi_Banked = new RegisterFile_Multi_Banked (name.c_str(),
+#ifdef STATISTICS
+					     morpheo::behavioural::Parameters_Statistics(5,50),
+#endif
+					     _param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  sc_clock                               * CLOCK;
+  sc_signal<Tcontrol_t>                  * NRESET       ;
+			                   
+    // ----- Interface Read                
+  sc_signal<Tcontrol_t>                 ** READ_VAL     ;
+  sc_signal<Tcontrol_t>                 ** READ_ACK     ;
+  sc_signal<Taddress_t>                 ** READ_ADDRESS ;
+  sc_signal<Tdata_t>                    ** READ_DATA    ;
+			                   
+    // ----- Interface Write               
+  sc_signal<Tcontrol_t>                 ** WRITE_VAL    ;
+  sc_signal<Tcontrol_t>                 ** WRITE_ACK    ;
+  sc_signal<Taddress_t>                 ** WRITE_ADDRESS;
+  sc_signal<Tdata_t>                    ** WRITE_DATA   ;
+
+  string rename;
+
+  CLOCK  = new sc_clock ("clock", 1.0, 0.5);
+
+  NRESET = new sc_signal<Tcontrol_t> ("in_NRESET");
+
+  // ----- Interface Read
+  READ_VAL     = new sc_signal<Tcontrol_t>     * [_param._nb_port_read];
+  READ_ACK     = new sc_signal<Tcontrol_t>     * [_param._nb_port_read];
+  READ_ADDRESS = new sc_signal<Taddress_t>     * [_param._nb_port_read];
+  READ_DATA    = new sc_signal<Tdata_t>        * [_param._nb_port_read];
+  
+  for (uint32_t i=0; i<_param._nb_port_read; i++)
+    {
+	rename = "READ_VAL_"    +toString(i);
+	READ_VAL     [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+	rename = "READ_ACK_"    +toString(i);
+	READ_ACK     [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+	rename = "READ_ADDRESS_"+toString(i);
+	READ_ADDRESS [i] = new sc_signal<Taddress_t> (rename.c_str());
+	rename = "READ_DATA_"   +toString(i);
+	READ_DATA    [i] = new sc_signal<Tdata_t>    (rename.c_str());
+      }
+
+    // ----- Interface Write
+  WRITE_VAL     = new sc_signal<Tcontrol_t>     * [_param._nb_port_write];
+  WRITE_ACK     = new sc_signal<Tcontrol_t>     * [_param._nb_port_write];
+  WRITE_ADDRESS = new sc_signal<Taddress_t>     * [_param._nb_port_write];
+  WRITE_DATA    = new sc_signal<Tdata_t>        * [_param._nb_port_write];
+  
+  for (uint32_t i=0; i<_param._nb_port_write; i++)
+    {
+	rename = "WRITE_VAL_"    +toString(i);
+	WRITE_VAL     [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+	rename = "WRITE_ACK_"    +toString(i);
+	WRITE_ACK     [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+	rename = "WRITE_ADDRESS_"+toString(i);
+	WRITE_ADDRESS [i] = new sc_signal<Taddress_t> (rename.c_str());
+	rename = "WRITE_DATA_"   +toString(i);
+	WRITE_DATA    [i] = new sc_signal<Tdata_t>    (rename.c_str());
+      }
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  cout << "<" << name << "> Instanciation of _RegisterFile_Multi_Banked" << endl;
+  
+  (*(_RegisterFile_Multi_Banked->in_CLOCK ))        (*(CLOCK ));
+  (*(_RegisterFile_Multi_Banked->in_NRESET))        (*(NRESET));
+  
+  for (uint32_t i=0; i<_param._nb_port_read; i++)
+    {
+      (*(_RegisterFile_Multi_Banked-> in_READ_VAL      [i])) (*(READ_VAL      [i]));
+      (*(_RegisterFile_Multi_Banked->out_READ_ACK      [i])) (*(READ_ACK      [i]));
+      (*(_RegisterFile_Multi_Banked-> in_READ_ADDRESS  [i])) (*(READ_ADDRESS  [i]));
+      (*(_RegisterFile_Multi_Banked->out_READ_DATA     [i])) (*(READ_DATA     [i]));
+    }
+  for (uint32_t i=0; i<_param._nb_port_write; i++)
+    {
+      (*(_RegisterFile_Multi_Banked-> in_WRITE_VAL     [i])) (*(WRITE_VAL     [i]));
+      (*(_RegisterFile_Multi_Banked->out_WRITE_ACK     [i])) (*(WRITE_ACK     [i]));
+      (*(_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS [i])) (*(WRITE_ADDRESS [i]));
+      (*(_RegisterFile_Multi_Banked-> in_WRITE_DATA    [i])) (*(WRITE_DATA    [i]));
+    }
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  cout << "<" << name << "> Start Simulation ............" << endl;
+  // Initialisation
+
+  const uint32_t seed = 0;
+//const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  sc_start(0);
+  _RegisterFile_Multi_Banked->vhdl_testbench_label("Initialisation");
+  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
+
+
+  _RegisterFile_Multi_Banked->vhdl_testbench_label("Loop of Test");
+  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl;
+
+  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
+    {
+      _RegisterFile_Multi_Banked->vhdl_testbench_label("Iteration "+toString(iteration));
+
+      sc_start(1);
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  cout << "<" << name << "> ............ Stop Simulation" << endl;
+
+  delete CLOCK;
+  delete NRESET;
+
+    // ----- Interface Read
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      {
+	delete READ_VAL     [i];
+	delete READ_ACK     [i];
+	delete READ_ADDRESS [i];
+	delete READ_DATA    [i];
+      }
+
+    delete READ_VAL    ;
+    delete READ_ACK    ;
+    delete READ_ADDRESS;
+    delete READ_DATA   ;
+
+    // ----- Interface Write
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	delete WRITE_VAL     [i];
+	delete WRITE_ACK     [i];
+	delete WRITE_ADDRESS [i];
+	delete WRITE_DATA    [i];
+      }
+
+    delete WRITE_VAL    ;
+    delete WRITE_ACK    ;
+    delete WRITE_ADDRESS;
+    delete WRITE_DATA   ;
+
+#endif
+
+  delete _RegisterFile_Multi_Banked;
+}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/VERSION
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/VERSION	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/VERSION	(revision 10)
@@ -0,0 +1,1 @@
+v0.4
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h	(revision 10)
@@ -0,0 +1,54 @@
+#ifndef morpheo_behavioural_generic_registerfile_multi_banked_Parameters_h
+#define morpheo_behavioural_generic_registerfile_multi_banked_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include <math.h>
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t _nb_port_read ;
+  public : const uint32_t _nb_port_write;
+  public : const uint32_t _nb_word      ;
+  public : const uint32_t _size_word    ;
+  public : const uint32_t _nb_bank      ;
+
+  public : const uint32_t _size_address ;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t nb_port_read ,
+			uint32_t nb_port_write,
+			uint32_t nb_word      ,
+			uint32_t size_word    ,
+			uint32_t nb_bank      );
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public : string msg_error (void);
+
+  public :        string   print      (uint32_t depth);
+  public : friend ostream& operator<< (ostream& output_stream,
+				       morpheo::behavioural::generic::registerfile_multi_banked::Parameters & x);
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h	(revision 10)
@@ -0,0 +1,135 @@
+#ifndef morpheo_behavioural_generic_registerfile_multi_banked_RegisterFile_Multi_Banked_h
+#define morpheo_behavioural_generic_registerfile_multi_banked_RegisterFile_Multi_Banked_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Types.h"
+#ifdef STATISTICS
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Statistics.h"
+#endif
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#ifdef VHDL_TESTBENCH
+#include "Behavioural/include/Vhdl_Testbench.h"
+#endif
+
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  class RegisterFile_Multi_Banked 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const string     _name;
+
+  protected : const Parameters _param;
+//#ifdef STATISTICS
+//  protected : const morpheo::behavioural::Parameters_Statistics _param_statistics;
+//#endif
+
+#ifdef STATISTICS
+  private   : Statistics                     * _stat;
+#endif
+
+#ifdef VHDL_TESTBENCH
+  private   : Vhdl_Testbench                 * _vhdl_testbench;
+#endif
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK        ;
+  public    : SC_IN       (Tcontrol_t)      *  in_NRESET       ;
+
+    // ----- Interface Read
+  public    : SC_IN       (Tcontrol_t)     **  in_READ_VAL     ;
+  public    : SC_OUT      (Tcontrol_t)     ** out_READ_ACK     ;
+  public    : SC_IN       (Taddress_t)     **  in_READ_ADDRESS ;
+  public    : SC_OUT      (Tdata_t)        ** out_READ_DATA    ;
+
+    // ----- Interface Write
+  public    : SC_IN       (Tcontrol_t)     **  in_WRITE_VAL    ;
+  public    : SC_OUT      (Tcontrol_t)     ** out_WRITE_ACK    ;
+  public    : SC_IN       (Taddress_t)     **  in_WRITE_ADDRESS;
+  public    : SC_IN       (Tdata_t)        **  in_WRITE_DATA   ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#endif
+
+    // -----[ methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (RegisterFile_Multi_Banked);
+#endif
+  public  :          RegisterFile_Multi_Banked              (
+#ifdef SYSTEMC
+							     sc_module_name                              name,
+#else					       
+							     string                                      name,
+#endif					       
+#ifdef STATISTICS
+							     morpheo::behavioural::Parameters_Statistics param_statistics,
+#endif
+							     Parameters                                  param );
+    
+  public  :          RegisterFile_Multi_Banked              (Parameters param );
+  public  :          ~RegisterFile_Multi_Banked             (void);
+					       
+#ifdef SYSTEMC				       
+  private : void     allocation                (void);
+  private : void     deallocation              (void);
+					       
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  public  : void     transition                (void);
+//#endif
+#endif					       
+#ifdef STATISTICS
+  public  : string   statistics                (uint32_t depth);
+#endif
+					       
+#if VHDL				       
+  public  : void     vhdl                      (void);
+  private : void     vhdl_port                 (Vhdl & vhdl);
+  private : void     vhdl_declaration          (Vhdl & vhdl);
+  private : void     vhdl_body                 (Vhdl & vhdl);
+#endif					       
+					       
+#ifdef VHDL_TESTBENCH			       
+  private : void     vhdl_testbench_transition (void);
+#endif
+  public  : void     vhdl_testbench_label      (string label);
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h	(revision 10)
@@ -0,0 +1,55 @@
+#ifdef STATISTICS
+#ifndef morpheo_behavioural_generic_registerfile_multi_banked_Statistics_h
+#define morpheo_behavioural_generic_registerfile_multi_banked_Statistics_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "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_Multi_Banked/include/Parameters.h"
+
+//using namespace morpheo::behavioural::generic::group;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  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 registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo
+
+#endif
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h	(revision 10)
@@ -0,0 +1,27 @@
+#ifndef morpheo_behavioural_generic_registerfile_multi_banked_Type_h
+#define morpheo_behavioural_generic_registerfile_multi_banked_Type_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Include/Types.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+  typedef uint32_t Taddress_t;
+  typedef uint32_t Tdata_t;
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp	(revision 10)
@@ -0,0 +1,56 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  Parameters::Parameters (uint32_t nb_port_read ,
+			  uint32_t nb_port_write,
+			  uint32_t nb_word      ,
+			  uint32_t size_word    ,
+			  uint32_t nb_bank      ):
+    _nb_port_read  (nb_port_read ),
+    _nb_port_write (nb_port_write),
+    _nb_word       (nb_word      ),
+    _size_word     (size_word    ),
+    _nb_bank       (nb_bank      ),
+    _size_address  (static_cast<uint32_t>(ceil(log2(_nb_word))))
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin");
+    test();
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","End");
+  };
+  
+  Parameters::Parameters (Parameters & param):
+    _nb_port_read  (param._nb_port_read ),
+    _nb_port_write (param._nb_port_write),
+    _nb_word       (param._nb_word      ),
+    _size_word     (param._size_word    ),
+    _nb_bank       (param._nb_bank      ),
+    _size_address  (param._size_address )
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin");
+    test();
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","End");
+  };
+
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~Parameters","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~Parameters","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_msg_error.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_msg_error.cpp	(revision 10)
@@ -0,0 +1,86 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Types.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"msg_error","Begin");
+
+    string msg = "";
+
+    if ((_nb_port_read  * 
+	 _nb_port_write * 
+	 _nb_word       *
+	 _size_word     *
+	 _nb_bank       ) == 0)
+      {
+        msg += "  - All paramameters must be > 0\n";
+      }
+
+    if (not is_multiple(_nb_port_read,_nb_bank))
+      {
+        msg += "  - nb_port_read must be a multiple of nb_bank\n";
+        msg +=  "    * nb_port_read                    : " + toString(_nb_port_read ) + "\n";
+	msg +=  "    * nb_bank                         : " + toString(_nb_bank      ) + "\n";
+      }
+
+    if (not is_multiple(_nb_port_write,_nb_bank))
+      {
+        msg += "  - nb_port_write must be a multiple of nb_bank\n";
+        msg +=  "    * nb_port_write                   : " + toString(_nb_port_write) + "\n";
+	msg +=  "    * nb_bank                         : " + toString(_nb_bank      ) + "\n";
+      }
+
+    if (not is_multiple(_nb_word,_nb_bank))
+      {
+        msg += "  - nb_word must be a multiple of nb_bank\n";
+        msg +=  "    * nb_word                         : " + toString(_nb_word      ) + "\n";
+	msg +=  "    * nb_bank                         : " + toString(_nb_bank      ) + "\n";
+      }
+
+    if ((8*sizeof(Tdata_t)) < _size_word)
+      {
+        msg += "  - type \"Tdata_t\" is too little to the size defined by size_word\n";
+        msg +=  "    * size_word                       : " + toString(_size_word) + "\n";
+	msg +=  "    * Tdata_t                   (bits): " + toString(8*(sizeof(Tdata_t))) + "\n";
+      }
+
+    if ((8*sizeof(Taddress_t)) < log2(_nb_word))
+      {
+        msg += "  - type \"Taddress_t\" is too little to the size defined by nb_word\n";
+        msg +=  "    * nb_word                         : " + toString(_nb_word)    + "\n";
+	msg +=  "      > size                   (bits) : " + toString(log2(_nb_word)) + "\n";
+	msg +=  "    * Taddress_t               (bits) : " + toString(8*(sizeof(Taddress_t))) + "\n";
+      }
+
+    if (_nb_word < 2)
+      {
+        msg += "  - nb_word must be >= 2\n";
+        msg += "    * nb_word                         : " + toString(_nb_word)    + "\n";
+      }
+
+
+    return msg;
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"msg_error","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_print.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_print.cpp	(revision 10)
@@ -0,0 +1,49 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print","Begin");
+
+    XML xml ("registerfile_multi_banked");
+
+    xml.balise_open("registerfile_multi_banked");
+    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_word      "); xml.attribut("value",toString(_nb_word      )); xml.singleton_end();
+    xml.singleton_begin("size_word    "); xml.attribut("value",toString(_size_word    )); xml.singleton_end();
+    xml.singleton_begin("nb_bank      "); xml.attribut("value",toString(_nb_bank      )); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print","End");
+    
+    return xml.get_body(depth);
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::registerfile_multi_banked::Parameters & x)
+  {
+    output_stream << x.print(0);
+    
+    return output_stream;
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp	(revision 10)
@@ -0,0 +1,114 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+#ifdef SYSTEMC
+  RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (sc_module_name name,
+#else
+  RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (string name,
+#endif
+#ifdef STATISTICS
+			      morpheo::behavioural::Parameters_Statistics             param_statistics,
+#endif
+			      morpheo::behavioural::generic::registerfile_multi_banked::Parameters param ):
+			      _name              (name)
+			      ,_param            (param)
+// #ifdef STATISTICS
+// 			      ,_param_statistics (param_statistics)
+// #endif
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Begin");
+
+#ifdef STATISTICS
+    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Allocation of statistics");
+
+    // Allocation of statistics
+    _stat = new Statistics (static_cast<string>(_name),
+			    param_statistics          ,
+			    param);
+#endif
+
+#ifdef VHDL_TESTBENCH
+    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Creation of a testbench");
+
+    // Creation of a testbench
+    //  -> port
+    //  -> clock's signals
+    _vhdl_testbench = new Vhdl_Testbench (_name);
+    //vhdl_testbench_port           ();
+    _vhdl_testbench->set_clock    ("in_CLOCK",true);
+#endif
+
+#ifdef VHDL
+    // generate the vhdl
+    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Generate the vhdl");
+
+    vhdl();
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Allocation");
+
+    allocation ();
+
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Method - transition");
+
+    SC_METHOD (transition);
+    dont_initialize ();
+    sensitive_pos << *(in_CLOCK);
+//#endif
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+#endif    
+
+#endif
+    log_printf(FUNC,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","End");
+  };
+  
+  RegisterFile_Multi_Banked::~RegisterFile_Multi_Banked (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Begin");
+
+#ifdef VHDL_TESTBENCH
+    log_printf(INFO,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Generate Testbench  file");
+
+    // generate the test bench
+    _vhdl_testbench->generate_file();
+    delete _vhdl_testbench;
+#endif
+
+#ifdef STATISTICS
+    log_printf(INFO,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Generate Statistics file");
+
+    _stat->generate_file(statistics(0));
+    
+    delete _stat;
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Deallocation");
+
+    deallocation ();
+#endif
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp	(revision 10)
@@ -0,0 +1,80 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::allocation (void)
+  {
+    string rename;
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"allocation","Begin");
+
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
+//#endif
+    in_NRESET = new SC_IN (Tcontrol_t) ("in_NRESET");
+
+    // ----- 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];
+
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      {
+	rename =  "in_READ_VAL_"    +toString(i);
+	 in_READ_VAL     [i] = new SC_IN       (Tcontrol_t) (rename.c_str());
+
+	rename = "out_READ_ACK_"    +toString(i);
+	out_READ_ACK     [i] = new SC_OUT      (Tcontrol_t) (rename.c_str());
+
+	rename =  "in_READ_ADDRESS_"+toString(i);
+	 in_READ_ADDRESS [i] = new SC_IN       (Taddress_t) (rename.c_str());
+
+	rename = "out_READ_DATA_"   +toString(i);
+	out_READ_DATA    [i] = new SC_OUT      (Tdata_t)    (rename.c_str());
+      }
+
+    // ----- 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];
+
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	rename =  "in_WRITE_VAL_"    +toString(i);
+	 in_WRITE_VAL     [i] = new SC_IN       (Tcontrol_t) (rename.c_str());
+
+	rename = "out_WRITE_ACK_"    +toString(i);
+	out_WRITE_ACK     [i] = new SC_OUT      (Tcontrol_t) (rename.c_str());
+
+	rename =  "in_WRITE_ADDRESS_"+toString(i);
+	 in_WRITE_ADDRESS [i] = new SC_IN       (Taddress_t) (rename.c_str());
+
+	rename =  "in_WRITE_DATA_"   +toString(i);
+	 in_WRITE_DATA    [i] = new SC_IN       (Tdata_t)    (rename.c_str());
+      }
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"allocation","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp	(revision 10)
@@ -0,0 +1,64 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::deallocation (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"deallocation","Begin");
+
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    delete in_CLOCK;
+//#endif
+    delete in_NRESET;
+
+    // ----- Interface Read
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      {
+	delete  in_READ_VAL     [i];
+	delete out_READ_ACK     [i];
+	delete  in_READ_ADDRESS [i];
+	delete out_READ_DATA    [i];
+      }
+
+    delete  in_READ_VAL    ;
+    delete out_READ_ACK    ;
+    delete  in_READ_ADDRESS;
+    delete out_READ_DATA   ;
+
+    // ----- Interface Write
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	delete  in_WRITE_VAL     [i];
+	delete out_WRITE_ACK     [i];
+	delete  in_WRITE_ADDRESS [i];
+	delete  in_WRITE_DATA    [i];
+      }
+
+    delete  in_WRITE_VAL    ;
+    delete out_WRITE_ACK    ;
+    delete  in_WRITE_ADDRESS;
+    delete  in_WRITE_DATA   ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"deallocation","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics.cpp	(revision 10)
@@ -0,0 +1,33 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  string RegisterFile_Multi_Banked::statistics (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"statistics","Begin");
+
+    string txt = _stat->print(depth);
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked,"statistics","End");
+
+    return txt;
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_transition.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_transition.cpp	(revision 10)
@@ -0,0 +1,39 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::transition (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"transition","Begin");
+
+#ifdef STATISTICS
+    _stat->add();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    vhdl_testbench_transition ();
+#endif
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"transition","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl.cpp	(revision 10)
@@ -0,0 +1,39 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::vhdl (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl","Begin");
+    Vhdl vhdl (_name);
+
+    vhdl.set_library_work (_name + "_Pack");
+
+    vhdl_port        (vhdl);
+    vhdl_declaration (vhdl);
+    vhdl_body        (vhdl);
+
+    vhdl.generate_file();
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl","End");
+
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp	(revision 10)
@@ -0,0 +1,29 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::vhdl_body (Vhdl & vhdl)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_body","Begin");
+    vhdl.set_body ("");
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_body","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_declaration.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_declaration.cpp	(revision 10)
@@ -0,0 +1,28 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::vhdl_declaration (Vhdl & vhdl)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_declaration","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_declaration","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_port.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_port.cpp	(revision 10)
@@ -0,0 +1,55 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+#ifdef VHDL_TESTBENCH
+# define VHDL_SET_PORT(name,direction,size) vhdl.set_port (name,direction,size); _vhdl_testbench->set_port (name,direction,size);
+#else
+# define VHDL_SET_PORT(name,direction,size) vhdl.set_port (name,direction,size);
+#endif
+
+  void RegisterFile_Multi_Banked::vhdl_port (Vhdl & vhdl)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_port","Begin");
+
+    vhdl.set_port (" in_CLOCK" , IN, 1);
+    VHDL_SET_PORT (" in_NRESET", IN, 1);
+
+    // ----- Interface Read
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      {
+	VHDL_SET_PORT(" in_READ_VAL_"+toString(i)+"     ", IN, 1);
+	VHDL_SET_PORT("out_READ_ACK_"+toString(i)+"     ",OUT, 1);
+	VHDL_SET_PORT(" in_READ_ADDRESS_"+toString(i)+" ", IN, static_cast<uint32_t>(log2(_param._nb_word)));
+	VHDL_SET_PORT("out_READ_DATA_"+toString(i)+"    ",OUT, _param._size_word);
+      }
+
+    // ----- Interface Write
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	VHDL_SET_PORT(" in_WRITE_VAL_"+toString(i)+"    ", IN, 1);
+	VHDL_SET_PORT("out_WRITE_ACK_"+toString(i)+"    ",OUT, 1);
+	VHDL_SET_PORT(" in_WRITE_ADDRESS_"+toString(i)+"", IN, static_cast<uint32_t>(log2(_param._nb_word)));
+	VHDL_SET_PORT(" in_WRITE_DATA_"+toString(i)+"   ", IN, _param._size_word);			     
+      }
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_port","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_label.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_label.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_label.cpp	(revision 10)
@@ -0,0 +1,31 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::vhdl_testbench_label (string label)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_testbench_label","Begin");
+
+#ifdef VHDL_TESTBENCH
+    _vhdl_testbench->add_label(label);
+#endif
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_testbench_label","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_transition.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_transition.cpp	(revision 10)
@@ -0,0 +1,64 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::vhdl_testbench_transition ()
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_testbench_transition","Begin");
+
+    // Evaluation before read the ouput signal
+    sc_start(0);
+
+    // In order with file RegisterFile_Multi_Banked_vhdl_testbench_port.cpp
+    // Warning : if a output depend of a subcomponent, take directly the port of subcomponent
+    // (because we have no control on the ordonnancer's policy)
+
+    _vhdl_testbench->add_input (PORT_READ( in_NRESET));
+
+    // ----- Interface Read
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      {
+	_vhdl_testbench->add_input (PORT_READ(  in_READ_VAL     [i]));
+	_vhdl_testbench->add_output(PORT_READ( out_READ_ACK     [i]));
+	_vhdl_testbench->add_input (PORT_READ(  in_READ_ADDRESS [i]));
+	_vhdl_testbench->add_output(PORT_READ( out_READ_DATA    [i]));
+      }
+
+    // ----- Interface Write
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	_vhdl_testbench->add_input (PORT_READ(  in_WRITE_VAL     [i]));
+	_vhdl_testbench->add_output(PORT_READ( out_WRITE_ACK     [i]));
+	_vhdl_testbench->add_input (PORT_READ(  in_WRITE_ADDRESS [i]));
+	_vhdl_testbench->add_input (PORT_READ(  in_WRITE_DATA    [i]));
+      }
+
+    
+    // add_test :
+    //  - True  : the cycle must be compare with the output of systemC
+    //  - False : no test
+    _vhdl_testbench->add_test(true);
+
+    _vhdl_testbench->new_cycle (); // always at the end
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_testbench_transition","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics.cpp	(revision 10)
@@ -0,0 +1,40 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Statistics.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  Statistics::Statistics (string                                      name                       ,
+			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
+			  Parameters                                  parameters
+			  ) :
+    morpheo::behavioural::Statistics(name                  ,
+				     parameters_statistics ),
+    _parameters(parameters)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Statistics","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Statistics","End");
+  };
+  
+  Statistics::~Statistics () 
+  { 
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~Statistics","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~Statistics","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_add.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_add.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_add.cpp	(revision 10)
@@ -0,0 +1,31 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  void Statistics::add ()
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"add","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,"add","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print.cpp	(revision 10)
@@ -0,0 +1,49 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  string Statistics::print (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print","Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "<registerfile_multi_banked name=\"" << _name << "\" >" << endl
+        << print_body(depth+1) << endl
+	<< tab << "</registerfile_multi_banked>" << endl;
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print","End");
+
+    return msg.str();
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::registerfile_multi_banked::Statistics & x)
+  {
+    output_stream << x.print(0);
+
+    return output_stream;
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print_body.cpp	(revision 10)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print_body.cpp	(revision 10)
@@ -0,0 +1,39 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile_Multi_Banked/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile_multi_banked {
+
+
+  string Statistics::print_body (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print_body","Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "";
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print_body","End");
+
+    return msg.str();
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
