Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/configuration.cfg	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/configuration.cfg	(revision 29)
@@ -1,4 +1,4 @@
 Select_Priority_Fixed
-2	16	*2	# nb_entity
-0	1	+1	# encoding_one_hot
+16	16	*2	# nb_entity
+0	0	+1	# encoding_one_hot
 1	1	+1	# encoding_compact
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 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 29)
@@ -19,4 +19,6 @@
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h"
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h"
+#include "Behavioural/include/Interfaces.h"
+
 #ifdef STATISTICS
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h"
@@ -59,4 +61,6 @@
   private   : Vhdl_Testbench                 * _vhdl_testbench;
 #endif
+
+  private   : Interfaces                     * interfaces;
 
 #ifdef SYSTEMC
@@ -113,7 +117,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					       
 					       
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 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp	(revision 29)
@@ -32,4 +32,16 @@
     log_printf(FUNC,Select_Priority_Fixed,"Select_Priority_Fixed","Begin");
 
+#ifdef SYSTEMC
+    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation");
+
+    allocation ();
+#endif
+
+#ifdef POSITION
+    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Position");
+    
+    
+#endif
+
 #ifdef STATISTICS
     log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation of statistics");
@@ -48,5 +60,4 @@
     //  -> clock's signals
     _vhdl_testbench = new Vhdl_Testbench (_name);
-//     _vhdl_testbench->set_clock    ("in_CLOCK",false);
 #endif
 
@@ -58,13 +69,5 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-    _vhdl_testbench->set_clock    ("in_CLOCK",true);
-#endif
-
 #ifdef SYSTEMC
-    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation");
-
-    allocation ();
-
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Method - transition");
@@ -98,5 +101,4 @@
     
 #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 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp	(revision 29)
@@ -15,5 +15,4 @@
 namespace select_priority_fixed {
 
-
   void Select_Priority_Fixed::allocation (void)
   {
@@ -22,6 +21,11 @@
     log_printf(FUNC,Select_Priority_Fixed,"allocation","Begin");
 
-     in_CLOCK        = new SC_CLOCK           ("in_CLOCK ");
-     in_NRESET       = new SC_IN (Tcontrol_t) ("in_NRESET");
+    interfaces = new Interfaces;
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    Interface interface_ ("", IN, WEST);
+    
+    in_CLOCK        = interface_.set_signal_clk              ("clock" ,1, PORT_VHDL_YES_TESTBENCH_NO);
+    in_NRESET       = interface_.set_signal_in  <Tcontrol_t> ("nreset",1);
 
      in_VAL          = new SC_IN (Tcontrol_t)           * [_param._nb_entity];
@@ -31,19 +35,15 @@
     for (uint32_t i=0; i<_param._nb_entity; i++)
       {
-	rename = " in_VAL_"+toString(i);
-	 in_VAL [i]      = new SC_IN (Tcontrol_t) (rename.c_str());
-
+	 in_VAL [i]    = interface_.set_signal_in  <Tcontrol_t> ("val_"+toString(i),1);
 	if (_param._encoding_one_hot)
-	  {
-	rename = "out_ACK_"+toString(i);
-	out_ACK [i]      = new SC_OUT(Tcontrol_t) (rename.c_str());
-	  }
+	out_ACK [i]    = interface_.set_signal_out <Tcontrol_t> ("ack_"+toString(i),1);
       }
 
     if (_param._encoding_compact)
       {
-	out_ENTITY_ACK   = new SC_OUT(Tcontrol_t)           ("out_entity_ack");
-	out_ENTITY       = new SC_OUT(Tentity_t)            ("out_entity");
+	out_ENTITY     = interface_.set_signal_out <Tentity_t > ("entity"    , _param._size_entity);
+	out_ENTITY_ACK = interface_.set_signal_out <Tcontrol_t> ("entity_ack", 1);
       }
+
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
@@ -54,5 +54,4 @@
 }; // end namespace select
 }; // end namespace generic
-
 }; // end namespace behavioural
 }; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 29)
