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
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile	(revision 10)
@@ -0,0 +1,23 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_MORPHEO			= ../../../..
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libPriority_Fixed.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/Select/Select_Priority_Fixed/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile.deps	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/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
+
+Priority_Fixed			= yes
+
+#-----[ Library ]------------------------------------------
+Priority_Fixed_LIBRARY		= 	-lPriority_Fixed	\
+					$(Behavioural_LIBRARY)	
+
+Priority_Fixed_DIR_LIBRARY		=	-L$(DIR_MORPHEO)/Behavioural/Generic/Select/Priority_Fixed/lib	\
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+Priority_Fixed_library		: 
+				@$(MAKE) Behavioural_library
+				@$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Select/Priority_Fixed --makefile=Makefile 
+	
+Priority_Fixed_library_clean	: 
+				@$(MAKE) Behavioural_library_clean
+				@$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Select/Priority_Fixed --makefile=Makefile clean
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile	(revision 10)
@@ -0,0 +1,29 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_MORPHEO			= ../../../../..
+
+LIBRARY				= $(Priority_Fixed_LIBRARY)
+
+DIR_LIBRARY			= $(Priority_Fixed_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: Priority_Fixed_library
+
+library_clean			: Priority_Fixed_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/Select/Select_Priority_Fixed/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/configuration.cfg	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/configuration.cfg	(revision 10)
@@ -0,0 +1,4 @@
+Priority_Fixed
+2	16	*2	# nb_entity
+0	1	+1	# encoding_one_hot
+1	1	+1	# encoding_compact
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/include/test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/include/test.h	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/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/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::generic;
+using namespace morpheo::behavioural::generic::select;
+
+using namespace morpheo::behavioural::generic::select::priority_fixed;
+
+void test    (string name,
+	      morpheo::behavioural::generic::select::priority_fixed::Parameters param);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/mkf.info
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/mkf.info	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/mkf.info	(revision 10)
@@ -0,0 +1,41 @@
+
+# Priority_Fixed_0
+target_dep	all	Priority_Fixed_0.ngc
+target_dep	Priority_Fixed_0.ngc	Priority_Fixed_0.prj
+target_dep	Priority_Fixed_0.prj	Priority_Fixed_0_Pack.vhdl Priority_Fixed_0.vhdl
+
+# Priority_Fixed_1
+target_dep	all	Priority_Fixed_1.ngc
+target_dep	Priority_Fixed_1.ngc	Priority_Fixed_1.prj
+target_dep	Priority_Fixed_1.prj	Priority_Fixed_1_Pack.vhdl Priority_Fixed_1.vhdl
+
+# Priority_Fixed_2
+target_dep	all	Priority_Fixed_2.ngc
+target_dep	Priority_Fixed_2.ngc	Priority_Fixed_2.prj
+target_dep	Priority_Fixed_2.prj	Priority_Fixed_2_Pack.vhdl Priority_Fixed_2.vhdl
+
+# Priority_Fixed_3
+target_dep	all	Priority_Fixed_3.ngc
+target_dep	Priority_Fixed_3.ngc	Priority_Fixed_3.prj
+target_dep	Priority_Fixed_3.prj	Priority_Fixed_3_Pack.vhdl Priority_Fixed_3.vhdl
+
+# Priority_Fixed_4
+target_dep	all	Priority_Fixed_4.ngc
+target_dep	Priority_Fixed_4.ngc	Priority_Fixed_4.prj
+target_dep	Priority_Fixed_4.prj	Priority_Fixed_4_Pack.vhdl Priority_Fixed_4.vhdl
+
+# Priority_Fixed_5
+target_dep	all	Priority_Fixed_5.ngc
+target_dep	Priority_Fixed_5.ngc	Priority_Fixed_5.prj
+target_dep	Priority_Fixed_5.prj	Priority_Fixed_5_Pack.vhdl Priority_Fixed_5.vhdl
+
+# Priority_Fixed_6
+target_dep	all	Priority_Fixed_6.ngc
+target_dep	Priority_Fixed_6.ngc	Priority_Fixed_6.prj
+target_dep	Priority_Fixed_6.prj	Priority_Fixed_6_Pack.vhdl Priority_Fixed_6.vhdl
+
+# Priority_Fixed_7
+target_dep	all	Priority_Fixed_7.ngc
+target_dep	Priority_Fixed_7.ngc	Priority_Fixed_7.prj
+target_dep	Priority_Fixed_7.prj	Priority_Fixed_7_Pack.vhdl Priority_Fixed_7.vhdl
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/main.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/main.cpp	(revision 10)
@@ -0,0 +1,65 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/SelfTest/include/test.h"
+
+#define NB_PARAMS 3
+
+void usage (int argc, char * argv[])
+{
+  cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
+       << "list_params is :" << endl
+       << " - nb_entity        (unsigned int)" << endl
+       << " - encoding_one_hot (bool)" << endl
+       << " - encoding_compact (bool)" << 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_entity        = atoi(argv[2]);
+  const bool     encoding_one_hot = atoi(argv[3]);
+  const bool     encoding_compact = atoi(argv[4]);
+
+  try 
+    {
+      morpheo::behavioural::generic::select::priority_fixed::Parameters param (nb_entity       ,
+									       encoding_one_hot,
+									       encoding_compact);
+      
+      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/Select/Select_Priority_Fixed/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp	(revision 10)
@@ -0,0 +1,142 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#define NB_ITERATION 512
+
+#include "Behavioural/Generic/Select/Priority_Fixed/SelfTest/include/test.h"
+#include "Include/Test.h"
+
+void test (string name,
+	   morpheo::behavioural::generic::select::priority_fixed::Parameters _param)
+{
+  cout << "<" << name << "> : Simulation SystemC" << endl;
+
+  Priority_Fixed * _Priority_Fixed = new Priority_Fixed (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>           ** VAL   ;
+  sc_signal<Tcontrol_t>           ** ACK   ;
+  sc_signal<Tentity_t >            * ENTITY;
+  sc_signal<Tcontrol_t>            * ENTITY_ACK;
+
+  string rename;
+
+  CLOCK        = new sc_clock ("clock", 1.0, 0.5);
+  VAL          = new sc_signal<Tcontrol_t> * [_param._nb_entity];
+  ACK          = new sc_signal<Tcontrol_t> * [_param._nb_entity];
+
+  for (uint32_t i=0; i<_param._nb_entity; i++)
+    {
+      rename = "VAL_"+toString(i);
+      VAL [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+      rename = "ACK_"+toString(i);
+      ACK [i] = new sc_signal<Tcontrol_t> (rename.c_str());
+    }
+  
+  ENTITY       = new sc_signal<Tentity_t>  ("entity");
+  ENTITY_ACK   = new sc_signal<Tcontrol_t> ("entity_ack");
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  cout << "<" << name << "> Instanciation of _Priority_Fixed" << endl;
+  
+  (*(_Priority_Fixed->in_CLOCK))        (*(CLOCK));
+    for (uint32_t i=0; i<_param._nb_entity; i++)
+      {
+	(*(_Priority_Fixed-> in_VAL [i]))        (*(VAL [i]));
+	if (_param._encoding_one_hot)
+	(*(_Priority_Fixed->out_ACK [i]))        (*(ACK [i]));
+      }
+    if (_param._encoding_compact)
+      {
+    (*(_Priority_Fixed->out_ENTITY    ))        (*(ENTITY    ));
+    (*(_Priority_Fixed->out_ENTITY_ACK))        (*(ENTITY_ACK));
+      }
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  cout << "<" << name << "> Start Simulation ............" << endl;
+
+  if (_param._nb_entity > (8*sizeof (Tentity_t)))
+    throw ErrorMorpheo("No Selftest with nb_entity higher at "+toString(8*sizeof (Tentity_t)));
+
+  // Initialisation
+  const uint32_t seed = 0;
+//const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  Tentity_t entity;
+ 
+  sc_start(0);
+//_Priority_Fixed->vhdl_testbench_label("Initialisation");
+//cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
+
+  _Priority_Fixed->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 ++)
+    {
+      _Priority_Fixed->vhdl_testbench_label("Iteration "+toString(iteration));
+
+      entity    = 0;
+      bool find = false;
+      
+      for (uint32_t i=0; i<_param._nb_entity; i++)
+	{
+	  Tcontrol_t val = rand() % 2;
+
+	  VAL [i]->write(val);
+	  
+	  if (not find and val)
+	    {
+	      find   = true;
+	      entity = i;
+	    }
+	}
+
+      sc_start(1);
+ 
+      cout << "wait entity : " << entity << endl;
+    
+      entity = (find)?entity:0;
+
+      if (_param._encoding_one_hot)
+	TEST(Tcontrol_t, ACK   [entity]->read(), find  );
+      if (_param._encoding_compact)
+	{
+	TEST(Tentity_t , ENTITY        ->read(), entity); // burk
+	TEST(Tcontrol_t, ENTITY_ACK    ->read(), find  ); // burk
+	}
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  cout << "<" << name << "> ............ Stop Simulation" << endl;
+
+
+
+  delete CLOCK;
+
+#endif
+
+  delete _Priority_Fixed;
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/VERSION
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/VERSION	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/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/Select/Select_Priority_Fixed/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h	(revision 10)
@@ -0,0 +1,49 @@
+#ifndef morpheo_behavioural_generic_select_priority_fixed_Parameters_h
+#define morpheo_behavioural_generic_select_priority_fixed_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include <math.h>
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t _nb_entity       ;
+  public : const bool     _encoding_one_hot;
+  public : const bool     _encoding_compact;
+  public : const uint32_t _size_entity;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t nb_entity       ,
+			bool     encoding_one_hot,
+			bool     encoding_compact);
+  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::select::priority_fixed::Parameters & x);
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 10)
@@ -0,0 +1,131 @@
+#ifndef morpheo_behavioural_generic_select_priority_fixed_Priority_Fixed_h
+#define morpheo_behavioural_generic_select_priority_fixed_Priority_Fixed_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Parameters.h"
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Types.h"
+#ifdef STATISTICS
+#include "Behavioural/Generic/Select/Priority_Fixed/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 select {
+namespace priority_fixed {
+
+
+  class Priority_Fixed 
+#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_VAL          ;
+  public    : SC_OUT(Tcontrol_t)           ** out_ACK          ;
+  public    : SC_OUT(Tcontrol_t)            * out_ENTITY_ACK   ;
+  public    : SC_OUT(Tentity_t)             * out_ENTITY       ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#endif
+
+    // -----[ methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (Priority_Fixed);
+#endif
+  public  :          Priority_Fixed              (
+#ifdef SYSTEMC
+					      sc_module_name                              name,
+#else					       
+					      string                                      name,
+#endif					       
+#ifdef STATISTICS
+					      morpheo::behavioural::Parameters_Statistics param_statistics,
+#endif
+					      Parameters                                  param );
+					       
+  public  :          Priority_Fixed              (Parameters param );
+  public  :          ~Priority_Fixed             (void);
+					       
+#ifdef SYSTEMC				       
+  private : void     allocation                (void);
+  private : void     deallocation              (void);
+					       
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  public  : void     transition                (void);
+#endif
+  public  : void     genMealy_entity           (void);
+#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 priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h	(revision 10)
@@ -0,0 +1,57 @@
+#ifdef STATISTICS
+#ifndef morpheo_behavioural_generic_select_priority_fixed_Statistics_h
+#define morpheo_behavioural_generic_select_priority_fixed_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/Select/Priority_Fixed/include/Parameters.h"
+
+//using namespace morpheo::behavioural::generic::group;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  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 priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo
+
+#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h	(revision 10)
@@ -0,0 +1,28 @@
+#ifndef morpheo_behavioural_generic_select_priority_fixed_Type_h
+#define morpheo_behavioural_generic_select_priority_fixed_Type_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Include/Types.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+  typedef uint32_t Tentity_t;
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters.cpp	(revision 10)
@@ -0,0 +1,52 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  Parameters::Parameters (uint32_t nb_entity       ,
+			  bool     encoding_one_hot,
+			  bool     encoding_compact):
+    _nb_entity        (nb_entity       ),
+    _encoding_one_hot (encoding_one_hot),
+    _encoding_compact (encoding_compact),
+    _size_entity (static_cast<uint32_t> (ceil(log2(nb_entity))))
+  {
+    log_printf(FUNC,Priority_Fixed,"Parameters","Begin");
+    test();
+    log_printf(FUNC,Priority_Fixed,"Parameters","End");
+  };
+  
+  Parameters::Parameters (Parameters & param):
+    _nb_entity        (param._nb_entity       ),
+    _encoding_one_hot (param._encoding_one_hot),
+    _encoding_compact (param._encoding_compact),
+    _size_entity      (param._size_entity     )
+  {
+    log_printf(FUNC,Priority_Fixed,"Parameters","Begin");
+    test();
+    log_printf(FUNC,Priority_Fixed,"Parameters","End");
+  };
+
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,Priority_Fixed,"~Parameters","Begin");
+    log_printf(FUNC,Priority_Fixed,"~Parameters","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters_msg_error.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters_msg_error.cpp	(revision 10)
@@ -0,0 +1,43 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Parameters.h"
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Types.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,Priority_Fixed,"msg_error","Begin");
+
+    string msg = "";
+
+    if ((_encoding_one_hot or _encoding_compact) == false)
+      {
+        msg += "  - you must select a less one encoding\n";
+        msg += "    * encoding_one_hot                : " + toString(_encoding_one_hot) + "\n";
+        msg += "    * encoding_compact                : " + toString(_encoding_compact) + "\n";
+      }
+
+    return msg;
+
+    log_printf(FUNC,Priority_Fixed,"msg_error","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters_print.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters_print.cpp	(revision 10)
@@ -0,0 +1,48 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+  string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,Priority_Fixed,"print","Begin");
+
+    XML xml ("priority_fixed");
+
+    xml.balise_open("priority_fixed");
+    xml.singleton_begin("nb_entity       "); xml.attribut("value",toString(_nb_entity       )); xml.singleton_end();
+    xml.singleton_begin("encoding_one_hot"); xml.attribut("value",toString(_encoding_one_hot)); xml.singleton_end();
+    xml.singleton_begin("encoding_compact"); xml.attribut("value",toString(_encoding_compact)); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,Priority_Fixed,"print","End");
+    
+    return xml.get_body(depth);
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::select::priority_fixed::Parameters & x)
+  {
+    output_stream << x.print(0);
+    
+    return output_stream;
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp	(revision 10)
@@ -0,0 +1,139 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+#ifdef SYSTEMC
+  Priority_Fixed::Priority_Fixed (sc_module_name name,
+#else
+  Priority_Fixed::Priority_Fixed (string name,
+#endif
+#ifdef STATISTICS
+			      morpheo::behavioural::Parameters_Statistics             param_statistics,
+#endif
+			      morpheo::behavioural::generic::select::priority_fixed::Parameters param ):
+			      _name              (name)
+			      ,_param            (param)
+// #ifdef STATISTICS
+// 			      ,_param_statistics (param_statistics)
+// #endif
+  {
+    log_printf(FUNC,Priority_Fixed,"Priority_Fixed","Begin");
+
+#ifdef STATISTICS
+    log_printf(INFO,Priority_Fixed,"Priority_Fixed","Allocation of statistics");
+
+    // Allocation of statistics
+    _stat = new Statistics (static_cast<string>(_name),
+			    param_statistics          ,
+			    param);
+#endif
+
+#ifdef VHDL_TESTBENCH
+    log_printf(INFO,Priority_Fixed,"Priority_Fixed","Creation of a testbench");
+
+    // Creation of a testbench
+    //  -> port
+    //  -> clock's signals
+    _vhdl_testbench = new Vhdl_Testbench (_name);
+//     _vhdl_testbench->set_clock    ("in_CLOCK",false);
+#endif
+
+#ifdef VHDL
+    // generate the vhdl
+    log_printf(INFO,Priority_Fixed,"Priority_Fixed","Generate the vhdl");
+
+    vhdl();
+#endif
+
+#ifdef VHDL_TESTBENCH
+    _vhdl_testbench->set_clock    ("in_CLOCK",false);
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,Priority_Fixed,"Priority_Fixed","Allocation");
+
+    allocation ();
+
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    log_printf(INFO,Priority_Fixed,"Priority_Fixed","Method - transition");
+
+    SC_METHOD (transition);
+    dont_initialize ();
+    sensitive_pos << *(in_CLOCK);
+#endif
+
+    log_printf(INFO,Priority_Fixed,"Priority_Fixed","Method - genMealy_entity");
+
+    SC_METHOD (genMealy_entity);
+    dont_initialize ();
+    //sensitive_pos << *(in_CLOCK);
+    for (uint32_t i=0; i<_param._nb_entity; i++)
+      sensitive << *(in_VAL [i]);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+
+    for (uint32_t i=0; i<_param._nb_entity; i++)
+      {
+	if (_param._encoding_one_hot)
+	  (*(out_ACK    [i])) (*(in_VAL [i]));
+	if (_param._encoding_compact)
+	  {
+	  (*(out_ENTITY    )) (*(in_VAL [i]));
+	  (*(out_ENTITY_ACK)) (*(in_VAL [i]));
+	  }
+      }
+    
+#endif    
+
+#endif
+    log_printf(FUNC,Priority_Fixed,"Priority_Fixed","End");
+  };
+  
+  Priority_Fixed::~Priority_Fixed (void)
+  {
+    log_printf(FUNC,Priority_Fixed,"~Priority_Fixed","Begin");
+
+#ifdef VHDL_TESTBENCH
+    log_printf(INFO,Priority_Fixed,"~Priority_Fixed","Generate Testbench  file");
+
+    // generate the test bench
+    _vhdl_testbench->generate_file();
+    delete _vhdl_testbench;
+#endif
+
+#ifdef STATISTICS
+    log_printf(INFO,Priority_Fixed,"~Priority_Fixed","Generate Statistics file");
+
+    _stat->generate_file(statistics(0));
+    
+    delete _stat;
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,Priority_Fixed,"~Priority_Fixed","Deallocation");
+
+    deallocation ();
+#endif
+
+    log_printf(FUNC,Priority_Fixed,"~Priority_Fixed","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp	(revision 10)
@@ -0,0 +1,60 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Priority_Fixed::allocation (void)
+  {
+    string rename;
+
+    log_printf(FUNC,Priority_Fixed,"allocation","Begin");
+
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+     in_CLOCK        = new SC_CLOCK           ("in_CLOCK");
+#endif
+    
+     in_VAL          = new SC_IN (Tcontrol_t)           * [_param._nb_entity];
+    if (_param._encoding_one_hot)
+    out_ACK          = new SC_OUT(Tcontrol_t)           * [_param._nb_entity];
+
+    for (uint32_t i=0; i<_param._nb_entity; i++)
+      {
+	rename = " in_VAL_"+toString(i);
+	 in_VAL [i]      = new SC_IN (Tcontrol_t) (rename.c_str());
+
+	if (_param._encoding_one_hot)
+	  {
+	rename = "out_ACK_"+toString(i);
+	out_ACK [i]      = new SC_OUT(Tcontrol_t) (rename.c_str());
+	  }
+      }
+
+    if (_param._encoding_compact)
+      {
+	out_ENTITY_ACK   = new SC_OUT(Tcontrol_t)           ("out_entity_ack");
+	out_ENTITY       = new SC_OUT(Tentity_t)            ("out_entity");
+      }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    log_printf(FUNC,Priority_Fixed,"allocation","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 10)
@@ -0,0 +1,52 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Priority_Fixed::deallocation (void)
+  {
+    log_printf(FUNC,Priority_Fixed,"deallocation","Begin");
+
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    delete in_CLOCK;
+//#endif
+
+    for (uint32_t i=0; i<_param._nb_entity; i++)
+      {
+	delete  in_VAL [i];
+	if (_param._encoding_one_hot)
+	delete out_ACK [i];
+      }
+
+    delete  in_VAL;
+    if (_param._encoding_one_hot)
+    delete out_ACK;
+    if (_param._encoding_compact)
+      {
+    delete out_ENTITY;
+    delete out_ENTITY_ACK;
+      }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    log_printf(FUNC,Priority_Fixed,"deallocation","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_genMealy_entity.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_genMealy_entity.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_genMealy_entity.cpp	(revision 10)
@@ -0,0 +1,66 @@
+#ifdef SYSTEMC
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Priority_Fixed::genMealy_entity (void)
+  {
+    log_printf(FUNC,Priority_Fixed,"genMealy_entity","Begin");
+
+    // init 
+      
+    Tcontrol_t ack [_param._nb_entity];
+    bool       find  = false;
+    Tentity_t  entity;
+
+    if (_param._encoding_one_hot)
+    for (uint32_t i=0; i<_param._nb_entity; i++)
+      ack [i] = 0;
+
+    log_printf(TRACE,Priority_Fixed,"genMealy_entity","Scearch...");
+    for (entity=0; entity<_param._nb_entity; entity++)
+      {
+	if (PORT_READ(in_VAL [entity]) == 1)
+	  {
+	    log_printf(TRACE,Priority_Fixed,"genMealy_entity","Find! entity %d",entity);
+	    if (_param._encoding_one_hot)
+	      ack [entity] = 1;
+	    find = true;
+	    break;
+	  }
+      }
+      
+    // Write port
+    if (_param._encoding_one_hot)
+      for (uint32_t i=0; i<_param._nb_entity; i++)
+	PORT_WRITE(out_ACK [i], ack [i]);
+
+    if (_param._encoding_compact)
+      {
+	PORT_WRITE(out_ENTITY    , (find==true)?entity:0);  
+	PORT_WRITE(out_ENTITY_ACK,  find                );
+      }
+    log_printf(FUNC,Priority_Fixed,"genMealy_entity","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_statistics.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_statistics.cpp	(revision 10)
@@ -0,0 +1,35 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  string Priority_Fixed::statistics (uint32_t depth)
+  {
+    log_printf(FUNC,Priority_Fixed,"statistics","Begin");
+
+    string txt = _stat->print(depth);
+    
+    log_printf(FUNC,Priority_Fixed,"statistics","End");
+
+    return txt;
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_transition.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_transition.cpp	(revision 10)
@@ -0,0 +1,41 @@
+#ifdef SYSTEMC
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Priority_Fixed::transition (void)
+  {
+    log_printf(FUNC,Priority_Fixed,"transition","Begin");
+
+#ifdef STATISTICS
+    _stat->add();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    vhdl_testbench_transition ();
+#endif
+
+    log_printf(FUNC,Priority_Fixed,"transition","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp	(revision 10)
@@ -0,0 +1,41 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Priority_Fixed::vhdl (void)
+  {
+    log_printf(FUNC,Priority_Fixed,"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,Priority_Fixed,"vhdl","End");
+
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp	(revision 10)
@@ -0,0 +1,53 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Priority_Fixed::vhdl_body (Vhdl & vhdl)
+  {
+    log_printf(FUNC,Priority_Fixed,"vhdl_body","Begin");
+    vhdl.set_body ("");
+
+    vhdl.set_body("internal_entity <=");
+    for (uint32_t i=0; i<_param._nb_entity; i++)
+      {
+	vhdl.set_body("\t"+std_logic_conv(_param._size_entity+1,i)+" when in_VAL_"+toString(i)+"='1' else");
+      }
+    vhdl.set_body("\t"+std_logic_conv(_param._size_entity+1,1<<_param._size_entity)+";");
+    vhdl.set_body ("");
+
+    if (_param._encoding_one_hot)
+      {
+	for (uint32_t i=0; i<_param._nb_entity; i++)
+	  vhdl.set_body("out_ACK_"+toString(i)+" <= '1' when internal_entity"+std_logic_range(_param._size_entity+1)+" = "+std_logic_conv(_param._size_entity+1,i)+" else '0';");
+	vhdl.set_body ("");
+      }
+
+    if (_param._encoding_compact)
+      {
+	vhdl.set_body ("out_ENTITY     <=     internal_entity"+std_logic_range(_param._size_entity-1,                  0)+";");
+	vhdl.set_body ("out_ENTITY_ACK <= not internal_entity"+std_logic_range(_param._size_entity  ,_param._size_entity)+";");
+      }	   
+    
+    log_printf(FUNC,Priority_Fixed,"vhdl_body","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp	(revision 10)
@@ -0,0 +1,33 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Priority_Fixed::vhdl_declaration (Vhdl & vhdl)
+  {
+    log_printf(FUNC,Priority_Fixed,"vhdl_declaration","Begin");
+
+    vhdl.set_signal("internal_entity",_param._size_entity+1);
+
+    log_printf(FUNC,Priority_Fixed,"vhdl_declaration","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp	(revision 10)
@@ -0,0 +1,48 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+#ifdef VHDL_TESTBENCH
+# define VHDL_SET_PORT(name,direction,size) do {vhdl.set_port (name,direction,size); _vhdl_testbench->set_port (name,direction,size);} while (0)
+#else
+# define VHDL_SET_PORT(name,direction,size)     vhdl.set_port (name,direction,size)
+#endif
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Priority_Fixed::vhdl_port (Vhdl & vhdl)
+  {
+    log_printf(FUNC,Priority_Fixed,"vhdl_port","Begin");
+
+    for (uint32_t i=0; i<_param._nb_entity; i++)
+      {
+	VHDL_SET_PORT (" in_VAL_"+toString(i) , IN, 1);
+	if (_param._encoding_one_hot)
+	VHDL_SET_PORT ("out_ACK_"+toString(i) ,OUT, 1);
+      }
+    if (_param._encoding_compact)
+      {
+    VHDL_SET_PORT ("out_ENTITY    ",OUT,_param._size_entity);
+    VHDL_SET_PORT ("out_ENTITY_ACK",OUT,1);
+      }
+    log_printf(FUNC,Priority_Fixed,"vhdl_port","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_label.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_label.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_label.cpp	(revision 10)
@@ -0,0 +1,33 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Priority_Fixed::vhdl_testbench_label (string label)
+  {
+    log_printf(FUNC,Priority_Fixed,"vhdl_testbench_label","Begin");
+
+#ifdef VHDL_TESTBENCH
+    _vhdl_testbench->add_label(label);
+#endif
+    
+    log_printf(FUNC,Priority_Fixed,"vhdl_testbench_label","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp	(revision 10)
@@ -0,0 +1,57 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Priority_Fixed.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Priority_Fixed::vhdl_testbench_transition ()
+  {
+    log_printf(FUNC,Priority_Fixed,"vhdl_testbench_transition","Begin");
+
+    // Evaluation before read the ouput signal
+    sc_start(0);
+
+    // In order with file Priority_Fixed_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)
+
+    for (uint32_t i=0; i<_param._nb_entity; i++)
+      {
+	_vhdl_testbench->add_input (PORT_READ( in_VAL [i]));
+	if (_param._encoding_one_hot)
+	_vhdl_testbench->add_output(PORT_READ(out_ACK [i]));
+      }
+    
+    if (_param._encoding_compact)
+      {
+    _vhdl_testbench->add_output(PORT_READ(out_ENTITY));
+    _vhdl_testbench->add_output(PORT_READ(out_ENTITY_ACK));
+      }
+    // 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,Priority_Fixed,"vhdl_testbench_transition","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics.cpp	(revision 10)
@@ -0,0 +1,42 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Statistics.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  Statistics::Statistics (string                                      name                       ,
+			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
+			  Parameters                                  parameters
+			  ) :
+    morpheo::behavioural::Statistics(name                  ,
+				     parameters_statistics ),
+    _parameters(parameters)
+  {
+    log_printf(FUNC,Priority_Fixed,"Statistics","Begin");
+    log_printf(FUNC,Priority_Fixed,"Statistics","End");
+  };
+  
+  Statistics::~Statistics () 
+  { 
+    log_printf(FUNC,Priority_Fixed,"~Statistics","Begin");
+    log_printf(FUNC,Priority_Fixed,"~Statistics","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics_add.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics_add.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics_add.cpp	(revision 10)
@@ -0,0 +1,33 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  void Statistics::add ()
+  {
+    log_printf(FUNC,Priority_Fixed,"add","Begin");
+    log_printf(FUNC,Priority_Fixed,"add","End");
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics_print.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics_print.cpp	(revision 10)
@@ -0,0 +1,51 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  string Statistics::print (uint32_t depth)
+  {
+    log_printf(FUNC,Priority_Fixed,"print","Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "<priority_fixed name=\"" << _name << "\" >" << endl
+        << print_body(depth+1) << endl
+	<< tab << "</priority_fixed>" << endl;
+    
+    log_printf(FUNC,Priority_Fixed,"print","End");
+
+    return msg.str();
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::select::priority_fixed::Statistics & x)
+  {
+    output_stream << x.print(0);
+
+    return output_stream;
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics_print_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics_print_body.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Statistics_print_body.cpp	(revision 10)
@@ -0,0 +1,41 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Select/Priority_Fixed/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace select {
+namespace priority_fixed {
+
+
+  string Statistics::print_body (uint32_t depth)
+  {
+    log_printf(FUNC,Priority_Fixed,"print_body","Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "";
+    
+    log_printf(FUNC,Priority_Fixed,"print_body","End");
+
+    return msg.str();
+  };
+
+}; // end namespace priority_fixed
+}; // end namespace select
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/TODO
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/TODO	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/TODO	(revision 10)
@@ -0,0 +1,7 @@
+- Ajouter quelques algorithme de selection
+  * Round Robin
+    -> simple compteur de log2(N) bits
+  * True LRU
+    -> fifo matériel. Un élément accéder sera placer en fin de fifo. 
+  * Random
+    -> LFSR (?) qui ne tourne pas à chaque cycle mais à chaque in_access_val = '1'
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile	(revision 10)
@@ -0,0 +1,23 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_MORPHEO			= ../../../..
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libPseudo_LRU.a
+
+
+#-----[ include ]------------------------------------------
+
+all				: $(LIBRARY_NEED)
+				@$(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/Victim/Victim_Pseudo_LRU/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile.deps	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile.deps	(revision 10)
@@ -0,0 +1,37 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+ifndef Group
+include 			$(DIR_MORPHEO)/Behavioural/Generic/Group/Makefile.deps
+endif
+
+Pseudo_LRU			= yes
+#-----[ Library ]------------------------------------------
+Pseudo_LRU_LIBRARY		= 	-lPseudo_LRU		\
+					$(Group_LIBRARY)	\
+					$(Behavioural_LIBRARY)	
+
+Pseudo_LRU_DIR_LIBRARY		=	-L$(DIR_MORPHEO)/Behavioural/Generic/Victim/Pseudo_LRU/lib	\
+					$(Group_DIR_LIBRARY)						\
+					$(Behavioural_DIR_LIBRARY)	
+
+#-----[ Rules ]--------------------------------------------
+
+Pseudo_LRU_library		:
+				@$(MAKE)  Behavioural_library
+				@$(MAKE)  Group_library
+				@$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Victim/Pseudo_LRU --makefile=Makefile 
+				
+Pseudo_LRU_library_clean	:
+				@$(MAKE)  Behavioural_library_clean
+				@$(MAKE)  Group_library_clean
+				@$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Victim/Pseudo_LRU --makefile=Makefile clean
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/Makefile	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/Makefile	(revision 10)
@@ -0,0 +1,29 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_MORPHEO			= ../../../../..
+
+LIBRARY				= $(Pseudo_LRU_LIBRARY)
+
+DIR_LIBRARY			= $(Pseudo_LRU_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				: library
+				@$(MAKE) all_selftest
+
+library				: Pseudo_LRU_library
+
+library_clean			: Pseudo_LRU_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/Victim/Victim_Pseudo_LRU/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/configuration.cfg	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/configuration.cfg	(revision 10)
@@ -0,0 +1,5 @@
+Pseudo_LRU
+4	4 	*2	# nb_entity 
+1	1	+2	# nb_access 
+1	1	+2	# nb_update 
+1	1 	*2	# size_table
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/configuration.cfg.save
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/configuration.cfg.save	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/configuration.cfg.save	(revision 10)
@@ -0,0 +1,5 @@
+Pseudo_LRU
+4	16	*2	# nb_entity 
+1	4	+2	# nb_access 
+1	4	+2	# nb_update 
+1	16	*2	# size_table
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/include/test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/include/test.h	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/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/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::generic;
+using namespace morpheo::behavioural::generic::victim;
+
+using namespace morpheo::behavioural::generic::victim::pseudo_lru;
+
+void test   (string name,
+	     morpheo::behavioural::generic::victim::pseudo_lru::Parameters param);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/main.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/main.cpp	(revision 10)
@@ -0,0 +1,46 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/SelfTest/include/test.h"
+
+#define NB_PARAMS 4
+
+void usage (string exec)
+{
+  cerr << "<Usage> " << exec << " name_instance list_params" << endl
+       << "list_params is :" << endl
+       << " - nb_entity  (unsigned int)" << endl
+       << " - nb_access  (unsigned int)" << endl
+       << " - nb_update  (unsigned int)" << endl
+       << " - size_table (unsigned int)" << 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 (argv[0]);
+
+  const string   name       = argv[1];
+  const uint32_t nb_entity  = atoi(argv[2]);
+  const uint32_t nb_access  = atoi(argv[3]);
+  const uint32_t nb_update  = atoi(argv[4]);
+  const uint32_t size_table = atoi(argv[5]);
+  
+  morpheo::behavioural::generic::victim::pseudo_lru::Parameters param (nb_entity ,
+								       nb_access ,
+								       nb_update ,
+								       size_table);
+
+  test (name,param);
+
+  return (EXIT_SUCCESS);
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp	(revision 10)
@@ -0,0 +1,207 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/SelfTest/include/test.h"
+#include "Include/Test.h"
+
+void test (string name,
+	   morpheo::behavioural::generic::victim::pseudo_lru::Parameters param)
+{
+  cout << "<" << name << "> : Simulation SystemC" << endl;
+
+  if (param._nb_update < 1)
+    {
+      cerr << "<" << name << "> : To test, need a less one update's port" << endl;
+      exit (EXIT_FAILURE);
+    }
+  
+  try 
+    {
+      cout << param.print(1);
+      param.test();
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      cout << "<" << name << "> : " <<  error.what ();
+      return;
+    }
+  catch (...)
+    {
+      cerr << "<" << name << "> : This test must generate a error" << endl;
+      exit (EXIT_FAILURE);
+    }
+  Pseudo_LRU * _Pseudo_LRU = new Pseudo_LRU (name.c_str(),
+#ifdef STATISTICS
+					     morpheo::behavioural::Parameters_Statistics(5,50),
+#endif
+					     param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  sc_clock                                 CLOCK ("clock", 1.0, 0.5);
+
+  sc_signal<Tcontrol_t>                    ACCESS_VAL     [param._nb_access];
+  sc_signal<Tcontrol_t>                    ACCESS_ACK     [param._nb_access];
+  sc_signal<Taddress_t>                    ACCESS_ADDRESS [param._nb_access];
+  sc_signal<Tentity_t >                    ACCESS_ENTITY  [param._nb_access];
+  
+  sc_signal<Tcontrol_t>                    UPDATE_VAL     [param._nb_update];
+  sc_signal<Tcontrol_t>                    UPDATE_ACK     [param._nb_update];
+  sc_signal<Taddress_t>                    UPDATE_ADDRESS [param._nb_update];
+  sc_signal<Tentity_t >                    UPDATE_ENTITY  [param._nb_update];
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  cout << "<" << name << "> Instanciation of _Pseudo_LRU" << endl;
+  
+  (*(_Pseudo_LRU->in_CLOCK))        (CLOCK);
+
+    for (uint32_t i=0; i<param._nb_access; i++)
+      {
+	(*(_Pseudo_LRU-> in_ACCESS_VAL     [i])) (ACCESS_VAL     [i]);
+	(*(_Pseudo_LRU->out_ACCESS_ACK     [i])) (ACCESS_ACK     [i]);
+	if (param._size_table>1)
+	(*(_Pseudo_LRU-> in_ACCESS_ADDRESS [i])) (ACCESS_ADDRESS [i]);
+	(*(_Pseudo_LRU->out_ACCESS_ENTITY  [i])) (ACCESS_ENTITY  [i]);
+      }
+
+    for (uint32_t i=0; i<param._nb_update; i++)
+      {
+	(*(_Pseudo_LRU-> in_UPDATE_VAL     [i])) (UPDATE_VAL     [i]);
+	(*(_Pseudo_LRU->out_UPDATE_ACK     [i])) (UPDATE_ACK     [i]);
+	if (param._size_table>1)
+	(*(_Pseudo_LRU-> in_UPDATE_ADDRESS [i])) (UPDATE_ADDRESS [i]);
+	(*(_Pseudo_LRU-> in_UPDATE_ENTITY  [i])) (UPDATE_ENTITY  [i]);
+      }
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  cout << "<" << name << "> Start Simulation ............" << endl;
+  // Initialisation
+
+  sc_start(0);
+
+  bool array [param._nb_access][param._nb_entity];
+
+  for (uint32_t i=0; i<param._nb_access; i++)
+    {
+      ACCESS_VAL[i].write(0);
+    }
+  for (uint32_t i=0; i<param._nb_update; i++)
+    {
+      UPDATE_VAL[i].write(0);
+    }
+
+  sc_start(5);
+  cout << "-----[ Test Update ]------------------------------" << endl;
+  for (uint32_t i=0; i<param._nb_update; i++)
+    {
+      UPDATE_VAL[i].write(1);
+    }
+  
+  for (uint32_t j=0; j<param._size_table; j+=param._nb_update)
+    for (uint32_t k=0; k<param._nb_entity; k++)
+      {
+	cout << "time : " << static_cast<uint32_t>(sc_simulation_time()) << endl;
+	for (uint32_t i=0; i<param._nb_update; i++)
+	  {
+	    
+	    Tcontrol_t val     = static_cast<Tcontrol_t>((j+i)<param._size_table);
+	    Taddress_t addr;
+	    if (param._size_table>1)
+	      addr = static_cast<Taddress_t>((j+i)%param._size_table);
+	    else
+	      addr = 0;
+	    Tentity_t  entity  = (k+1)%param._nb_entity;
+	    UPDATE_VAL     [i].write(val );
+	    if (param._size_table>1)
+	      UPDATE_ADDRESS [i].write(addr);
+	    UPDATE_ENTITY  [i].write(entity);
+	    
+	    sc_start(0);
+	    cout << "\t[" << i << "] " << val << " - " << UPDATE_ACK[i].read() << " addr : " << addr << " -> " << entity << endl;
+	  }
+	sc_start(1);
+      }
+		    
+
+  for (uint32_t i=0; i<param._nb_update; i++)
+    {
+      UPDATE_VAL[i].write(0);
+    }
+
+  sc_start(5);
+
+  cout << "-----[ Test Access ]------------------------------" << endl;
+  
+  
+  for (uint32_t j=0; j<param._size_table; j+=param._nb_access)
+    {
+      // init
+      memset(static_cast<void*>(array),0,param._nb_access*param._nb_entity*sizeof(bool));
+      
+      for (uint32_t k=0; k<param._nb_entity; k++)
+	{
+	  
+	  cout << "time : " << static_cast<uint32_t>(sc_simulation_time()) << endl;
+	  for (uint32_t i=0; i<param._nb_access; i++)
+	    {
+	      Tcontrol_t val     = static_cast<Tcontrol_t>((j+i)<param._size_table);
+	      Taddress_t addr    ;
+	      if (param._size_table>1)
+		addr = static_cast<Taddress_t>((j+i)%param._size_table);
+	      else
+		addr = 0;
+	      ACCESS_VAL     [i].write(val );
+	      if (param._size_table>1)
+		ACCESS_ADDRESS [i].write(addr);
+	      
+	      sc_start(0);
+	      
+	      Tentity_t  entity  = ACCESS_ENTITY [i].read();
+	      
+	      cout << "\t[" << i << "] " << val << " - " << ACCESS_ACK[i].read() << " addr : " << addr << " -> " << entity << endl;
+	      
+	      TEST(bool,false,((val == true) && (array[i][entity] == true)));
+
+// 	      if ((val == true) && (array[i][entity] == true))
+// 		{
+// 		  cout << "Test KO : Have already give this way" << endl;
+// 		  exit (1);
+// 		}
+// 	      else
+		array[i][entity] = true;
+	    }
+	  
+	  sc_start(1);
+	  
+	}
+    }
+
+  for (uint32_t i=0; i<param._nb_access; i++)
+    {
+      ACCESS_VAL[i].write(0);
+    }
+
+  sc_start(0);
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  cout << "<" << name << "> ............ Stop Simulation" << endl;
+
+#endif
+
+  delete _Pseudo_LRU;
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/TODO
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/TODO	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/TODO	(revision 10)
@@ -0,0 +1,2 @@
+* Un paramètre en + : quantum_time. La selection est bufferisé sauvegarder est une nouvelle élections aura lieu après la fin de quantum de temps
+  -> Ajout d'un registre, la sortie de out_access_entity est égal à ce registre.
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Parameters.h	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Parameters.h	(revision 10)
@@ -0,0 +1,51 @@
+#ifndef morpheo_behavioural_generic_victim_pseudo_lru_Parameters_h
+#define morpheo_behavioural_generic_victim_pseudo_lru_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Parameters.h"
+#include <math.h>
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t _nb_entity ; // number of entity
+  public : const uint32_t _nb_access ; // number of port to select an entity
+  public : const uint32_t _nb_update ; // number of port to update the internal entity
+  public : const uint32_t _size_table; // Size of pseudo_LRU's table
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t nb_entity ,
+			uint32_t nb_access ,
+			uint32_t nb_update ,
+			uint32_t size_table);
+  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::victim::pseudo_lru::Parameters & x);
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Statistics.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Statistics.h	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Statistics.h	(revision 10)
@@ -0,0 +1,59 @@
+#ifdef STATISTICS
+#ifndef morpheo_behavioural_generic_victim_pseudo_lru_Statistics_h
+#define morpheo_behavioural_generic_victim_pseudo_lru_Statistics_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Statistics.h"
+#include "Behavioural/include/Parameters_Statistics.h"
+#include "Behavioural/Generic/Group/include/Statistics.h"
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Parameters.h"
+
+using namespace morpheo::behavioural::generic::group;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  class Statistics : public morpheo::behavioural::Statistics
+  {
+    // -----[ fields ]----------------------------------------------------
+  private  : const Parameters                                   _parameters;
+  private  : morpheo::behavioural::generic::group::Statistics * _stat_port_access;
+  private  : morpheo::behavioural::generic::group::Statistics * _stat_port_update;
+
+    // -----[ methods ]---------------------------------------------------
+  public   : Statistics  (string                                      name                       ,
+			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
+			  Parameters                                  parameters
+			  );
+//public   : Statistics  (Statistics & stat);
+  public   : ~Statistics () ;
+    
+  public   : string   print_body (uint32_t depth);
+  public   : string   print      (uint32_t depth);
+  public   : void     add        (uint32_t nb_access ,
+				  uint32_t nb_update );
+    
+  public   : friend ostream& operator<< (ostream& output_stream,
+					 const Statistics & x);
+
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo
+
+#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Types.h	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Types.h	(revision 10)
@@ -0,0 +1,28 @@
+#ifndef morpheo_behavioural_generic_victim_pseudo_lru_Type_h
+#define morpheo_behavioural_generic_victim_pseudo_lru_Type_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Include/Types.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+  typedef uint32_t Taddress_t;
+  typedef uint32_t Tentity_t;
+
+}; // end namespace pseudo._lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h	(revision 10)
@@ -0,0 +1,258 @@
+#ifndef morpheo_behavioural_generic_victim_pseudo_lru_Pseudo_LRU_h
+#define morpheo_behavioural_generic_victim_pseudo_lru_Pseudo_LRU_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+    // Tree of Pseudo-LRU
+    //
+    // |               4-5-6-7?              |
+    // |          0_______|_______1	     |
+    // |          |               |	     |
+    // |         2-3?            6-7?        |
+    // |      0___|___1       0___|___1      |
+    // |      |       |       |       |      |
+    // |      1?      3?      5?      7?     |
+    // |    0_|_1   0_|_1   0_|_1   0_|_1    |
+    // |    |   |   |   |   |   |   |   |    |
+    // |   Way Way Way Way Way Way Way Way   |
+    // |    0   1   2   3   4   5   6   7    |
+
+
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Parameters.h"
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Types.h"
+#ifdef STATISTICS
+#include "Behavioural/Generic/Victim/Pseudo_LRU/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 victim {
+namespace pseudo_lru {
+
+  class Pseudo_LRU 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ internal class ]--------------------------------------------
+  protected : class entry_t
+  {
+    // Numerotation of pseudo_LRU's tree
+    // Tree of Pseudo-LRU
+    //
+    // | d2              [3]                 |
+    // |          0_______|_______1	     |
+    // |          |               |	     |
+    // | d1      [1]             [5]         |
+    // |      0___|___1       0___|___1      |
+    // |      |       |       |       |      |
+    // | d0  [0]     [2]     [4]     [6]     |
+    // |    0_|_1   0_|_1   0_|_1   0_|_1    |
+    // |    |   |   |   |   |   |   |   |    |
+    // |   Way Way Way Way Way Way Way Way   |
+    // |    0   1   2   3   4   5   6   7    |
+    //
+    // Access :  Way N with N=2*n   -> bit 2*n = 0
+    //                 with N=2*n+1 -> bit 2*n = 1
+    //
+    // if bit = B, depth = D, next_B = B+D if B==1
+    //                               = B-D if B==0
+    //
+    // Update : 
+
+  private : bool    * _entry;
+  private : uint32_t  _size;
+
+  public  : entry_t () 
+    {
+    };
+  public  : entry_t (uint32_t size) : _size (size)
+    {
+      _entry = new bool [size];
+      
+      // initialisation
+      for (uint32_t i=0; i<size; i++)
+	_entry [i] = false;
+    }
+    
+  public : ~entry_t ()
+    {
+      delete _entry;
+    }
+    
+  private : uint32_t one_access (uint32_t index, uint32_t offset)
+    {
+      bool val = _entry[index];
+      
+      // Compute next slot
+      if (val == true)
+	return index + offset;
+      else
+	return index - offset;
+    }
+
+  public : uint32_t access ()
+    {
+      uint32_t index = (_size>>1)-1; // medium
+
+      for (int32_t i=static_cast<uint32_t>(log2(_size)-1); i>= 1; i--)
+	{
+	  index = one_access (index,(1<<(i-1)));
+	}
+      index = one_access (index,0);
+      
+      // reverse by one_access make always a reverse
+      uint32_t offset = (_entry[index]==true)?1:0; 
+
+      return index+offset;
+    }
+
+  private : uint32_t one_update (uint32_t index, uint32_t offset, uint32_t value)
+    {
+      uint32_t mask = (offset==0)?1:(offset<<1);
+      bool     val  = ((value & mask) != 0);
+
+      // reverse 
+      _entry[index] = not val;
+
+      if (val == true)
+      // Compute next slot
+	return index + offset;
+      else
+	return index - offset;
+    }
+  public : void update (uint32_t value)
+    {
+      uint32_t index = (_size>>1)-1; // medium
+
+      for (int32_t i=static_cast<uint32_t>(log2(_size)-1); i>=1; i--)
+	{
+	  index = one_update (index,1<<(i-1),value);
+	}
+      index = one_update (index,0,value);
+    }
+
+  public : string print ()
+    {
+      string res = "";
+
+      for (int32_t i=static_cast<int32_t>(_size)-1; i>=0; i--)
+	res += toString(_entry[i]) + " ";
+
+      return res;
+    }
+
+  };
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const string     _name;
+
+  protected : const Parameters _param;
+#ifdef STATISTICS
+  private   : Statistics                     * _stat;
+#endif
+
+#ifdef VHDL_TESTBENCH
+  private   : Vhdl_Testbench                 * _vhdl_testbench;
+#endif
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK         ;
+
+    // Interface access
+  public    : SC_IN (Tcontrol_t)           **  in_ACCESS_VAL    ;
+  public    : SC_OUT(Tcontrol_t)           ** out_ACCESS_ACK    ;
+  public    : SC_IN (Taddress_t)           **  in_ACCESS_ADDRESS;
+  public    : SC_OUT(Tentity_t )           ** out_ACCESS_ENTITY ;
+    // Interface update
+  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_VAL    ;
+  public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_ACK    ;
+  public    : SC_IN (Taddress_t)           **  in_UPDATE_ADDRESS;
+  public    : SC_IN (Tentity_t )           **  in_UPDATE_ENTITY ;
+
+    // Interface update
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+  private   : entry_t                      ** reg_TABLE;
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  private   : Tentity_t                     * internal_ACCESS_ENTITY;
+#endif
+
+    // -----[ methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (Pseudo_LRU);
+#endif
+
+  public  :          Pseudo_LRU              (
+#ifdef SYSTEMC
+					      sc_module_name                              name,
+#else					       
+					      string                                      name,
+#endif					       
+#ifdef STATISTICS
+					      morpheo::behavioural::Parameters_Statistics param_statistics,
+#endif
+					      Parameters                                  param );
+					       
+  public  :          Pseudo_LRU              (Parameters param );
+  public  :          ~Pseudo_LRU             (void);
+					       
+#ifdef SYSTEMC				       
+  private : void     allocation                (void);
+  private : void     deallocation              (void);
+					       
+  public  : void     transition                (void);
+  public  : void     genMealy_access           (void);
+#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            (Vhdl_Testbench & vhdl_testbench);
+  private : void     vhdl_testbench_port       (Vhdl_Testbench & vhdl_testbench);
+  private : void     vhdl_testbench_transition (Vhdl_Testbench & vhdl_testbench);
+#endif
+
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters.cpp	(revision 10)
@@ -0,0 +1,46 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  Parameters::Parameters (uint32_t nb_entity ,
+			  uint32_t nb_access ,
+			  uint32_t nb_update ,
+			  uint32_t size_table):
+    _nb_entity  (nb_entity ),
+    _nb_access  (nb_access ),
+    _nb_update  (nb_update ),
+    _size_table (size_table)
+  {
+    test();
+  };
+  
+  Parameters::Parameters (Parameters & param):
+    _nb_entity  (param._nb_entity ),
+    _nb_access  (param._nb_access ),
+    _nb_update  (param._nb_update ),
+    _size_table (param._size_table)
+  { 
+    test();
+  };
+
+  Parameters::~Parameters () 
+  { };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters_msg_error.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters_msg_error.cpp	(revision 10)
@@ -0,0 +1,72 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Parameters.h"
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Types.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+  string Parameters::msg_error(void)
+  {
+    string msg = "";
+
+    if (_nb_entity < 2)
+      {
+        msg += "  - nb_entity must be >= 2\n";
+        msg += "    * nb_entity                       : " + toString(_nb_entity) + "\n";
+      }
+
+    if (is_positive(log2(_nb_entity)) == false)
+      {
+        msg += "  - nb_entity is not a power of 2\n";
+        msg += "    * nb_entity                       : " + toString(_nb_entity) + "\n";
+      }
+
+    if (_nb_access <  1)
+      {
+        msg += "  - nb_access must be >= 1\n";
+        msg += "    * nb_access                       : " + toString(_nb_access) + "\n";
+      }
+
+    if (_size_table < 1)
+      {
+        msg += "  - size_table must be >= 1\n";
+        msg += "    * size_table                      : " + toString(_size_table) + "\n";
+      }
+
+    if (is_between_inclusive (static_cast<uint32_t>(log2(_nb_entity)),0 ,(8*sizeof(Tentity_t))) == false)
+      {
+        msg += "  - type \"Tentity_t\" is too little to the size defined by nb_entity\n";
+        msg += "    * nb_entity                       : " + toString(_nb_entity) + "\n";
+	msg += "    * Tentity_t                (bits) : " + toString(8*(sizeof(Tentity_t))) + "\n";
+      }
+
+    if (is_between_inclusive (static_cast<uint32_t>(log2(_size_table)),0 ,(8*sizeof(Taddress_t))) == false)
+      {
+        msg += "  - type \"Taddress_t\" is too little to the size defined by size_table\n";
+        msg += "    * size_table                      : " + toString(_size_table)    + "\n";
+	msg += "      > size                   (bits) : " + toString(log2(_size_table)) + "\n";
+	msg += "    * Taddress_t               (bits) : " + toString(8*(sizeof(Taddress_t))) + "\n";
+      }
+
+
+
+    return msg;
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters_print.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters_print.cpp	(revision 10)
@@ -0,0 +1,44 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Parameters.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+  string Parameters::print (uint32_t depth)
+  {
+    string tab = string(depth,'\t');
+    ostringstream msg;
+    msg << tab << "<pseudo_lru>" << endl
+	<< tab << "\t<nb_entity  value=\"" << _nb_entity  << "\" />" << endl
+	<< tab << "\t<nb_access  value=\"" << _nb_access  << "\" />" << endl
+	<< tab << "\t<nb_update  value=\"" << _nb_update  << "\" />" << endl
+	<< tab << "\t<size_table value=\"" << _size_table << "\" />" << endl
+	<< tab << "</pseudo_lru>" << endl;
+    
+    return msg.str();
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::victim::pseudo_lru::Parameters & x)
+  {
+    output_stream << x.print(0);
+    
+    return output_stream;
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics.cpp	(revision 10)
@@ -0,0 +1,46 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Statistics.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  Statistics::Statistics (string                                      name                       ,
+			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
+			  Parameters                                  parameters
+			  ) :
+    morpheo::behavioural::Statistics(name                  ,
+				     parameters_statistics ),
+    _parameters(parameters)
+  {
+    _stat_port_access = new morpheo::behavioural::generic::group::Statistics (name + "_port_access" ,
+									      parameters_statistics ,
+									      morpheo::behavioural::generic::group::Parameters(_parameters._nb_access));
+    _stat_port_update = new morpheo::behavioural::generic::group::Statistics (name + "_port_update"   ,
+									      parameters_statistics ,
+									      morpheo::behavioural::generic::group::Parameters(_parameters._nb_update));
+  };
+  
+  Statistics::~Statistics () 
+  { 
+    delete _stat_port_access;
+    delete _stat_port_update;
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics_add.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics_add.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics_add.cpp	(revision 10)
@@ -0,0 +1,32 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+  void Statistics::add (uint32_t nb_access,
+			uint32_t nb_update)
+  {
+    _stat_port_access->add(nb_access);
+    _stat_port_update->add(nb_update);
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics_print.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics_print.cpp	(revision 10)
@@ -0,0 +1,47 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  string Statistics::print (uint32_t depth)
+  {
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "<pseudo_lru name=\"" << _name << "\" >" << endl
+	<< print_body (depth+1)
+	<< tab << "</pseudo_lru>" << endl;
+    
+    return msg.str();
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::victim::pseudo_lru::Statistics & x)
+  {
+    output_stream << x.print(0);
+
+    return output_stream;
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics_print_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics_print_body.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Statistics_print_body.cpp	(revision 10)
@@ -0,0 +1,38 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  string Statistics::print_body (uint32_t depth)
+  {
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << _stat_port_access->print(depth+1);
+    msg << _stat_port_update->print(depth+1);
+    
+    return msg.str();
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp	(revision 10)
@@ -0,0 +1,120 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+#ifdef SYSTEMC
+  Pseudo_LRU::Pseudo_LRU (sc_module_name name,
+#else
+  Pseudo_LRU::Pseudo_LRU (string name,
+#endif
+#ifdef STATISTICS
+			  morpheo::behavioural::Parameters_Statistics             param_statistics,
+#endif
+			  morpheo::behavioural::generic::victim::pseudo_lru::Parameters param ):
+			  _name   (name)
+			  ,_param (param)
+  {
+    log_printf(FUNC,Pseudo_LRU,"Pseudo_LRU","Begin");
+
+#ifdef STATISTICS
+    log_printf(TRACE,Pseudo_LRU,"Pseudo_LRU","Allocation of statistics");
+    
+    // Allocation of statistics
+    _stat = new Statistics (static_cast<string>(_name),
+			    param_statistics          ,
+			    param);
+#endif
+
+#ifdef VHDL_TESTBENCH
+    // Creation of a testbench
+    //  -> port
+    //  -> clock's signals
+    log_printf(TRACE,Pseudo_LRU,"Pseudo_LRU","Creation of Testbench");
+    _vhdl_testbench = new Vhdl_Testbench (_name);
+    vhdl_testbench_port           (*_vhdl_testbench);
+    _vhdl_testbench->set_clock    ("in_CLOCK",true);
+#endif
+
+#ifdef VHDL
+    // generate the vhdl
+    log_printf(TRACE,Pseudo_LRU,"Pseudo_LRU","Generation of VHDL");
+    vhdl();
+#endif
+
+#ifdef SYSTEMC
+    log_printf(TRACE,Pseudo_LRU,"Pseudo_LRU","Allocation");
+    allocation ();
+
+    log_printf(TRACE,Pseudo_LRU,"Pseudo_LRU","Definition of sc_method");
+    SC_METHOD (transition);
+    dont_initialize ();
+    sensitive_pos << *(in_CLOCK);
+
+    SC_METHOD (genMealy_access);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	sensitive << *(in_ACCESS_VAL     [i]);
+	if (_param._size_table>1)
+	  sensitive << *(in_ACCESS_ADDRESS [i]);
+      }
+
+#ifdef SYSTEMCASS_SPECIFIC
+    log_printf(TRACE,Pseudo_LRU,"Pseudo_LRU","List dependency information");
+    // List dependency information
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	(*(out_ACCESS_ENTITY [i])) (*( in_ACCESS_VAL     [i]));
+	if (_param._size_table>1)
+	  (*(out_ACCESS_ENTITY [i])) (*( in_ACCESS_ADDRESS [i]));
+      }
+#endif    
+
+    // Constant - ack is always at one
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      PORT_WRITE (out_ACCESS_ACK [i], 1);
+    for (uint32_t i=0; i<_param._nb_update; i++)
+      PORT_WRITE (out_UPDATE_ACK [i], 1);
+
+#endif
+    log_printf(FUNC,Pseudo_LRU,"Pseudo_LRU","End");
+  };
+  
+  Pseudo_LRU::~Pseudo_LRU (void)
+  {
+    log_printf(FUNC,Pseudo_LRU,"~Pseudo_LRU","Begin");
+#ifdef SYSTEMC
+    deallocation ();
+#endif
+
+#ifdef VHDL_TESTBENCH
+    // generate the test bench
+    _vhdl_testbench->generate_file();
+    delete _vhdl_testbench;
+#endif
+
+#ifdef STATISTICS
+    _stat->generate_file(statistics(0));
+    
+    delete _stat;
+#endif
+    log_printf(FUNC,Pseudo_LRU,"~Pseudo_LRU","End");
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp	(revision 10)
@@ -0,0 +1,90 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+  void Pseudo_LRU::allocation (void)
+  {
+    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
+
+    // -----[ Interface access ]-------------------------------------------
+     in_ACCESS_VAL     = new SC_IN (Tcontrol_t) * [_param._nb_access];
+    out_ACCESS_ACK     = new SC_OUT(Tcontrol_t) * [_param._nb_access];
+    if (_param._size_table>1)
+      in_ACCESS_ADDRESS = new SC_IN (Taddress_t) * [_param._nb_access];
+    out_ACCESS_ENTITY  = new SC_OUT(Tentity_t ) * [_param._nb_access];
+    
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+        string rename;
+
+	rename = "in_ACCESS_VAL["     + toString(i) + "]";
+	 in_ACCESS_VAL     [i] = new SC_IN (Tcontrol_t) (rename.c_str());
+
+	rename = "out_ACCESS_ACK["    + toString(i) + "]";
+	out_ACCESS_ACK     [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
+
+	if (_param._size_table>1)
+	  {
+	    rename = "in_ACCESS_ADDRESS[" + toString(i) + "]";
+	    in_ACCESS_ADDRESS [i] = new SC_IN (Taddress_t) (rename.c_str());
+	  }
+	rename = "out_ACCESS_ENTITY[" + toString(i) + "]";
+	out_ACCESS_ENTITY  [i] = new SC_OUT(Tentity_t ) (rename.c_str());
+      }
+
+    // -----[ Interface update ]-------------------------------------------
+     in_UPDATE_VAL     = new SC_IN (Tcontrol_t) *  [_param._nb_update];
+    out_UPDATE_ACK     = new SC_OUT(Tcontrol_t) *  [_param._nb_update];
+    if (_param._size_table>1)
+      in_UPDATE_ADDRESS = new SC_IN (Taddress_t) *  [_param._nb_update];
+     in_UPDATE_ENTITY  = new SC_IN (Tentity_t ) *  [_param._nb_update];
+
+    for (uint32_t i=0; i<_param._nb_update; i++)
+      {
+        string rename;
+
+	rename = "in_UPDATE_VAL["     + toString(i) + "]";
+ 	 in_UPDATE_VAL     [i] = new SC_IN (Tcontrol_t) (rename.c_str());
+
+	rename = "out_UPDATE_ACK["    + toString(i) + "]";;
+	out_UPDATE_ACK     [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
+
+	if (_param._size_table>1)
+	  {
+	    rename = "in_UPDATE_ADDRESS[" + toString(i) + "]";
+	    in_UPDATE_ADDRESS [i] = new SC_IN (Taddress_t) (rename.c_str());
+	  }
+
+	rename = "in_UPDATE_ENTITY["  + toString(i) + "]";
+	 in_UPDATE_ENTITY  [i] = new SC_IN (Tentity_t ) (rename.c_str());
+      }
+
+    // -----[ Register ]---------------------------------------------------
+    reg_TABLE = new entry_t *  [_param._size_table];
+
+    for (uint32_t i=0; i<_param._size_table; i++)
+      reg_TABLE [i] = new entry_t (_param._nb_entity);
+    
+    // -----[ Internal ]---------------------------------------------------
+    internal_ACCESS_ENTITY = new Tentity_t [_param._nb_entity];
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_deallocation.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_deallocation.cpp	(revision 10)
@@ -0,0 +1,68 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+  void Pseudo_LRU::deallocation (void)
+  {
+    delete in_CLOCK;
+
+    // -----[ Interface access ]-------------------------------------------
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	delete  in_ACCESS_VAL     [i];
+	delete out_ACCESS_ACK     [i];
+	if (_param._size_table>1)
+ 	delete  in_ACCESS_ADDRESS [i];
+	delete out_ACCESS_ENTITY  [i];
+      }
+
+    delete  in_ACCESS_VAL    ;
+    delete out_ACCESS_ACK    ;
+    if (_param._size_table>1)
+    delete  in_ACCESS_ADDRESS;
+    delete out_ACCESS_ENTITY ;
+    
+    // -----[ Interface update ]-------------------------------------------
+    for (uint32_t i=0; i<_param._nb_update; i++)
+      {
+ 	delete  in_UPDATE_VAL     [i];
+	delete out_UPDATE_ACK     [i];
+	if (_param._size_table>1)
+ 	delete  in_UPDATE_ADDRESS [i];
+	delete  in_UPDATE_ENTITY  [i];
+      }
+    delete  in_UPDATE_VAL    ;
+    delete out_UPDATE_ACK    ;
+    if (_param._size_table>1)
+    delete  in_UPDATE_ADDRESS;
+    delete  in_UPDATE_ENTITY ;
+
+    // -----[ Register ]---------------------------------------------------
+    for (uint32_t i=0; i<_param._size_table; i++)
+      {
+ 	delete reg_TABLE [i];
+      }
+    delete reg_TABLE;
+
+    // -----[ Internal ]---------------------------------------------------
+    delete internal_ACCESS_ENTITY;
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_genMealy_access.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_genMealy_access.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_genMealy_access.cpp	(revision 10)
@@ -0,0 +1,46 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+  void Pseudo_LRU::genMealy_access (void)
+  {
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	if (PORT_READ (in_ACCESS_VAL[i]) == 1)
+	  {
+	    Taddress_t address;
+
+	    if (_param._size_table>1)
+	      address = PORT_READ     (in_ACCESS_ADDRESS[i]);
+	    else
+	      address = 0;
+	    
+	    internal_ACCESS_ENTITY[i] = reg_TABLE[address]->access();
+	  }
+	else
+	  {
+	    internal_ACCESS_ENTITY[i] = 0;
+	  }
+
+	PORT_WRITE(out_ACCESS_ENTITY[i], internal_ACCESS_ENTITY[i]);
+      }//end for i
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_statistics.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_statistics.cpp	(revision 10)
@@ -0,0 +1,28 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+  
+  string Pseudo_LRU::statistics (uint32_t depth)
+  {
+    return _stat->print(depth);
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_transition.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_transition.cpp	(revision 10)
@@ -0,0 +1,79 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+  void Pseudo_LRU::transition (void)
+  {
+#ifdef STATISTICS
+    uint32_t _stat_nb_access = 0;
+    uint32_t _stat_nb_update = 0;
+#endif
+
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	// Access ... (ack is always at 1)
+	if (PORT_READ (in_ACCESS_VAL[i]) == 1)
+	  {
+#ifdef STATISTICS
+	    _stat_nb_access ++;
+#endif
+	    Taddress_t address;
+
+	    if (_param._size_table>1)
+	      address = PORT_READ     (in_ACCESS_ADDRESS[i]);
+	    else
+	      address = 0;
+	    
+	    reg_TABLE[address]->update(internal_ACCESS_ENTITY[i]);
+	  }
+      }//end for i
+    
+    for (uint32_t i=0; i<_param._nb_update; i++)
+      {
+	// Update ... (ack is always at 1)
+	if (PORT_READ (in_UPDATE_VAL[i]) == 1)
+	  {
+#ifdef STATISTICS
+	    _stat_nb_update ++;
+#endif
+	    
+	    Taddress_t address;
+	    
+	    if (_param._size_table>1)
+	      address = PORT_READ     (in_UPDATE_ADDRESS[i]);
+	    else
+	      address = 0;
+	    
+	    reg_TABLE[address]->update(PORT_READ(in_UPDATE_ENTITY[i]));
+	  }
+      }//end for i
+
+#ifdef STATISTICS
+    _stat->add(_stat_nb_access,
+	       _stat_nb_update);
+#endif    
+    
+#ifdef VHDL_TESTBENCH
+    vhdl_testbench_transition (*_vhdl_testbench);
+#endif
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl.cpp	(revision 10)
@@ -0,0 +1,45 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  void Pseudo_LRU::vhdl (void)
+  {
+    log_printf(FUNC,Pseudo_LRU,"vhdl","Begin");
+
+    log_printf(TRACE,Pseudo_LRU,"vhdl","Construction of vhdl");
+    Vhdl vhdl (_name);
+
+    log_printf(TRACE,Pseudo_LRU,"vhdl","Set library");
+    vhdl.set_library_work (_name + "_Pack");
+
+    log_printf(TRACE,Pseudo_LRU,"vhdl","Set port");
+    vhdl_port        (vhdl);
+    log_printf(TRACE,Pseudo_LRU,"vhdl","Set declaration");
+    vhdl_declaration (vhdl);
+    log_printf(TRACE,Pseudo_LRU,"vhdl","Set body");
+    vhdl_body        (vhdl);
+    log_printf(TRACE,Pseudo_LRU,"vhdl","Generate File");
+    vhdl.generate_file();
+    log_printf(FUNC,Pseudo_LRU,"vhdl","End");
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_body.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_body.cpp	(revision 10)
@@ -0,0 +1,227 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+  void Pseudo_LRU::vhdl_body (Vhdl & vhdl)
+  {
+    vhdl.set_body ("");
+    vhdl.set_body ("-----------------------------------------------------------------------------");
+    vhdl.set_body ("-- Access");
+    vhdl.set_body ("-----------------------------------------------------------------------------");
+    vhdl.set_body ("");
+    vhdl.set_body ("-- Tree of Pseudo-LRU - example to 8 entity");
+    vhdl.set_body ("--");
+    vhdl.set_body ("--                4-5-6-7?              ");
+    vhdl.set_body ("--           0_______|_______1	    ");
+    vhdl.set_body ("--           |               |	    ");
+    vhdl.set_body ("--          2-3?            6-7?        ");
+    vhdl.set_body ("--       0___|___1       0___|___1      ");
+    vhdl.set_body ("--       |       |       |       |      ");
+    vhdl.set_body ("--       1?      3?      5?      7?     ");
+    vhdl.set_body ("--     0_|_1   0_|_1   0_|_1   0_|_1    ");
+    vhdl.set_body ("--     |   |   |   |   |   |   |   |    ");
+    vhdl.set_body ("--    Way Way Way Way Way Way Way Way   ");
+    vhdl.set_body ("--     0   1   2   3   4   5   6   7    ");
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	vhdl.set_body ("");
+	// Read the table
+	
+	string access_address;
+
+	if (_param._size_table>1)
+	  access_address = "conv_integer(in_ACCESS_ADDRESS_"+toString(i)+")";
+	else
+	  access_address = "0";
+
+	vhdl.set_body ("access_entry_"+toString(i)+" <= reg_TABLE ("+access_address+");");
+	vhdl.set_body ("");
+
+	for (int32_t j=static_cast<uint32_t>(log2(_param._nb_entity)-1); j>=0; j--)
+	  {
+ 	    vhdl.set_body ("access_entity_"+toString(i)+"("+toString(j)+") <= ");
+
+	    uint32_t cpt=0;
+
+	    for (int32_t k=(1<<j)-1; k<static_cast<int32_t>(_param._nb_entity-1); k+=(1<<(j+1)))
+	      {
+		string cond = "";
+		
+		// Create the condition
+		for (uint32_t l=j+1; l<static_cast<uint32_t>(log2(_param._nb_entity));l++)
+		  {
+		    if (l==static_cast<uint32_t>(j+1))
+		      cond += "when";
+		    else
+		      cond += " and";
+		    cond += " access_entity_"+toString(i)+"("+toString(l)+") = '"+toString((cpt>>(l-(j+1)))&1)+"'";
+		  }
+		
+		string print_else = (k==(1<<j)-1)?"     ":"else ";
+
+		vhdl.set_body ("\t"+print_else+"access_entry_"+toString(i)+"("+toString(k)+") "+cond);
+		cpt ++;
+	      }
+	    vhdl.set_body ("\t;");
+	  }
+      }
+
+    vhdl.set_body ("");
+    vhdl.set_body ("-----------------------------------------------------------------------------");
+    vhdl.set_body ("-- Update");
+    vhdl.set_body ("-----------------------------------------------------------------------------");
+    vhdl.set_body ("");
+    vhdl.set_body ("-- port access");
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      for (int32_t j=static_cast<uint32_t>(log2(_param._nb_entity)-1); j>=0; j--)
+	{
+	  uint32_t cpt=0;
+	  
+	  for (int32_t k=(1<<j)-1; k<static_cast<int32_t>(_param._nb_entity-1); k+=(1<<(j+1)))
+	    {
+	      bool   have_cond = false;
+	      string cond      = "";
+	      
+	      // condition to change the bit
+	      for (uint32_t l=j+1; l<static_cast<uint32_t>(log2(_param._nb_entity));l++)
+		{
+		  have_cond = true;
+
+		  if (l==static_cast<uint32_t>(j+1))
+		    cond += "when";
+		  else
+		    cond += " and";
+		  cond += " access_entity_"+toString(i)+"("+toString(l)+")='"+toString((cpt>>(l-(j+1)))&1)+"'";
+		}
+	      
+	      vhdl.set_body ("access_next_entry_"+toString(i)+"("+toString(k)+") <=");
+	      vhdl.set_body ("\tnot access_entity_"+toString(i)+"("+toString(j)+") "+cond);
+	      if (have_cond == true)
+		vhdl.set_body ("\telse access_entry_"+toString(i)+"("+toString(k)+")");
+	      vhdl.set_body ("\t;");	      
+	      cpt ++;
+	    }
+	}
+
+    vhdl.set_body ("");
+    vhdl.set_body ("-- port update");
+    for (uint32_t i=0; i<_param._nb_update; i++)
+      for (int32_t j=static_cast<uint32_t>(log2(_param._nb_entity)-1); j>=0; j--)
+	{
+	  uint32_t cpt=0;
+	  
+	  for (int32_t k=(1<<j)-1; k<static_cast<int32_t>(_param._nb_entity-1); k+=(1<<(j+1)))
+	    {
+	      bool   have_cond = false;
+	      string cond      = "";
+	      
+	      // condition to change the bit
+	      for (uint32_t l=j+1; l<static_cast<uint32_t>(log2(_param._nb_entity));l++)
+		{
+		  have_cond = true;
+
+		  if (l==static_cast<uint32_t>(j+1))
+		    cond += "when";
+		  else
+		    cond += " and";
+		  cond += " in_UPDATE_ENTITY_"+toString(i)+"("+toString(l)+")='"+toString((cpt>>(l-(j+1)))&1)+"'";
+		}
+	      
+	      vhdl.set_body ("update_next_entry_"+toString(i)+"("+toString(k)+") <=");
+	      vhdl.set_body ("\tnot in_UPDATE_ENTITY_"+toString(i)+"("+toString(j)+") "+cond);
+	      if (have_cond == true)
+		{
+		  string update_address;
+
+		  if (_param._size_table>1)
+		    update_address = "conv_integer(in_UPDATE_ADDRESS_"+toString(i)+")";
+		  else
+		    update_address = "0";
+		  
+		  vhdl.set_body ("\telse reg_TABLE ("+update_address+")("+toString(k)+")");
+		}
+	      vhdl.set_body ("\t;");	      
+	      cpt ++;
+	    }
+	}
+
+    vhdl.set_body ("");
+    vhdl.set_body ("-----------------------------------------------------------------------------");
+    vhdl.set_body ("-- Transition");
+    vhdl.set_body ("-----------------------------------------------------------------------------");
+    vhdl.set_body ("");
+
+    vhdl.set_body ("reg_TABLE_write: process (in_CLOCK)");
+    vhdl.set_body ("begin");
+    vhdl.set_body ("\tif in_CLOCK'event and in_CLOCK = '1' then");
+    vhdl.set_body ("\t\t-- Access port");
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	string access_address;
+
+	if (_param._size_table>1)
+	  access_address = "conv_integer(in_ACCESS_ADDRESS_"+toString(i)+")";
+	else
+	  access_address = "0";
+
+	vhdl.set_body ("\t\tif (in_ACCESS_VAL_"+toString(i)+" = '1') then");
+	vhdl.set_body ("\t\t\treg_TABLE ("+access_address+") <= access_next_entry_"+toString(i)+";");
+	vhdl.set_body ("\t\tend if;");
+      }
+
+    vhdl.set_body ("\t\t-- Update port");
+    for (uint32_t i=0; i<_param._nb_update; i++)
+      {
+	string update_address;
+
+	if (_param._size_table>1)
+	  update_address = "conv_integer(in_UPDATE_ADDRESS_"+toString(i)+")";
+	else
+	  update_address = "0";
+		  
+	vhdl.set_body ("\t\tif (in_UPDATE_VAL_"+toString(i)+" = '1') then");
+	vhdl.set_body ("\t\t\treg_TABLE ("+update_address+") <= update_next_entry_"+toString(i)+";");
+	vhdl.set_body ("\t\tend if;");
+      }
+
+    vhdl.set_body ("\tend if;");
+    vhdl.set_body ("end process reg_TABLE_write;");
+
+    vhdl.set_body ("");
+    vhdl.set_body ("-----------------------------------------------------------------------------");
+    vhdl.set_body ("-- Output");
+    vhdl.set_body ("-----------------------------------------------------------------------------");
+    vhdl.set_body ("");
+    vhdl.set_body ("-- Ack is always ");
+    vhdl.set_body ("");
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	vhdl.set_body ("out_ACCESS_ACK_"+toString(i)+"    <= '1';");
+	vhdl.set_body ("out_ACCESS_ENTITY_"+toString(i)+" <= access_entity_"+toString(i)+" when in_ACCESS_VAL_"+toString(i)+" = '1' else (others => '0');");
+      }
+    vhdl.set_body ("");
+    for (uint32_t i=0; i<_param._nb_update; i++)
+      {
+	vhdl.set_body ("out_UPDATE_ACK_"+toString(i)+"    <= '1';");
+      }
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_declaration.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_declaration.cpp	(revision 10)
@@ -0,0 +1,42 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  void Pseudo_LRU::vhdl_declaration (Vhdl & vhdl)
+  {
+    vhdl.set_type ("Ttable", "array (" + toString(_param._size_table-1) + " downto 0) of "+std_logic(_param._nb_entity-1));
+
+
+    vhdl.set_signal ("reg_TABLE", "Ttable");
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	vhdl.set_signal ("access_entry_"+toString(i)+"     ",std_logic(_param._nb_entity-1));
+	vhdl.set_signal ("access_next_entry_"+toString(i)+"",std_logic(_param._nb_entity-1));
+	vhdl.set_signal ("access_entity_"+toString(i)+"    ",std_logic(static_cast<uint32_t>(log2(_param._nb_entity))));
+      }
+
+    for (uint32_t i=0; i<_param._nb_update; i++)
+      {
+	vhdl.set_signal ("update_next_entry_"+toString(i)+"",std_logic(_param._nb_entity-1));
+      }
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_port.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_port.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_port.cpp	(revision 10)
@@ -0,0 +1,47 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  void Pseudo_LRU::vhdl_port (Vhdl & vhdl)
+  {
+    vhdl.set_port ("in_CLOCK" , IN, "std_logic");
+
+    for (uint32_t i = 0; i < _param._nb_access; i ++)
+      {
+	vhdl.set_port (" in_ACCESS_VAL_"+toString(i)+"     ",IN ,std_logic(1));
+	vhdl.set_port ("out_ACCESS_ACK_"+toString(i)+"     ",OUT,std_logic(1));
+	if (_param._size_table>1)
+	  vhdl.set_port (" in_ACCESS_ADDRESS_"+toString(i)+" ",IN ,std_logic(static_cast<uint32_t>(log2(_param._size_table))));
+	vhdl.set_port ("out_ACCESS_ENTITY_"+toString(i)+"  ",OUT,std_logic(static_cast<uint32_t>(log2(_param._nb_entity))));
+      }
+
+    for (uint32_t i = 0; i < _param._nb_update; i ++)
+      {
+	vhdl.set_port (" in_UPDATE_VAL_"+toString(i)+"     ",IN ,std_logic(1));
+	vhdl.set_port ("out_UPDATE_ACK_"+toString(i)+"     ",OUT,std_logic(1));
+	if (_param._size_table>1)
+	  vhdl.set_port (" in_UPDATE_ADDRESS_"+toString(i)+" ",IN ,std_logic(static_cast<uint32_t>(log2(_param._size_table))));
+	vhdl.set_port (" in_UPDATE_ENTITY_"+toString(i)+"  ",IN ,std_logic(static_cast<uint32_t>(log2(_param._nb_entity))));
+      }
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_port.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_port.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_port.cpp	(revision 10)
@@ -0,0 +1,44 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  void Pseudo_LRU::vhdl_testbench_port (Vhdl_Testbench & vhdl_testbench)
+  {
+    for (uint32_t i = 0; i < _param._nb_access; i ++)
+      {
+	vhdl_testbench.set_port (" in_ACCESS_VAL_"+toString(i)+"     ",IN ,1);
+	vhdl_testbench.set_port ("out_ACCESS_ACK_"+toString(i)+"     ",OUT,1);
+	if (_param._size_table>1)
+	  vhdl_testbench.set_port (" in_ACCESS_ADDRESS_"+toString(i)+" ",IN ,static_cast<uint32_t>(log2(_param._size_table)));
+	vhdl_testbench.set_port ("out_ACCESS_ENTITY_"+toString(i)+"  ",OUT,static_cast<uint32_t>(log2(_param._nb_entity)));
+      }
+
+    for (uint32_t i = 0; i < _param._nb_update; i ++)
+      {
+	vhdl_testbench.set_port (" in_UPDATE_VAL_"+toString(i)+"     ",IN ,1);
+	vhdl_testbench.set_port ("out_UPDATE_ACK_"+toString(i)+"     ",OUT,1);
+	if (_param._size_table>1)
+	  vhdl_testbench.set_port (" in_UPDATE_ADDRESS_"+toString(i)+" ",IN ,static_cast<uint32_t>(log2(_param._size_table)));
+	vhdl_testbench.set_port (" in_UPDATE_ENTITY_"+toString(i)+"  ",IN ,static_cast<uint32_t>(log2(_param._nb_entity)));
+      }
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_transition.cpp	(revision 10)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_transition.cpp	(revision 10)
@@ -0,0 +1,52 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Pseudo_LRU/include/Pseudo_LRU.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace pseudo_lru {
+
+
+  void Pseudo_LRU::vhdl_testbench_transition (Vhdl_Testbench & vhdl_testbench)
+  {
+#ifndef SYSTEMCASS_SPECIFIC
+    sc_cycle(0);
+#endif
+
+    for (uint32_t i = 0; i < _param._nb_access; i ++)
+      {
+	vhdl_testbench.add_input  (PORT_READ( in_ACCESS_VAL     [i]));
+	vhdl_testbench.add_output (PORT_READ(out_ACCESS_ACK     [i]));
+	if (_param._size_table>1)
+	  vhdl_testbench.add_input  (PORT_READ( in_ACCESS_ADDRESS [i]));
+	vhdl_testbench.add_output (PORT_READ(out_ACCESS_ENTITY  [i]));
+      }
+
+    for (uint32_t i = 0; i < _param._nb_update; i ++)
+      {
+	vhdl_testbench.add_input  (PORT_READ( in_UPDATE_VAL     [i]));
+	vhdl_testbench.add_output (PORT_READ(out_UPDATE_ACK     [i]));
+	if (_param._size_table>1)
+	  vhdl_testbench.add_input  (PORT_READ( in_UPDATE_ADDRESS [i]));
+	vhdl_testbench.add_input  (PORT_READ( in_UPDATE_ENTITY  [i]));
+      }
+
+    vhdl_testbench.add_test(true);
+
+    vhdl_testbench.new_cycle (); // always at the end
+  };
+
+}; // end namespace pseudo_lru
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
