Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 41)
@@ -23,9 +23,11 @@
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h"
 #endif
+#ifdef POSITION
+#include "Behavioural/include/Position.h"
+#else
+#include "Behavioural/include/Interfaces.h"
+#endif
 #ifdef VHDL
 #include "Behavioural/include/Vhdl.h"
-#endif
-#ifdef VHDL_TESTBENCH
-#include "Behavioural/include/Vhdl_Testbench.h"
 #endif
 
@@ -55,7 +57,9 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-  private   : Vhdl_Testbench                 * _vhdl_testbench;
+#ifdef POSITION
+  private   : Position                       * _position;
 #endif
+
+  private   : Interfaces                     * _interfaces;
 
 #ifdef SYSTEMC
@@ -63,5 +67,5 @@
     // Interface
   public    : SC_CLOCK                      *  in_CLOCK        ;
-  public    : SC_CLOCK                      *  in_NRESET       ;
+  public    : SC_IN       (Tcontrol_t)      *  in_NRESET       ;
 
     // ----- Interface Read
@@ -117,14 +121,12 @@
 #if VHDL				       
   private : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl & vhdl);
-  private : void     vhdl_type                 (Vhdl & vhdl);
-  private : void     vhdl_signal               (Vhdl & vhdl);
-  private : void     vhdl_body                 (Vhdl & vhdl);
+  private : void     vhdl_port                 (Vhdl * & vhdl);
+  private : void     vhdl_type                 (Vhdl * & vhdl);
+  private : void     vhdl_signal               (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/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp	(revision 41)
@@ -27,14 +27,16 @@
     _param (param)
   {
+    log_printf(FUNC,RegisterFile_Monolithic,"RegisterFile_Monolithic","Begin");
+
+#ifdef SYSTEMC
+    log_printf(INFO,RegisterFile_Monolithic,"RegisterFile_Monolithic","Allocation");
+
+    allocation ();
+#endif
+
 #ifdef STATISTICS
     _stat = new Statistics (static_cast<string>(_name),
 			    param_statistics          ,
 			    param);
-#endif
-
-#ifdef VHDL_TESTBENCH
-    _vhdl_testbench = new Vhdl_Testbench (_name);
-    vhdl_testbench_port           (*_vhdl_testbench);
-    _vhdl_testbench->set_clock    ("in_CLOCK",true);
 #endif
 
@@ -45,6 +47,4 @@
 
 #ifdef SYSTEMC
-    allocation ();
-
     SC_METHOD (transition);
     dont_initialize ();
@@ -72,21 +72,17 @@
       PORT_WRITE(out_WRITE_ACK [i], 1);
 #endif
+
+    log_printf(FUNC,RegisterFile_Monolithic,"RegisterFile_Monolithic","End");
   };
   
   RegisterFile_Monolithic::~RegisterFile_Monolithic (void)
   {
-#ifdef SYSTEMC
-    deallocation ();
-#endif
-
-#ifdef VHDL_TESTBENCH
-    // generate the test bench
-    _vhdl_testbench->generate_file();
-    delete _vhdl_testbench;
-#endif
-
 #ifdef STATISTICS
     _stat->generate_file(statistics(0));
     delete _stat;
+#endif
+
+#ifdef SYSTEMC
+    deallocation ();
 #endif
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp	(revision 41)
@@ -17,8 +17,24 @@
   void RegisterFile_Monolithic::allocation (void)
   {
-    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
-    in_NRESET = new SC_IN (Tcontrol_t) ("in_NRESET");
+#ifdef POSITION
+    _position   = new Position ();
 
-    // ----- Interface Read
+    Entity * entity = _position->set_entity (_name                    ,
+					     "RegisterFile_Monolithic",
+					     REGISTER                 );
+    
+    _interfaces = entity->set_interfaces();
+#else
+    _interfaces = new Interfaces();
+#endif
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    Interface * interface_ = _interfaces->set_interface("", IN  ,SOUTH, "Generalist interface");
+
+     in_CLOCK              = interface_->set_signal_clk              ("clock" ,1);
+     in_NRESET             = interface_->set_signal_in  <Tcontrol_t> ("nreset",1);
+
+    // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
      in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param._nb_port_read];
     out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param._nb_port_read];
@@ -27,21 +43,15 @@
 
     for (uint32_t i=0; i<_param._nb_port_read; i++)
-      {
-	string rename;
+      { 
+	Interface_fifo * interface_read = _interfaces->set_interface("read_"+toString(i), IN  ,WEST, "Interface Read");
 
-	rename = "in_READ_VAL["     + toString(i) + "]";
-	in_READ_VAL     [i]  = new SC_IN (Tcontrol_t) (rename.c_str());
-
-	rename = "out_READ_ACK["     + toString(i) + "]";
-	out_READ_ACK    [i]  = new SC_OUT(Tcontrol_t) (rename.c_str());
-
-	rename = "in_READ_ADDRESS[" + toString(i) + "]";
-	in_READ_ADDRESS [i]  = new SC_IN (Taddress_t) (rename.c_str());
-
-	rename = "out_READ_DATA["    + toString(i) + "]";
-	out_READ_DATA   [i]  = new SC_OUT(Tdata_t)    (rename.c_str());
+	 in_READ_VAL     [i]  = interface_read->set_signal_valack_in        ("val"    , VAL);
+	out_READ_ACK     [i]  = interface_read->set_signal_valack_out       ("ack"    , ACK);
+	 in_READ_ADDRESS [i]  = interface_read->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param._nb_word)));
+	out_READ_DATA    [i]  = interface_read->set_signal_out <Tdata_t   > ("data"   , _param._size_word);
       }
 