@@ -40,4 +40,6 @@
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
+    delete interfaces;
+
     log_printf(FUNC,Select_Priority_Fixed,"deallocation","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp	(revision 29)
@@ -20,7 +20,8 @@
   {
     log_printf(FUNC,Select_Priority_Fixed,"vhdl","Begin");
-    Vhdl vhdl (_name);
 
-    vhdl.set_library_work (_name + "_Pack");
+    Vhdl * vhdl = new Vhdl (_name);
+
+    vhdl->set_library_work (_name + "_Pack");
 
     vhdl_port        (vhdl);
@@ -28,5 +29,5 @@
     vhdl_body        (vhdl);
 
-    vhdl.generate_file();
+    vhdl->generate_file();
     log_printf(FUNC,Select_Priority_Fixed,"vhdl","End");
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp	(revision 29)
@@ -16,28 +16,28 @@
 
 
-  void Select_Priority_Fixed::vhdl_body (Vhdl & vhdl)
+  void Select_Priority_Fixed::vhdl_body (Vhdl * & vhdl)
   {
     log_printf(FUNC,Select_Priority_Fixed,"vhdl_body","Begin");
-    vhdl.set_body ("");
+    vhdl->set_body ("");
 
-    vhdl.set_body("internal_entity <=");
+    vhdl->set_body("internal_entity <=");
     for (uint32_t i=0; i<_param._nb_entity; i++)
       {
-	vhdl.set_body("\t"+std_logic_conv(_param._size_entity+1,i)+" when in_VAL_"+toString(i)+"='1' else");
+	vhdl->set_body("\t"+std_logic_conv(_param._size_entity+1,i)+" when in_VAL_"+toString(i)+"='1' else");
       }
-    vhdl.set_body("\t"+std_logic_conv(_param._size_entity+1,1<<_param._size_entity)+";");
-    vhdl.set_body ("");
+    vhdl->set_body("\t"+std_logic_conv(_param._size_entity+1,1<<_param._size_entity)+";");
+    vhdl->set_body ("");
 
     if (_param._encoding_one_hot)
       {
 	for (uint32_t i=0; i<_param._nb_entity; i++)
-	  vhdl.set_body("out_ACK_"+toString(i)+" <= '1' when internal_entity"+std_logic_range(_param._size_entity+1)+" = "+std_logic_conv(_param._size_entity+1,i)+" else '0';");
-	vhdl.set_body ("");
+	  vhdl->set_body("out_ACK_"+toString(i)+" <= '1' when internal_entity"+std_logic_range(_param._size_entity+1)+" = "+std_logic_conv(_param._size_entity+1,i)+" else '0';");
+	vhdl->set_body ("");
       }
 
     if (_param._encoding_compact)
       {
-	vhdl.set_body ("out_ENTITY     <=     internal_entity"+std_logic_range(_param._size_entity-1,                  0)+";");
-	vhdl.set_body ("out_ENTITY_ACK <= not internal_entity"+std_logic_range(_param._size_entity  ,_param._size_entity)+";");
+	vhdl->set_body ("out_ENTITY     <=     internal_entity"+std_logic_range(_param._size_entity-1,                  0)+";");
+	vhdl->set_body ("out_ENTITY_ACK <= not internal_entity"+std_logic_range(_param._size_entity  ,_param._size_entity)+";");
       }	   
     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp	(revision 29)
@@ -16,9 +16,9 @@
 
 
-  void Select_Priority_Fixed::vhdl_declaration (Vhdl & vhdl)
+  void Select_Priority_Fixed::vhdl_declaration (Vhdl * & vhdl)
   {
     log_printf(FUNC,Select_Priority_Fixed,"vhdl_declaration","Begin");
 
-    vhdl.set_signal("internal_entity",_param._size_entity+1);
+    vhdl->set_signal("internal_entity",_param._size_entity+1);
 
     log_printf(FUNC,Select_Priority_Fixed,"vhdl_declaration","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp	(revision 23)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp	(revision 29)
@@ -9,11 +9,5 @@
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h"
 
-#ifdef VHDL_TESTBENCH
-# define VHDL_SET_PORT(name,direction,size) do {vhdl.set_port (name,direction,size); _vhdl_testbench->set_port (name,direction,size);} while (0)
-#else
-# define VHDL_SET_PORT(name,direction,size)     vhdl.set_port (name,direction,size)
-#endif
-
-namespace morpheo                    {
+namespace morpheo {
 namespace behavioural {
 namespace generic {
@@ -21,24 +15,17 @@
 namespace select_priority_fixed {
 
-
-  void Select_Priority_Fixed::vhdl_port (Vhdl & vhdl)
+  void Select_Priority_Fixed::vhdl_port (Vhdl * & vhdl)
   {
     log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","Begin");
 
-    vhdl.set_port (" in_CLOCK ", IN, 1);
-    VHDL_SET_PORT (" in_NRESET", IN, 1);
-	
-    for (uint32_t i=0; i<_param._nb_entity; i++)
-      {
-	VHDL_SET_PORT (" in_VAL_"+toString(i) , IN, 1);
-	if (_param._encoding_one_hot)
-	VHDL_SET_PORT ("out_ACK_"+toString(i) ,OUT, 1);
-      }
-    if (_param._encoding_compact)
-      {
-    VHDL_SET_PORT ("out_ENTITY    ",OUT,_param._size_entity);
-    VHDL_SET_PORT ("out_ENTITY_ACK",OUT,1);
-      }
-    log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","End");
+#ifdef VHDL
+    interfaces->set_port(vhdl);
+#endif
+#ifdef VHDL_TESTBENCH
+    interfaces->set_port(_vhdl_testbench);			
+   _vhdl_testbench->set_clock    ("in_CLOCK",true);
+#endif    
+
+   log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","End");
   };
 
