Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Makefile	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Makefile	(revision 78)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libVictim.a
+
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Makefile.defs
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Makefile.defs	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Makefile.defs	(revision 78)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Makefile.deps	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Makefile.deps	(revision 78)
@@ -0,0 +1,84 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+Victim			= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+#ifndef Victim_Random
+#include			$(DIR_MORPHEO)/Behavioural/Generic/Victim/Victim_Random/Makefile.deps
+#endif
+#ifndef Victim_Round_Robin
+#include			$(DIR_MORPHEO)/Behavioural/Generic/Victim/Victim_Round_Robin/Makefile.deps
+#endif
+#ifndef Victim_NLU
+#include			$(DIR_MORPHEO)/Behavioural/Generic/Victim/Victim_NLU/Makefile.deps
+#endif
+ifndef Victim_Pseudo_LRU
+include				$(DIR_MORPHEO)/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile.deps
+endif
+#ifndef Victim_LRU
+#include			$(DIR_MORPHEO)/Behavioural/Generic/Victim/Victim_LRU/Makefile.deps
+#endif
+#ifndef Victim_FIFO
+#include			$(DIR_MORPHEO)/Behavioural/Generic/Victim/Victim_FIFO/Makefile.deps
+#endif
+
+#-----[ Directory ]----------------------------------------
+
+Victim_DIR			=	$(DIR_MORPHEO)/Behavioural/Generic/Victim
+
+#-----[ Library ]------------------------------------------
+
+Victim_LIBRARY			= 	-lVictim			\
+					$(Victim_Pseudo_LRU_LIBRARY)	\
+					$(Behavioural_LIBRARY)	
+
+#					$(Victim_Random_LIBRARY)	\
+#					$(Victim_Round_Robin_LIBRARY)	\
+#					$(Victim_NLU_LIBRARY)		\
+#					$(Victim_LRU_LIBRARY)		\
+#					$(Victim_FIFO_LIBRARY)		\
+
+Victim_DIR_LIBRARY		=	-L$(Victim_DIR)/lib			\
+					$(Victim_Pseudo_LRU_DIR_LIBRARY)	\
+					$(Behavioural_DIR_LIBRARY)
+
+#					$(Victim_Random_DIR_LIBRARY)		\
+#					$(Victim_Round_Robin_DIR_LIBRARY)	\
+#					$(Victim_NLU_DIR_LIBRARY)		\
+#					$(Victim_LRU_DIR_LIBRARY)		\
+#					$(Victim_FIFO_DIR_LIBRARY)		\
+
+#-----[ Rules ]--------------------------------------------
+
+Victim_library		:
+				@\
+				$(MAKE) Behavioural_library;		\
+				$(MAKE) Victim_Pseudo_LRU_library;	\
+				$(MAKE) --directory=$(Victim_DIR) --makefile=Makefile;
+
+#				$(MAKE) Victim_Random_library;		\
+#				$(MAKE) Victim_Round_Robin_library;	\
+#				$(MAKE) Victim_NLU_library;		\
+#				$(MAKE) Victim_LRU_library;		\
+#				$(MAKE) Victim_FIFO_library;		\
+
+Victim_library_clean	:
+				@\
+				$(MAKE) Behavioural_library_clean;		\
+				$(MAKE) Victim_Pseudo_LRU_library_clean;	\
+				$(MAKE) --directory=$(Victim_DIR) --makefile=Makefile clean;
+
+#				$(MAKE) Victim_Random_library_clean;		\
+#				$(MAKE) Victim_Round_Robin_library_clean;	\
+#				$(MAKE) Victim_NLU_library_clean;		\
+#				$(MAKE) Victim_LRU_library_clean;		\
+#				$(MAKE) Victim_FIFO_library_clean;		\
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/Makefile	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/Makefile	(revision 78)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(Victim_LIBRARY)
+
+DIR_LIBRARY			= $(Victim_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: Victim_library
+
+library_clean			: Victim_library_clean
+
+include                         $(DIR_COMPONENT)/Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+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/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/configuration.cfg	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/configuration.cfg	(revision 78)
@@ -0,0 +1,6 @@
+Victim
+3	3	+1	# victim_scheme
+2	8	*4	# nb_entity    
+1	8	*4	# nb_entry     
+1	4	*4	# nb_access    
+0	1	+1	# table_global 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/include/test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/include/test.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/include/test.h	(revision 78)
@@ -0,0 +1,28 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Common/include/Time.h"
+#include "Behavioural/Generic/Victim/include/Victim.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::generic;
+
+using namespace morpheo::behavioural::generic::victim;
+
+void test    (string name,
+	      morpheo::behavioural::generic::victim::Parameters * param);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/src/main.cpp	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/src/main.cpp	(revision 78)
@@ -0,0 +1,69 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/SelfTest/include/test.h"
+
+#define NB_PARAMS 5
+
+void usage (int argc, char * argv[])
+{
+  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
+  err (_("list_params is :\n"));
+  err (_(" * victim_scheme (Tvictim_t)\n"));
+  err (_(" * nb_entity     (uint32_t )\n"));
+  err (_(" * nb_entry      (uint32_t )\n"));
+  err (_(" * nb_access     (uint32_t )\n"));
+  err (_(" * table_global  (bool     )\n"));
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  if (argc != static_cast<int>(2+NB_PARAMS))
+    usage (argc, argv);
+
+  uint32_t x = 1;
+
+  string name = argv[x++];
+  Tvictim_t _victim_scheme = fromString<Tvictim_t>(argv[x++]);
+  uint32_t  _nb_entity     = fromString<uint32_t >(argv[x++]);
+  uint32_t  _nb_entry      = fromString<uint32_t >(argv[x++]);
+  uint32_t  _nb_access     = fromString<uint32_t >(argv[x++]);
+  bool      _table_global  = fromString<bool     >(argv[x++]);
+
+  int _return = EXIT_SUCCESS;
+  try 
+    {
+      morpheo::behavioural::generic::victim::Parameters * param = new morpheo::behavioural::generic::victim::Parameters
+	(_victim_scheme,
+	 _nb_entity    ,
+	 _nb_entry     ,
+	 _nb_access    ,
+	 _table_global );
+      
+      msg(_("%s"),param->print(1).c_str());
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      msg (_("<%s> :\n%s"),name.c_str(), error.what ());
+      _return = EXIT_FAILURE;
+    }
+  catch (...)
+    {
+      err (_("<%s> : This test must generate a error.\n"),name.c_str());
+      _return = EXIT_FAILURE;
+    }
+
+  return (_return);
+}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/src/test.cpp	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/SelfTest/src/test.cpp	(revision 78)
@@ -0,0 +1,149 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/Generic/Victim/SelfTest/include/test.h"
+#include "Common/include/Test.h"
+#include "Behavioural/include/Allocation.h"
+
+#define NB_ITERATION  10
+#define CYCLE_MAX     (128*NB_ITERATION)
+
+#define LABEL(str...)							\
+  {									\
+    msg (_("{%d} "),static_cast<uint32_t>(sc_simulation_time()));	\
+    msg (str);								\
+    msg (_("\n"));							\
+  } while(0)
+
+#define SC_START(cycle_offset)                                                       \
+  do									             \
+    {									             \
+      /*cout << "SC_START (begin)" << endl;*/				             \
+									             \
+      uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time());          \
+      if (cycle_offset != 0)						             \
+	{								             \
+	  cout << "##########[ cycle "<< cycle_current+cycle_offset << " ]" << endl; \
+	}								             \
+									             \
+      if (cycle_current > CYCLE_MAX)					             \
+	{								             \
+	  TEST_KO("Maximal cycles Reached");				             \
+	}								             \
+									             \
+      sc_start(cycle_offset);						             \
+									             \
+      /*cout << "SC_START (end  )" << endl;*/				             \
+    } while(0)
+
+void test (string name,
+	   morpheo::behavioural::generic::victim::Parameters * _param)
+{
+  msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
+
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
+  Victim * _Victim = new Victim (name.c_str(),
+#ifdef STATISTICS
+					     _parameters_statistics,
+#endif
+					     _param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  string rename;
+
+  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);	 
+  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
+
+  ALLOC1_SC_SIGNAL( in_ACCESS_VAL    ," in_ACCESS_VAL    ",Tcontrol_t,_param->_nb_access);
+  ALLOC1_SC_SIGNAL(out_ACCESS_ACK    ,"out_ACCESS_ACK    ",Tcontrol_t,_param->_nb_access);
+  ALLOC1_SC_SIGNAL( in_ACCESS_ADDRESS," in_ACCESS_ADDRESS",Taddress_t,_param->_nb_access);
+  ALLOC1_SC_SIGNAL( in_ACCESS_HIT    ," in_ACCESS_HIT    ",Tcontrol_t,_param->_nb_access);
+  ALLOC1_SC_SIGNAL( in_ACCESS_ENTITY ," in_ACCESS_ENTITY ",Tentity_t ,_param->_nb_access);
+  ALLOC1_SC_SIGNAL(out_ACCESS_VICTIM ,"out_ACCESS_VICTIM ",Tentity_t ,_param->_nb_access);
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  msg(_("<%s> : Instanciation of _Victim.\n"),name.c_str());
+
+  (*(_Victim->in_CLOCK))        (*(in_CLOCK));
+  (*(_Victim->in_NRESET))       (*(in_NRESET));
+
+  INSTANCE1_SC_SIGNAL(_Victim, in_ACCESS_VAL    ,_param->_nb_access);
+  INSTANCE1_SC_SIGNAL(_Victim,out_ACCESS_ACK    ,_param->_nb_access);
+  if (_param->_have_port_address)
+  INSTANCE1_SC_SIGNAL(_Victim, in_ACCESS_ADDRESS,_param->_nb_access);
+  INSTANCE1_SC_SIGNAL(_Victim, in_ACCESS_HIT    ,_param->_nb_access);
+  INSTANCE1_SC_SIGNAL(_Victim, in_ACCESS_ENTITY ,_param->_nb_access);
+  INSTANCE1_SC_SIGNAL(_Victim,out_ACCESS_VICTIM ,_param->_nb_access);
+
+  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
+    
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  // Initialisation
+
+  const uint32_t seed = 0;
+//const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  SC_START(0);
+  LABEL("Initialisation");
+
+  LABEL("Reset");
+  in_NRESET->write(0);
+  SC_START(5);
+  in_NRESET->write(1);  
+
+  LABEL("Loop of Test");
+
+  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
+    {
+      LABEL("Iteration %d",iteration);
+
+      SC_START(1);
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+
+  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
+
+  delete _Victim;
+
+  delete in_CLOCK;
+  delete in_NRESET;
+
+  delete []  in_ACCESS_VAL    ;
+  delete [] out_ACCESS_ACK    ;
+  delete []  in_ACCESS_ADDRESS;
+  delete []  in_ACCESS_HIT    ;
+  delete []  in_ACCESS_ENTITY ;
+  delete [] out_ACCESS_VICTIM ;
+#endif
+
+#ifdef STATISTICS
+  delete _parameters_statistics;
+#endif
+}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/TODO
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/TODO	(revision 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/TODO	(revision 78)
@@ -1,7 +1,11 @@
 - Ajouter quelques algorithme de selection
+  * Random
+    -> LFSR (?) qui ne tourne pas à chaque cycle mais à chaque in_access_val = '1'
   * Round Robin
     -> simple compteur de log2(N) bits
+  * Not Last Used
+    -> idem random mais : sauvegarde le dernier élément accéder. Si rand = last_elt, alors on renvoye not rand
   * 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'
+  * fifo
+    idem true LRU mais aucun evenement lors de l'accès 
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/configuration.cfg	(revision 78)
@@ -1,5 +1,5 @@
 Victim_Pseudo_LRU
-4	16	*2	# nb_entity 
-1	4	*2	# nb_access 
-1	4	*2	# nb_update 
-1	16	*2	# size_table
+4	16	*4	# nb_entity 
+1	4	*4	# nb_access		# 1	4	*4	# nb_update 
+1	16	*4	# size_table
+0	1	+1	# table_global
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/main.cpp	(revision 78)
@@ -14,8 +14,9 @@
   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;
+       << " - nb_entity     (unsigned int)" << endl
+       << " - nb_access     (unsigned int)" << endl
+//        << " - nb_update     (unsigned int)" << endl
+       << " - size_table    (unsigned int)" << endl
+       << " - table_global  (bool        )" << endl;
   exit (1);
 }
@@ -30,14 +31,16 @@
     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::victim_pseudo_lru::Parameters param (nb_entity ,
-								       nb_access ,
-								       nb_update ,
-								       size_table);
+  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[4]);
+  const bool     table_global = atoi(argv[5]);  
+  morpheo::behavioural::generic::victim::victim_pseudo_lru::Parameters param 
+    (nb_entity ,
+     nb_access ,
+//      nb_update ,
+     size_table,
+     table_global);
 
   test (name,param);
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp	(revision 78)
@@ -15,10 +15,4 @@
   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 
     {
@@ -45,5 +39,5 @@
 								  param_stat,
 #endif
-								  param);
+								  &param);
   
 #ifdef SYSTEMC