-    // ----- Interface Write
+    // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
      in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param._nb_port_write];
     out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param._nb_port_write];
@@ -51,17 +61,10 @@
     for (uint32_t i=0; i<_param._nb_port_write; i++)
       {
-	string rename;
+	Interface_fifo * interface_write = _interfaces->set_interface("write_"+toString(i), IN  ,EAST, "Interface Write");
 
-	rename = "in_WRITE_VAL["  + toString(i) + "]";
-	in_WRITE_VAL     [i]  = new SC_IN (Tcontrol_t) (rename.c_str());
-
-	rename = "out_WRITE_VAL["  + toString(i) + "]";
-	out_WRITE_ACK    [i]  = new SC_OUT(Tcontrol_t) (rename.c_str());
-
-	rename = "in_WRITE_ADDRESS[" + toString(i) + "]";
-	in_WRITE_ADDRESS [i]  = new SC_IN (Taddress_t) (rename.c_str());
-
-	rename = "in_WRITE_DATA["    + toString(i) + "]";
-	in_WRITE_DATA    [i]  = new SC_IN (Tdata_t)    (rename.c_str());
+	 in_WRITE_VAL     [i]  = interface_write->set_signal_valack_in        ("val"    , VAL);
+	out_WRITE_ACK     [i]  = interface_write->set_signal_valack_out       ("ack"    , ACK);
+	 in_WRITE_ADDRESS [i]  = interface_write->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param._nb_word)));
+	 in_WRITE_DATA    [i]  = interface_write->set_signal_in  <Tdata_t   > ("data"   , _param._size_word);
       }
 
@@ -73,5 +76,9 @@
 	string rename = "reg_DATA["  + toString(i) + "]";
 	reg_DATA [i]  = new SC_REGISTER (Tdata_t) (rename.c_str());
