Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp	(revision 42)
@@ -43,4 +43,5 @@
    *********************************************************************/
   sc_clock                                 CLOCK ("clock", 1.0, 0.5);
+  sc_signal<Tcontrol_t>                    RESET;
   sc_signal<Tdata_t>                       DATA_IN  [param._nb_port];
   sc_signal<Tcontrol_t>                    ADDSUB   [param._nb_port];
@@ -53,7 +54,6 @@
   cout << "<" << name << "> Instanciation of _Counter" << endl;
  
- #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
   (*(_Counter->in_CLOCK))        (CLOCK);
-#endif
+  (*(_Counter->in_NRESET))       (RESET);
 
   for (uint32_t i=0; i<param._nb_port; i++)
@@ -79,13 +79,13 @@
 
   sc_start(0);
-  _Counter->vhdl_testbench_label("Initialisation");
+
+  RESET.write(1);
+
   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
 
-  _Counter->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 ++)
     {
-      _Counter->vhdl_testbench_label("Iteration "+toString(iteration));
       cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} Itération " << iteration << endl;
       for (uint32_t i=0; i<param._nb_port; i++)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h	(revision 42)
@@ -25,15 +25,12 @@
 #include "Behavioural/include/Vhdl.h"
 #endif
-#ifdef VHDL_TESTBENCH
-#include "Behavioural/include/Vhdl_Testbench.h"
-#endif
+#include "Behavioural/include/Component.h"
 
 using namespace std;
 
-namespace morpheo                    {
+namespace morpheo {
 namespace behavioural {
 namespace generic {
 namespace counter {
-
 
   class Counter 
@@ -55,7 +52,6 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-  private   : Vhdl_Testbench                 * _vhdl_testbench;
-#endif
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
 
 #ifdef SYSTEMC
@@ -63,5 +59,5 @@
     // Interface
   public    : SC_CLOCK                      *  in_CLOCK        ;
-
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
   public    : SC_IN (Tdata_t)              **  in_COUNTER_DATA         ;
   public    : SC_IN (Tcontrol_t)           **  in_COUNTER_ADDSUB       ;
@@ -107,14 +103,12 @@
 #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_port       (void);
   private : void     vhdl_testbench_transition (void);
 #endif
-  public  : void     vhdl_testbench_label      (string label);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp	(revision 42)
@@ -31,4 +31,8 @@
     log_printf(FUNC,Counter,"Counter","Begin");
 
+#ifdef SYSTEMC
+    allocation ();
+#endif
+
 #ifdef STATISTICS
     // Allocation of statistics
@@ -36,13 +40,4 @@
 			    param_statistics          ,
 			    param);
-#endif
-
-#ifdef VHDL_TESTBENCH
-    // Creation of a testbench
-    //  -> port
-    //  -> clock's signals
-    _vhdl_testbench = new Vhdl_Testbench (_name);
-    vhdl_testbench_port           ();
-    _vhdl_testbench->set_clock    ("in_CLOCK",false);
 #endif
 
@@ -53,6 +48,4 @@
 
 #ifdef SYSTEMC
-    allocation ();
-
     SC_METHOD (transition);
     dont_initialize ();
@@ -85,10 +78,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/Counter/src/Counter_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_allocation.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_allocation.cpp	(revision 42)
@@ -21,23 +21,53 @@
     log_printf(FUNC,Counter,"allocation","Begin");
 
-#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name     
+					     ,"Counter"  
+#ifdef POSITION
+					     ,COMBINATORY
 #endif
+					      );
+    
+    _interfaces = entity->set_interfaces();
 
-     in_COUNTER_DATA  = new SC_IN (Tdata_t)    * [_param._nb_port];
-     in_COUNTER_ADDSUB= new SC_IN (Tcontrol_t) * [_param._nb_port];
-    out_COUNTER_DATA  = new SC_OUT(Tdata_t)    * [_param._nb_port];
-    
-    for (uint32_t i=0; i<_param._nb_port; i++)
-      {
-	rename = " in_COUNTER_DATA_" +toString(i);
-	 in_COUNTER_DATA  [i] = new SC_IN (Tdata_t)    (rename.c_str());
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							 , IN  
+							 , SOUTH
+							 , "Generalist interface"
+#endif
+							 );
+      
+      in_CLOCK              = interface->set_signal_clk              ("clock" ,1,CLOCK_VHDL_NO);
+      in_NRESET             = interface->set_signal_in  <Tcontrol_t> ("nreset",1,RESET_VHDL_NO);
+    }
 
-	rename = " in_COUNTER_ADDSUB_"+toString(i);
-	 in_COUNTER_ADDSUB[i] = new SC_IN (Tcontrol_t) (rename.c_str());
-
-	rename = "out_COUNTER_DATA_" +toString(i);
-	out_COUNTER_DATA  [i] = new SC_OUT(Tdata_t)    (rename.c_str());
-      }
+    // ~~~~~[ Interface : "counter" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+        in_COUNTER_DATA  = new SC_IN (Tdata_t)    * [_param._nb_port];
+        in_COUNTER_ADDSUB= new SC_IN (Tcontrol_t) * [_param._nb_port];
+       out_COUNTER_DATA  = new SC_OUT(Tdata_t)    * [_param._nb_port];
+       
+       for (uint32_t i=0; i<_param._nb_port; i++)
+	 {
+	   Interface_fifo * interface = _interfaces->set_interface("counter_"+toString(i)
+#ifdef POSITION
+								   , IN  
+								   , SOUTH
+								   , "Counter interface"
+#endif
+								   );
+	   
+	    in_COUNTER_DATA   [i] = interface->set_signal_in  <Tdata_t   > ("data"  , _param._size_data);
+	    in_COUNTER_ADDSUB [i] = interface->set_signal_in  <Tcontrol_t> ("addsub", 1                );
+	   out_COUNTER_DATA   [i] = interface->set_signal_out <Tdata_t   > ("data"  , _param._size_data);
+	 }
+     }
+#ifdef POSITION
+    _component->generate_file();
+#endif
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_deallocation.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_deallocation.cpp	(revision 42)
@@ -19,19 +19,14 @@
     log_printf(FUNC,Counter,"deallocation","Begin");
 
-#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-    delete in_CLOCK;
-#endif
+    delete     in_CLOCK;
+    delete     in_NRESET;
     