@@ -57,10 +51,7 @@
   sc_signal<Tcontrol_t>                    ACCESS_ACK     [param._nb_access];
   sc_signal<Taddress_t>                    ACCESS_ADDRESS [param._nb_access];
+  sc_signal<Tcontrol_t>                    ACCESS_HIT     [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];
+  sc_signal<Tentity_t >                    ACCESS_VICTIM  [param._nb_access];
   
   /********************************************************
@@ -77,17 +68,11 @@
 	(*(_Victim_Pseudo_LRU-> in_ACCESS_VAL     [i])) (ACCESS_VAL     [i]);
 	(*(_Victim_Pseudo_LRU->out_ACCESS_ACK     [i])) (ACCESS_ACK     [i]);
-	if (param._size_table>1)
+	if (param._size_address>1)
 	(*(_Victim_Pseudo_LRU-> in_ACCESS_ADDRESS [i])) (ACCESS_ADDRESS [i]);
-	(*(_Victim_Pseudo_LRU->out_ACCESS_ENTITY  [i])) (ACCESS_ENTITY  [i]);
+	(*(_Victim_Pseudo_LRU-> in_ACCESS_HIT     [i])) (ACCESS_HIT     [i]);
+	(*(_Victim_Pseudo_LRU-> in_ACCESS_ENTITY  [i])) (ACCESS_ENTITY  [i]);
+	(*(_Victim_Pseudo_LRU->out_ACCESS_VICTIM  [i])) (ACCESS_VICTIM  [i]);
       }
 
-    for (uint32_t i=0; i<param._nb_update; i++)
-      {
-	(*(_Victim_Pseudo_LRU-> in_UPDATE_VAL     [i])) (UPDATE_VAL     [i]);
-	(*(_Victim_Pseudo_LRU->out_UPDATE_ACK     [i])) (UPDATE_ACK     [i]);
-	if (param._size_table>1)
-	(*(_Victim_Pseudo_LRU-> in_UPDATE_ADDRESS [i])) (UPDATE_ADDRESS [i]);
-	(*(_Victim_Pseudo_LRU-> in_UPDATE_ENTITY  [i])) (UPDATE_ENTITY  [i]);
-      }
   /********************************************************
    * Simulation - Begin
@@ -105,21 +90,18 @@
       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 i=0; i<param._nb_access; i++)
+    {
+      ACCESS_VAL[i].write(1);
+      ACCESS_HIT[i].write(1);
+    }
+  
+  for (uint32_t j=0; j<param._size_table; j+=param._nb_access)
     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++)
+	for (uint32_t i=0; i<param._nb_access; i++)
 	  {
 	    
@@ -131,11 +113,11 @@
 	      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);
+	    ACCESS_VAL     [i].write(val );
+	    if (param._size_address>1)
+	      ACCESS_ADDRESS [i].write(addr);
+	    ACCESS_ENTITY  [i].write(entity);
 	    
 	    sc_start(0);
-	    cout << "\t[" << i << "] " << val << " - " << UPDATE_ACK[i].read() << " addr : " << addr << " -> " << entity << endl;
+	    cout << "\t[" << i << "] " << val << " - " << ACCESS_ACK[i].read() << " addr : " << addr << " -> " << entity << endl;
 	  }
 	sc_start(1);
@@ -143,7 +125,7 @@
 		    
 
-  for (uint32_t i=0; i<param._nb_update; i++)
-    {
-      UPDATE_VAL[i].write(0);
+  for (uint32_t i=0; i<param._nb_access; i++)
+    {
+      ACCESS_VAL[i].write(0);
     }
 
@@ -151,4 +133,9 @@
 
   cout << "-----[ Test Access ]------------------------------" << endl;
+
+  for (uint32_t i=0; i<param._nb_access; i++)
+    {
+      ACCESS_HIT[i].write(0);
+    }
   
   
@@ -171,10 +158,10 @@
 		addr = 0;
 	      ACCESS_VAL     [i].write(val );
-	      if (param._size_table>1)
+	      if (param._size_address>1)
 		ACCESS_ADDRESS [i].write(addr);
 	      
 	      sc_start(0);
 	      
-	      Tentity_t  entity  = ACCESS_ENTITY [i].read();
+	      Tentity_t  entity  = ACCESS_VICTIM [i].read();
 	      
 	      cout << "\t[" << i << "] " << val << " - " << ACCESS_ACK[i].read() << " addr : " << addr << " -> " << entity << endl;
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Parameters.h	(revision 78)
@@ -24,19 +24,22 @@
   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 _nb_update ; // number of port to update the internal entity
   public : const uint32_t _size_table; // Size of victim_pseudo_lru's table
+  public : const bool     _table_global;
+  public : const uint32_t _size_address;
 
     //-----[ methods ]-----------------------------------------------------------
   public : Parameters  (uint32_t nb_entity ,
 			uint32_t nb_access ,
-			uint32_t nb_update ,
-			uint32_t size_table);
+// 			uint32_t nb_update ,
+			uint32_t size_table,
+			bool     table_global);
   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
 
-  public :        std::string   msg_error  (void);
-  public :        std::string   print      (uint32_t depth);
-  public : friend std::ostream& operator<< (std::ostream& output_stream,
-					    morpheo::behavioural::generic::victim::victim_pseudo_lru::Parameters & x);
+  public :        Parameters_test msg_error  (void);
+  public :        std::string     print      (uint32_t depth);
+  public : friend std::ostream&   operator<< (std::ostream& output_stream,
+					      morpheo::behavioural::generic::victim::victim_pseudo_lru::Parameters & x);
   };
 
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Types.h	(revision 78)
@@ -9,5 +9,5 @@
  */
 
