Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h	(revision 31)
@@ -1,4 +1,2 @@
-#ifdef VHDL
-
 #ifndef morpheo_behavioural_Direction_h
 #define morpheo_behavioural_Direction_h
@@ -13,17 +11,16 @@
 }; // end namespace behavioural          
   
-template<>           inline std::string toString<morpheo::behavioural::direction_t>(const morpheo::behavioural::direction_t& x)
-{
-  switch (x)
-    {
-    case morpheo::behavioural::IN    : return "in"    ; break;
-    case morpheo::behavioural::OUT   : return "out"   ; break;
-    case morpheo::behavioural::INOUT : return "inout" ; break;
-    default    : return ""      ; break;
-    }
-}
-
+  template<> inline std::string toString<morpheo::behavioural::direction_t>(const morpheo::behavioural::direction_t& x)
+  {
+    switch (x)
+      {
+      case morpheo::behavioural::IN    : return "in"    ; break;
+      case morpheo::behavioural::OUT   : return "out"   ; break;
+      case morpheo::behavioural::INOUT : return "inout" ; break;
+      default    : return ""      ; break;
+      }
+  }
+  
 }; // end namespace morpheo              
 
 #endif
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Entity.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Entity.h	(revision 31)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Entity.h	(revision 31)
@@ -0,0 +1,75 @@
+#ifdef POSITION
+#ifndef morpheo_behavioural_Entity_h
+#define morpheo_behavioural_Entity_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <stdint.h>
+#include <iostream>
+#include <list>
+#include "Behavioural/include/Interfaces.h"
+#include "Behavioural/include/Schema.h"
+#include "Include/ErrorMorpheo.h"
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+
+using namespace std;
+
+namespace morpheo              {
+namespace behavioural          {
+
+  class Entity
+  {
+    friend class Position;
+    friend class Interface;
+
+    // -----[ fields ]----------------------------------------------------
+  private   : const string          _name         ;
+  private   : const string          _type         ;
+  private   : const schema_t        _schema       ;
+  private   : Interfaces          * _interfaces   ;
+  private   : string                _comment      ;
+
+  private   :       bool            _is_map       ;
+  private   :       uint32_t        _map_size_x   ;
+  private   :       uint32_t        _map_size_y   ;
+  private   :       uint32_t        _map_pos_x    ;
+  private   :       uint32_t        _map_pos_y    ;
+
+    // -----[ methods ]---------------------------------------------------
+  public    :                       Entity            (string        name   ,
+						       string        type   ,
+						       schema_t      schema );
+  public    :                        Entity           (const Entity & entity);
+  public    :                       ~Entity           ();
+
+  public    : void                  set_comment       (string comment);
+  private   : string                get_comment       (void          );
+
+  public    : Interfaces *          set_interfaces    (void);
+  private   : string                get_interfaces    (void);
+
+  public    : Interface  *          find_interface    (string name);
+
+  public    : void                  mapping           (uint32_t size_x,
+						       uint32_t size_y,
+						       uint32_t pos_x ,
+						       uint32_t pos_y );
+
+  public    : XML                   toXML             (void);
+  public    : XML                   toXML_mapping     (void);
+
+  public    : friend ostream&       operator<<        (ostream& output_stream,
+  					  	       morpheo::behavioural::Entity & x);
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+
+#endif
+#endif
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 31)
@@ -26,4 +26,5 @@
 #endif
 #include "Include/ToString.h"
+#include "Include/ErrorMorpheo.h"
 #include "Include/Debug.h"
 
@@ -35,4 +36,6 @@
   class Interface
   {
+    friend class Interfaces;
+
     // -----[ fields ]----------------------------------------------------
   private   : const string          _name         ;
@@ -40,5 +43,11 @@
   private   : const localisation_t  _localisation ;
   private   :       string          _comment      ;
-  private   : list<Signal>          _list_signal  ;
+
+#ifdef POSITION
+  private   :       bool            _is_map       ;
+  private   :       void          * _entity_map   ; // Entity -> erreur cyclique
+  private   :       void          * _interface_map; // pour être homogène avec _entity_map
+#endif
+  private   : list<Signal>        * _list_signal  ;
 
     // -----[ methods ]---------------------------------------------------
@@ -47,11 +56,12 @@
 							  localisation_t localisation);
 
+  public    :                       Interface            (const Interface    & interface);
   public    :                       ~Interface           ();
 
   public    : void                  set_comment          (string comment);
-  public    : string                get_comment          (void          );
+  private   : string                get_comment          (void          );
 
-  public    : string                set_signal           (Signal          signal   );
-  public    : string                set_signal           (string          name     ,
+  private   : string                get_signal           (void);
+  public    : Signal *              set_signal           (string          name     ,
 							  direction_t     direction,
 							  uint32_t        size     ,
@@ -63,6 +73,6 @@
 							  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());
+      Signal * sig = set_signal (name, IN , size, presence_port);
+      sc_in_clk * signal = new sc_in_clk (sig->_name.c_str());
       return signal;
     };
@@ -73,6 +83,6 @@
 							 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());
+      Signal * sig = set_signal (name, IN , size, presence_port);
+      sc_in <T> * signal = new sc_in <T> (sig->_name.c_str());
       return signal;
     };
