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 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/configuration.cfg	(revision 42)
@@ -1,5 +1,5 @@
 Victim_Pseudo_LRU
-4	4 	*2	# nb_entity 
-1	1	+2	# nb_access 
-1	1	+2	# nb_update 
-1	1 	*2	# size_table
+4	16	*2	# nb_entity 
+1	4	*2	# nb_access 
+1	4	*2	# nb_update 
+1	16	*2	# size_table
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h	(revision 42)
@@ -40,6 +40,8 @@
 #include "Behavioural/include/Vhdl.h"
 #endif
-#ifdef VHDL_TESTBENCH
-#include "Behavioural/include/Vhdl_Testbench.h"
+#ifdef POSITION
+#include "Behavioural/include/Component.h"
+#else
+#include "Behavioural/include/Interfaces.h"
 #endif
 
@@ -175,7 +177,8 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-  private   : Vhdl_Testbench                 * _vhdl_testbench;
-#endif
+#ifdef POSITION
+  private   : Component                      * _component;
+#endif
+  private   : Interfaces                     * _interfaces;
 
 #ifdef SYSTEMC
@@ -237,13 +240,11 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl & vhdl);
-  private : void     vhdl_declaration          (Vhdl & vhdl);
-  private : void     vhdl_body                 (Vhdl & vhdl);
+  private : void     vhdl_port                 (Vhdl * & vhdl);
+  private : void     vhdl_declaration          (Vhdl * & vhdl);
+  private : void     vhdl_body                 (Vhdl * & vhdl);
 #endif					       
 					       
 #ifdef VHDL_TESTBENCH			       
-  private : void     vhdl_testbench            (Vhdl_Testbench & vhdl_testbench);
-  private : void     vhdl_testbench_port       (Vhdl_Testbench & vhdl_testbench);
-  private : void     vhdl_testbench_transition (Vhdl_Testbench & vhdl_testbench);
+  private : void     vhdl_testbench_transition (void);
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp	(revision 42)
@@ -28,4 +28,9 @@
     log_printf(FUNC,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Begin");
 
+#ifdef SYSTEMC
+    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation");
+    allocation ();
+#endif
+
 #ifdef STATISTICS
     log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation of statistics");
@@ -37,14 +42,4 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-    // Creation of a testbench
-    //  -> port
-    //  -> clock's signals
-    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Creation of Testbench");
-    _vhdl_testbench = new Vhdl_Testbench (_name);
-    vhdl_testbench_port           (*_vhdl_testbench);
-    _vhdl_testbench->set_clock    ("in_CLOCK",true);
-#endif
-
 #ifdef VHDL
     // generate the vhdl
@@ -54,7 +49,4 @@
 
 #ifdef SYSTEMC
-    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation");
-    allocation ();
-
     log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Definition of sc_method");
     SC_METHOD (transition);
@@ -100,10 +92,4 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-    // generate the test bench
-    _vhdl_testbench->generate_file();
-    delete _vhdl_testbench;
-#endif
-
 #ifdef STATISTICS
     _stat->generate_file(statistics(0));
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 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp	(revision 42)
@@ -17,60 +17,65 @@
   void Victim_Pseudo_LRU::allocation (void)
   {
-    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
-    in_NRESET = new SC_IN (Tcontrol_t) ("in_NRESET");
+#ifdef POSITION
+    _component   = new Component ();
 
-    // -----[ 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];
+    Entity * entity = _component->set_entity (_name                  ,
+					     "Select_Priority_Fixed",
+					     COMBINATORY            );
     
-    for (uint32_t i=0; i<_param._nb_access; i++)
-      {
-        string rename;
+    _interfaces = entity->set_interfaces();
+#else
+    _interfaces = new Interfaces();
+#endif
 
-	rename = "in_ACCESS_VAL["     + toString(i) + "]";
-	 in_ACCESS_VAL     [i] = new SC_IN (Tcontrol_t) (rename.c_str());
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface_fifo * interface = _interfaces->set_interface("", IN  ,WEST, "Generalist interface");
+      
+      in_CLOCK        = interface->set_signal_clk              ("clock" ,1);
+      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1);
+    }
 
-	rename = "out_ACCESS_ACK["    + toString(i) + "]";
-	out_ACCESS_ACK     [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
+    // ~~~~~[ 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), IN  ,WEST, "Access");
 
-	if (_param._size_table>1)
-	  {
-	    rename = "in_ACCESS_ADDRESS[" + toString(i) + "]";
-	    in_ACCESS_ADDRESS [i] = new SC_IN (Taddress_t) (rename.c_str());
-	  }
-	rename = "out_ACCESS_ENTITY[" + toString(i) + "]";
-	out_ACCESS_ENTITY  [i] = new SC_OUT(Tentity_t ) (rename.c_str());
-      }
+	   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 )));
+	}
+    }
 