-#include "Behavioural/include/Types.h"
+#include "Behavioural/Generic/Victim/include/Types.h"
 
 namespace morpheo {
@@ -17,6 +17,111 @@
 namespace victim_pseudo_lru {
 
-  typedef uint32_t Taddress_t;
-  typedef uint32_t Tentity_t;
+  class entry_t
+  {
+    // Numerotation of victim_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; // middle
+
+      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; // middle
+
+      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 : std::string print ()
+    {
+      std::string res = "";
+
+      for (int32_t i=static_cast<int32_t>(_size)-1; i>=0; i--)
+	res += toString(_entry[i]) + " ";
+
+      return res;
+    }
+  };
 
 }; // end namespace victim_pseudo_lru
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h	(revision 78)
@@ -5,5 +5,5 @@
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -53,118 +53,9 @@
 #endif
   {
-    // -----[ internal class ]--------------------------------------------
-  protected : class entry_t
-  {
-    // Numerotation of victim_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 : 
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const std::string   _name;
 
-  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 : std::string print ()
-    {
-      std::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 std::string     _name;
-
-  protected : const Parameters _param;
+  protected : const Parameters  * _param;
 #ifdef STATISTICS
   public    : Stat                           * _stat;
@@ -175,5 +66,5 @@
 
 #ifdef SYSTEMC
-    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Interface
   public    : SC_CLOCK                      *  in_CLOCK         ;
@@ -184,20 +75,18 @@
   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 ;
+  public    : SC_IN (Tcontrol_t)           **  in_ACCESS_HIT    ; // hit = 1 : update next_victim with in_entity else with out_victim
+  public    : SC_IN (Tentity_t )           **  in_ACCESS_ENTITY ;
+  public    : SC_OUT(Tentity_t )           ** out_ACCESS_VICTIM ;
 
     // Interface update
-    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
   private   : entry_t                      ** reg_TABLE;
 
-    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  private   : Tentity_t                     * internal_ACCESS_ENTITY;
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  private   : Tcontrol_t                    * internal_ACCESS_ACK   ;
+  private   : Tentity_t                     * internal_ACCESS_VICTIM;
 #endif
 
-    // -----[ methods ]---------------------------------------------------
+    // -----[ methods ]---------------------------------------------------
 
 #ifdef SYSTEMC
@@ -205,14 +94,15 @@
 #endif
 
-  public  :          Victim_Pseudo_LRU              (
+  public  :          Victim_Pseudo_LRU              
+  (
 #ifdef SYSTEMC
-					      sc_module_name                                name,
+   sc_module_name                                name,
 #else					       
-					      std::string                                   name,
+   std::string                                   name,
 #endif					       
 #ifdef STATISTICS
-					      morpheo::behavioural::Parameters_Statistics * param_statistics,
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-					      Parameters                                    param );
+   Parameters                                  * param );
 					       
   public  :          Victim_Pseudo_LRU              (Parameters param );
@@ -224,5 +114,5 @@
 					       
   public  : void     transition                (void);
-  public  : void     genMealy_access           (void);
+  public  : void     genMoore                  (void);
 #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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters.cpp	(revision 78)
@@ -17,10 +17,13 @@
   Parameters::Parameters (uint32_t nb_entity ,
 			  uint32_t nb_access ,
-			  uint32_t nb_update ,
-			  uint32_t size_table):
+// 			  uint32_t nb_update ,
+			  uint32_t size_table,
+			  bool     table_global):
     _nb_entity  (nb_entity ),
     _nb_access  (nb_access ),
-    _nb_update  (nb_update ),
-    _size_table (size_table)
+//     _nb_update  (nb_update ),
+    _size_table ((table_global == true)?1:size_table),
+    _table_global (table_global),
+    _size_address (size_table)
   {
     test();
@@ -30,6 +33,8 @@
     _nb_entity  (param._nb_entity ),
     _nb_access  (param._nb_access ),
-    _nb_update  (param._nb_update ),
-    _size_table (param._size_table)
+//     _nb_update  (param._nb_update ),
+    _size_table (param._size_table),
+    _table_global(param._table_global),
+    _size_address(param._size_address)
   { 
     test();
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters_msg_error.cpp	(revision 78)
@@ -16,50 +16,27 @@
 namespace victim_pseudo_lru {
 
-  std::string Parameters::msg_error(void)
+  Parameters_test Parameters::msg_error(void)
   {
-    std::string msg = "";
+    Parameters_test test ("Victime_Pseudo_LRU");
 
     if (_nb_entity < 2)
-      {
-        msg += "  - nb_entity must be >= 2\n";
-        msg += "    * nb_entity                       : " + toString(_nb_entity) + "\n";
-      }
-
+      test.error("nb_entity must be >= 2");
+    
     if (is_positive(log2(_nb_entity)) == false)
-      {
-        msg += "  - nb_entity is not a power of 2\n";
-        msg += "    * nb_entity                       : " + toString(_nb_entity) + "\n";
-      }
+      test.error("nb_entity is not a power of 2");
 
     if (_nb_access <  1)
-      {
-        msg += "  - nb_access must be >= 1\n";
-        msg += "    * nb_access                       : " + toString(_nb_access) + "\n";
-      }
+      test.error("nb_access must be >= 1");
 
     if (_size_table < 1)
-      {
-        msg += "  - size_table must be >= 1\n";
-        msg += "    * size_table                      : " + toString(_size_table) + "\n";
-      }
+      test.error("size_table must be >= 1");
 
     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";
-      }
+      test.error("type \"Tentity_t\" is too little to the size defined by nb_entity");
 
     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";
-      }
+      test.error("type \"Taddress_t\" is too little to the size defined by size_table");
 
-
-
-    return msg;
+    return test;
   };
 
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters_print.cpp	(revision 78)
@@ -21,8 +21,9 @@
 
     xml.balise_open("victim_pseudo_lru");
-    xml.singleton_begin("nb_entity "); xml.attribut("value",toString(_nb_entity )); xml.singleton_end();
-    xml.singleton_begin("nb_access "); xml.attribut("value",toString(_nb_access )); xml.singleton_end();
-    xml.singleton_begin("nb_update "); xml.attribut("value",toString(_nb_update )); xml.singleton_end();
-    xml.singleton_begin("size_table"); xml.attribut("value",toString(_size_table)); xml.singleton_end();
+    xml.singleton_begin("nb_entity   "); xml.attribut("value",toString(_nb_entity   )); xml.singleton_end();
+    xml.singleton_begin("nb_access   "); xml.attribut("value",toString(_nb_access   )); xml.singleton_end();
+//     xml.singleton_begin("nb_update   "); xml.attribut("value",toString(_nb_update   )); xml.singleton_end();
+    xml.singleton_begin("size_table  "); xml.attribut("value",toString(_size_table  )); xml.singleton_end();
+    xml.singleton_begin("table_global"); xml.attribut("value",toString(_table_global)); xml.singleton_end();
     xml.balise_close();
 
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp	(revision 78)
@@ -22,5 +22,5 @@
 			  morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-			  morpheo::behavioural::generic::victim::victim_pseudo_lru::Parameters param ):
+			  morpheo::behavioural::generic::victim::victim_pseudo_lru::Parameters * param ):
 			  _name   (name)
 			  ,_param (param)
@@ -52,30 +52,17 @@
     sensitive << (*(in_CLOCK)).pos();
 
-    SC_METHOD (genMealy_access);
+    SC_METHOD (genMoore);
     dont_initialize ();
     sensitive << (*(in_CLOCK)).neg();
-    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,Victim_Pseudo_LRU,"Victim_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);
+    for (uint32_t i=0; i<_param->_nb_access; i++)
+      {
+	internal_ACCESS_ACK [i] = 1;
+	PORT_WRITE (out_ACCESS_ACK [i], internal_ACCESS_ACK [i]);
+      }
 
 #endif
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp	(revision 78)
@@ -8,4 +8,5 @@
 
 #include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h"
+#include "Behavioural/include/Allocation.h"
 
 namespace morpheo {
@@ -42,59 +43,23 @@
     // ~~~~~[ 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++)
-	{
-	  Interface_fifo * interface = _interfaces->set_interface("access_"+toString(i)
-#ifdef POSITION
-								  , IN  ,WEST, "Access"
-#endif
-								  );
+      ALLOC1_INTERFACE("access",IN,WEST, "Access", _param->_nb_access);
 
-	   in_ACCESS_VAL     [i] = interface->set_signal_valack_in        ("val"    , VAL);
-	  out_ACCESS_ACK     [i] = interface->set_signal_valack_out       ("ack"    , ACK);
-	  
-	  if (_param._size_table>1)
-	   in_ACCESS_ADDRESS [i] = interface->set_signal_in  <Taddress_t> ("address",static_cast<uint32_t>(log2(_param._size_table)));
-	  out_ACCESS_ENTITY  [i] = interface->set_signal_out <Tentity_t>  ("entity" ,static_cast<uint32_t>(log2(_param._nb_entity )));
-	}
+      ALLOC1_VALACK_IN ( in_ACCESS_VAL    ,VAL);
+      ALLOC1_VALACK_OUT(out_ACCESS_ACK    ,ACK);
+      ALLOC1_SIGNAL_IN ( in_ACCESS_HIT    ,"hit"    ,Tcontrol_t,1);
+      ALLOC1_SIGNAL_IN ( in_ACCESS_ADDRESS,"address",Taddress_t,log2(_param->_size_address));
+      ALLOC1_SIGNAL_IN ( in_ACCESS_ENTITY ,"entity" ,Tentity_t ,log2(_param->_nb_entity   ));
+      ALLOC1_SIGNAL_OUT(out_ACCESS_VICTIM ,"victim" ,Tentity_t ,log2(_param->_nb_entity   ));
     }
 
-    // ~~~~~[ 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++)
-	{
-	  Interface_fifo * interface = _interfaces->set_interface("update_"+toString(i)
-#ifdef POSITION
-								  , IN  ,EAST, "Update"
-#endif
-								  );
+    // -----[ Register ]---------------------------------------------------
+    reg_TABLE = new entry_t *  [_param->_size_table];
 
- 	  in_UPDATE_VAL     [i] = interface->set_signal_valack_in        ("val"    , VAL);
-	 out_UPDATE_ACK     [i] = interface->set_signal_valack_out       ("ack"    , ACK);
-	 if (_param._size_table>1)
-	  in_UPDATE_ADDRESS [i] = interface->set_signal_in  <Taddress_t> ("address",static_cast<uint32_t>(log2(_param._size_table)));
-	  in_UPDATE_ENTITY  [i] = interface->set_signal_in  <Tentity_t>  ("entity" ,static_cast<uint32_t>(log2(_param._nb_entity )));
-	}
-    }
-    // -----[ 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);
+    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];
+    internal_ACCESS_ACK    = new Tcontrol_t [_param->_nb_access];
+    internal_ACCESS_VICTIM = new Tentity_t  [_param->_nb_access];
 
 #ifdef POSITION
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_deallocation.cpp	(revision 78)
@@ -3,5 +3,5 @@
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -19,29 +19,21 @@
     delete     in_CLOCK;
     delete     in_NRESET;