@@ -83,11 +93,9 @@
 							 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());
+      Signal * sig = set_signal (name, OUT , size, presence_port);
+      sc_out <T> * signal = new sc_out <T> (sig->_name.c_str());
       return signal;
     };
 #endif
-
-  public    : string                get_signal           (void);
 
 #ifdef VHDL
@@ -98,6 +106,13 @@
 #endif
 
+#ifdef POSITION
+  public    : void                  port_map             (void * entity,
+							  void * interface);
+#endif
+
   public    : XML                   toXML                (void);
-
+#ifdef POSITION
+  public    : XML                   toXML_mapping        (void);
+#endif
   public    : friend ostream&       operator<<           (ostream& output_stream,
   					  		  morpheo::behavioural::Interface & x);
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 31)
@@ -30,13 +30,19 @@
   {
     // -----[ fields ]----------------------------------------------------
-  private   : list<Interface>       _list_interface;
+  private   : list<Interface>     * _list_interface;
 
     // -----[ methods ]---------------------------------------------------
   public    :                       Interfaces            (void);
-
+  public    :                       Interfaces            (const Interfaces & interfaces);
   public    :                       ~Interfaces           ();
 
-  public    : void                  set_interface         (Interface interface);
-  public    : string                get_interface         (void);
+  public    : Interface *           set_interface         (string         name        ,
+							   direction_t    direction   ,
+							   localisation_t localisation);
+  public    : Interface *           set_interface         (string         name        ,
+							   direction_t    direction   ,
+							   localisation_t localisation,
+							   string         comment     );
+  private   : string                get_interface         (void);
 
 #ifdef VHDL
@@ -47,6 +53,10 @@
 #endif
 
+  public    : Interface  *          find_interface        (string name);
+
   public    : XML                   toXML                 (void);
-
+#ifdef POSITION
+  public    : XML                   toXML_mapping         (void);
+#endif
   public    : friend ostream&       operator<<            (ostream& output_stream,
   					  		   morpheo::behavioural::Interfaces & x);
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 31)
@@ -1,4 +1,2 @@
-#ifdef VHDL
-
 #ifndef morpheo_behavioural_Localisation_h
 #define morpheo_behavioural_Localisation_h