-    for (uint32_t i=0; i<_param._nb_port; i++)
-      {
-	delete  in_COUNTER_DATA  [i];
-	delete  in_COUNTER_ADDSUB[i];
-	delete out_COUNTER_DATA  [i];
-      }
-    delete  in_COUNTER_DATA  ;
-    delete  in_COUNTER_ADDSUB;
-    delete out_COUNTER_DATA  ;
+    delete []  in_COUNTER_DATA  ;
+    delete []  in_COUNTER_ADDSUB;
+    delete [] out_COUNTER_DATA  ;
     
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    delete _component;
 
     log_printf(FUNC,Counter,"deallocation","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_genMealy.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_genMealy.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_genMealy.cpp	(revision 42)
@@ -1,4 +1,3 @@
 #ifdef SYSTEMC
-#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
 /*
  * $Id$
@@ -51,3 +50,2 @@
 }; // end namespace morpheo              
 #endif
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl.cpp	(revision 42)
@@ -19,7 +19,7 @@
   {
     log_printf(FUNC,Counter,"vhdl","Begin");
-    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;
     log_printf(FUNC,Counter,"vhdl","End");
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_body.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_body.cpp	(revision 42)
@@ -14,9 +14,8 @@
 namespace counter {
 
-
-  void Counter::vhdl_body (Vhdl & vhdl)
+  void Counter::vhdl_body (Vhdl * & vhdl)
   {
     log_printf(FUNC,Counter,"vhdl_body","Begin");
-    vhdl.set_body ("");
+    vhdl->set_body ("");
     
     for (uint32_t i=0; i<_param._nb_port; i++)
@@ -26,23 +25,23 @@
 	if (_param._size_data > 1)
 	  {
-	    counter_inc = "in_COUNTER_DATA_"+toString(i)+"+1";
-	    counter_dec = "in_COUNTER_DATA_"+toString(i)+"-1";
+	    counter_inc = "in_COUNTER_"+toString(i)+"_DATA+1";
+	    counter_dec = "in_COUNTER_"+toString(i)+"_DATA-1";
 	  }
 	else
 	  {
-	    counter_inc = "in_COUNTER_DATA_"+toString(i)+"+1";
-	    counter_dec = "in_COUNTER_DATA_"+toString(i)+"-1";
+	    counter_inc = "in_COUNTER_"+toString(i)+"_DATA+1";
+	    counter_dec = "in_COUNTER_"+toString(i)+"_DATA-1";
 	  }
 
-	vhdl.set_body ("out_COUNTER_DATA_"+toString(i)+" <=");
+	vhdl->set_body ("out_COUNTER_"+toString(i)+"_DATA <=");
 	if (_param._size_data > 1)
 	  {
-	    vhdl.set_body ("\tin_COUNTER_DATA_"+toString(i)+"+1 when in_COUNTER_ADDSUB_"+toString(i)+" = '1' and in_COUNTER_DATA_"+toString(i)+" < cst_max else");
-	    vhdl.set_body ("\tin_COUNTER_DATA_"+toString(i)+"-1 when in_COUNTER_ADDSUB_"+toString(i)+" = '0' and in_COUNTER_DATA_"+toString(i)+" > cst_min else");
-	    vhdl.set_body ("\tin_COUNTER_DATA_"+toString(i)+";");
+	    vhdl->set_body ("\tin_COUNTER_"+toString(i)+"_DATA+1 when in_COUNTER_"+toString(i)+"_ADDSUB = '1' and in_COUNTER_"+toString(i)+"_DATA < cst_max else");
+	    vhdl->set_body ("\tin_COUNTER_"+toString(i)+"_DATA-1 when in_COUNTER_"+toString(i)+"_ADDSUB = '0' and in_COUNTER_"+toString(i)+"_DATA > cst_min else");
+	    vhdl->set_body ("\tin_COUNTER_"+toString(i)+"_DATA;");
 	  }
 	else
 	  {
-	    vhdl.set_body ("\tin_COUNTER_ADDSUB_"+toString(i)+";");
+	    vhdl->set_body ("\tin_COUNTER_"+toString(i)+"_ADDSUB;");
 	  }
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_declaration.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_declaration.cpp	(revision 42)
@@ -15,5 +15,5 @@
 
 
-  void Counter::vhdl_declaration (Vhdl & vhdl)
+  void Counter::vhdl_declaration (Vhdl * & vhdl)
   {
     log_printf(FUNC,Counter,"vhdl_declaration","Begin");
@@ -21,6 +21,6 @@
     if (_param._size_data > 1)
       {
-	vhdl.set_constant ("cst_min",_param._size_data,std_logic_others(_param._size_data,0));
-	vhdl.set_constant ("cst_max",_param._size_data,std_logic_others(_param._size_data,1));
+	vhdl->set_constant ("cst_min",_param._size_data,std_logic_others(_param._size_data,0));
+	vhdl->set_constant ("cst_max",_param._size_data,std_logic_others(_param._size_data,1));
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_port.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_port.cpp	(revision 42)
@@ -15,15 +15,10 @@
 
 
-  void Counter::vhdl_port (Vhdl & vhdl)
+  void Counter::vhdl_port (Vhdl * & vhdl)
   {
     log_printf(FUNC,Counter,"vhdl_port","Begin");
 
-    for (uint32_t i=0; i<_param._nb_port; i++)
-      {
-	vhdl.set_port (" in_COUNTER_DATA_"  +toString(i), IN, _param._size_data);
-	vhdl.set_port (" in_COUNTER_ADDSUB_"+toString(i), IN, 1                );
-	vhdl.set_port ("out_COUNTER_DATA_"  +toString(i),OUT, _param._size_data);
-      }
-    
+    _interfaces->set_port(vhdl);
+
     log_printf(FUNC,Counter,"vhdl_port","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_label.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_label.cpp	(revision 41)
+++ 	(revision )
@@ -1,27 +1,0 @@
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Counter/include/Counter.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace counter {
-
-
-  void Counter::vhdl_testbench_label (string label)
-  {
-#ifdef VHDL_TESTBENCH
-    _vhdl_testbench->add_label(label);
-#endif
-  };
-
-}; // end namespace counter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_port.cpp	(revision 41)
+++ 	(revision )
@@ -1,35 +1,0 @@
-#ifdef VHDL_TESTBENCH
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Counter/include/Counter.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace counter {
-
-
-  void Counter::vhdl_testbench_port ()
-  {
-    log_printf(FUNC,Counter,"vhdl_testbench_port","Begin");
-    for (uint32_t i=0; i<_param._nb_port; i++)
-      {
-	_vhdl_testbench->set_port (" in_COUNTER_DATA_"  +toString(i), IN, _param._size_data);
-	_vhdl_testbench->set_port (" in_COUNTER_ADDSUB_"+toString(i), IN, 1);
-	_vhdl_testbench->set_port ("out_COUNTER_DATA_"  +toString(i),OUT, _param._size_data);
-      }
-
-    log_printf(FUNC,Counter,"vhdl_testbench_port","End");
-  };
-
-}; // end namespace counter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_transition.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_transition.cpp	(revision 42)
@@ -21,21 +21,5 @@
     sc_start(0);
 
-    // In order with file Counter_vhdl_testbench_port.cpp
-    // Warning : if a output depend of a subcomponent, take directly the port of subcomponent
-    // (because we have no control on the ordonnancer's policy)
-
-    for (uint32_t i=0; i<_param._nb_port; i++)
-      {
-	_vhdl_testbench->add_input (PORT_READ( in_COUNTER_DATA  [i]));
-	_vhdl_testbench->add_input (PORT_READ( in_COUNTER_ADDSUB[i]));
-	_vhdl_testbench->add_output(PORT_READ(out_COUNTER_DATA  [i]));
-      }
-    
-    // add_test :
-    //  - True  : the cycle must be compare with the output of systemC
-    //  - False : no test
-    _vhdl_testbench->add_test(true);
-
-    _vhdl_testbench->new_cycle (); // always at the end
+    _interfaces->testbench();
 
     log_printf(FUNC,Counter,"vhdl_testbench_transition","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile.mkf
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile.mkf	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile.mkf	(revision 42)
@@ -0,0 +1,516 @@
+#
+# Makefile generated by MKF configure script
+#
+
+all: RegisterFile_Monolithic_0.ngc RegisterFile_Monolithic_10.ngc RegisterFile_Monolithic_11.ngc RegisterFile_Monolithic_12.ngc RegisterFile_Monolithic_13.ngc RegisterFile_Monolithic_14.ngc RegisterFile_Monolithic_15.ngc RegisterFile_Monolithic_16.ngc RegisterFile_Monolithic_17.ngc RegisterFile_Monolithic_18.ngc RegisterFile_Monolithic_19.ngc RegisterFile_Monolithic_1.ngc RegisterFile_Monolithic_20.ngc RegisterFile_Monolithic_21.ngc RegisterFile_Monolithic_22.ngc RegisterFile_Monolithic_23.ngc RegisterFile_Monolithic_24.ngc RegisterFile_Monolithic_25.ngc RegisterFile_Monolithic_26.ngc RegisterFile_Monolithic_27.ngc RegisterFile_Monolithic_28.ngc RegisterFile_Monolithic_29.ngc RegisterFile_Monolithic_2.ngc RegisterFile_Monolithic_30.ngc RegisterFile_Monolithic_31.ngc RegisterFile_Monolithic_32.ngc RegisterFile_Monolithic_33.ngc RegisterFile_Monolithic_34.ngc RegisterFile_Monolithic_35.ngc RegisterFile_Monolithic_3.ngc RegisterFile_Monolithic_4.ngc RegisterFile_Monolithic_5.ngc RegisterFile_Monolithic_6.ngc RegisterFile_Monolithic_7.ngc RegisterFile_Monolithic_8.ngc RegisterFile_Monolithic_9.ngc
+
+RegisterFile_Monolithic_0.ngc: RegisterFile_Monolithic_0.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_0 -ifn RegisterFile_Monolithic_0.prj -ofn RegisterFile_Monolithic_0.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_0.prj: RegisterFile_Monolithic_0_Pack.vhdl RegisterFile_Monolithic_0.vhdl
+	for i in RegisterFile_Monolithic_0_Pack.vhdl RegisterFile_Monolithic_0.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_0.prj
+
+RegisterFile_Monolithic_0_Pack.vhdl:
+
+RegisterFile_Monolithic_0.vhdl:
+
+RegisterFile_Monolithic_10.ngc: RegisterFile_Monolithic_10.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_10 -ifn RegisterFile_Monolithic_10.prj -ofn RegisterFile_Monolithic_10.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_10.prj: RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl
+	for i in RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_10.prj
+
+RegisterFile_Monolithic_10_Pack.vhdl:
+
+RegisterFile_Monolithic_10.vhdl:
+
+RegisterFile_Monolithic_11.ngc: RegisterFile_Monolithic_11.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_11 -ifn RegisterFile_Monolithic_11.prj -ofn RegisterFile_Monolithic_11.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_11.prj: RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl
+	for i in RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_11.prj
+
+RegisterFile_Monolithic_11_Pack.vhdl:
+
+RegisterFile_Monolithic_11.vhdl:
+
+RegisterFile_Monolithic_12.ngc: RegisterFile_Monolithic_12.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_12 -ifn RegisterFile_Monolithic_12.prj -ofn RegisterFile_Monolithic_12.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_12.prj: RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl
+	for i in RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_12.prj
+
+RegisterFile_Monolithic_12_Pack.vhdl:
+
+RegisterFile_Monolithic_12.vhdl:
+
+RegisterFile_Monolithic_13.ngc: RegisterFile_Monolithic_13.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_13 -ifn RegisterFile_Monolithic_13.prj -ofn RegisterFile_Monolithic_13.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_13.prj: RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl
+	for i in RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_13.prj
+
+RegisterFile_Monolithic_13_Pack.vhdl:
+
+RegisterFile_Monolithic_13.vhdl:
+
+RegisterFile_Monolithic_14.ngc: RegisterFile_Monolithic_14.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_14 -ifn RegisterFile_Monolithic_14.prj -ofn RegisterFile_Monolithic_14.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_14.prj: RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl
+	for i in RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_14.prj
+
+RegisterFile_Monolithic_14_Pack.vhdl:
+
+RegisterFile_Monolithic_14.vhdl:
+
+RegisterFile_Monolithic_15.ngc: RegisterFile_Monolithic_15.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_15 -ifn RegisterFile_Monolithic_15.prj -ofn RegisterFile_Monolithic_15.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_15.prj: RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl
+	for i in RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_15.prj
+
+RegisterFile_Monolithic_15_Pack.vhdl:
+
+RegisterFile_Monolithic_15.vhdl:
+
+RegisterFile_Monolithic_16.ngc: RegisterFile_Monolithic_16.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_16 -ifn RegisterFile_Monolithic_16.prj -ofn RegisterFile_Monolithic_16.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_16.prj: RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl
+	for i in RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_16.prj
+
+RegisterFile_Monolithic_16_Pack.vhdl:
+
+RegisterFile_Monolithic_16.vhdl:
+
+RegisterFile_Monolithic_17.ngc: RegisterFile_Monolithic_17.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_17 -ifn RegisterFile_Monolithic_17.prj -ofn RegisterFile_Monolithic_17.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_17.prj: RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl
+	for i in RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_17.prj
+
+RegisterFile_Monolithic_17_Pack.vhdl:
+
+RegisterFile_Monolithic_17.vhdl:
+
+RegisterFile_Monolithic_18.ngc: RegisterFile_Monolithic_18.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_18 -ifn RegisterFile_Monolithic_18.prj -ofn RegisterFile_Monolithic_18.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_18.prj: RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl
+	for i in RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_18.prj
+
+RegisterFile_Monolithic_18_Pack.vhdl:
+
+RegisterFile_Monolithic_18.vhdl:
+
+RegisterFile_Monolithic_19.ngc: RegisterFile_Monolithic_19.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_19 -ifn RegisterFile_Monolithic_19.prj -ofn RegisterFile_Monolithic_19.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_19.prj: RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl
+	for i in RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_19.prj
+
+RegisterFile_Monolithic_19_Pack.vhdl:
+
+RegisterFile_Monolithic_19.vhdl:
+
+RegisterFile_Monolithic_1.ngc: RegisterFile_Monolithic_1.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_1 -ifn RegisterFile_Monolithic_1.prj -ofn RegisterFile_Monolithic_1.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_1.prj: RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl
+	for i in RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_1.prj
+
+RegisterFile_Monolithic_1_Pack.vhdl:
+
+RegisterFile_Monolithic_1.vhdl:
+
+RegisterFile_Monolithic_20.ngc: RegisterFile_Monolithic_20.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_20 -ifn RegisterFile_Monolithic_20.prj -ofn RegisterFile_Monolithic_20.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_20.prj: RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl
+	for i in RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_20.prj
+
+RegisterFile_Monolithic_20_Pack.vhdl:
+
+RegisterFile_Monolithic_20.vhdl:
+
+RegisterFile_Monolithic_21.ngc: RegisterFile_Monolithic_21.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_21 -ifn RegisterFile_Monolithic_21.prj -ofn RegisterFile_Monolithic_21.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_21.prj: RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl
+	for i in RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_21.prj
+
+RegisterFile_Monolithic_21_Pack.vhdl:
+
+RegisterFile_Monolithic_21.vhdl:
+
+RegisterFile_Monolithic_22.ngc: RegisterFile_Monolithic_22.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_22 -ifn RegisterFile_Monolithic_22.prj -ofn RegisterFile_Monolithic_22.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_22.prj: RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl
+	for i in RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_22.prj
+
+RegisterFile_Monolithic_22_Pack.vhdl:
+
+RegisterFile_Monolithic_22.vhdl:
+
+RegisterFile_Monolithic_23.ngc: RegisterFile_Monolithic_23.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_23 -ifn RegisterFile_Monolithic_23.prj -ofn RegisterFile_Monolithic_23.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_23.prj: RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl
+	for i in RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_23.prj
+
+RegisterFile_Monolithic_23_Pack.vhdl:
+
+RegisterFile_Monolithic_23.vhdl:
+
+RegisterFile_Monolithic_24.ngc: RegisterFile_Monolithic_24.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_24 -ifn RegisterFile_Monolithic_24.prj -ofn RegisterFile_Monolithic_24.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_24.prj: RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl
+	for i in RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_24.prj
+
+RegisterFile_Monolithic_24_Pack.vhdl:
+
+RegisterFile_Monolithic_24.vhdl:
+
+RegisterFile_Monolithic_25.ngc: RegisterFile_Monolithic_25.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_25 -ifn RegisterFile_Monolithic_25.prj -ofn RegisterFile_Monolithic_25.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_25.prj: RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl
+	for i in RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_25.prj
+
+RegisterFile_Monolithic_25_Pack.vhdl:
+
+RegisterFile_Monolithic_25.vhdl:
+
+RegisterFile_Monolithic_26.ngc: RegisterFile_Monolithic_26.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_26 -ifn RegisterFile_Monolithic_26.prj -ofn RegisterFile_Monolithic_26.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_26.prj: RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl
+	for i in RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_26.prj
+
+RegisterFile_Monolithic_26_Pack.vhdl:
+
+RegisterFile_Monolithic_26.vhdl:
+
+RegisterFile_Monolithic_27.ngc: RegisterFile_Monolithic_27.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_27 -ifn RegisterFile_Monolithic_27.prj -ofn RegisterFile_Monolithic_27.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_27.prj: RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl
+	for i in RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_27.prj
+
+RegisterFile_Monolithic_27_Pack.vhdl:
+
+RegisterFile_Monolithic_27.vhdl:
+
+RegisterFile_Monolithic_28.ngc: RegisterFile_Monolithic_28.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_28 -ifn RegisterFile_Monolithic_28.prj -ofn RegisterFile_Monolithic_28.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_28.prj: RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl
+	for i in RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_28.prj
+
+RegisterFile_Monolithic_28_Pack.vhdl:
+
+RegisterFile_Monolithic_28.vhdl:
+
+RegisterFile_Monolithic_29.ngc: RegisterFile_Monolithic_29.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_29 -ifn RegisterFile_Monolithic_29.prj -ofn RegisterFile_Monolithic_29.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_29.prj: RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl
+	for i in RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_29.prj
+
+RegisterFile_Monolithic_29_Pack.vhdl:
+
+RegisterFile_Monolithic_29.vhdl:
+
+RegisterFile_Monolithic_2.ngc: RegisterFile_Monolithic_2.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_2 -ifn RegisterFile_Monolithic_2.prj -ofn RegisterFile_Monolithic_2.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_2.prj: RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl
+	for i in RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_2.prj
+
+RegisterFile_Monolithic_2_Pack.vhdl:
+
+RegisterFile_Monolithic_2.vhdl:
+
+RegisterFile_Monolithic_30.ngc: RegisterFile_Monolithic_30.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_30 -ifn RegisterFile_Monolithic_30.prj -ofn RegisterFile_Monolithic_30.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_30.prj: RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl
+	for i in RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_30.prj
+
+RegisterFile_Monolithic_30_Pack.vhdl:
+
+RegisterFile_Monolithic_30.vhdl:
+
+RegisterFile_Monolithic_31.ngc: RegisterFile_Monolithic_31.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_31 -ifn RegisterFile_Monolithic_31.prj -ofn RegisterFile_Monolithic_31.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_31.prj: RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl
+	for i in RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_31.prj
+
+RegisterFile_Monolithic_31_Pack.vhdl:
+
+RegisterFile_Monolithic_31.vhdl:
+
+RegisterFile_Monolithic_32.ngc: RegisterFile_Monolithic_32.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_32 -ifn RegisterFile_Monolithic_32.prj -ofn RegisterFile_Monolithic_32.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_32.prj: RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl
+	for i in RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_32.prj
+
+RegisterFile_Monolithic_32_Pack.vhdl:
+
+RegisterFile_Monolithic_32.vhdl:
+
+RegisterFile_Monolithic_33.ngc: RegisterFile_Monolithic_33.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_33 -ifn RegisterFile_Monolithic_33.prj -ofn RegisterFile_Monolithic_33.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_33.prj: RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl
+	for i in RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_33.prj
+
+RegisterFile_Monolithic_33_Pack.vhdl:
+
+RegisterFile_Monolithic_33.vhdl:
+
+RegisterFile_Monolithic_34.ngc: RegisterFile_Monolithic_34.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_34 -ifn RegisterFile_Monolithic_34.prj -ofn RegisterFile_Monolithic_34.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_34.prj: RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl
+	for i in RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_34.prj
+
+RegisterFile_Monolithic_34_Pack.vhdl:
+
+RegisterFile_Monolithic_34.vhdl:
+
+RegisterFile_Monolithic_35.ngc: RegisterFile_Monolithic_35.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_35 -ifn RegisterFile_Monolithic_35.prj -ofn RegisterFile_Monolithic_35.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_35.prj: RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl
+	for i in RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_35.prj
+
+RegisterFile_Monolithic_35_Pack.vhdl:
+
+RegisterFile_Monolithic_35.vhdl:
+
+RegisterFile_Monolithic_3.ngc: RegisterFile_Monolithic_3.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_3 -ifn RegisterFile_Monolithic_3.prj -ofn RegisterFile_Monolithic_3.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_3.prj: RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl
+	for i in RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_3.prj
+
+RegisterFile_Monolithic_3_Pack.vhdl:
+
+RegisterFile_Monolithic_3.vhdl:
+
+RegisterFile_Monolithic_4.ngc: RegisterFile_Monolithic_4.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_4 -ifn RegisterFile_Monolithic_4.prj -ofn RegisterFile_Monolithic_4.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_4.prj: RegisterFile_Monolithic_4_Pack.vhdl RegisterFile_Monolithic_4.vhdl
+	for i in RegisterFile_Monolithic_4_Pack.vhdl RegisterFile_Monolithic_4.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_4.prj
+
+RegisterFile_Monolithic_4_Pack.vhdl:
+
+RegisterFile_Monolithic_4.vhdl:
+
+RegisterFile_Monolithic_5.ngc: RegisterFile_Monolithic_5.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_5 -ifn RegisterFile_Monolithic_5.prj -ofn RegisterFile_Monolithic_5.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_5.prj: RegisterFile_Monolithic_5_Pack.vhdl RegisterFile_Monolithic_5.vhdl
+	for i in RegisterFile_Monolithic_5_Pack.vhdl RegisterFile_Monolithic_5.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_5.prj
+
+RegisterFile_Monolithic_5_Pack.vhdl:
+
+RegisterFile_Monolithic_5.vhdl:
+
+RegisterFile_Monolithic_6.ngc: RegisterFile_Monolithic_6.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_6 -ifn RegisterFile_Monolithic_6.prj -ofn RegisterFile_Monolithic_6.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_6.prj: RegisterFile_Monolithic_6_Pack.vhdl RegisterFile_Monolithic_6.vhdl
+	for i in RegisterFile_Monolithic_6_Pack.vhdl RegisterFile_Monolithic_6.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_6.prj
+
+RegisterFile_Monolithic_6_Pack.vhdl:
+
+RegisterFile_Monolithic_6.vhdl:
+
+RegisterFile_Monolithic_7.ngc: RegisterFile_Monolithic_7.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_7 -ifn RegisterFile_Monolithic_7.prj -ofn RegisterFile_Monolithic_7.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_7.prj: RegisterFile_Monolithic_7_Pack.vhdl RegisterFile_Monolithic_7.vhdl
+	for i in RegisterFile_Monolithic_7_Pack.vhdl RegisterFile_Monolithic_7.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_7.prj
+
+RegisterFile_Monolithic_7_Pack.vhdl:
+
+RegisterFile_Monolithic_7.vhdl:
+
+RegisterFile_Monolithic_8.ngc: RegisterFile_Monolithic_8.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_8 -ifn RegisterFile_Monolithic_8.prj -ofn RegisterFile_Monolithic_8.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_8.prj: RegisterFile_Monolithic_8_Pack.vhdl RegisterFile_Monolithic_8.vhdl
+	for i in RegisterFile_Monolithic_8_Pack.vhdl RegisterFile_Monolithic_8.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_8.prj
+
+RegisterFile_Monolithic_8_Pack.vhdl:
+
+RegisterFile_Monolithic_8.vhdl:
+
+RegisterFile_Monolithic_9.ngc: RegisterFile_Monolithic_9.prj
+	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_9 -ifn RegisterFile_Monolithic_9.prj -ofn RegisterFile_Monolithic_9.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
+
+RegisterFile_Monolithic_9.prj: RegisterFile_Monolithic_9_Pack.vhdl RegisterFile_Monolithic_9.vhdl
+	for i in RegisterFile_Monolithic_9_Pack.vhdl RegisterFile_Monolithic_9.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_9.prj
+
+RegisterFile_Monolithic_9_Pack.vhdl:
+
+RegisterFile_Monolithic_9.vhdl:
+
+clean:
+	rm -f RegisterFile_Monolithic_0.ngc
+	rm -f RegisterFile_Monolithic_0.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_0.prj
+	rm -f RegisterFile_Monolithic_10.ngc
+	rm -f RegisterFile_Monolithic_10.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_10.prj
+	rm -f RegisterFile_Monolithic_11.ngc
+	rm -f RegisterFile_Monolithic_11.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_11.prj
+	rm -f RegisterFile_Monolithic_12.ngc
+	rm -f RegisterFile_Monolithic_12.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_12.prj
+	rm -f RegisterFile_Monolithic_13.ngc
+	rm -f RegisterFile_Monolithic_13.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_13.prj
+	rm -f RegisterFile_Monolithic_14.ngc
+	rm -f RegisterFile_Monolithic_14.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_14.prj
+	rm -f RegisterFile_Monolithic_15.ngc
+	rm -f RegisterFile_Monolithic_15.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_15.prj
+	rm -f RegisterFile_Monolithic_16.ngc
+	rm -f RegisterFile_Monolithic_16.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_16.prj
+	rm -f RegisterFile_Monolithic_17.ngc
+	rm -f RegisterFile_Monolithic_17.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_17.prj
+	rm -f RegisterFile_Monolithic_18.ngc
+	rm -f RegisterFile_Monolithic_18.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_18.prj
+	rm -f RegisterFile_Monolithic_19.ngc
+	rm -f RegisterFile_Monolithic_19.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_19.prj
+	rm -f RegisterFile_Monolithic_1.ngc
+	rm -f RegisterFile_Monolithic_1.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_1.prj
+	rm -f RegisterFile_Monolithic_20.ngc
+	rm -f RegisterFile_Monolithic_20.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_20.prj
+	rm -f RegisterFile_Monolithic_21.ngc
+	rm -f RegisterFile_Monolithic_21.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_21.prj
+	rm -f RegisterFile_Monolithic_22.ngc
+	rm -f RegisterFile_Monolithic_22.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_22.prj
+	rm -f RegisterFile_Monolithic_23.ngc
+	rm -f RegisterFile_Monolithic_23.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_23.prj
+	rm -f RegisterFile_Monolithic_24.ngc
+	rm -f RegisterFile_Monolithic_24.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_24.prj
+	rm -f RegisterFile_Monolithic_25.ngc
+	rm -f RegisterFile_Monolithic_25.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_25.prj
+	rm -f RegisterFile_Monolithic_26.ngc
+	rm -f RegisterFile_Monolithic_26.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_26.prj
+	rm -f RegisterFile_Monolithic_27.ngc
+	rm -f RegisterFile_Monolithic_27.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_27.prj
+	rm -f RegisterFile_Monolithic_28.ngc
+	rm -f RegisterFile_Monolithic_28.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_28.prj
+	rm -f RegisterFile_Monolithic_29.ngc
+	rm -f RegisterFile_Monolithic_29.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_29.prj
+	rm -f RegisterFile_Monolithic_2.ngc
+	rm -f RegisterFile_Monolithic_2.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_2.prj
+	rm -f RegisterFile_Monolithic_30.ngc
+	rm -f RegisterFile_Monolithic_30.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_30.prj
+	rm -f RegisterFile_Monolithic_31.ngc
+	rm -f RegisterFile_Monolithic_31.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_31.prj
+	rm -f RegisterFile_Monolithic_32.ngc
+	rm -f RegisterFile_Monolithic_32.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_32.prj
+	rm -f RegisterFile_Monolithic_33.ngc
+	rm -f RegisterFile_Monolithic_33.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_33.prj
+	rm -f RegisterFile_Monolithic_34.ngc
+	rm -f RegisterFile_Monolithic_34.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_34.prj
+	rm -f RegisterFile_Monolithic_35.ngc
+	rm -f RegisterFile_Monolithic_35.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_35.prj
+	rm -f RegisterFile_Monolithic_3.ngc
+	rm -f RegisterFile_Monolithic_3.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_3.prj
+	rm -f RegisterFile_Monolithic_4.ngc
+	rm -f RegisterFile_Monolithic_4.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_4.prj
+	rm -f RegisterFile_Monolithic_5.ngc
+	rm -f RegisterFile_Monolithic_5.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_5.prj
+	rm -f RegisterFile_Monolithic_6.ngc
+	rm -f RegisterFile_Monolithic_6.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_6.prj
+	rm -f RegisterFile_Monolithic_7.ngc
+	rm -f RegisterFile_Monolithic_7.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_7.prj
+	rm -f RegisterFile_Monolithic_8.ngc
+	rm -f RegisterFile_Monolithic_8.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_8.prj
+	rm -f RegisterFile_Monolithic_9.ngc
+	rm -f RegisterFile_Monolithic_9.lso
+	rm -f -r xst
+	rm -f RegisterFile_Monolithic_9.prj
+
+re: clean all
+
+install:
+
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 42)
@@ -94,5 +94,9 @@
     READ_VAL  [i] .write (0);
 
+  NRESET.write(0);
+
   sc_start(5);
+
+  NRESET.write(1);
 
   cout << "<" << name << "> Write the RegisterFile (no read)" << endl;
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 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 42)
@@ -23,9 +23,5 @@
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h"
 #endif
-#ifdef POSITION
-#include "Behavioural/include/Position.h"
-#else
-#include "Behavioural/include/Interfaces.h"
-#endif
+#include "Behavioural/include/Component.h"
 #ifdef VHDL
 #include "Behavioural/include/Vhdl.h"
@@ -57,8 +53,5 @@
 #endif
 
-#ifdef POSITION
-  private   : Position                       * _position;
-#endif
-
+  public    : Component                      * _component;
   private   : Interfaces                     * _interfaces;
 
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 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp	(revision 42)
@@ -17,22 +17,28 @@
   void RegisterFile_Monolithic::allocation (void)
   {
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name                   
+					     ,"RegisterFile_Monolithic"
 #ifdef POSITION
-    _position   = new Position ();
-
-    Entity * entity = _position->set_entity (_name                    ,
-					     "RegisterFile_Monolithic",
-					     REGISTER                 );
+					     ,REGISTER                 
+#endif
+					      );
     
     _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 * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							 , IN
+							 ,SOUTH
+							 , "Generalist interface"
+#endif
+							 );
+      
+      in_CLOCK              = interface->set_signal_clk              ("clock" ,1);
+      in_NRESET             = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
+    }
     // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -44,10 +50,16 @@
     for (uint32_t i=0; i<_param._nb_port_read; i++)
       { 
-	Interface_fifo * interface_read = _interfaces->set_interface("read_"+toString(i), IN  ,WEST, "Interface Read");
+	Interface_fifo * interface = _interfaces->set_interface("read_"+toString(i)
+#ifdef POSITION
+								, IN  
+								,WEST
+								, "Interface Read"
+#endif
+								);
 
-	 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);
+	 in_READ_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
+	out_READ_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
+	 in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param._nb_word)));
+	out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param._size_word);
       }
 
@@ -61,10 +73,16 @@
     for (uint32_t i=0; i<_param._nb_port_write; i++)
       {
-	Interface_fifo * interface_write = _interfaces->set_interface("write_"+toString(i), IN  ,EAST, "Interface Write");
+	Interface_fifo * interface = _interfaces->set_interface("write_"+toString(i)
+#ifdef POSITION
+								, IN  
+								,EAST
+								, "Interface Write"
+#endif
+								);
 
-	 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);
+	 in_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
+	out_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
+	 in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param._nb_word)));
+	 in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param._size_word);
       }
 
@@ -79,5 +97,5 @@
 
 #ifdef POSITION
-    _position->generate_file();
+    _component->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 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp	(revision 42)
@@ -17,4 +17,6 @@
   void RegisterFile_Monolithic::deallocation (void)
   {
+    delete _component;
+
     delete    in_CLOCK;
     delete    in_NRESET;
@@ -33,10 +35,4 @@
     // ----- Register
     delete [] reg_DATA;
-
-#ifdef POSITION
-    delete _position;
-#else
-    delete _interfaces;
-#endif
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 42)
@@ -22,9 +22,5 @@
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h"
 #endif
-#ifdef POSITION
-#include "Behavioural/include/Position.h"
-#else
-#include "Behavioural/include/Interfaces.h"
-#endif
+#include "Behavioural/include/Component.h"
 #ifdef VHDL
 #include "Behavioural/include/Vhdl.h"
@@ -58,8 +54,5 @@
 #endif
 
-#ifdef POSITION
-  private   : Position                       * _position;
-#endif
-
+  private   : Component                      * _component;
   private   : Interfaces                     * _interfaces;
 
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 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp	(revision 42)
@@ -71,5 +71,5 @@
       sensitive << *(in_VAL [i]);
 
-#ifdef SYSTEMCASS_SPECIFIC
+#  ifdef SYSTEMCASS_SPECIFIC
     // List dependency information
 
@@ -85,5 +85,5 @@
       }
     
-#endif    
+#  endif    
 #endif
     log_printf(FUNC,Select_Priority_Fixed,"Select_Priority_Fixed","End");
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 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp	(revision 42)
@@ -19,22 +19,27 @@
     log_printf(FUNC,Select_Priority_Fixed,"allocation","Begin");
 
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name                 
 #ifdef POSITION
-    _position   = new Position ();
-
-    Entity * entity = _position->set_entity (_name                  ,
-					     "Select_Priority_Fixed",
-					     COMBINATORY            );
+					     ,"Select_Priority_Fixed"
+					     ,COMBINATORY            
+#endif
+					      );
     
     _interfaces = entity->set_interfaces();
-#else
-    _interfaces = new Interfaces();
-#endif
 
     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    Interface_fifo * interface_ = _interfaces->set_interface("", IN  ,WEST, "Generalist interface");
+    Interface_fifo * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							    ,IN  
+							    ,WEST
+							    ,"Generalist interface"
+#endif
+							    );
 
-     in_CLOCK        = interface_->set_signal_clk              ("clock" ,1, CLOCK_VHDL_NO);
-     in_NRESET       = interface_->set_signal_in  <Tcontrol_t> ("nreset",1);
+     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];
     if (_param._encoding_one_hot)
@@ -43,13 +48,13 @@
     for (uint32_t i=0; i<_param._nb_entity; i++)
       {
-	 in_VAL [i]    = interface_->set_signal_in  <Tcontrol_t> ("val_"+toString(i),1);
+	 in_VAL [i]    = interface->set_signal_in  <Tcontrol_t> ("val_"+toString(i),1);
 	if (_param._encoding_one_hot)
-	out_ACK [i]    = interface_->set_signal_out <Tcontrol_t> ("ack_"+toString(i),1);
+	out_ACK [i]    = interface->set_signal_out <Tcontrol_t> ("ack_"+toString(i),1);
       }
 
     if (_param._encoding_compact)
       {
-	out_ENTITY     = interface_->set_signal_out <Tentity_t > ("entity"    , _param._size_entity);
-	out_ENTITY_ACK = interface_->set_signal_out <Tcontrol_t> ("entity_ack", 1);
+	out_ENTITY     = interface->set_signal_out <Tentity_t > ("entity"    , _param._size_entity);
+	out_ENTITY_ACK = interface->set_signal_out <Tcontrol_t> ("entity_ack", 1);
       }
 
@@ -57,5 +62,5 @@
 
 #ifdef POSITION
-    _position->generate_file();
+    _component->generate_file();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 42)
@@ -34,9 +34,6 @@
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
-#ifdef POSITION
-    delete _position;
-#else
-    delete _interfaces;
-#endif
+    delete _component;
+
     log_printf(FUNC,Select_Priority_Fixed,"deallocation","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp	(revision 42)
@@ -44,4 +44,5 @@
    *********************************************************************/
   sc_clock                                 CLOCK ("clock", 1.0, 0.5);
+  sc_signal <Tdirection_t>                 NRESET("nreset");
   sc_signal <Tdata_t     >                 SHIFTER_DATA_IN   [param._nb_port];
   sc_signal <Tshift_t    >                 SHIFTER_SHIFT     [param._nb_port];
@@ -61,4 +62,5 @@
 #if (defined(STATISTICS) || defined (VHDL_TESTBENCH))
   (*(_Shifter->in_CLOCK))        (CLOCK);
+  (*(_Shifter->in_NRESET))       (NRESET);
 #endif
   for (uint32_t i=0; i<param._nb_port; i++)
@@ -116,4 +118,6 @@
 
   sc_start(0);
+
+  NRESET.write(1);
   
   for (uint32_t x=0; x<6; x++)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h	(revision 42)
@@ -24,7 +24,5 @@
 #include "Behavioural/include/Vhdl.h"
 #endif
-#ifdef VHDL_TESTBENCH
-#include "Behavioural/include/Vhdl_Testbench.h"
-#endif
+#include "Behavioural/include/Component.h"
 
 using namespace std;
@@ -50,11 +48,12 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-  private   : Vhdl_Testbench                 * _vhdl_testbench;
-#endif
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
 
 #ifdef SYSTEMC
     // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   public    : SC_CLOCK                      *  in_CLOCK             ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET            ;
+
     // Interface "shifter"
   public    : SC_IN (Tdata_t)              **  in_SHIFTER_DATA      ;
@@ -104,7 +103,7 @@
 #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 STATISTICS
@@ -113,7 +112,5 @@
 					       
 #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/Shifter/src/Shifter.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter.cpp	(revision 42)
@@ -15,15 +15,19 @@
 
 #ifdef SYSTEMC
-  Shifter::Shifter (sc_module_name name,
+  Shifter::Shifter (sc_module_name name
 #else
-  Shifter::Shifter (string name,
+  Shifter::Shifter (string name
 #endif
 #ifdef STATISTICS
-		    morpheo::behavioural::Parameters_Statistics             param_statistics,
+		    ,morpheo::behavioural::Parameters_Statistics             param_statistics
 #endif
-		    morpheo::behavioural::generic::shifter::Parameters param ):
+		    ,morpheo::behavioural::generic::shifter::Parameters param ):
 		    _name   (name)
 		    ,_param (param)
   {
+#ifdef SYSTEMC
+    allocation ();
+#endif
+
 #ifdef STATISTICS
     // Allocation of statistics
@@ -31,13 +35,4 @@
 			    param_statistics          ,
 			    param);
-#endif
-
-#ifdef VHDL_TESTBENCH
-    // Creation of a testbench
-    //  -> port
-    //  -> clock's signals
-    _vhdl_testbench = new Vhdl_Testbench (_name);
-    vhdl_testbench_port           (*_vhdl_testbench);
-    _vhdl_testbench->set_clock    ("in_CLOCK",false);
 #endif
 
@@ -48,6 +43,4 @@
 
 #ifdef SYSTEMC
-    allocation ();
-
 #if (defined(STATISTICS) || defined (VHDL_TESTBENCH))
     SC_METHOD (transition);
@@ -107,10 +100,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/Shifter/src/Shifter_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_allocation.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_allocation.cpp	(revision 42)
@@ -17,69 +17,82 @@
   void Shifter::allocation (void)
   {
-    string rename;
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name       
+					     ,"Shifter"   
+#ifdef POSITION
+					     ,COMBINATORY 
+#endif
+					     );
+    
+    _interfaces = entity->set_interfaces();
 
 #if (defined(STATISTICS) || defined (VHDL_TESTBENCH))
-     in_CLOCK           = new SC_CLOCK ("SC_CLOCK");
+    {
+      Interface_fifo * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							      , IN  
+							      , SOUTH
+							      , "Generalist interface"
 #endif
-    // Interface "shifter"
-     in_SHIFTER_DATA      = new SC_IN (Tdata_t)      * [_param._nb_port];
-    if (_param._shift_value == 0)
-     in_SHIFTER_SHIFT     = new SC_IN (Tshift_t)     * [_param._nb_port];
-    if (_param._direction   == external_direction)
-     in_SHIFTER_DIRECTION = new SC_IN (Tdirection_t) * [_param._nb_port];
-    if (_param._rotate      == external_rotate)
-     in_SHIFTER_TYPE      = new SC_IN (Ttype_t)      * [_param._nb_port];
-    if (_param._carry       == external_carry)
-     in_SHIFTER_CARRY     = new SC_IN (Tcarry_t)     * [_param._nb_port];
-    if (_param._carry       == external_completion)
-    if (_param._type_completion_bool == true)
-     in_SHIFTER_CARRY_IN  = new SC_IN (Tcontrol_t)   * [_param._nb_port];
-    else
-     in_SHIFTER_COMPLETION= new SC_IN (Tdata_t)      * [_param._nb_port];
-    out_SHIFTER_DATA      = new SC_OUT(Tdata_t)      * [_param._nb_port];
+							      );
+      
+       in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_NO);
+       in_NRESET       = interface->set_signal_in <Tcontrol_t>  ("nreset",1, RESET_VHDL_NO);
+    }
+#endif
     
-    for (uint32_t i=0; i<_param._nb_port; i++)
-      {
-	rename = "in_SHIFTER_DATA["      + toString(i) + "]";
-	 in_SHIFTER_DATA      [i] = new SC_IN (Tdata_t)      (rename.c_str());
+    {
+      // Interface "shifter"
+       in_SHIFTER_DATA      = new SC_IN (Tdata_t)      * [_param._nb_port];
+      if (_param._shift_value == 0)
+       in_SHIFTER_SHIFT     = new SC_IN (Tshift_t)     * [_param._nb_port];
+      if (_param._direction   == external_direction)
+       in_SHIFTER_DIRECTION = new SC_IN (Tdirection_t) * [_param._nb_port];
+      if (_param._rotate      == external_rotate)
+       in_SHIFTER_TYPE      = new SC_IN (Ttype_t)      * [_param._nb_port];
+      if (_param._carry       == external_carry)
+       in_SHIFTER_CARRY     = new SC_IN (Tcarry_t)     * [_param._nb_port];
+      if (_param._carry       == external_completion)
+      if (_param._type_completion_bool == true)
+       in_SHIFTER_CARRY_IN  = new SC_IN (Tcontrol_t)   * [_param._nb_port];
+      else
+       in_SHIFTER_COMPLETION= new SC_IN (Tdata_t)      * [_param._nb_port];
+      out_SHIFTER_DATA      = new SC_OUT(Tdata_t)      * [_param._nb_port];
+      
+      for (uint32_t i=0; i<_param._nb_port; i++)
+	{
+	  Interface_fifo * interface = _interfaces->set_interface("shifter_"+toString(i)
+#ifdef POSITION
+								  , IN  
+								  , SOUTH
+								  , "Generalist interface"
+#endif
+								  );
+	 
+	   in_SHIFTER_DATA       [i] = interface->set_signal_in  <Tdata_t     > ("data"      ,_param._size_data);
+	  if (_param._shift_value == 0)
+	   in_SHIFTER_SHIFT      [i] = interface->set_signal_in  <Tshift_t    > ("shift"     ,static_cast<uint32_t>(ceil(log2(_param._size_data))));
+	  if (_param._direction == external_direction)
+	   in_SHIFTER_DIRECTION  [i] = interface->set_signal_in  <Tdirection_t> ("direction" ,1);
+	  if (_param._rotate  == external_rotate)
+	   in_SHIFTER_TYPE       [i] = interface->set_signal_in  <Ttype_t     > ("type"      ,1);
+	  if (_param._carry == external_carry)
+	   in_SHIFTER_CARRY      [i] = interface->set_signal_in  <Tcarry_t    > ("carry"     ,1);
+	  if (_param._carry       == external_completion)
+	  if (_param._type_completion_bool == true)
+	   in_SHIFTER_CARRY_IN   [i] = interface->set_signal_in  <Tcontrol_t  > ("carry_in"  ,1);
+	  else
+	   in_SHIFTER_COMPLETION [i] = interface->set_signal_in  <Tdata_t     > ("completion",_param._size_data_completion);
+	  out_SHIFTER_DATA       [i] = interface->set_signal_out <Tdata_t     > ("data"      ,_param._size_data);
+	}										                                         
+    }
 
-	if (_param._shift_value == 0)
-	  {
-	rename = "in_SHIFTER_SHIFT["     + toString(i) + "]";
-	 in_SHIFTER_SHIFT     [i] = new SC_IN (Tshift_t)     (rename.c_str());
-	  }
-	if (_param._direction == external_direction)
-	  {
-	rename = "in_SHIFTER_DIRECTION[" + toString(i) + "]";
-	 in_SHIFTER_DIRECTION [i] = new SC_IN (Tdirection_t) (rename.c_str());
-	  }
-	if (_param._rotate  == external_rotate)
-	  {
-	rename = "in_SHIFTER_TYPE["      + toString(i) + "]";
-	 in_SHIFTER_TYPE     [i]      = new SC_IN (Ttype_t)  (rename.c_str());
-	  }
-	if (_param._carry == external_carry)
-	  {
-	rename = "in_SHIFTER_CARRY["    + toString(i) + "]";
-	 in_SHIFTER_CARRY    [i] = new SC_IN (Tcarry_t)      (rename.c_str());
-	  }
+#ifdef POSITION
+    _component->generate_file();
+#endif
 
-	if (_param._carry       == external_completion)
-	if (_param._type_completion_bool == true)
-	  {
-	 rename = "in_SHIFTER_CARRY_IN["      + toString(i) + "]";
-	 in_SHIFTER_CARRY_IN   [i] = new SC_IN (Tcontrol_t)  (rename.c_str());	  
-	  }
-	else
-	  {
-	 rename = "in_SHIFTER_COMPLETION["    + toString(i) + "]";
-	 in_SHIFTER_COMPLETION [i] = new SC_IN (Tdata_t)     (rename.c_str());
-	  }
-	
-	rename = "out_SHIFTER_DATA["    + toString(i) + "]";
-	out_SHIFTER_DATA     [i] = new SC_OUT(Tdata_t)       (rename.c_str());
-      }
   };