-    // -----[ 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];
+    // ~~~~~[ 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), IN  ,EAST, "Update");
 
-    for (uint32_t i=0; i<_param._nb_update; i++)
-      {
-        string rename;
-
-	rename = "in_UPDATE_VAL["     + toString(i) + "]";
- 	 in_UPDATE_VAL     [i] = new SC_IN (Tcontrol_t) (rename.c_str());
-
-	rename = "out_UPDATE_ACK["    + toString(i) + "]";;
-	out_UPDATE_ACK     [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
-
-	if (_param._size_table>1)
-	  {
-	    rename = "in_UPDATE_ADDRESS[" + toString(i) + "]";
-	    in_UPDATE_ADDRESS [i] = new SC_IN (Taddress_t) (rename.c_str());
-	  }
-
-	rename = "in_UPDATE_ENTITY["  + toString(i) + "]";
-	 in_UPDATE_ENTITY  [i] = new SC_IN (Tentity_t ) (rename.c_str());
-      }
-
+ 	  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];
@@ -81,4 +86,8 @@
     // -----[ Internal ]---------------------------------------------------
     internal_ACCESS_ENTITY = new Tentity_t [_param._nb_entity];
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_deallocation.cpp	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_deallocation.cpp	(revision 42)
@@ -17,46 +17,31 @@
   void Victim_Pseudo_LRU::deallocation (void)
   {
-    delete in_CLOCK;
-    delete in_NRESET;
+    delete     in_CLOCK;
+    delete     in_NRESET;
     // -----[ Interface access ]-------------------------------------------
-    for (uint32_t i=0; i<_param._nb_access; i++)
-      {
-	delete  in_ACCESS_VAL     [i];
-	delete out_ACCESS_ACK     [i];
-	if (_param._size_table>1)
- 	delete  in_ACCESS_ADDRESS [i];
-	delete out_ACCESS_ENTITY  [i];
-      }
-
-    delete  in_ACCESS_VAL    ;
-    delete out_ACCESS_ACK    ;
+    delete []  in_ACCESS_VAL    ;
+    delete [] out_ACCESS_ACK    ;
     if (_param._size_table>1)
-    delete  in_ACCESS_ADDRESS;
-    delete out_ACCESS_ENTITY ;
+    delete []  in_ACCESS_ADDRESS;
+    delete [] out_ACCESS_ENTITY ;
     
     // -----[ Interface update ]-------------------------------------------
-    for (uint32_t i=0; i<_param._nb_update; i++)
-      {
- 	delete  in_UPDATE_VAL     [i];
-	delete out_UPDATE_ACK     [i];
-	if (_param._size_table>1)
- 	delete  in_UPDATE_ADDRESS [i];
-	delete  in_UPDATE_ENTITY  [i];
-      }
-    delete  in_UPDATE_VAL    ;
-    delete out_UPDATE_ACK    ;
+    delete []  in_UPDATE_VAL    ;
+    delete [] out_UPDATE_ACK    ;
     if (_param._size_table>1)
-    delete  in_UPDATE_ADDRESS;
-    delete  in_UPDATE_ENTITY ;
+    delete []  in_UPDATE_ADDRESS;
+    delete []  in_UPDATE_ENTITY ;
 
     // -----[ Register ]---------------------------------------------------
-    for (uint32_t i=0; i<_param._size_table; i++)
-      {
- 	delete reg_TABLE [i];
-      }
-    delete reg_TABLE;
+    delete [] reg_TABLE;
 
     // -----[ Internal ]---------------------------------------------------
-    delete internal_ACCESS_ENTITY;
+    delete [] internal_ACCESS_ENTITY;
+
+#ifdef POSITION
+    delete _component;
+#else
+    delete _interfaces;
+#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 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_transition.cpp	(revision 42)
@@ -67,5 +67,5 @@
     
 #ifdef VHDL_TESTBENCH
-    vhdl_testbench_transition (*_vhdl_testbench);
+    vhdl_testbench_transition ();
 #endif
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl.cpp	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl.cpp	(revision 42)
@@ -22,8 +22,8 @@
 
     log_printf(TRACE,Victim_Pseudo_LRU,"vhdl","Construction of vhdl");
-    Vhdl vhdl (_name);
+    Vhdl * vhdl = new Vhdl (_name);
 
     log_printf(TRACE,Victim_Pseudo_LRU,"vhdl","Set library");
-    vhdl.set_library_work (_name + "_Pack");
+    vhdl->set_library_work (_name + "_Pack");
 
     log_printf(TRACE,Victim_Pseudo_LRU,"vhdl","Set port");
@@ -34,5 +34,7 @@
     vhdl_body        (vhdl);
     log_printf(TRACE,Victim_Pseudo_LRU,"vhdl","Generate File");
-    vhdl.generate_file();
+    vhdl->generate_file();
+
+    delete vhdl;
     log_printf(FUNC,Victim_Pseudo_LRU,"vhdl","End");
   };
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 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_body.cpp	(revision 42)
@@ -15,27 +15,27 @@
 namespace victim_pseudo_lru {
 
-  void Victim_Pseudo_LRU::vhdl_body (Vhdl & vhdl)
+  void Victim_Pseudo_LRU::vhdl_body (Vhdl * & vhdl)
   {
-    vhdl.set_body ("");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("-- Access");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("");
-    vhdl.set_body ("-- Tree of Pseudo-LRU - example to 8 entity");
-    vhdl.set_body ("--");
-    vhdl.set_body ("--                4-5-6-7?              ");
-    vhdl.set_body ("--           0_______|_______1	    ");
-    vhdl.set_body ("--           |               |	    ");
-    vhdl.set_body ("--          2-3?            6-7?        ");
-    vhdl.set_body ("--       0___|___1       0___|___1      ");
-    vhdl.set_body ("--       |       |       |       |      ");
-    vhdl.set_body ("--       1?      3?      5?      7?     ");
-    vhdl.set_body ("--     0_|_1   0_|_1   0_|_1   0_|_1    ");
-    vhdl.set_body ("--     |   |   |   |   |   |   |   |    ");
-    vhdl.set_body ("--    Way Way Way Way Way Way Way Way   ");
-    vhdl.set_body ("--     0   1   2   3   4   5   6   7    ");
-    for (uint32_t i=0; i<_param._nb_access; i++)
-      {
-	vhdl.set_body ("");
+    vhdl->set_body ("");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("-- Access");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("");
+    vhdl->set_body ("-- Tree of Pseudo-LRU - example to 8 entity");
+    vhdl->set_body ("--");
+    vhdl->set_body ("--                4-5-6-7?              ");
+    vhdl->set_body ("--           0_______|_______1	    ");
+    vhdl->set_body ("--           |               |	    ");
+    vhdl->set_body ("--          2-3?            6-7?        ");
+    vhdl->set_body ("--       0___|___1       0___|___1      ");
+    vhdl->set_body ("--       |       |       |       |      ");
+    vhdl->set_body ("--       1?      3?      5?      7?     ");
+    vhdl->set_body ("--     0_|_1   0_|_1   0_|_1   0_|_1    ");
+    vhdl->set_body ("--     |   |   |   |   |   |   |   |    ");
+    vhdl->set_body ("--    Way Way Way Way Way Way Way Way   ");
+    vhdl->set_body ("--     0   1   2   3   4   5   6   7    ");
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	vhdl->set_body ("");
 	// Read the table
 	
@@ -43,14 +43,14 @@
 
 	if (_param._size_table>1)
-	  access_address = "conv_integer(in_ACCESS_ADDRESS_"+toString(i)+")";
+	  access_address = "conv_integer(in_ACCESS_"+toString(i)+"_ADDRESS)";
 	else
 	  access_address = "0";
 
-	vhdl.set_body ("access_entry_"+toString(i)+" <= reg_TABLE ("+access_address+");");
-	vhdl.set_body ("");
+	vhdl->set_body ("access_entry_"+toString(i)+" <= reg_TABLE ("+access_address+");");
+	vhdl->set_body ("");
 
 	for (int32_t j=static_cast<uint32_t>(log2(_param._nb_entity)-1); j>=0; j--)
 	  {
- 	    vhdl.set_body ("access_entity_"+toString(i)+"("+toString(j)+") <= ");
+ 	    vhdl->set_body ("access_entity_"+toString(i)+"("+toString(j)+") <= ");
 
 	    uint32_t cpt=0;
@@ -72,17 +72,17 @@
 		string print_else = (k==(1<<j)-1)?"     ":"else ";
 
-		vhdl.set_body ("\t"+print_else+"access_entry_"+toString(i)+"("+toString(k)+") "+cond);
+		vhdl->set_body ("\t"+print_else+"access_entry_"+toString(i)+"("+toString(k)+") "+cond);
 		cpt ++;
 	      }
-	    vhdl.set_body ("\t;");
+	    vhdl->set_body ("\t;");
 	  }
       }
 
-    vhdl.set_body ("");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("-- Update");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("");
-    vhdl.set_body ("-- port access");
+    vhdl->set_body ("");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("-- Update");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("");
+    vhdl->set_body ("-- port access");
     for (uint32_t i=0; i<_param._nb_access; i++)
       for (int32_t j=static_cast<uint32_t>(log2(_param._nb_entity)-1); j>=0; j--)
@@ -107,15 +107,15 @@
 		}
 	      