-    // -----[ Interface access ]-------------------------------------------
+    // -----[ Interface access ]-------------------------------------------
     delete []  in_ACCESS_VAL    ;
     delete [] out_ACCESS_ACK    ;
-    if (_param._size_table>1)
+    if (_param->_size_address>1)
     delete []  in_ACCESS_ADDRESS;
-    delete [] out_ACCESS_ENTITY ;
+    delete []  in_ACCESS_HIT    ;
+    delete []  in_ACCESS_ENTITY ;
+    delete [] out_ACCESS_VICTIM ;
     
-    // -----[ Interface update ]-------------------------------------------
-    delete []  in_UPDATE_VAL    ;
-    delete [] out_UPDATE_ACK    ;
-    if (_param._size_table>1)
-    delete []  in_UPDATE_ADDRESS;
-    delete []  in_UPDATE_ENTITY ;
-
-    // -----[ Register ]---------------------------------------------------
+    // -----[ Register ]---------------------------------------------------
     delete [] reg_TABLE;
 
-    // -----[ Internal ]---------------------------------------------------
-    delete [] internal_ACCESS_ENTITY;
+    // -----[ Internal ]---------------------------------------------------
+    delete [] internal_ACCESS_ACK   ;
+    delete [] internal_ACCESS_VICTIM;
 