-
+  
 }; // end namespace shifter
 }; // end namespace generic
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_deallocation.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_deallocation.cpp	(revision 42)
@@ -18,42 +18,25 @@
   {
 #if (defined(STATISTICS) || defined (VHDL_TESTBENCH))
-    delete in_CLOCK;
+    delete     in_CLOCK;
 #endif
 
-    // Interface "shifter"
-    for (uint32_t i=0; i<_param._nb_port; i++)
-      {
-	delete  in_SHIFTER_DATA      [i];
-	if (_param._shift_value == 0)
-	delete  in_SHIFTER_SHIFT     [i];
-	if (_param._direction   == external_direction)
-	delete  in_SHIFTER_DIRECTION [i];
-	if (_param._rotate      == external_rotate)
-	delete  in_SHIFTER_TYPE      [i];
-	if (_param._carry       == external_carry)
-	delete  in_SHIFTER_CARRY     [i];
-	if (_param._carry       == external_completion)
-	if (_param._type_completion_bool == true)
-	delete  in_SHIFTER_CARRY_IN  [i];	  
-	else
-	delete  in_SHIFTER_COMPLETION[i];
-	delete out_SHIFTER_DATA      [i];
-      }
+    delete []  in_SHIFTER_DATA      ;
+    if (_param._shift_value == 0)
+    delete []  in_SHIFTER_SHIFT     ;
+    if (_param._direction   == external_direction )
+    delete []  in_SHIFTER_DIRECTION ;
+    if (_param._rotate      == external_rotate    )
+    delete []  in_SHIFTER_TYPE      ;
+    if (_param._carry       == external_carry     )
+    delete []  in_SHIFTER_CARRY     ;
+    if (_param._carry       == external_completion)
+    if (_param._type_completion_bool == true)
+    delete []  in_SHIFTER_CARRY_IN  ;
+    else
+    delete []  in_SHIFTER_COMPLETION;
+    delete [] out_SHIFTER_DATA      ;
 
-    delete  in_SHIFTER_DATA      ;
-    if (_param._shift_value == 0)
-    delete  in_SHIFTER_SHIFT     ;
-    if (_param._direction   == external_direction )
-    delete  in_SHIFTER_DIRECTION ;
-    if (_param._rotate      == external_rotate    )
-    delete  in_SHIFTER_TYPE      ;
-    if (_param._carry       == external_carry     )
-    delete  in_SHIFTER_CARRY     ;
-    if (_param._carry       == external_completion)
-      if (_param._type_completion_bool == true)
-	delete  in_SHIFTER_CARRY_IN  ;
-      else
-	delete  in_SHIFTER_COMPLETION;
-    delete out_SHIFTER_DATA      ;
+    delete _component;
+
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_transition.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_transition.cpp	(revision 42)
@@ -23,5 +23,5 @@
 
 #ifdef VHDL_TESTBENCH
-    vhdl_testbench_transition (*_vhdl_testbench);
+    vhdl_testbench_transition ();
 #endif
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl.cpp	(revision 42)
@@ -18,7 +18,7 @@
   void Shifter::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);