-      }    
+      }
+
+#ifdef POSITION
+    _position->generate_file();
+#endif
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp	(revision 41)
@@ -17,41 +17,26 @@
   void RegisterFile_Monolithic::deallocation (void)
   {
-    delete in_CLOCK;
-    delete in_NRESET;
+    delete    in_CLOCK;
+    delete    in_NRESET;
     // ----- Interface Read
-    for (uint32_t i=0; i<_param._nb_port_read; i++)
-      {
-	delete  in_READ_VAL     [i];
-	delete out_READ_ACK     [i];
-	delete  in_READ_ADDRESS [i];
-	delete out_READ_DATA    [i];
-      }
-
-    delete  in_READ_VAL    ;
-    delete out_READ_ACK    ;
-    delete  in_READ_ADDRESS;
-    delete out_READ_DATA   ;
+    delete []  in_READ_VAL    ;
+    delete [] out_READ_ACK    ;
+    delete []  in_READ_ADDRESS;
+    delete [] out_READ_DATA   ;
 
     // ----- Interface Write
-    for (uint32_t i=0; i<_param._nb_port_write; i++)
-      {
-	delete  in_WRITE_VAL     [i];
-	delete out_WRITE_ACK     [i];
-	delete  in_WRITE_ADDRESS [i];
-	delete  in_WRITE_DATA    [i];
-      }
-
-    delete  in_WRITE_VAL    ;
-    delete out_WRITE_ACK    ;
-    delete  in_WRITE_ADDRESS;
-    delete  in_WRITE_DATA   ;
+    delete []  in_WRITE_VAL    ;
+    delete [] out_WRITE_ACK    ;
+    delete []  in_WRITE_ADDRESS;
+    delete []  in_WRITE_DATA   ;
 
     // ----- Register
-    for (uint32_t i=0; i<_param._nb_word; i++)
-      {
-	delete reg_DATA [i];
-      }    
+    delete [] reg_DATA;
 
-    delete reg_DATA;
+#ifdef POSITION
+    delete _position;
+#else
+    delete _interfaces;
+#endif
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp	(revision 41)
@@ -45,5 +45,5 @@
 
 #ifdef VHDL_TESTBENCH
-    vhdl_testbench_transition (*_vhdl_testbench);
+    vhdl_testbench_transition ();
 #endif
     log_printf(FUNC,Register_File,"transition","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp	(revision 41)
@@ -18,7 +18,7 @@
   void RegisterFile_Monolithic::vhdl (void)
   {
-    Vhdl vhdl (_name);
+    Vhdl * vhdl = new Vhdl (_name);
 
-    vhdl.set_library_work (_name + "_Pack");
+    vhdl->set_library_work (_name + "_Pack");
 
     vhdl_port   (vhdl);
@@ -27,5 +27,7 @@
     vhdl_body   (vhdl);
 
-    vhdl.generate_file();
+    vhdl->generate_file();
+
+    delete vhdl;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp	(revision 41)
@@ -15,39 +15,40 @@
 namespace registerfile_monolithic    {
 
-  void RegisterFile_Monolithic::vhdl_body (Vhdl & vhdl)
+  void RegisterFile_Monolithic::vhdl_body (Vhdl * & vhdl)
   {
-    vhdl.set_body ("");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("-- Read RegisterFile");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("");
+    vhdl->set_body ("");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("-- Read RegisterFile");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("");
     
     for (uint32_t i = 0; i < _param._nb_port_read; i++)
       {
-	vhdl.set_body ("out_READ_ACK_"+toString(i)+"  <= '1';");
-	vhdl.set_body ("out_READ_DATA_"+toString(i)+" <= reg_DATA (conv_integer(in_READ_ADDRESS_"+toString(i)+")) when in_READ_VAL_"+toString(i)+" = '1' else "+std_logic_others(_param._size_word,0)+";");
+	vhdl->set_body ("out_READ_"+toString(i)+"_ACK  <= '1';");
+	vhdl->set_body ("out_READ_"+toString(i)+"_DATA <= reg_DATA (conv_integer(in_READ_"+toString(i)+"_ADDRESS)) when in_READ_"+toString(i)+"_VAL = '1' else "+std_logic_others(_param._size_word,0)+";");
       }
-    vhdl.set_body ("");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("-- Write RegisterFile");
-    vhdl.set_body ("-----------------------------------------------------------------------------");
-    vhdl.set_body ("");
 
-    vhdl.set_body ("RegisterFile_write: process (in_CLOCK)");
-    vhdl.set_body ("begin  -- process RegisterFile_write");
-    vhdl.set_body ("\tif in_CLOCK'event and in_CLOCK = '1' then");
+    vhdl->set_body ("");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("-- Write RegisterFile");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("");
+
+    vhdl->set_body ("RegisterFile_write: process (in_CLOCK)");
+    vhdl->set_body ("begin  -- process RegisterFile_write");
+    vhdl->set_body ("\tif in_CLOCK'event and in_CLOCK = '1' then");
     
     for (uint32_t i = 0; i < _param._nb_port_write; i++)
       {
-      vhdl.set_body ("\t\tif (in_WRITE_VAL_"+toString(i)+" = '1') then");
-      vhdl.set_body ("\t\t\treg_DATA(conv_integer(in_WRITE_ADDRESS_"+toString(i)+")) <= in_WRITE_DATA_"+toString(i)+";");
-      vhdl.set_body ("\t\tend if;");
+      vhdl->set_body ("\t\tif (in_WRITE_"+toString(i)+"_VAL = '1') then");
+      vhdl->set_body ("\t\t\treg_DATA(conv_integer(in_WRITE_"+toString(i)+"_ADDRESS)) <= in_WRITE_"+toString(i)+"_DATA;");
+      vhdl->set_body ("\t\tend if;");
       }
 
-    vhdl.set_body ("\tend if;");
-    vhdl.set_body ("end process RegisterFile_write;");
+    vhdl->set_body ("\tend if;");
+    vhdl->set_body ("end process RegisterFile_write;");
 
     for (uint32_t i = 0; i < _param._nb_port_write; i++)
-      vhdl.set_body ("out_WRITE_ACK_"+toString(i)+"<= '1';");
+      vhdl->set_body ("out_WRITE_"+toString(i)+"_ACK <= '1';");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_port.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_port.cpp	(revision 41)
@@ -15,24 +15,7 @@
 namespace registerfile_monolithic    {
 
-  void RegisterFile_Monolithic::vhdl_port (Vhdl & vhdl)
+  void RegisterFile_Monolithic::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_port_read; i ++)
-      {
-	vhdl.set_port (" in_READ_VAL_"+toString(i)+"    ",IN ,std_logic(1)                    );
-	vhdl.set_port ("out_READ_ACK_"+toString(i)+"    ",OUT,std_logic(1)                    );
-	vhdl.set_port (" in_READ_ADDRESS_"+toString(i)+"",IN ,std_logic(static_cast<uint32_t>(log2(_param._nb_word))));
-	vhdl.set_port ("out_READ_DATA_"+toString(i)+"   ",OUT,std_logic(_param._size_word    ));
-      }
-
-    for (uint32_t i = 0; i < _param._nb_port_write; i ++)
-      {
-	vhdl.set_port (" in_WRITE_VAL_"+toString(i)+"    ",IN ,std_logic(1)                    );
-	vhdl.set_port ("out_WRITE_ACK_"+toString(i)+"    ",OUT,std_logic(1)                    );
-	vhdl.set_port (" in_WRITE_ADDRESS_"+toString(i)+"",IN ,std_logic(static_cast<uint32_t>(log2(_param._nb_word))));
-	vhdl.set_port (" in_WRITE_DATA_"+toString(i)+"   ",IN ,std_logic(_param._size_word    ));
-      }
+    _interfaces->set_port(vhdl);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_signal.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_signal.cpp	(revision 41)
@@ -15,7 +15,7 @@
 namespace registerfile_monolithic    {
 
-  void RegisterFile_Monolithic::vhdl_signal (Vhdl & vhdl)
+  void RegisterFile_Monolithic::vhdl_signal (Vhdl * & vhdl)
   {
-    vhdl.set_signal ("reg_DATA", "Tregfile");
+    vhdl->set_signal ("reg_DATA", "Tregfile");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_testbench_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_testbench_port.cpp	(revision 40)
+++ 	(revision )
@@ -1,43 +1,0 @@
-#ifdef VHDL_TESTBENCH
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  void RegisterFile_Monolithic::vhdl_testbench_port (Vhdl_Testbench & vhdl_testbench)
-  {
-    vhdl_testbench.set_port (" in_NRESET",IN ,1);
-
-    for (uint32_t i = 0; i < _param._nb_port_read; i ++)
-      {
-	vhdl_testbench.set_port (" in_READ_VAL_"+toString(i)+"    ",IN ,1);
-	vhdl_testbench.set_port ("out_READ_ACK_"+toString(i)+"    ",OUT,1);
-	vhdl_testbench.set_port (" in_READ_ADDRESS_"+toString(i)+"",IN ,static_cast<uint32_t>(log2(_param._nb_word)));
-	vhdl_testbench.set_port ("out_READ_DATA_"+toString(i)+"   ",OUT,_param._size_word);
-      }
-
-    for (uint32_t i = 0; i < _param._nb_port_write; i ++)
-      {
-	vhdl_testbench.set_port (" in_WRITE_VAL_"+toString(i)+"    ",IN ,1);
-	vhdl_testbench.set_port ("out_WRITE_ACK_"+toString(i)+"    ",OUT,1);
-	vhdl_testbench.set_port (" in_WRITE_ADDRESS_"+toString(i)+"",IN ,static_cast<uint32_t>(log2(_param._nb_word)));
-	vhdl_testbench.set_port (" in_WRITE_DATA_"+toString(i)+"   ",IN ,_param._size_word    );
-      }
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile 
-}; // end namespace generic
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_testbench_transition.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_testbench_transition.cpp	(revision 41)
@@ -15,29 +15,10 @@
 namespace registerfile_monolithic    {
 
-  void RegisterFile_Monolithic::vhdl_testbench_transition (Vhdl_Testbench & vhdl_testbench)
+  void RegisterFile_Monolithic::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_port_read ; i ++)
-      {
-	vhdl_testbench.add_input (PORT_READ( in_READ_VAL     [i]));
-	vhdl_testbench.add_output(PORT_READ(out_READ_ACK     [i]));
-	vhdl_testbench.add_input (PORT_READ( in_READ_ADDRESS [i]));
-	vhdl_testbench.add_output(PORT_READ(out_READ_DATA    [i]));
-      }
-    for (uint32_t i = 0; i < _param._nb_port_write; i ++)
-      {
-	vhdl_testbench.add_input (PORT_READ( in_WRITE_VAL    [i]));
-	vhdl_testbench.add_output(PORT_READ(out_WRITE_ACK    [i]));
-	vhdl_testbench.add_input (PORT_READ( in_WRITE_ADDRESS[i]));
-	vhdl_testbench.add_input (PORT_READ( in_WRITE_DATA   [i]));
-      }
-
-    vhdl_testbench.add_test(true);
-
-    vhdl_testbench.new_cycle (); // always at the end
+    _interfaces->testbench();
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_type.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_type.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_type.cpp	(revision 41)
@@ -15,7 +15,7 @@
 namespace registerfile_monolithic    {
 
-  void RegisterFile_Monolithic::vhdl_type (Vhdl & vhdl)
+  void RegisterFile_Monolithic::vhdl_type (Vhdl * & vhdl)
   {
-    vhdl.set_type ("Tregfile", "array (" + toString(_param._nb_word-1) + " downto 0) of " + std_logic(_param._size_word));
+    vhdl->set_type ("Tregfile", "array (" + toString(_param._nb_word-1) + " downto 0) of " + std_logic(_param._size_word));
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp	(revision 41)
@@ -90,14 +90,10 @@
  
   sc_start(0);
-//_Select_Priority_Fixed->vhdl_testbench_label("Initialisation");
 //cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
 
-  _Select_Priority_Fixed->vhdl_testbench_label("Loop of Test");
   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl;
 
   for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
     {
-      _Select_Priority_Fixed->vhdl_testbench_label("Iteration "+toString(iteration));
-
       entity    = 0;
       bool find = false;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 41)
@@ -30,7 +30,4 @@
 #include "Behavioural/include/Vhdl.h"
 #endif
-#ifdef VHDL_TESTBENCH
-#include "Behavioural/include/Vhdl_Testbench.h"
-#endif
 
 using namespace std;
@@ -59,8 +56,4 @@
 #ifdef STATISTICS
   private   : Statistics                     * _stat;
-#endif
-
-#ifdef VHDL_TESTBENCH
-  private   : Vhdl_Testbench                 * _vhdl_testbench;
 #endif
 
@@ -132,5 +125,4 @@
   private : void     vhdl_testbench_transition (void);
 #endif
-  public  : void     vhdl_testbench_label      (string label);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp	(revision 41)
@@ -45,10 +45,4 @@
 			    param_statistics          ,
 			    param);
-#endif
-
-#ifdef VHDL_TESTBENCH
-    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Creation of a testbench");
-
-    _vhdl_testbench = new Vhdl_Testbench (_name);
 #endif
 
@@ -100,12 +94,4 @@
     log_printf(FUNC,Select_Priority_Fixed,"~Select_Priority_Fixed","Begin");
 
-#ifdef VHDL_TESTBENCH
-    log_printf(INFO,Select_Priority_Fixed,"~Select_Priority_Fixed","Generate Testbench  file");
-
-    // generate the test bench
-    _vhdl_testbench->generate_file();
-    delete _vhdl_testbench;
-#endif
-
 #ifdef STATISTICS
     log_printf(INFO,Select_Priority_Fixed,"~Select_Priority_Fixed","Generate Statistics file");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp	(revision 41)
@@ -17,6 +17,4 @@
   void Select_Priority_Fixed::allocation (void)
   {
-    string rename;
-
     log_printf(FUNC,Select_Priority_Fixed,"allocation","Begin");
 
@@ -27,5 +25,5 @@
 					     "Select_Priority_Fixed",
 					     COMBINATORY            );
-
+    
     _interfaces = entity->set_interfaces();
 #else
@@ -37,5 +35,5 @@
     Interface_fifo * interface_ = _interfaces->set_interface("", IN  ,WEST, "Generalist interface");
 
-     in_CLOCK        = interface_->set_signal_clk              ("clock" ,1, PORT_VHDL_YES_TESTBENCH_NO);
+     in_CLOCK        = interface_->set_signal_clk              ("clock" ,1, CLOCK_VHDL_NO);
      in_NRESET       = interface_->set_signal_in  <Tcontrol_t> ("nreset",1);
      in_VAL          = new SC_IN (Tcontrol_t)           * [_param._nb_entity];
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 41)
@@ -34,6 +34,4 @@
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
-    cout << *_interfaces << endl;
-
 #ifdef POSITION
     delete _position;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp	(revision 41)
@@ -21,9 +21,4 @@
     _interfaces->set_port(vhdl);
 
-#ifdef VHDL_TESTBENCH
-    _interfaces->set_port(_vhdl_testbench);			
-   _vhdl_testbench->set_clock    ("in_CLOCK",true);
-#endif    
-
    log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_label.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_label.cpp	(revision 40)
+++ 	(revision )
@@ -1,33 +1,0 @@
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace select {
-namespace select_priority_fixed {
-
-
-  void Select_Priority_Fixed::vhdl_testbench_label (string label)
-  {
-    log_printf(FUNC,Select_Priority_Fixed,"vhdl_testbench_label","Begin");
-
-#ifdef VHDL_TESTBENCH
-    _vhdl_testbench->add_label(label);
-#endif
-    
-    log_printf(FUNC,Select_Priority_Fixed,"vhdl_testbench_label","End");
-  };
-
-}; // end namespace select_priority_fixed
-}; // end namespace select
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp	(revision 41)
@@ -23,12 +23,5 @@
     sc_start(0);
 
-    _interfaces->testbench(_vhdl_testbench);
-
-    // add_test :
-    //  - True  : the cycle must be compare with the output of systemC
-    //  - False : no test
-    _vhdl_testbench->add_test(true);
-
-    _vhdl_testbench->new_cycle (); // always at the end
+    _interfaces->testbench();
 
     log_printf(FUNC,Select_Priority_Fixed,"vhdl_testbench_transition","End");
