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));
       }
   };