@@ -26,5 +26,7 @@
     vhdl_body        (vhdl);
 
-    vhdl.generate_file();
+    vhdl->generate_file();
+
+    delete vhdl;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_body.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_body.cpp	(revision 42)
@@ -15,9 +15,9 @@
 
 
-  void Shifter::vhdl_body (Vhdl & vhdl)
+  void Shifter::vhdl_body (Vhdl * & vhdl)
   {
     //uint32_t log2_size_data = static_cast<uint32_t>(ceil(log2(_param._size_data)));
 
-    vhdl.set_body ("-- Compute all case of shift");
+    vhdl->set_body ("-- Compute all case of shift");
 
     for (uint32_t i=0; i<_param._nb_port; i++)
@@ -25,26 +25,26 @@
 	//-----[ Shift logic Left ]--------------------------------------------
 	if (_param._have_shift_logic_left)
-	  vhdl.set_body ("shift_logic_left_"+toString(i)+"        <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_DATA_"+toString(i)+") sll CONV_INTEGER(shift_"+toString(i)+"));");
+	  vhdl->set_body ("shift_logic_left_"+toString(i)+"        <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) sll CONV_INTEGER(shift_"+toString(i)+"));");
 	//-----[ Shift logic Right ]-------------------------------------------
 	if (_param._have_shift_logic_right)
-	  vhdl.set_body ("shift_logic_right_"+toString(i)+"       <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_DATA_"+toString(i)+") srl CONV_INTEGER(shift_"+toString(i)+"));");
+	  vhdl->set_body ("shift_logic_right_"+toString(i)+"       <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) srl CONV_INTEGER(shift_"+toString(i)+"));");
 	//-----[ Shift arithmetic Left ]---------------------------------------
 	if (_param._have_shift_arithmetic_left)
-	  vhdl.set_body ("shift_arithmetic_left_"+toString(i)+"   <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_DATA_"+toString(i)+") sla CONV_INTEGER(shift_"+toString(i)+"));");
+	  vhdl->set_body ("shift_arithmetic_left_"+toString(i)+"   <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) sla CONV_INTEGER(shift_"+toString(i)+"));");
 	//-----[ Shift arithmetic Right ]--------------------------------------
 	if (_param._have_shift_arithmetic_right)
-	  vhdl.set_body ("shift_arithmetic_right_"+toString(i)+"  <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_DATA_"+toString(i)+") sra CONV_INTEGER(shift_"+toString(i)+"));");
+	  vhdl->set_body ("shift_arithmetic_right_"+toString(i)+"  <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) sra CONV_INTEGER(shift_"+toString(i)+"));");
 	//-----[ Rotate Left ]-------------------------------------------------
 	if (_param._have_rotate_left)
-	  vhdl.set_body ("rotate_left_"+toString(i)+"             <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_DATA_"+toString(i)+") rol CONV_INTEGER(shift_"+toString(i)+"));");
+	  vhdl->set_body ("rotate_left_"+toString(i)+"             <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) rol CONV_INTEGER(shift_"+toString(i)+"));");
 	//-----[ Rotate Right ]------------------------------------------------
 	if (_param._have_rotate_right)
-	  vhdl.set_body ("rotate_right_"+toString(i)+"            <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_DATA_"+toString(i)+") ror CONV_INTEGER(shift_"+toString(i)+"));");
+	  vhdl->set_body ("rotate_right_"+toString(i)+"            <= TO_STDLOGICVECTOR(TO_BITVECTOR(in_SHIFTER_"+toString(i)+"_DATA) ror CONV_INTEGER(shift_"+toString(i)+"));");
       }
 
     if (_param._size_data_completion > 0)
       {
-	vhdl.set_body ("");
-	vhdl.set_body ("-- Mask");
+	vhdl->set_body ("");
+	vhdl->set_body ("-- Mask");
 
 	for (uint32_t i=0; i<_param._nb_port; i++)
@@ -53,34 +53,34 @@
 	    
 	    if (_param._type_completion_bool == true)
-	      print_shifter_completion = "in_SHIFTER_CARRY_IN";
+	      print_shifter_completion = "in_SHIFTER_"+toString(i)+"_CARRY_IN";
 	    else
-	      print_shifter_completion = "in_SHIFTER_COMPLETION";
+	      print_shifter_completion = "in_SHIFTER_"+toString(i)+"_COMPLETION";
 
 	    if (_param._size_data == _param._size_data_completion)
 	      {
-		vhdl.set_body ("shifter_completion_left_"+toString(i)+"  <= "+print_shifter_completion+"_"+toString(i)+";");
-		vhdl.set_body ("shifter_completion_right_"+toString(i)+" <= "+print_shifter_completion+"_"+toString(i)+";");
+		vhdl->set_body ("shifter_completion_left_"+toString(i)+"  <= "+print_shifter_completion+";");
+		vhdl->set_body ("shifter_completion_right_"+toString(i)+" <= "+print_shifter_completion+";");
 	      }
 	    else
 	      {
-		vhdl.set_body ("shifter_completion_left_"+toString(i)+std_logic_range(_param._size_data-1,_param._size_data_completion)+"  <= "+std_logic_others(_param._size_data-_param._size_data_completion,0)+";");
-		vhdl.set_body ("shifter_completion_left_"+toString(i)+std_logic_range(_param._size_data_completion                    )+"  <= "+print_shifter_completion+"_"+toString(i)+";");
-
-		vhdl.set_body ("shifter_completion_right_"+toString(i)+std_logic_range(_param._size_data-1,_param._size_data-_param._size_data_completion)+" <= "+print_shifter_completion+"_"+toString(i)+";");
-		vhdl.set_body ("shifter_completion_right_"+toString(i)+std_logic_range(_param._size_data-_param._size_data_completion                    )+" <= "+std_logic_others(_param._size_data-_param._size_data_completion,0)+";");
-	      }
-	    
- 	    vhdl.set_body ("mask_completion_left_"+toString(i)+"     <= TO_STDLOGICVECTOR(TO_BITVECTOR(cst_completion) sll CONV_INTEGER(shift_"+toString(i)+"));");
- 	    vhdl.set_body ("mask_completion_right_"+toString(i)+"    <= TO_STDLOGICVECTOR(TO_BITVECTOR(cst_completion) srl CONV_INTEGER(shift_"+toString(i)+"));");
+		vhdl->set_body ("shifter_completion_left_"+toString(i)+std_logic_range(_param._size_data-1,_param._size_data_completion)+"  <= "+std_logic_others(_param._size_data-_param._size_data_completion,0)+";");
+		vhdl->set_body ("shifter_completion_left_"+toString(i)+std_logic_range(_param._size_data_completion                    )+"  <= "+print_shifter_completion+";");
+
+		vhdl->set_body ("shifter_completion_right_"+toString(i)+std_logic_range(_param._size_data-1,_param._size_data-_param._size_data_completion)+" <= "+print_shifter_completion+";");
+		vhdl->set_body ("shifter_completion_right_"+toString(i)+std_logic_range(_param._size_data-_param._size_data_completion                    )+" <= "+std_logic_others(_param._size_data-_param._size_data_completion,0)+";");
+	      }
+	    
+ 	    vhdl->set_body ("mask_completion_left_"+toString(i)+"     <= TO_STDLOGICVECTOR(TO_BITVECTOR(cst_completion) sll CONV_INTEGER(shift_"+toString(i)+"));");
+ 	    vhdl->set_body ("mask_completion_right_"+toString(i)+"    <= TO_STDLOGICVECTOR(TO_BITVECTOR(cst_completion) srl CONV_INTEGER(shift_"+toString(i)+"));");
 	  }
       }
 	      
 