-	      vhdl.set_body ("access_next_entry_"+toString(i)+"("+toString(k)+") <=");
-	      vhdl.set_body ("\tnot access_entity_"+toString(i)+"("+toString(j)+") "+cond);
+	      vhdl->set_body ("access_next_entry_"+toString(i)+"("+toString(k)+") <=");
+	      vhdl->set_body ("\tnot access_entity_"+toString(i)+"("+toString(j)+") "+cond);
 	      if (have_cond == true)
-		vhdl.set_body ("\telse access_entry_"+toString(i)+"("+toString(k)+")");
-	      vhdl.set_body ("\t;");	      
+		vhdl->set_body ("\telse access_entry_"+toString(i)+"("+toString(k)+")");
+	      vhdl->set_body ("\t;");	      
 	      cpt ++;
 	    }
 	}
 
-    vhdl.set_body ("");
-    vhdl.set_body ("-- port update");
+    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--)
@@ -137,9 +137,9 @@
 		  else
 		    cond += " and";
-		  cond += " in_UPDATE_ENTITY_"+toString(i)+"("+toString(l)+")='"+toString((cpt>>(l-(j+1)))&1)+"'";
+		  cond += " in_UPDATE_"+toString(i)+"_ENTITY("+toString(l)+")='"+toString((cpt>>(l-(j+1)))&1)+"'";
 		}
 	      