@@ -28,3 +26,2 @@
 
 #endif
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Position.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Position.h	(revision 31)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Position.h	(revision 31)
@@ -0,0 +1,69 @@
+#ifdef POSITION
+#ifndef morpheo_behavioural_Position_h
+#define morpheo_behavioural_Position_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <stdint.h>
+#include <iostream>
+#include <list>
+#include "Behavioural/include/Entity.h"
+#include "Include/ToString.h"
+#include "Include/Debug.h"
+
+using namespace std;
+
+namespace morpheo              {
+namespace behavioural          {
+
+  class Position
+  {
+    // -----[ fields ]----------------------------------------------------
+  private   : Entity              * _entity        ;
+  private   : list<Entity *>      * _list_component;
+    
+    // -----[ methods ]---------------------------------------------------
+  public    :                       Position          (void);
+  public    :                       Position          (const Position & position);
+  public    :                       ~Position         ();
+
+  public    : Entity *              set_entity        (string        name   ,
+						       string        type   ,
+						       schema_t      schema );
+  private   : string                get_entity        (void);
+
+  public    : void                  set_component     (Entity * entity,
+						       uint32_t size_x,
+						       uint32_t size_y,
+						       uint32_t pos_x ,
+						       uint32_t pos_y );
+
+  private   : string                get_component     (void);
+
+  public    : void                  port_map          (string component1,
+						       string signal1   ,
+						       string component2,
+						       string signal2   );
+
+  public    : XML                   toXML             (void);
+
+  private   : Entity *              find_entity       (string name);
+  private   : Interface *           find_interface    (string   name  , 
+						       Entity * entity);
+
+  public    : void                  generate_file     (void);
+    
+  public    : friend ostream&       operator<<        (ostream& output_stream,
+  					  	       morpheo::behavioural::Position & x);
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+
+#endif
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Schema.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Schema.h	(revision 31)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Schema.h	(revision 31)
@@ -0,0 +1,37 @@
+#ifdef POSITION
+
+#ifndef morpheo_behavioural_Schema_h
+#define morpheo_behavioural_Schema_h
+
+#include "Include/ToString.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+typedef enum { MIXTE      ,
+	       COMBINATORY,
+	       FIFO       ,
+	       REGISTER   ,
+	       SHIFTER    ,
+	       ADDER      } schema_t;
+
+}; // end namespace behavioural          
+  
+template<>           inline std::string toString<morpheo::behavioural::schema_t>(const morpheo::behavioural::schema_t& x)
+{
+  switch (x)
+    {
+    case morpheo::behavioural::MIXTE       : return "Mixte"      ; break;
+    case morpheo::behavioural::COMBINATORY : return "Combinatory"; break;
+    case morpheo::behavioural::FIFO        : return "FIFO"       ; break;
+    case morpheo::behavioural::REGISTER    : return "Register"   ; break;
+    case morpheo::behavioural::SHIFTER     : return "Shifter"    ; break;
+    case morpheo::behavioural::ADDER       : return "Adder"      ; 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 31)
@@ -28,9 +28,11 @@
   class Signal
   {
+    friend class Interface;
+
     // -----[ fields ]----------------------------------------------------
-  public    : const string          _name         ;
-  public    : const direction_t     _direction    ;
-  public    : const uint32_t        _size         ;
-  public    : const presence_port_t _presence_port;
+  private   : const string          _name         ;
+  private   : const direction_t     _direction    ;
+  private   : const uint32_t        _size         ;
+  private   : const presence_port_t _presence_port;
 
     // -----[ methods ]---------------------------------------------------
@@ -39,4 +41,5 @@
 						 uint32_t        size          ,
 						 presence_port_t presence_port = PORT_VHDL_YES_TESTBENCH_YES);
+  public    :                   Signal          (const Signal &);
   public    :                   ~Signal         ();
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h	(revision 31)
@@ -24,7 +24,8 @@
   {
     // -----[ fields ]----------------------------------------------------
-  private  : const string     _name            ;
-  private  : string           _body            ;
-  private  : list<string>     _list_balise_name;
+  private  : const string     _name              ;
+  private  : string           _filename_extension;
+  private  : string           _body              ;
+  private  : list<string>     _list_balise_name  ;
 
     // -----[ methods ]---------------------------------------------------
@@ -42,4 +43,5 @@
   public   : bool             insert_XML          (XML    xml );
 
+  public   : void             filename_extension  (string extension);
   public   : void             generate_file       (void);
   public   : void             generate_file       (string encoding);