-    vhdl.set_body ("");
-    vhdl.set_body ("-- Multiplexor");
+    vhdl->set_body ("");
+    vhdl->set_body ("-- Multiplexor");
 
     for (uint32_t i=0; i<_param._nb_port; i++)
       {
-	vhdl.set_body ("out_SHIFTER_DATA_"+toString(i)+"       <=");
+	vhdl->set_body ("out_SHIFTER_"+toString(i)+"_DATA       <=");
 	string print_else = "    ";
 
@@ -95,11 +95,11 @@
 	      {
 		have_when = true;
-		print_when += " in_SHIFTER_DIRECTION_"+toString(i)+" = cst_is_direction_left ";
-		print_and = " and ";
-	      }
-	    if (_param._rotate      == external_rotate)
-	      {
-		have_when = true;
-		print_when += print_and+" in_SHIFTER_TYPE_"+toString(i)+" = cst_is_type_shift ";
+		print_when += " in_SHIFTER_"+toString(i)+"_DIRECTION = cst_is_direction_left ";
+		print_and = " and ";
+	      }
+	    if (_param._rotate      == external_rotate)
+	      {
+		have_when = true;
+		print_when += print_and+" in_SHIFTER_"+toString(i)+"_TYPE = cst_is_type_shift ";
 		print_and = " and ";
 	      }
@@ -107,11 +107,11 @@
 	      {
 		have_when = true;
-		print_when += print_and+" in_SHIFTER_CARRY_"+toString(i)+" = cst_is_carry_arithmetic";
-	      }
-
-	    if (have_when)
-	      print_when = "when " + print_when;
-
-	    vhdl.set_body ("\t"+print_else+" shift_arithmetic_left_"+toString(i)+"   "+print_when);
+		print_when += print_and+" in_SHIFTER_"+toString(i)+"_CARRY = cst_is_carry_arithmetic";
+	      }
+
+	    if (have_when)
+	      print_when = "when " + print_when;
+
+	    vhdl->set_body ("\t"+print_else+" shift_arithmetic_left_"+toString(i)+"   "+print_when);
 	    print_else = "else";
 	  }
