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 28)
+++ 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 28)
+++ 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 28)
+++ 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 28)
+++ 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 28)
+++ 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 28)
+++ 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 28)
+++ 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 28)
+++ 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 28)
+++ 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");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 28)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 29)
@@ -14,16 +14,18 @@
 
 #-----[ Flags ]--------------------------------------------
-FLAGS				=	-DVHDL			\
+FLAGS				=	-DSYSTEMC		\
+					-DVHDL			\
  					-DVHDL_TESTBENCH	\
-					-DSYSTEMC		\
 					-DSTATISTICS 		\
-					-DCONFIGURATION		\
+					-DPOSITION       	\
+					-DCONFIGURATION  	\
 					-DDEBUG=DEBUG_ALL    
 					
 # Flags :
 # DEBUG={level}                 - Print Debug Message
-# VHDL                          - To generate a vhdl's    model
 # SYSTEMC                       - To generate a systemc's model
-# CONFIGURATION			- To generate a configuration file (it's input of viewer)
+# VHDL                          - To generate a vhdl's    models
+# VHDL_TESTBENCH (need SYSTEMC) - In the simulation, generate two testbench's file (input and ouput) to validate the vhdl's model
 # STATISTICS     (need SYSTEMC) - In the simulation, generate a statistics's file
-# VHDL_TESTBENCH (need SYSTEMC) - In the simulation, generate two testbench's file (input and ouput) to validate the vhdl's model
+# POSITION                      - To generate a position's files     (it's input of viewer)
+# CONFIGURATION			- To generate a configuration's file (it's input of viewer and generator)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 29)
@@ -0,0 +1,110 @@
+#ifndef morpheo_behavioural_Interface_h
+#define morpheo_behavioural_Interface_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <stdint.h>
+#include <iostream>
+#include <list>
+#include "Behavioural/include/Signal.h"
+#include "Behavioural/include/Direction.h"
+#include "Behavioural/include/Localisation.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#ifdef VHDL_TESTBENCH
+#include "Behavioural/include/Vhdl_Testbench.h"
+#endif
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+
+using namespace std;
+
+namespace morpheo              {
+namespace behavioural          {
+
+  class Interface
+  {
+    // -----[ fields ]----------------------------------------------------
+  private   : const string          _name         ;
+  private   : const direction_t     _direction    ;
+  private   : const localisation_t  _localisation ;
+  private   :       string          _comment      ;
+  private   : list<Signal>          _list_signal  ;
+
+    // -----[ methods ]---------------------------------------------------
+  public    :                       Interface            (string         name        ,
+							  direction_t    direction   ,
+							  localisation_t localisation);
+
+  public    :                       ~Interface           ();
+
+  public    : void                  set_comment          (string comment);
+  public    : string                get_comment          (void          );
+
+  public    : string                set_signal           (Signal          signal   );
+  public    : string                set_signal           (string          name     ,
+							  direction_t     direction,
+							  uint32_t        size     ,
+							  presence_port_t presence_port = PORT_VHDL_YES_TESTBENCH_YES);
+
+#ifdef SYSTEMC
+  public    : sc_in_clk *           set_signal_clk       (string          name     ,
+							  uint32_t        size     ,
+							  presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+    {
+      string str = set_signal (name, IN , size, presence_port);
+      sc_in_clk * signal = new sc_in_clk (str.c_str());
+      return signal;
+    };
+
+  public    : template <typename T>
+              sc_in <T> *           set_signal_in       (string          name     ,
+							 uint32_t        size     ,
+							 presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+    {
+      string str = set_signal (name, IN , size, presence_port);
+      sc_in <T> * signal = new sc_in <T> (str.c_str());
+      return signal;
+    };
+
+  public    : template <typename T>
+              sc_out <T> *          set_signal_out      (string          name     ,
+							 uint32_t        size     ,
+							 presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+    {
+      string str = set_signal (name, OUT , size, presence_port);
+      sc_out <T> * signal = new sc_out <T> (str.c_str());
+      return signal;
+    };
+#endif
+
+  public    : string                get_signal           (void);
+
+#ifdef VHDL
+  public    : void                  set_port             (Vhdl * & vhdl);
+#endif
+#ifdef VHDL_TESTBENCH
+  public    : void                  set_port             (Vhdl_Testbench * & vhdl_testbench);
+#endif
+
+  public    : XML                   toXML                (void);
+
+  public    : friend ostream&       operator<<           (ostream& output_stream,
+  					  		  morpheo::behavioural::Interface & x);
+
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 29)
@@ -0,0 +1,59 @@
+#ifndef morpheo_behavioural_Interfaces_h
+#define morpheo_behavioural_Interfaces_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <stdint.h>
+#include <iostream>
+#include <list>
+#include "Behavioural/include/Interface.h"
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#ifdef VHDL_TESTBENCH
+#include "Behavioural/include/Vhdl_Testbench.h"
+#endif
+
+using namespace std;
+
+namespace morpheo              {
+namespace behavioural          {
+
+  class Interfaces
+  {
+    // -----[ fields ]----------------------------------------------------
+  private   : list<Interface>       _list_interface;
+
+    // -----[ methods ]---------------------------------------------------
+  public    :                       Interfaces            (void);
+
+  public    :                       ~Interfaces           ();
+
+  public    : void                  set_interface         (Interface interface);
+  public    : string                get_interface         (void);
+
+#ifdef VHDL
+  public    : void                  set_port              (Vhdl           * & vhdl          );
+#endif
+#ifdef VHDL_TESTBENCH
+  public    : void                  set_port              (Vhdl_Testbench * & vhdl_testbench);
+#endif
+
+  public    : XML                   toXML                 (void);
+
+  public    : friend ostream&       operator<<            (ostream& output_stream,
+  					  		   morpheo::behavioural::Interfaces & x);
+
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Localisation.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Localisation.h	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Localisation.h	(revision 29)
@@ -0,0 +1,30 @@
+#ifdef VHDL
+
+#ifndef morpheo_behavioural_Localisation_h
+#define morpheo_behavioural_Localisation_h
+
+#include "Include/ToString.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  typedef enum {NORTH, SOUTH, EAST, WEST} localisation_t;
+  
+}; // end namespace behavioural          
+  
+  template<>           inline std::string toString<morpheo::behavioural::localisation_t>(const morpheo::behavioural::localisation_t& x)
+  {
+    switch (x)
+      {
+      case morpheo::behavioural::NORTH   : return "north" ; break;
+      case morpheo::behavioural::SOUTH   : return "south" ; break;
+      case morpheo::behavioural::EAST    : return "east"  ; break;
+      case morpheo::behavioural::WEST    : return "west"  ; break;
+      default                            : return ""      ; break;
+      }
+  }
+  
+}; // end namespace morpheo              
+
+#endif
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 29)
@@ -0,0 +1,65 @@
+#ifndef morpheo_behavioural_Signal_h
+#define morpheo_behavioural_Signal_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <stdint.h>
+#include <iostream>
+#include "Behavioural/include/Direction.h"
+#include "Behavioural/include/XML.h"
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+
+using namespace std;
+
+namespace morpheo              {
+namespace behavioural          {
+
+  typedef enum {PORT_VHDL_YES_TESTBENCH_YES,
+		PORT_VHDL_YES_TESTBENCH_NO ,
+		PORT_VHDL_NO_TESTBENCH_YES ,
+		PORT_VHDL_NO_TESTBENCH_NO  } presence_port_t;
+
+  class Signal
+  {
+    // -----[ fields ]----------------------------------------------------
+  public    : const string          _name         ;
+  public    : const direction_t     _direction    ;
+  public    : const uint32_t        _size         ;
+  public    : const presence_port_t _presence_port;
+
+    // -----[ methods ]---------------------------------------------------
+  public    :                   Signal          (string          name          ,
+						 direction_t     direction     ,
+						 uint32_t        size          ,
+						 presence_port_t presence_port = PORT_VHDL_YES_TESTBENCH_YES);
+  public    :                   ~Signal         ();
+
+  public    : XML               toXML           (void);
+
+  public    : friend ostream&   operator<<      (ostream& output_stream,
+						 morpheo::behavioural::Signal & x);
+
+  };
+}; // end namespace behavioural          
+
+  template<>           inline std::string toString<morpheo::behavioural::presence_port_t>(const morpheo::behavioural::presence_port_t& x)
+  {
+    switch (x)
+      {
+      case morpheo::behavioural::PORT_VHDL_YES_TESTBENCH_YES : return "Port is in VHDL's model and TestBench's model" ; break;
+      case morpheo::behavioural::PORT_VHDL_YES_TESTBENCH_NO  : return "Port is in VHDL's model                      " ; break;
+      case morpheo::behavioural::PORT_VHDL_NO_TESTBENCH_YES  : return "Port is in                  TestBench's model" ; break;
+      case morpheo::behavioural::PORT_VHDL_NO_TESTBENCH_NO   : return "Port is in none model                        " ; break;
+      default                                                : return "";                                               break;
+      }
+  }
+
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 28)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 29)
@@ -44,5 +44,5 @@
     // -----[ methods ]---------------------------------------------------
   public    :                  Vhdl                        (string name);
-  public    : virtual          ~Vhdl                       ();
+  public    :                  ~Vhdl                       ();
 						           
   public    : void             generate_file               (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h	(revision 28)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h	(revision 29)
@@ -40,4 +40,5 @@
   public   : bool             singleton_end       (void);
   public   : bool             attribut            (string name, string value);
+  public   : bool             insert_XML          (XML    xml );
 
   public   : void             generate_file       (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp	(revision 29)
@@ -0,0 +1,28 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Interface::Interface  (string                name         ,
+			 direction_t           direction    ,
+			 localisation_t        localisation ):
+    _name         (name        ),
+    _direction    (direction   ),
+    _localisation (localisation)
+  {
+  };
+  
+  Interface::~Interface ()
+  {
+  };
+  
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_comment.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_comment.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_comment.cpp	(revision 29)
@@ -0,0 +1,20 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interface::get_comment (void)
+  {
+    return _comment;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp	(revision 29)
@@ -0,0 +1,51 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interface::get_signal (void)
+  {
+    uint32_t               depth          = 0;
+    string                 separator      = ",\n";
+    bool                   last_separator = false;
+
+
+    list<Signal>::iterator i     = _list_signal.begin();
+    bool                   empty = _list_signal.empty();
+
+    string                 tab   = string(depth,'\t');
+    ostringstream          text;
+
+    if (not empty)
+      {
+	// First
+	if (i != _list_signal.end())
+	  {
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	while (i != _list_signal.end())
+	  {
+	    text << separator;
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	if (last_separator)
+	  text << separator;
+      }
+
+    return text.str();
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp	(revision 29)
@@ -0,0 +1,24 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  ostream& operator<< (ostream& output_stream,
+		       morpheo::behavioural::Interface & x)
+  {
+    output_stream << x._name + "\t"+toString(x._localisation)+"\t"+toString(x._direction) << endl;
+    output_stream << x.get_comment() << endl;
+    output_stream << x.get_signal () << endl;
+    return output_stream;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_comment.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_comment.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_comment.cpp	(revision 29)
@@ -0,0 +1,20 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interface::set_comment (string comment)
+  {
+    _comment = _comment + comment;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp	(revision 29)
@@ -0,0 +1,51 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interface::set_port (Vhdl * & vhdl)
+  {
+    if (not _list_signal.empty())
+      {
+	list<Signal>::iterator i     = _list_signal.begin();
+	
+	while (i != _list_signal.end())
+	  {
+	    presence_port_t p = (*i)._presence_port;
+	    if ((p == PORT_VHDL_YES_TESTBENCH_YES) or
+		(p == PORT_VHDL_YES_TESTBENCH_NO ) )
+	      vhdl->set_port ((*i)._name,(*i)._direction,(*i)._size);
+	    ++i;
+	  }
+      }
+  };
+
+  void Interface::set_port (Vhdl_Testbench * & vhdl_testbench)
+  {
+    if (not _list_signal.empty())
+      {
+	list<Signal>::iterator i     = _list_signal.begin();
+	
+	while (i != _list_signal.end())
+	  {
+	    presence_port_t p = (*i)._presence_port;
+	    if ((p == PORT_VHDL_YES_TESTBENCH_YES) or
+		(p == PORT_VHDL_NO_TESTBENCH_YES ) )
+	      vhdl_testbench->set_port ((*i)._name,(*i)._direction,(*i)._size);
+	    ++i;
+	  }
+      }
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp	(revision 29)
@@ -0,0 +1,50 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Include/ChangeCase.h"
+#include "Behavioural/include/Interface.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interface::set_signal (Signal signal)
+  {
+    return set_signal(signal._name     ,
+		      signal._direction,
+		      signal._size     );
+    
+  };
+
+  string Interface::set_signal (string          name     ,
+				direction_t     direction,
+				uint32_t        size     ,
+				presence_port_t presence_port)
+  {
+    string str_direction =  toString(direction);
+    string str_interface = _name;
+    string str_signal    =  name;
+
+    LowerCase(str_direction);    
+    UpperCase(str_interface);
+    UpperCase(str_signal   );
+    
+    string signame = str_direction;
+    if (_name != "")
+      signame += "_"+str_interface;
+    if (name  != "")
+      signame += "_"+str_signal;
+    
+    _list_signal.push_back (Signal (signame      ,
+				    direction    ,
+				    size         ,
+				    presence_port));
+
+    return signame;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_toXML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_toXML.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_toXML.cpp	(revision 29)
@@ -0,0 +1,41 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  XML Interface::toXML (void)
+  {
+    XML xml ("interface");
+    
+    xml.balise_open_begin ("interface");
+    xml.  attribut        ("name"         ,_name                 );
+    xml.  attribut        ("direction"   ,toString(_direction   ));
+    xml.  attribut        ("localisation",toString(_localisation));
+    xml.balise_open_end   ();
+    xml.  text            (get_comment());
+
+    if (_list_signal.empty()== false)
+      {
+	list<Signal>::iterator i     = _list_signal.begin();
+
+	while (i != _list_signal.end())
+	  {
+	    xml.  insert_XML ((*i).toXML());
+	    ++i;
+	  }
+      }
+
+    xml.balise_close      ();
+     
+    return xml;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp	(revision 29)
@@ -0,0 +1,22 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Interfaces::Interfaces  (void)
+  {
+  };
+  
+  Interfaces::~Interfaces ()
+  {
+  };
+  
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp	(revision 29)
@@ -0,0 +1,51 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interfaces::get_interface (void)
+  {
+    uint32_t               depth          = 0;
+    string                 separator      = ",\n";
+    bool                   last_separator = false;
+
+
+    list<Interface>::iterator i  = _list_interface.begin();
+    bool                   empty = _list_interface.empty();
+
+    string                 tab   = string(depth,'\t');
+    ostringstream          text;
+
+    if (not empty)
+      {
+	// First
+	if (i != _list_interface.end())
+	  {
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	while (i != _list_interface.end())
+	  {
+	    text << separator;
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	if (last_separator)
+	  text << separator;
+      }
+
+    return text.str();
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp	(revision 29)
@@ -0,0 +1,22 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  ostream& operator<< (ostream& output_stream,
+		       morpheo::behavioural::Interfaces & x)
+  {
+    output_stream << x.get_interface () << endl;
+    return output_stream;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp	(revision 29)
@@ -0,0 +1,20 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interfaces::set_interface (Interface interface)
+  {
+    _list_interface.push_back (interface);
+  };
+
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp	(revision 29)
@@ -0,0 +1,45 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interfaces::set_port (Vhdl * & vhdl)
+  {
+    if (not _list_interface.empty())
+      {
+	list<Interface>::iterator i     = _list_interface.begin();
+	
+	while (i != _list_interface.end())
+	  {
+	    (*i).set_port (vhdl);
+	    ++i;
+	  }
+      }
+  };
+
+  void Interfaces::set_port (Vhdl_Testbench * & vhdl_testbench)
+  {
+    if (not _list_interface.empty())
+      {
+	list<Interface>::iterator i     = _list_interface.begin();
+	
+	while (i != _list_interface.end())
+	  {
+	    (*i).set_port (vhdl_testbench);
+	    ++i;
+	  }
+      }
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp	(revision 29)
@@ -0,0 +1,36 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  XML Interfaces::toXML (void)
+  {
+    XML xml ("interfaces");
+    
+//     xml.balise_open ("interfaces");
+
+    if (_list_interface.empty()== false)
+      {
+	list<Interface>::iterator i     = _list_interface.begin();
+
+	while (i != _list_interface.end())
+	  {
+	    xml.  insert_XML ((*i).toXML());
+	    ++i;
+	  }
+      }
+
+//     xml.balise_close      ();
+     
+    return xml;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 29)
@@ -0,0 +1,30 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Signal::Signal  (string          name         ,
+		   direction_t     direction    ,
+		   uint32_t        size         ,
+		   presence_port_t presence_port):
+    _name          (name         ),
+    _direction     (direction    ),
+    _size          (size         ),
+    _presence_port (presence_port)
+  {
+  };
+  
+  Signal::~Signal ()
+  {
+  };
+  
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp	(revision 29)
@@ -0,0 +1,25 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+namespace morpheo              {
+
+  
+
+namespace behavioural          {
+
+  ostream& operator<< (ostream& output_stream,
+		       morpheo::behavioural::Signal & x)
+  {
+    output_stream << x._name + "\t{"+toString(x._size)+"}\t"+toString(x._direction) +"\t"+toString(x._presence_port);
+
+    return output_stream;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_toXML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_toXML.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_toXML.cpp	(revision 29)
@@ -0,0 +1,27 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  XML Signal::toXML (void)
+  {
+    XML xml ("signal");
+    
+    xml.singleton_begin ("signal");
+    xml.attribut        ("name"     ,_name               );
+    xml.attribut        ("direction",toString(_direction));
+    xml.attribut        ("size"     ,toString(_size     ));
+    xml.singleton_end   ();
+     
+    return xml;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp	(revision 29)
@@ -0,0 +1,22 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/XML.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  bool XML::insert_XML (XML xml)
+  {
+    //return text (xml.get_body());
+    _body += xml.get_body(depth());
+
+    return true;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