-	      vhdl.set_body ("update_next_entry_"+toString(i)+"("+toString(k)+") <=");
-	      vhdl.set_body ("\tnot in_UPDATE_ENTITY_"+toString(i)+"("+toString(j)+") "+cond);
+	      vhdl->set_body ("update_next_entry_"+toString(i)+"("+toString(k)+") <=");
+	      vhdl->set_body ("\tnot in_UPDATE_"+toString(i)+"_ENTITY("+toString(j)+") "+cond);
 	      if (have_cond == true)
 		{
@@ -147,25 +147,25 @@
 
 		  if (_param._size_table>1)
-		    update_address = "conv_integer(in_UPDATE_ADDRESS_"+toString(i)+")";
+		    update_address = "conv_integer(in_UPDATE_"+toString(i)+"_ADDRESS)";
 		  else
 		    update_address = "0";
 		  
-		  vhdl.set_body ("\telse reg_TABLE ("+update_address+")("+toString(k)+")");
+		  vhdl->set_body ("\telse reg_TABLE ("+update_address+")("+toString(k)+")");
 		}
-	      vhdl.set_body ("\t;");	      
+	      vhdl->set_body ("\t;");	      
 	      cpt ++;
 	    }
 	}
 
-    vhdl.set_body ("");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("-- Transition");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("");
-
-    vhdl.set_body ("reg_TABLE_write: process (in_CLOCK)");
-    vhdl.set_body ("begin");
-    vhdl.set_body ("\tif in_CLOCK'event and in_CLOCK = '1' then");
-    vhdl.set_body ("\t\t-- Access port");
+    vhdl->set_body ("");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("-- Transition");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("");
+
+    vhdl->set_body ("reg_TABLE_write: process (in_CLOCK)");
+    vhdl->set_body ("begin");
+    vhdl->set_body ("\tif in_CLOCK'event and in_CLOCK = '1' then");
+    vhdl->set_body ("\t\t-- Access port");
     for (uint32_t i=0; i<_param._nb_access; i++)
       {
@@ -173,14 +173,14 @@
 
 	if (_param._size_table>1)
-	  access_address = "conv_integer(in_ACCESS_ADDRESS_"+toString(i)+")";
+	  access_address = "conv_integer(in_ACCESS_"+toString(i)+"_ADDRESS)";
 	else
 	  access_address = "0";
 
-	vhdl.set_body ("\t\tif (in_ACCESS_VAL_"+toString(i)+" = '1') then");
-	vhdl.set_body ("\t\t\treg_TABLE ("+access_address+") <= access_next_entry_"+toString(i)+";");
-	vhdl.set_body ("\t\tend if;");
-      }
-
-    vhdl.set_body ("\t\t-- Update port");
+	vhdl->set_body ("\t\tif (in_ACCESS_"+toString(i)+"_VAL = '1') then");
+	vhdl->set_body ("\t\t\treg_TABLE ("+access_address+") <= access_next_entry_"+toString(i)+";");
+	vhdl->set_body ("\t\tend if;");
+      }
+
+    vhdl->set_body ("\t\t-- Update port");
     for (uint32_t i=0; i<_param._nb_update; i++)
       {
@@ -188,32 +188,32 @@
 
 	if (_param._size_table>1)
-	  update_address = "conv_integer(in_UPDATE_ADDRESS_"+toString(i)+")";
+	  update_address = "conv_integer(in_UPDATE_"+toString(i)+"_ADDRESS)";
 	else
 	  update_address = "0";
 		  
-	vhdl.set_body ("\t\tif (in_UPDATE_VAL_"+toString(i)+" = '1') then");
-	vhdl.set_body ("\t\t\treg_TABLE ("+update_address+") <= update_next_entry_"+toString(i)+";");
-	vhdl.set_body ("\t\tend if;");
-      }
-
-    vhdl.set_body ("\tend if;");
-    vhdl.set_body ("end process reg_TABLE_write;");
-
-    vhdl.set_body ("");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("-- Output");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("");
-    vhdl.set_body ("-- Ack is always ");
-    vhdl.set_body ("");
-    for (uint32_t i=0; i<_param._nb_access; i++)
-      {
-	vhdl.set_body ("out_ACCESS_ACK_"+toString(i)+"    <= '1';");
-	vhdl.set_body ("out_ACCESS_ENTITY_"+toString(i)+" <= access_entity_"+toString(i)+" when in_ACCESS_VAL_"+toString(i)+" = '1' else (others => '0');");
-      }
-    vhdl.set_body ("");
+	vhdl->set_body ("\t\tif (in_UPDATE_"+toString(i)+"_VAL = '1') then");
+	vhdl->set_body ("\t\t\treg_TABLE ("+update_address+") <= update_next_entry_"+toString(i)+";");
+	vhdl->set_body ("\t\tend if;");
+      }
+
+    vhdl->set_body ("\tend if;");
+    vhdl->set_body ("end process reg_TABLE_write;");
+
+    vhdl->set_body ("");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("-- Output");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("");
+    vhdl->set_body ("-- Ack is always ");
+    vhdl->set_body ("");
+    for (uint32_t i=0; i<_param._nb_access; i++)
+      {
+	vhdl->set_body ("out_ACCESS_"+toString(i)+"_ACK    <= '1';");
+	vhdl->set_body ("out_ACCESS_"+toString(i)+"_ENTITY <= access_entity_"+toString(i)+" when in_ACCESS_"+toString(i)+"_VAL = '1' else (others => '0');");
+      }
+    vhdl->set_body ("");
     for (uint32_t i=0; i<_param._nb_update; i++)
       {
-	vhdl.set_body ("out_UPDATE_ACK_"+toString(i)+"    <= '1';");
+	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 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_declaration.cpp	(revision 42)
@@ -16,20 +16,20 @@
 
 
-  void Victim_Pseudo_LRU::vhdl_declaration (Vhdl & vhdl)
+  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");
+    vhdl->set_signal ("reg_TABLE", "Ttable");
     for (uint32_t i=0; i<_param._nb_access; i++)
       {
-	vhdl.set_signal ("access_entry_"+toString(i)+"     ",std_logic(_param._nb_entity-1));
-	vhdl.set_signal ("access_next_entry_"+toString(i)+"",std_logic(_param._nb_entity-1));
-	vhdl.set_signal ("access_entity_"+toString(i)+"    ",std_logic(static_cast<uint32_t>(log2(_param._nb_entity))));
+	vhdl->set_signal ("access_entry_"+toString(i)+"     ",std_logic(_param._nb_entity-1));
+	vhdl->set_signal ("access_next_entry_"+toString(i)+"",std_logic(_param._nb_entity-1));
+	vhdl->set_signal ("access_entity_"+toString(i)+"    ",std_logic(static_cast<uint32_t>(log2(_param._nb_entity))));
       }
 
     for (uint32_t i=0; i<_param._nb_update; i++)
       {
-	vhdl.set_signal ("update_next_entry_"+toString(i)+"",std_logic(_param._nb_entity-1));
+	vhdl->set_signal ("update_next_entry_"+toString(i)+"",std_logic(_param._nb_entity-1));
       }
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_port.cpp	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_port.cpp	(revision 42)
@@ -16,26 +16,7 @@
 
 
-  void Victim_Pseudo_LRU::vhdl_port (Vhdl & vhdl)
+  void Victim_Pseudo_LRU::vhdl_port (Vhdl * & vhdl)
   {
-    vhdl.set_port ("in_CLOCK ", IN, 1);
-    vhdl.set_port ("in_NRESET", IN, 1);
-
-    for (uint32_t i = 0; i < _param._nb_access; i ++)
-      {
-	vhdl.set_port (" in_ACCESS_VAL_"+toString(i)+"     ",IN ,std_logic(1));
-	vhdl.set_port ("out_ACCESS_ACK_"+toString(i)+"     ",OUT,std_logic(1));
-	if (_param._size_table>1)
-	  vhdl.set_port (" in_ACCESS_ADDRESS_"+toString(i)+" ",IN ,std_logic(static_cast<uint32_t>(log2(_param._size_table))));
-	vhdl.set_port ("out_ACCESS_ENTITY_"+toString(i)+"  ",OUT,std_logic(static_cast<uint32_t>(log2(_param._nb_entity))));
-      }
-
-    for (uint32_t i = 0; i < _param._nb_update; i ++)
-      {
-	vhdl.set_port (" in_UPDATE_VAL_"+toString(i)+"     ",IN ,std_logic(1));
-	vhdl.set_port ("out_UPDATE_ACK_"+toString(i)+"     ",OUT,std_logic(1));
-	if (_param._size_table>1)
-	  vhdl.set_port (" in_UPDATE_ADDRESS_"+toString(i)+" ",IN ,std_logic(static_cast<uint32_t>(log2(_param._size_table))));
-	vhdl.set_port (" in_UPDATE_ENTITY_"+toString(i)+"  ",IN ,std_logic(static_cast<uint32_t>(log2(_param._nb_entity))));
-      }
+    _interfaces->set_port(vhdl);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_port.cpp	(revision 23)
+++ 	(revision )
@@ -1,45 +1,0 @@
-#ifdef VHDL_TESTBENCH
-/*
- * $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::vhdl_testbench_port (Vhdl_Testbench & vhdl_testbench)
-  {
-    vhdl_testbench.set_port (" in_NRESET",IN ,1);
-    for (uint32_t i = 0; i < _param._nb_access; i ++)
-      {
-	vhdl_testbench.set_port (" in_ACCESS_VAL_"+toString(i)+"     ",IN ,1);
-	vhdl_testbench.set_port ("out_ACCESS_ACK_"+toString(i)+"     ",OUT,1);
-	if (_param._size_table>1)
-	  vhdl_testbench.set_port (" in_ACCESS_ADDRESS_"+toString(i)+" ",IN ,static_cast<uint32_t>(log2(_param._size_table)));
-	vhdl_testbench.set_port ("out_ACCESS_ENTITY_"+toString(i)+"  ",OUT,static_cast<uint32_t>(log2(_param._nb_entity)));
-      }
-
-    for (uint32_t i = 0; i < _param._nb_update; i ++)
-      {
-	vhdl_testbench.set_port (" in_UPDATE_VAL_"+toString(i)+"     ",IN ,1);
-	vhdl_testbench.set_port ("out_UPDATE_ACK_"+toString(i)+"     ",OUT,1);
-	if (_param._size_table>1)
-	  vhdl_testbench.set_port (" in_UPDATE_ADDRESS_"+toString(i)+" ",IN ,static_cast<uint32_t>(log2(_param._size_table)));
-	vhdl_testbench.set_port (" in_UPDATE_ENTITY_"+toString(i)+"  ",IN ,static_cast<uint32_t>(log2(_param._nb_entity)));
-      }
-  };
-
-}; // end namespace 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_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_transition.cpp	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_transition.cpp	(revision 42)
@@ -16,32 +16,10 @@
 
 
-  void Victim_Pseudo_LRU::vhdl_testbench_transition (Vhdl_Testbench & vhdl_testbench)
+  void Victim_Pseudo_LRU::vhdl_testbench_transition (void)
   {
-#ifndef SYSTEMCASS_SPECIFIC
-    sc_cycle(0);
-#endif
-    vhdl_testbench.add_input  (PORT_READ(in_NRESET));
+    // Evaluation before read the ouput signal
+    sc_start(0);
 
-    for (uint32_t i = 0; i < _param._nb_access; i ++)
-      {
-	vhdl_testbench.add_input  (PORT_READ( in_ACCESS_VAL     [i]));
-	vhdl_testbench.add_output (PORT_READ(out_ACCESS_ACK     [i]));
-	if (_param._size_table>1)
-	  vhdl_testbench.add_input  (PORT_READ( in_ACCESS_ADDRESS [i]));
-	vhdl_testbench.add_output (PORT_READ(out_ACCESS_ENTITY  [i]));
-      }
-
-    for (uint32_t i = 0; i < _param._nb_update; i ++)
-      {
-	vhdl_testbench.add_input  (PORT_READ( in_UPDATE_VAL     [i]));
-	vhdl_testbench.add_output (PORT_READ(out_UPDATE_ACK     [i]));
-	if (_param._size_table>1)
-	  vhdl_testbench.add_input  (PORT_READ( in_UPDATE_ADDRESS [i]));
-	vhdl_testbench.add_input  (PORT_READ( in_UPDATE_ENTITY  [i]));
-      }
-
-    vhdl_testbench.add_test(true);
-
-    vhdl_testbench.new_cycle (); // always at the end
+    _interfaces->testbench();
   };
 