@@ -126,11 +126,11 @@
 	      {
 		have_when = true;
-		print_when += " in_SHIFTER_DIRECTION_"+toString(i)+" = cst_is_direction_right";
-		print_and = " and ";
-	      }
-	    if (_param._rotate      == external_rotate)
-	      {
-		have_when = true;
-		print_when += print_and+" in_SHIFTER_TYPE_"+toString(i)+" = cst_is_type_shift ";
+		print_when += " in_SHIFTER_"+toString(i)+"_DIRECTION = cst_is_direction_right";
+		print_and = " and ";
+	      }
+	    if (_param._rotate      == external_rotate)
+	      {
+		have_when = true;
+		print_when += print_and+" in_SHIFTER_"+toString(i)+"_TYPE = cst_is_type_shift ";
 		print_and = " and ";
 	      }
@@ -138,11 +138,11 @@
 	      {
 		have_when = true;
-		print_when += print_and+" in_SHIFTER_CARRY_"+toString(i)+" = cst_is_carry_arithmetic";
-	      }
-
-	    if (have_when)
-	      print_when = "when " + print_when;
-
-	    vhdl.set_body ("\t"+print_else+" shift_arithmetic_right_"+toString(i)+"  "+print_when);
+		print_when += print_and+" in_SHIFTER_"+toString(i)+"_CARRY = cst_is_carry_arithmetic";
+	      }
+
+	    if (have_when)
+	      print_when = "when " + print_when;
+
+	    vhdl->set_body ("\t"+print_else+" shift_arithmetic_right_"+toString(i)+"  "+print_when);
 	    print_else = "else";
 	  }