-#ifdef POSITION
     delete _component;
-#else
-    delete _interfaces;
-#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 75)
+++ 	(revision )
@@ -1,46 +1,0 @@
-#ifdef SYSTEMC
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h"
-
-namespace morpheo {
-namespace behavioural {
-namespace generic {
-namespace victim {
-namespace victim_pseudo_lru {
-
-  void Victim_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 victim_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_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_genMoore.cpp	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_genMoore.cpp	(revision 78)
@@ -0,0 +1,34 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+namespace victim_pseudo_lru {
+
+  void Victim_Pseudo_LRU::genMoore (void)
+  {
+    for (uint32_t i=0; i<_param->_nb_access; i++)
+      {
+	Taddress_t address = (_param->_size_table>1)?PORT_READ(in_ACCESS_ADDRESS[i]):0;
+
+	internal_ACCESS_VICTIM[i] = reg_TABLE[address]->access();
+
+	PORT_WRITE(out_ACCESS_VICTIM[i], internal_ACCESS_VICTIM[i]);
+      }//end for i
+  };
+
+}; // end namespace victim_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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_transition.cpp	(revision 78)
@@ -17,48 +17,32 @@
   void Victim_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++)
+      {
+	if (PORT_READ (in_ACCESS_VAL[i]) and internal_ACCESS_ACK)
+	  {
+	    Taddress_t address = (_param->_size_table>1)?PORT_READ(in_ACCESS_ADDRESS[i]):0;
+	    Tentity_t  entity;
 
-    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 (PORT_READ(in_ACCESS_HIT [i]))
+	      {
+		// Hit  : don't need a victim
+// #ifdef STATISTICS
+// 		_stat_nb_update ++;
+// #endif
+		entity = PORT_READ(in_ACCESS_ENTITY[i]);
+	      }
+	    else
+	      {
+		// Miss : need victim
+// #ifdef STATISTICS
+// 		_stat_nb_access ++;
+// #endif
+		entity = internal_ACCESS_VICTIM[i];
+	      }
 
-	    if (_param._size_table>1)
-	      address = PORT_READ     (in_ACCESS_ADDRESS[i]);
-	    else
-	      address = 0;
-	    
-	    reg_TABLE[address]->update(internal_ACCESS_ENTITY[i]);
+	    reg_TABLE[address]->update(entity);
 	  }
       }//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
-
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     end_cycle ();
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_body.cpp	(revision 78)
@@ -35,5 +35,5 @@
     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++)
+    for (uint32_t i=0; i<_param->_nb_access; i++)
       {
 	vhdl->set_body ("");
@@ -42,5 +42,5 @@
 	std::string access_address;
 
-	if (_param._size_table>1)
+	if (_param->_size_table>1)
 	  access_address = "conv_integer(in_ACCESS_"+toString(i)+"_ADDRESS)";
 	else
@@ -50,5 +50,5 @@
 	vhdl->set_body ("");
 
-	for (int32_t j=static_cast<uint32_t>(log2(_param._nb_entity)-1); j>=0; j--)
+	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)+") <= ");
@@ -56,10 +56,10 @@
 	    uint32_t cpt=0;
 
-	    for (int32_t k=(1<<j)-1; k<static_cast<int32_t>(_param._nb_entity-1); k+=(1<<(j+1)))
+	    for (int32_t k=(1<<j)-1; k<static_cast<int32_t>(_param->_nb_entity-1); k+=(1<<(j+1)))
 	      {
 		std::string cond = "";
 		
 		// Create the condition
-		for (uint32_t l=j+1; l<static_cast<uint32_t>(log2(_param._nb_entity));l++)
+		for (uint32_t l=j+1; l<static_cast<uint32_t>(log2(_param->_nb_entity));l++)
 		  {
 		    if (l==static_cast<uint32_t>(j+1))
@@ -85,10 +85,10 @@
     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--)
+    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)))
+	  for (int32_t k=(1<<j)-1; k<static_cast<int32_t>(_param->_nb_entity-1); k+=(1<<(j+1)))
 	    {
 	      bool   have_cond = false;
@@ -96,5 +96,5 @@
 	      
 	      // condition to change the bit
-	      for (uint32_t l=j+1; l<static_cast<uint32_t>(log2(_param._nb_entity));l++)
+	      for (uint32_t l=j+1; l<static_cast<uint32_t>(log2(_param->_nb_entity));l++)
 		{
 		  have_cond = true;
@@ -118,10 +118,10 @@
     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--)
+    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)))
+	  for (int32_t k=(1<<j)-1; k<static_cast<int32_t>(_param->_nb_entity-1); k+=(1<<(j+1)))
 	    {
 	      bool   have_cond = false;
@@ -129,5 +129,5 @@
 	      
 	      // condition to change the bit
-	      for (uint32_t l=j+1; l<static_cast<uint32_t>(log2(_param._nb_entity));l++)
+	      for (uint32_t l=j+1; l<static_cast<uint32_t>(log2(_param->_nb_entity));l++)
 		{
 		  have_cond = true;
@@ -146,5 +146,5 @@
 		  std::string update_address;
 
-		  if (_param._size_table>1)
+		  if (_param->_size_table>1)
 		    update_address = "conv_integer(in_UPDATE_"+toString(i)+"_ADDRESS)";
 		  else
@@ -168,9 +168,9 @@
     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++)
+    for (uint32_t i=0; i<_param->_nb_access; i++)
       {
 	std::string access_address;
 
-	if (_param._size_table>1)
+	if (_param->_size_table>1)
 	  access_address = "conv_integer(in_ACCESS_"+toString(i)+"_ADDRESS)";
 	else
@@ -183,9 +183,9 @@
 
     vhdl->set_body ("\t\t-- Update port");
-    for (uint32_t i=0; i<_param._nb_update; i++)
+    for (uint32_t i=0; i<_param->_nb_update; i++)
       {
 	std::string update_address;
 
-	if (_param._size_table>1)
+	if (_param->_size_table>1)
 	  update_address = "conv_integer(in_UPDATE_"+toString(i)+"_ADDRESS)";
 	else
@@ -207,5 +207,5 @@
     vhdl->set_body ("-- Ack is always ");
     vhdl->set_body ("");
-    for (uint32_t i=0; i<_param._nb_access; i++)
+    for (uint32_t i=0; i<_param->_nb_access; i++)
       {
 	vhdl->set_body ("out_ACCESS_"+toString(i)+"_ACK    <= '1';");
@@ -213,5 +213,5 @@
       }
     vhdl->set_body ("");
-    for (uint32_t i=0; i<_param._nb_update; i++)
+    for (uint32_t i=0; i<_param->_nb_update; i++)
       {
 	vhdl->set_body ("out_UPDATE_"+toString(i)+"_ACK    <= '1';");
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 75)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_declaration.cpp	(revision 78)
@@ -18,18 +18,18 @@
   void Victim_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_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++)
+    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))));
+	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++)
+    for (uint32_t i=0; i<_param->_nb_update; i++)
       {
-	vhdl->set_signal ("update_next_entry_"+toString(i)+"",std_logic(_param._nb_entity-1));
+	vhdl->set_signal ("update_next_entry_"+toString(i)+"",std_logic(_param->_nb_entity-1));
       }
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/Makefile	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/Makefile	(revision 78)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/Victim.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/Victim.tex	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/Victim.tex	(revision 78)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/sty/header.sty
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/sty/header.sty	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/sty/header.sty	(revision 78)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Victim}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/01_introduction.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/01_introduction.tex	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/01_introduction.tex	(revision 78)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/02_features.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/02_features.tex	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/02_features.tex	(revision 78)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/03_description.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/03_description.tex	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/03_description.tex	(revision 78)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/04_pinout.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/04_pinout.tex	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/04_pinout.tex	(revision 78)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/05_parameters.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/05_parameters.tex	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/05_parameters.tex	(revision 78)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/06_performance.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/06_performance.tex	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/06_performance.tex	(revision 78)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/07_details.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/07_details.tex	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/07_details.tex	(revision 78)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/08_history.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/08_history.tex	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/08_history.tex	(revision 78)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/root.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/root.tex	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/doc/tex/root.tex	(revision 78)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Parameters.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Parameters.h	(revision 78)
@@ -0,0 +1,72 @@
+#ifndef morpheo_behavioural_generic_victim_Parameters_h
+#define morpheo_behavioural_generic_victim_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include "Behavioural/Generic/Victim/include/Types.h"
+
+// #include "Behavioural/Generic/Victim/Victim_Random/include/Parameters.h"
+// #include "Behavioural/Generic/Victim/Victim_Round_Robin/include/Parameters.h"
+// #include "Behavioural/Generic/Victim/Victim_NLU/include/Parameters.h"
+#include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Parameters.h"
+// #include "Behavioural/Generic/Victim/Victim_LRU/include/Parameters.h"
+// #include "Behavioural/Generic/Victim/Victim_FIFO/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : Tvictim_t _victim_scheme    ; // Scheme to select the victim
+  public : uint32_t  _nb_entity        ; // number of entity
+  public : uint32_t  _nb_entry         ; // number of entry
+  public : uint32_t  _nb_access        ; // number of port to select an entity
+  public : bool      _table_global     ; // Have one table or one by entry
+
+  public : uint32_t  _size_entity      ;
+  public : uint32_t  _size_table       ; // Size of internal table
+  public : uint32_t  _size_address     ;
+
+  public : bool      _have_port_address;
+
+//public : morpheo::behavioural::generic::victim::victim_random     ::Parameters * _param_victim_random     ;
+//public : morpheo::behavioural::generic::victim::victim_round_robin::Parameters * _param_victim_round_robin;
+//public : morpheo::behavioural::generic::victim::victim_nlu        ::Parameters * _param_victim_nlu        ;
+  public : morpheo::behavioural::generic::victim::victim_pseudo_lru ::Parameters * _param_victim_pseudo_lru ;
+//public : morpheo::behavioural::generic::victim::victim_lru        ::Parameters * _param_victim_lru        ;
+//public : morpheo::behavioural::generic::victim::victim_fifo       ::Parameters * _param_victim_fifo       ;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (Tvictim_t victim_scheme    ,
+			uint32_t  nb_entity        ,
+			uint32_t  nb_entry         ,
+			uint32_t  nb_access        ,
+			bool      table_global     );
+//public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public :        Parameters_test msg_error  (void);
+
+  public :        std::string     print      (uint32_t depth);
+  public : friend std::ostream&   operator<< (std::ostream& output_stream,
+					      morpheo::behavioural::generic::victim::Parameters & x);
+  };
+
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Types.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Types.h	(revision 78)
@@ -0,0 +1,25 @@
+#ifndef morpheo_behavioural_generic_victim_Types_h
+#define morpheo_behavioural_generic_victim_Types_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+
+  typedef uint32_t Taddress_t;
+  typedef uint32_t Tentity_t;
+
+}; // end namespace victim
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Victim.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Victim.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/include/Victim.h	(revision 78)
@@ -0,0 +1,123 @@
+#ifndef morpheo_behavioural_generic_victim_Victim_h
+#define morpheo_behavioural_generic_victim_Victim_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Types.h"
+
+#include "Behavioural/Generic/Victim/include/Types.h"
+#include "Behavioural/Generic/Victim/include/Parameters.h"
+#ifdef STATISTICS
+#include "Behavioural/include/Stat.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#include "Behavioural/include/Usage.h"
+
+// #include "Behavioural/Generic/Victim/Victim_Random/include/Victim_Random.h"
+// #include "Behavioural/Generic/Victim/Victim_Round_Robin/include/Victim_Round_Robin.h"
+// #include "Behavioural/Generic/Victim/Victim_NLU/include/Victim_NLU.h"
+#include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h"
+// #include "Behavioural/Generic/Victim/Victim_LRU/include/Victim_LRU.h"
+// #include "Behavioural/Generic/Victim/Victim_FIFO/include/Victim_FIFO.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+
+  class Victim 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const std::string  _name;
+  protected : const Parameters * _param;
+  private   : const Tusage_t     _usage;
+
+#ifdef STATISTICS
+  public    : Stat                           * _stat;
+#endif
+
+  public    : Component                      * _component;
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_CLOCK                      *  in_CLOCK        ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
+
+    // ~~~~~[ 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_IN (Tcontrol_t)           **  in_ACCESS_HIT    ;
+  public    : SC_IN (Tentity_t )           **  in_ACCESS_ENTITY ;
+  public    : SC_OUT(Tentity_t )           ** out_ACCESS_VICTIM ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+//public : morpheo::behavioural::generic::victim::victim_random     ::Victim_Random      * _component_victim_random     ;
+//public : morpheo::behavioural::generic::victim::victim_round_robin::Victim_Round_Robin * _component_victim_round_robin;
+//public : morpheo::behavioural::generic::victim::victim_nlu        ::Victim_NLU         * _component_victim_nlu        ;
+  public : morpheo::behavioural::generic::victim::victim_pseudo_lru ::Victim_Pseudo_LRU  * _component_victim_pseudo_lru ;
+//public : morpheo::behavioural::generic::victim::victim_lru        ::Victim_LRU         * _component_victim_lru        ;
+//public : morpheo::behavioural::generic::victim::victim_fifo       ::Victim_FIFO        * _component_victim_fifo       ;
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#endif
+
+    // -----[ Methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (Victim);
+#endif
+  public  :          Victim              
+  (
+#ifdef SYSTEMC
+   sc_module_name                                name,
+#else					       
+   std::string                                   name,
+#endif					       
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   Parameters                                  * param,
+   morpheo::behavioural::Tusage_t                usage=USE_ALL
+   );
+  public  :          ~Victim             (void);
+					       
+  private : void        allocation                (
+#ifdef STATISTICS
+						   morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+						   void
+#endif
+						   );
+  private : void        deallocation              (void);
+  };
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Parameters.cpp	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Parameters.cpp	(revision 78)
@@ -0,0 +1,87 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace victim {
+
+
+#undef  FUNCTION
+#define FUNCTION "Victim::Parameters"
+  Parameters::Parameters (Tvictim_t victim_scheme    ,
+			  uint32_t  nb_entity        ,
+			  uint32_t  nb_entry         ,
+			  uint32_t  nb_access        ,
+			  bool      table_global     )
+  {
+    log_printf(FUNC,Victim,FUNCTION,"Begin");
+    
+    _victim_scheme     = victim_scheme;
+    _nb_entity         = nb_entity    ;
+    _nb_entry          = nb_entry     ;
+    _nb_access         = nb_access    ;
+    _table_global      = table_global ;
+    
+    _size_table        = (table_global==true)?1:_nb_entry;
+    _size_entity       = log2(nb_entity);
+    _size_address      = log2(nb_entry);
+    
+    _have_port_address = _size_address>0;
+
+    test();
+
+    switch (victim_scheme)
+      {
+//    case VICTIM_RANDOM      : _param_victim_random      = new morpheo::behavioural::generic::victim::victim_random     ::Parameters (); break;
+//    case VICTIM_ROUND_ROBIN : _param_victim_round_robin = new morpheo::behavioural::generic::victim::victim_round_robin::Parameters (); break;
+//    case VICTIM_NLU         : _param_victim_nlu         = new morpheo::behavioural::generic::victim::victim_nlu        ::Parameters (); break;
+      case VICTIM_PSEUDO_LRU  : _param_victim_pseudo_lru  = new morpheo::behavioural::generic::victim::victim_pseudo_lru ::Parameters (nb_entity, nb_access, nb_entry, table_global); break;
+//    case VICTIM_LRU         : _param_victim_lru         = new morpheo::behavioural::generic::victim::victim_lru        ::Parameters (); break;
+//    case VICTIM_FIFO        : _param_victim_fifo        = new morpheo::behavioural::generic::victim::victim_fifo       ::Parameters (); break;
+      default : break;
+      }
+
+    log_printf(FUNC,Victim,FUNCTION,"End");
+  };
+  
+// #undef  FUNCTION
+// #define FUNCTION "Victim::Parameters (copy)"
+//   Parameters::Parameters (Parameters & param)
+//   {
+//     log_printf(FUNC,Victim,FUNCTION,"Begin");
+//     test();
+//     log_printf(FUNC,Victim,FUNCTION,"End");
+//   };
+
+#undef  FUNCTION
+#define FUNCTION "Victim::~Parameters"
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,Victim,FUNCTION,"Begin");
+
+    switch (_victim_scheme)
+      {
+//    case VICTIM_RANDOM      : delete _param_victim_random     ;
+//    case VICTIM_ROUND_ROBIN : delete _param_victim_round_robin;
+//    case VICTIM_NLU         : delete _param_victim_nlu        ;
+      case VICTIM_PSEUDO_LRU  : delete _param_victim_pseudo_lru ;
+//    case VICTIM_LRU         : delete _param_victim_lru        ;
+//    case VICTIM_FIFO        : delete _param_victim_fifo       ;
+      default : break;
+      }
+
+    log_printf(FUNC,Victim,FUNCTION,"End");
+  };
+
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Parameters_msg_error.cpp	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Parameters_msg_error.cpp	(revision 78)
@@ -0,0 +1,46 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+#include "Behavioural/Generic/Victim/include/Parameters.h"
+#include <sstream>
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+
+
+#undef  FUNCTION
+#define FUNCTION "Victim::msg_error"
+  Parameters_test Parameters::msg_error(void)
+  {
+    log_printf(FUNC,Victim,FUNCTION,"Begin");
+
+    Parameters_test test ("Victim");
+
+    switch (_victim_scheme)
+      {
+      case VICTIM_RANDOM      : test.error("Victim scheme '"+toString(_victim_scheme)+"' is not supported. (Coming Soon)"); break;
+      case VICTIM_ROUND_ROBIN : test.error("Victim scheme '"+toString(_victim_scheme)+"' is not supported. (Coming Soon)"); break;
+      case VICTIM_NLU         : test.error("Victim scheme '"+toString(_victim_scheme)+"' is not supported. (Coming Soon)"); break;
+//    case VICTIM_PSEUDO_LRU  : test.error("Victim scheme '"+toString(_victim_scheme)+"' is not supported. (Coming Soon)"); break;
+      case VICTIM_LRU         : test.error("Victim scheme '"+toString(_victim_scheme)+"' is not supported. (Coming Soon)"); break;
+      case VICTIM_FIFO        : test.error("Victim scheme '"+toString(_victim_scheme)+"' is not supported. (Coming Soon)"); break;
+      default : break;
+      }
+
+    log_printf(FUNC,Victim,FUNCTION,"End");
+
+    return test;
+  };
+
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Parameters_print.cpp	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Parameters_print.cpp	(revision 78)
@@ -0,0 +1,56 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+
+
+#undef  FUNCTION
+#define FUNCTION "Victim::print"
+  std::string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,Victim,FUNCTION,"Begin");
+
+    XML xml ("victim");
+
+    xml.balise_open("victim");
+    xml.singleton_begin("victim_scheme"); xml.attribut("value",toString(_victim_scheme)); xml.singleton_end();
+    xml.singleton_begin("nb_entity    "); xml.attribut("value",toString(_nb_entity    )); xml.singleton_end();
+    xml.singleton_begin("nb_entry     "); xml.attribut("value",toString(_nb_entry     )); xml.singleton_end();
+    xml.singleton_begin("nb_access    "); xml.attribut("value",toString(_nb_access    )); xml.singleton_end();
+    xml.singleton_begin("table_global "); xml.attribut("value",toString(_table_global )); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,Victim,FUNCTION,"End");
+    
+    return xml.get_body(depth);
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Victim::operator<<"
+  std::ostream& operator<< (std::ostream& output_stream ,
+			    morpheo::behavioural::generic::victim::Parameters & x)
+  {
+    log_printf(FUNC,Victim,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+    
+    log_printf(FUNC,Victim,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim.cpp	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim.cpp	(revision 78)
@@ -0,0 +1,80 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/include/Victim.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+
+
+#undef  FUNCTION
+#define FUNCTION "Victim::Victim"
+  Victim::Victim 
+  (
+#ifdef SYSTEMC
+   sc_module_name name,
+#else
+   string name,
+#endif
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   morpheo::behavioural::generic::victim::Parameters * param,
+   morpheo::behavioural::Tusage_t usage
+   ):
+    _name              (name)
+    ,_param            (param)
+    ,_usage            (usage)
+  {
+    log_printf(FUNC,Victim,FUNCTION,"Begin");
+
+    log_printf(INFO,Victim,FUNCTION,"Allocation");
+
+    allocation (
+#ifdef STATISTICS
+		param_statistics
+#endif
+		);
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {	
+	switch (_param->_victim_scheme)
+	  {
+// 	  case VICTIM_RANDOM      : _stat = _component_victim_random      ->_stat; break;
+// 	  case VICTIM_ROUND_ROBIN : _stat = _component_victim_round_robin ->_stat; break;
+// 	  case VICTIM_NLU         : _stat = _component_victim_nlu         ->_stat; break;
+	  case VICTIM_PSEUDO_LRU  : _stat = _component_victim_pseudo_lru  ->_stat; break;
+// 	  case VICTIM_LRU         : _stat = _component_victim_lru         ->_stat; break;
+// 	  case VICTIM_FIFO        : _stat = _component_victim_fifo        ->_stat; break;
+	  default : break;
+	  }
+      }
+#endif
+
+    log_printf(FUNC,Victim,FUNCTION,"End");
+  };
+    
+#undef  FUNCTION
+#define FUNCTION "Victim::~Victim"
+  Victim::~Victim (void)
+  {
+    log_printf(FUNC,Victim,FUNCTION,"Begin");
+
+    log_printf(INFO,Victim,FUNCTION,"Deallocation");
+    deallocation ();
+
+    log_printf(FUNC,Victim,FUNCTION,"End");
+  };
+
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_allocation.cpp	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_allocation.cpp	(revision 78)
@@ -0,0 +1,130 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/include/Victim.h"
+#include "Behavioural/include/Allocation.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+
+
+
+#undef  FUNCTION
+#define FUNCTION "Victim::allocation"
+  void Victim::allocation (
+#ifdef STATISTICS
+			       morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+			       void
+#endif
+			       )
+  {
+    log_printf(FUNC,Victim,FUNCTION,"Begin");
+
+    
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      __ALLOC_SIGNAL(in_CLOCK ,"in_CLOCK" ,SC_CLOCK          );
+      __ALLOC_SIGNAL(in_NRESET,"in_NRESET",SC_IN (Tcontrol_t));
+    }
+
+    // ~~~~~[ Interface : "Access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      __ALLOC1_INTERFACE("ACCESS",_param->_nb_access);
+
+      __ALLOC1_SIGNAL_IN ( in_ACCESS_VAL    ,"VAL"    ,Tcontrol_t);
+      __ALLOC1_SIGNAL_OUT(out_ACCESS_ACK    ,"ACK"    ,Tcontrol_t);
+      if (_param->_have_port_address)
+      __ALLOC1_SIGNAL_IN ( in_ACCESS_ADDRESS,"ADDRESS",Taddress_t);
+      __ALLOC1_SIGNAL_IN ( in_ACCESS_HIT    ,"HIT"    ,Tcontrol_t);
+      __ALLOC1_SIGNAL_IN ( in_ACCESS_ENTITY ,"ENTITY" ,Tentity_t );
+      __ALLOC1_SIGNAL_OUT(out_ACCESS_VICTIM ,"VICTIM" ,Tentity_t );
+    }
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    std::string name;
+
+    switch (_param->_victim_scheme)
+      {
+//       case VICTIM_RANDOM      :
+//       case VICTIM_ROUND_ROBIN :
+//       case VICTIM_NLU         :
+      case VICTIM_PSEUDO_LRU  :
+	{
+	  std::cout << "Create   : " << _name << std::endl;
+
+	  _component_victim_pseudo_lru = new morpheo::behavioural::generic::victim::victim_pseudo_lru::Victim_Pseudo_LRU
+	    (_name.c_str()
+#ifdef STATISTICS
+	     ,param_statistics
+#endif
+	     ,_param->_param_victim_pseudo_lru);
+	  break;
+	}
+//       case VICTIM_LRU         :
+//       case VICTIM_FIFO        :
+      default : break;
+      }
+    
+    // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    std::cout << "Instance : " << _name << std::endl;
+
+    switch (_param->_victim_scheme)
+      {
+
+//       case VICTIM_RANDOM      :
+//       case VICTIM_ROUND_ROBIN :
+//       case VICTIM_NLU         :
+      case VICTIM_PSEUDO_LRU  :
+	{
+	  {
+	    (*(_component_victim_pseudo_lru-> in_CLOCK )) (*( in_CLOCK));
+	    (*(_component_victim_pseudo_lru-> in_NRESET)) (*( in_NRESET));
+	  }
+	  
+	  for (uint32_t i=0; i<_param->_nb_access; i++)
+	    {
+	      (*(_component_victim_pseudo_lru-> in_ACCESS_VAL     [i])) (*( in_ACCESS_VAL     [i]));
+	      (*(_component_victim_pseudo_lru->out_ACCESS_ACK     [i])) (*(out_ACCESS_ACK     [i]));
+	      if (_param->_have_port_address)
+	      (*(_component_victim_pseudo_lru-> in_ACCESS_ADDRESS [i])) (*( in_ACCESS_ADDRESS [i]));
+	      (*(_component_victim_pseudo_lru-> in_ACCESS_HIT     [i])) (*( in_ACCESS_HIT     [i]));
+	      (*(_component_victim_pseudo_lru-> in_ACCESS_ENTITY  [i])) (*( in_ACCESS_ENTITY  [i]));
+	      (*(_component_victim_pseudo_lru->out_ACCESS_VICTIM  [i])) (*(out_ACCESS_VICTIM  [i]));
+	    }
+
+	  break;
+	}
+//       case VICTIM_LRU         :
+//       case VICTIM_FIFO        :
+      default : break;
+      }
+
+   
+    // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+    switch (_param->_victim_scheme)
+      {
+//    case VICTIM_RANDOM      : _component = _component_victim_random     ->_component; break;
+//    case VICTIM_ROUND_ROBIN : _component = _component_victim_round_robin->_component; break;
+//    case VICTIM_NLU         : _component = _component_victim_nlu        ->_component; break;
+      case VICTIM_PSEUDO_LRU  : _component = _component_victim_pseudo_lru ->_component; break;
+//    case VICTIM_LRU         : _component = _component_victim_lru        ->_component; break;
+//    case VICTIM_FIFO        : _component = _component_victim_fifo       ->_component; break;
+      default : break;
+      }
+
+    log_printf(FUNC,Victim,FUNCTION,"End");
+  };
+
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_deallocation.cpp	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_deallocation.cpp	(revision 78)
@@ -0,0 +1,56 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Victim/include/Victim.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace victim {
+
+
+#undef  FUNCTION
+#define FUNCTION "Victim::deallocation"
+  void Victim::deallocation (void)
+  {
+    log_printf(FUNC,Victim,FUNCTION,"Begin");
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    switch (_param->_victim_scheme)
+      {
+//    case VICTIM_RANDOM      : delete _component_victim_random     ; break;
+//    case VICTIM_ROUND_ROBIN : delete _component_victim_round_robin; break;
+//    case VICTIM_NLU         : delete _component_victim_nlu        ; break;
+      case VICTIM_PSEUDO_LRU  : delete _component_victim_pseudo_lru ; break;
+//    case VICTIM_LRU         : delete _component_victim_lru        ; break;
+//    case VICTIM_FIFO        : delete _component_victim_fifo       ; break;
+      default : break;
+      }
+    
+    if (_usage & USE_SYSTEMC)
+      {
+	delete    in_CLOCK ;
+	delete    in_NRESET;
+
+	delete []  in_ACCESS_VAL    ;
+	delete [] out_ACCESS_ACK    ;
+	if (_param->_have_port_address)
+	delete []  in_ACCESS_ADDRESS;
+	delete []  in_ACCESS_HIT    ;
+	delete []  in_ACCESS_ENTITY ;
+	delete [] out_ACCESS_VICTIM ;
+      }
+
+
+    log_printf(FUNC,Victim,FUNCTION,"End");
+  };
+
+}; // end namespace victim
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
