Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 31)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 38)
@@ -8,8 +8,8 @@
 #define     DEBUG_Shifter                                   false
 #define     DEBUG_Register_File                             false 
-#define     DEBUG_RegisterFile_Multi_Banked                 true
-#define       DEBUG_RegisterFile_Multi_Banked_Glue          true
+#define     DEBUG_RegisterFile_Multi_Banked                 false
+#define       DEBUG_RegisterFile_Multi_Banked_Glue          false
 #define     DEBUG_Select                                    false
-#define       DEBUG_Select_Priority_Fixed                   true 
+#define       DEBUG_Select_Priority_Fixed                   false 
 #define     DEBUG_Victim                                    false
 #define       DEBUG_Victim_Pseudo_LRU                       false
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 38)
@@ -57,8 +57,8 @@
   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    : void                  mapping           (uint32_t pos_x,
+						       uint32_t pos_y,
+						       uint32_t size_x ,
+						       uint32_t size_y );
 
   public    : XML                   toXML             (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 31)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 38)
@@ -44,4 +44,7 @@
   private   :       string          _comment      ;
 
+  private   : list<Signal *>      * _list_signal  ;
+
+
 #ifdef POSITION
   private   :       bool            _is_map       ;
@@ -49,5 +52,4 @@
   private   :       void          * _interface_map; // pour être homogène avec _entity_map
 #endif
-  private   : list<Signal>        * _list_signal  ;
 
     // -----[ methods ]---------------------------------------------------
@@ -73,6 +75,11 @@
 							  presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
     {
+      log_printf(FUNC,Behavioural,"set_signal_clk","Begin");
+
       Signal * sig = set_signal (name, IN , size, presence_port);
       sc_in_clk * signal = new sc_in_clk (sig->_name.c_str());
+
+      log_printf(FUNC,Behavioural,"set_signal_clk","End");
+
       return signal;
     };
@@ -83,7 +90,15 @@
 							 presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
     {
+      log_printf(FUNC,Behavioural,"set_signal_in","Begin");
+
       Signal * sig = set_signal (name, IN , size, presence_port);
-      sc_in <T> * signal = new sc_in <T> (sig->_name.c_str());
-      return signal;
+      sc_in <T> * port = new sc_in <T> (sig->_name.c_str());
+#ifdef VHDL_TESTBENCH
+      sig->alloc<T> (static_cast<void *>(port));
+#endif
+
+      log_printf(FUNC,Behavioural,"set_signal_in","End");
+
+      return port;
     };
 
@@ -93,7 +108,15 @@
 							 presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
     {
+      log_printf(FUNC,Behavioural,"set_signal_out","Begin");
+
       Signal * sig = set_signal (name, OUT , size, presence_port);
-      sc_out <T> * signal = new sc_out <T> (sig->_name.c_str());
-      return signal;
+      sc_out <T> * port = new sc_out <T> (sig->_name.c_str());
+#ifdef VHDL_TESTBENCH
+      sig->alloc<T> (static_cast<void *>(port));
+#endif
+
+      log_printf(FUNC,Behavioural,"set_signal_out","End");
+
+      return port;
     };
 #endif
@@ -111,4 +134,8 @@
 #endif
 
+#ifdef VHDL_TESTBENCH
+  public    : void                  testbench            (Vhdl_Testbench * & vhdl_testbench);
+#endif
+
   public    : XML                   toXML                (void);
 #ifdef POSITION
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 31)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 38)
@@ -30,5 +30,5 @@
   {
     // -----[ fields ]----------------------------------------------------
-  private   : list<Interface>     * _list_interface;
+  private   : list<Interface*>    * _list_interface;
 
     // -----[ methods ]---------------------------------------------------
@@ -55,4 +55,8 @@
   public    : Interface  *          find_interface        (string name);
 
+#ifdef VHDL_TESTBENCH
+  public    : void                  testbench             (Vhdl_Testbench * & vhdl_testbench);
+#endif
+
   public    : XML                   toXML                 (void);
 #ifdef POSITION
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 38)
@@ -38,9 +38,9 @@
   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 );
+  public    : void                  set_component     (Position * position,
+						       uint32_t   pos_x  ,
+						       uint32_t   pos_y  ,
+						       uint32_t   size_x ,
+						       uint32_t   size_y );
 
   private   : string                get_component     (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 31)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 38)
@@ -9,8 +9,18 @@
  */
 
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
 #include <stdint.h>
 #include <iostream>
+
+#ifdef VHDL_TESTBENCH
+#include "Behavioural/include/Vhdl_Testbench.h"
+#endif
+
 #include "Behavioural/include/Direction.h"
 #include "Behavioural/include/XML.h"
+#include "Include/ErrorMorpheo.h"
 #include "Include/ToString.h"
 #include "Include/Debug.h"
@@ -20,4 +30,11 @@
 namespace morpheo              {
 namespace behavioural          {
+
+  typedef enum {UNKNOW                     ,
+		BOOL                       ,
+		UINT8_T                    ,
+		UINT16_T                   ,
+		UINT32_T                   ,
+		UINT64_T                   } type_info_t;
 
   typedef enum {PORT_VHDL_YES_TESTBENCH_YES,
@@ -36,4 +53,9 @@
   private   : const presence_port_t _presence_port;
 
+#ifdef VHDL_TESTBENCH
+  private   : void *                _signal       ;
+  private   : type_info_t           _type_info    ;
+#endif
+
     // -----[ methods ]---------------------------------------------------
   public    :                   Signal          (string          name          ,
@@ -43,4 +65,34 @@
   public    :                   Signal          (const Signal &);
   public    :                   ~Signal         ();
+
+#ifdef VHDL_TESTBENCH
+  public    : void              testbench       (Vhdl_Testbench * & vhdl_testbench);
+
+  public    : template <typename T>
+              void              alloc           (void * port)
+    {
+      if (_type_info != UNKNOW)
+	throw (ErrorMorpheo ("Signal \""+_name+"\" : already allocate."));
+
+      _signal    = port;
+
+      if (typeid(T) == typeid(bool    ))
+	_type_info = BOOL;
+      else
+      if (typeid(T) == typeid(uint8_t ))
+	_type_info = UINT8_T;
+      else
+      if (typeid(T) == typeid(uint16_t))
+	_type_info = UINT16_T;
+      else
+      if (typeid(T) == typeid(uint32_t))
+	_type_info = UINT32_T;
+      else
+      if (typeid(T) == typeid(uint64_t))
+	_type_info = UINT64_T;
+      else
+	_type_info = UNKNOW;
+    }
+#endif
 
   public    : XML               toXML           (void);