@@ -157,11 +157,11 @@
 	      {
 		have_when = true;
-		print_when += " in_SHIFTER_DIRECTION_"+toString(i)+" = cst_is_direction_left ";
-		print_and = " and ";
-	      }
-	    if (_param._rotate      == external_rotate)
-	      {
-		have_when = true;
-		print_when += print_and+" in_SHIFTER_TYPE_"+toString(i)+" = cst_is_type_shift ";
+		print_when += " in_SHIFTER_"+toString(i)+"_DIRECTION = cst_is_direction_left ";
+		print_and = " and ";
+	      }
+	    if (_param._rotate      == external_rotate)
+	      {
+		have_when = true;
+		print_when += print_and+" in_SHIFTER_"+toString(i)+"_TYPE = cst_is_type_shift ";
 		print_and = " and ";
 	      }
@@ -169,5 +169,5 @@
 	      {
 		have_when = true;
-		print_when += print_and+" in_SHIFTER_CARRY_"+toString(i)+" = cst_is_carry_logic     ";
+		print_when += print_and+" in_SHIFTER_"+toString(i)+"_CARRY = cst_is_carry_logic     ";
 	      }
 
@@ -182,5 +182,5 @@
 	      print_expr_completion = "(shift_logic_left_"+toString(i)+"  and mask_completion_left_"+toString(i)+" ) or ( shifter_completion_left_"+toString(i)+"  and not mask_completion_left_"+toString(i)+" )";
 
-	    vhdl.set_body ("\t"+print_else+" "+print_expr_completion+"        "+print_when);
+	    vhdl->set_body ("\t"+print_else+" "+print_expr_completion+"        "+print_when);
 	    print_else = "else";
 	  }
@@ -195,11 +195,11 @@
 	      {
 		have_when = true;
-		print_when += " in_SHIFTER_DIRECTION_"+toString(i)+" = cst_is_direction_right";
-		print_and = " and ";
-	      }
-	    if (_param._rotate      == external_rotate)
-	      {
-		have_when = true;
-		print_when += print_and+" in_SHIFTER_TYPE_"+toString(i)+" = cst_is_type_shift ";
+		print_when += " in_SHIFTER_"+toString(i)+"_DIRECTION = cst_is_direction_right";
+		print_and = " and ";
+	      }
+	    if (_param._rotate      == external_rotate)
+	      {
+		have_when = true;
+		print_when += print_and+" in_SHIFTER_"+toString(i)+"_TYPE = cst_is_type_shift ";
 		print_and = " and ";
 	      }
@@ -207,5 +207,5 @@
 	      {
 		have_when = true;
-		print_when += print_and+" in_SHIFTER_CARRY_"+toString(i)+" = cst_is_carry_logic     ";
+		print_when += print_and+" in_SHIFTER_"+toString(i)+"_CARRY = cst_is_carry_logic     ";
 	      }
 
@@ -220,5 +220,5 @@
 	      print_expr_completion = "(shift_logic_right_"+toString(i)+" and mask_completion_right_"+toString(i)+") or ( shifter_completion_right_"+toString(i)+" and not mask_completion_right_"+toString(i)+")";
 
-	    vhdl.set_body ("\t"+print_else+" "+print_expr_completion+"        "+print_when);
+	    vhdl->set_body ("\t"+print_else+" "+print_expr_completion+"        "+print_when);
 	    print_else = "else";
 	  }
@@ -233,18 +233,18 @@
 	      {
 		have_when = true;
-		print_when += " in_SHIFTER_DIRECTION_"+toString(i)+" = cst_is_direction_left ";
-		print_and = " and ";
-	      }
-	    if (_param._rotate      == external_rotate)
-	      {
-		have_when = true;
-		print_when += print_and+" in_SHIFTER_TYPE_"+toString(i)+" = cst_is_type_rotate";
-		print_and = " and ";
-	      }
-
-	    if (have_when)
-	      print_when = "when " + print_when;
-
-	    vhdl.set_body ("\t"+print_else+" rotate_left_"+toString(i)+"             "+print_when);
+		print_when += " in_SHIFTER_"+toString(i)+"_DIRECTION = cst_is_direction_left ";
+		print_and = " and ";
+	      }
+	    if (_param._rotate      == external_rotate)
+	      {
+		have_when = true;
+		print_when += print_and+" in_SHIFTER_"+toString(i)+"_TYPE = cst_is_type_rotate";
+		print_and = " and ";
+	      }
+
+	    if (have_when)
+	      print_when = "when " + print_when;
+
+	    vhdl->set_body ("\t"+print_else+" rotate_left_"+toString(i)+"             "+print_when);
 	    print_else = "else";
 	  }
@@ -259,21 +259,21 @@
 	      {
 		have_when = true;
-		print_when += " in_SHIFTER_DIRECTION_"+toString(i)+" = cst_is_direction_right";
-		print_and = " and ";
-	      }
-	    if (_param._rotate      == external_rotate)
-	      {
-		have_when = true;
-		print_when += print_and+" in_SHIFTER_TYPE_"+toString(i)+" = cst_is_type_rotate";
-		print_and = " and ";
-	      }
-
-	    if (have_when)
-	      print_when = "when " + print_when;
-
-	    vhdl.set_body ("\t"+print_else+" rotate_right_"+toString(i)+"            "+print_when);
-	    print_else = "else";
-	  }
-	vhdl.set_body (";");
+		print_when += " in_SHIFTER_"+toString(i)+"_DIRECTION = cst_is_direction_right";
+		print_and = " and ";
+	      }
+	    if (_param._rotate      == external_rotate)
+	      {
+		have_when = true;
+		print_when += print_and+" in_SHIFTER_"+toString(i)+"_TYPE = cst_is_type_rotate";
+		print_and = " and ";
+	      }
+
+	    if (have_when)
+	      print_when = "when " + print_when;
+
+	    vhdl->set_body ("\t"+print_else+" rotate_right_"+toString(i)+"            "+print_when);
+	    print_else = "else";
+	  }
+	vhdl->set_body (";");
       }
     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_declaration.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_declaration.cpp	(revision 42)
@@ -15,54 +15,54 @@
 
 
-  void Shifter::vhdl_declaration (Vhdl & vhdl)
+  void Shifter::vhdl_declaration (Vhdl * & vhdl)
   {
     uint32_t log2_size_data = static_cast<uint32_t>(ceil(log2(_param._size_data)));
 
-    vhdl.set_constant("cst_is_direction_left  ",1,_left      );
-    vhdl.set_constant("cst_is_direction_right ",1,_right     );
-    vhdl.set_constant("cst_is_type_shift      ",1,_shift     );
-    vhdl.set_constant("cst_is_type_rotate     ",1,_rotate    );
-    vhdl.set_constant("cst_is_carry_arithmetic",1,_arithmetic);
-    vhdl.set_constant("cst_is_carry_logic     ",1,_logic     );
-    vhdl.set_constant("cst_completion         ",_param._size_data,"(others => '1')");
+    vhdl->set_constant("cst_is_direction_left  ",1,_left      );
+    vhdl->set_constant("cst_is_direction_right ",1,_right     );
+    vhdl->set_constant("cst_is_type_shift      ",1,_shift     );
+    vhdl->set_constant("cst_is_type_rotate     ",1,_rotate    );
+    vhdl->set_constant("cst_is_carry_arithmetic",1,_arithmetic);
+    vhdl->set_constant("cst_is_carry_logic     ",1,_logic     );
+    vhdl->set_constant("cst_completion         ",_param._size_data,"(others => '1')");
     
     for (uint32_t i=0; i<_param._nb_port; i++)
       {
 	if (_param._shift_value != 0)
-	  vhdl.set_constant("shift_"+toString(i),log2_size_data, _param._shift_value);
+	  vhdl->set_constant("shift_"+toString(i),log2_size_data, _param._shift_value);
 	else
-	  vhdl.set_alias   ("shift_"+toString(i),std_logic(log2_size_data), "in_SHIFTER_SHIFT_"+toString(i),std_logic_range(log2_size_data));
+	  vhdl->set_alias   ("shift_"+toString(i),std_logic(log2_size_data), "in_SHIFTER_"+toString(i)+"_SHIFT",std_logic_range(log2_size_data));
 	
 	if (_param._size_data_completion > 0)
 	  {
-	    vhdl.set_signal ("shifter_completion_left_"+toString(i)+" ",_param._size_data);
-	    vhdl.set_signal ("shifter_completion_right_"+toString(i)+"",_param._size_data);
-	    vhdl.set_signal ("mask_completion_left_"+toString(i)+"    ",_param._size_data);
-	    vhdl.set_signal ("mask_completion_right_"+toString(i)+"   ",_param._size_data);
+	    vhdl->set_signal ("shifter_completion_left_"+toString(i)+" ",_param._size_data);
+	    vhdl->set_signal ("shifter_completion_right_"+toString(i)+"",_param._size_data);
+	    vhdl->set_signal ("mask_completion_left_"+toString(i)+"    ",_param._size_data);
+	    vhdl->set_signal ("mask_completion_right_"+toString(i)+"   ",_param._size_data);
 	  }
 	
 	//-----[ Shift logic Left ]--------------------------------------------
 	if (_param._have_shift_logic_left)
-	  vhdl.set_signal ("shift_logic_left_"+toString(i)+"      ",_param._size_data);
+	  vhdl->set_signal ("shift_logic_left_"+toString(i)+"      ",_param._size_data);
 	
 	//-----[ Shift logic Right ]-------------------------------------------
 	if (_param._have_shift_logic_right)
-	  vhdl.set_signal ("shift_logic_right_"+toString(i)+"     ",_param._size_data);
+	  vhdl->set_signal ("shift_logic_right_"+toString(i)+"     ",_param._size_data);
 	
 	//-----[ Shift arithmetic Left ]---------------------------------------
 	if (_param._have_shift_arithmetic_left)
-	  vhdl.set_signal ("shift_arithmetic_left_"+toString(i)+" ",_param._size_data);
+	  vhdl->set_signal ("shift_arithmetic_left_"+toString(i)+" ",_param._size_data);
 	
 	//-----[ Shift arithmetic Right ]--------------------------------------
 	if (_param._have_shift_arithmetic_right)
-	  vhdl.set_signal ("shift_arithmetic_right_"+toString(i)+"",_param._size_data);
+	  vhdl->set_signal ("shift_arithmetic_right_"+toString(i)+"",_param._size_data);
 	
 	//-----[ Rotate Left ]-------------------------------------------------
 	if (_param._have_rotate_left)
-	  vhdl.set_signal ("rotate_left_"+toString(i)+"           ",_param._size_data);
+	  vhdl->set_signal ("rotate_left_"+toString(i)+"           ",_param._size_data);
 	
 	//-----[ Rotate Right ]------------------------------------------------
 	if (_param._have_rotate_right)
-	  vhdl.set_signal ("rotate_right_"+toString(i)+"          ",_param._size_data);
+	  vhdl->set_signal ("rotate_right_"+toString(i)+"          ",_param._size_data);
       }
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_port.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_port.cpp	(revision 42)
@@ -15,25 +15,7 @@
 
 
-  void Shifter::vhdl_port (Vhdl & vhdl)
+  void Shifter::vhdl_port (Vhdl * & vhdl)
   {
-    for (uint32_t i=0; i<_param._nb_port; i++)
-      {
-	vhdl.set_port (" in_SHIFTER_DATA_"+toString(i)+"      ", IN, _param._size_data);
-	if (_param._shift_value == 0)
-	vhdl.set_port (" in_SHIFTER_SHIFT_"+toString(i)+"     ", IN, static_cast<uint32_t>(ceil(log2(_param._size_data))));
-	if (_param._direction   == external_direction)
-	vhdl.set_port (" in_SHIFTER_DIRECTION_"+toString(i)+" ", IN, 1);
-	if (_param._rotate      == external_rotate)
-	vhdl.set_port (" in_SHIFTER_TYPE_"+toString(i)+"      ", IN, 1);
-	if (_param._carry       == external_carry)
-	vhdl.set_port (" in_SHIFTER_CARRY_"+toString(i)+"     ", IN, 1);
-	if (_param._carry       == external_completion)
-	if (_param._type_completion_bool == true)
-	vhdl.set_port (" in_SHIFTER_CARRY_IN_"+toString(i)+"  ", IN, 1);
-	else
-	vhdl.set_port (" in_SHIFTER_COMPLETION_"+toString(i)+"", IN, _param._size_data_completion);
-
-	vhdl.set_port ("out_SHIFTER_DATA_"+toString(i)+"      ",OUT, _param._size_data);
-      }
+    _interfaces->set_port(vhdl);
   };
 }; // end namespace shifter
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_testbench_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_testbench_port.cpp	(revision 41)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#ifdef VHDL_TESTBENCH
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Shifter/include/Shifter.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace shifter {
-
-
-  void Shifter::vhdl_testbench_port (Vhdl_Testbench & vhdl_testbench)
-  {
-    for (uint32_t i=0; i<_param._nb_port; i++)
-      {
-	vhdl_testbench.set_port (" in_SHIFTER_DATA_"+toString(i)      , IN, _param._size_data);
-	if (_param._shift_value == 0)
-	vhdl_testbench.set_port (" in_SHIFTER_SHIFT_"+toString(i)     , IN, static_cast<uint32_t>(ceil(log2(_param._size_data))));
-	if (_param._direction   == external_direction)
-	vhdl_testbench.set_port (" in_SHIFTER_DIRECTION_"+toString(i) , IN, 1);
-	if (_param._rotate      == external_rotate)
-	vhdl_testbench.set_port (" in_SHIFTER_TYPE_"+toString(i)      , IN, 1);
-	if (_param._carry       == external_carry)
-	vhdl_testbench.set_port (" in_SHIFTER_CARRY_"+toString(i)     , IN, 1);
-	if (_param._carry       == external_completion)
-	if (_param._type_completion_bool == true)
-	vhdl_testbench.set_port (" in_SHIFTER_CARRY_IN_"+toString(i)  , IN, 1);
-	else
-	vhdl_testbench.set_port (" in_SHIFTER_COMPLETION_"+toString(i), IN, _param._size_data_completion);
-	vhdl_testbench.set_port ("out_SHIFTER_DATA_"+toString(i)      ,OUT, _param._size_data);
-      }
-  };
-
-}; // end namespace shifter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_testbench_transition.cpp	(revision 41)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_testbench_transition.cpp	(revision 42)
@@ -15,37 +15,9 @@
 
 
-  void Shifter::vhdl_testbench_transition (Vhdl_Testbench & vhdl_testbench)
+  void Shifter::vhdl_testbench_transition (void)
   {
-#ifndef SYSTEMCASS_SPECIFIC
-    sc_cycle(0);
-#endif
+    sc_start(0);
 
-    // In order with file Shifter_vhdl_testbench_port.cpp
-
-    for (uint32_t i=0; i<_param._nb_port; i++)
-      {
-	vhdl_testbench.add_input  (PORT_READ( in_SHIFTER_DATA      [i]));
-	if (_param._shift_value == 0)
-	vhdl_testbench.add_input  (PORT_READ( in_SHIFTER_SHIFT     [i]));
-	if (_param._direction   == external_direction)
-	vhdl_testbench.add_input  (PORT_READ( in_SHIFTER_DIRECTION [i]));
-	if (_param._rotate      == external_rotate)
-	vhdl_testbench.add_input  (PORT_READ( in_SHIFTER_TYPE      [i]));
-	if (_param._carry       == external_carry)
-	vhdl_testbench.add_input  (PORT_READ( in_SHIFTER_CARRY     [i]));
-	if (_param._carry       == external_completion)
-	if (_param._type_completion_bool == true)
-	vhdl_testbench.add_input  (PORT_READ( in_SHIFTER_CARRY_IN  [i]));
-	else
-	vhdl_testbench.add_input  (PORT_READ( in_SHIFTER_COMPLETION[i]));
-	vhdl_testbench.add_output (PORT_READ(out_SHIFTER_DATA      [i]));
-      }
-    
-    // add_test :
-    //  - True  : the cycle must be compare with the output of systemC
-    //  - False : no test
-    vhdl_testbench.add_test(true);
-
-    vhdl_testbench.new_cycle (); // always at the end
+    _interfaces->testbench();
   };
 
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 41)
+++ 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 41)
+++ 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 41)
+++ 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 41)
+++ 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 41)
+++ 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 41)
+++ 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 41)
+++ 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 41)
+++ 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 41)
+++ 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 41)
+++ 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 41)
+++ 	(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 41)
+++ 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();
   };
 
