Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 41)
@@ -7,7 +7,8 @@
 #define     DEBUG_Group                                     false
 #define     DEBUG_Shifter                                   false
-#define     DEBUG_Register_File                             false 
-#define     DEBUG_RegisterFile_Multi_Banked                 false
-#define       DEBUG_RegisterFile_Multi_Banked_Glue          false
+#define     DEBUG_Register_File                             false
+#define       DEBUG_RegisterFile_Monolithic                 false 
+#define       DEBUG_RegisterFile_Multi_Banked               false
+#define         DEBUG_RegisterFile_Multi_Banked_Glue        false
 #define     DEBUG_Select                                    false
 #define       DEBUG_Select_Priority_Fixed                   false 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h	(revision 41)
@@ -7,5 +7,6 @@
 namespace behavioural          {
 
-typedef enum { IN, OUT, INOUT } direction_t;
+typedef enum { IN, OUT } direction_t;
+  //typedef enum { IN, OUT, INOUT } direction_t;
 
 }; // end namespace behavioural          
@@ -17,5 +18,5 @@
       case morpheo::behavioural::IN    : return "in"    ; break;
       case morpheo::behavioural::OUT   : return "out"   ; break;
-      case morpheo::behavioural::INOUT : return "inout" ; break;
+//    case morpheo::behavioural::INOUT : return "inout" ; break;
       default    : return ""      ; break;
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 41)
@@ -21,7 +21,4 @@
 #ifdef VHDL
 #include "Behavioural/include/Vhdl.h"
-#endif
-#ifdef VHDL_TESTBENCH
-#include "Behavioural/include/Vhdl_Testbench.h"
 #endif
 #include "Include/ToString.h"
@@ -53,5 +50,5 @@
 
 #ifdef VHDL_TESTBENCH
-  private   : list<string>        * _list_cycle   ;
+  private   : uint32_t              _nb_cycle     ;
 #endif
     
@@ -80,9 +77,13 @@
   public    : sc_in_clk *           set_signal_clk       (string          name     ,
 							  uint32_t        size     ,
-							  presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+							  presence_port_t presence_port=CLOCK_VHDL_YES)
     {
       log_printf(FUNC,Behavioural,"set_signal_clk","Begin");
 
-      Signal * sig = set_signal (name, IN , size, presence_port);
+      if ((presence_port != CLOCK_VHDL_YES) and
+	  (presence_port != CLOCK_VHDL_NO ))
+	throw ErrorMorpheo ("Signal \""+name+"\" is a clock, bad presence_port.");
+
+      Signal    * sig    = set_signal (name, IN , size, presence_port);
       sc_in_clk * signal = new sc_in_clk (sig->_name.c_str());
 
@@ -98,4 +99,8 @@
     {
       log_printf(FUNC,Behavioural,"set_signal_in","Begin");
+
+      if ((presence_port == CLOCK_VHDL_YES) or 
+	  (presence_port == CLOCK_VHDL_NO ))
+	throw ErrorMorpheo ("Signal \""+name+"\" is not a clock, bad presence_port.");
 
       Signal * sig = set_signal (name, IN , size, presence_port);
@@ -117,4 +122,8 @@
       log_printf(FUNC,Behavioural,"set_signal_out","Begin");
 
+      if ((presence_port == CLOCK_VHDL_YES) or 
+	  (presence_port == CLOCK_VHDL_NO ))
+	throw ErrorMorpheo ("Signal \""+name+"\" is not a clock, bad presence_port.");
+
       Signal * sig = set_signal (name, OUT , size, presence_port);
       sc_out <T> * port = new sc_out <T> (sig->_name.c_str());
@@ -131,7 +140,23 @@
 #ifdef VHDL
   public    : void                  set_port             (Vhdl * & vhdl);
+#ifdef VHDL_TESTBENCH
+  public    : void                  set_signal           (Vhdl * & vhdl);
+  public    : void                  get_signal           (list<string> * & list_signal);
+#endif
 #endif
 #ifdef VHDL_TESTBENCH
-  public    : void                  set_port             (Vhdl_Testbench * & vhdl_testbench);
+  public    : uint32_t              get_cycle            (void);
+  public    : string                get_clock            (void);
+
+  public    : void                  testbench            (void);
+  public    : void                  testbench_cycle      (void);
+  public    : void                  testbench_body       (Vhdl           * & vhdl          ,
+							  string             counter_name  );
+  public    : string                testbench_test       (Vhdl           * & vhdl        ,
+							  string             counter_name);
+  public    : string                testbench_test_ok    (Vhdl           * & vhdl        );
+  protected : string                testbench_test_name   (Vhdl           * & vhdl);
+  protected : string                testbench_test_ok_name(Vhdl           * & vhdl);
+
 #endif
 
@@ -139,9 +164,4 @@
   public    : void                  port_map             (void * entity,
 							  void * interface);
-#endif
-
-#ifdef VHDL_TESTBENCH
-  public    : void                  testbench_cycle      (void);
-  public    : void                  testbench            (Vhdl_Testbench * & vhdl_testbench);
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface_fifo.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface_fifo.h	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface_fifo.h	(revision 41)
@@ -23,4 +23,6 @@
 #ifdef VHDL_TESTBENCH
   private   : bool                  _test_exhaustive;
+  private   : list<uint32_t>      * _list_cycle   ;
+
 #endif
 
@@ -72,6 +74,11 @@
 
 #ifdef VHDL_TESTBENCH
+  public    : uint32_t              get_cycle            (void);
+
+  public    : void                  testbench            (void);
   public    : bool                  testbench_transaction(void);
-  public    : void                  testbench            (Vhdl_Testbench * & vhdl_testbench);
+  public    : void                  testbench_cycle      (void);
+  public    : string                testbench_test       (Vhdl           * & vhdl        ,
+							  string             counter_name);
 #endif
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 41)
@@ -18,7 +18,4 @@
 #include "Behavioural/include/Vhdl.h"
 #endif
-#ifdef VHDL_TESTBENCH
-#include "Behavioural/include/Vhdl_Testbench.h"
-#endif
 
 using namespace std;
@@ -30,8 +27,9 @@
   {
     // -----[ fields ]----------------------------------------------------
+  private   : const string               _name;
   private   : list<Interface_fifo*>    * _list_interface;
 
     // -----[ methods ]---------------------------------------------------
-  public    :                       Interfaces            (void);
+  public    :                       Interfaces            (string name);
   public    :                       Interfaces            (const Interfaces & interfaces);
   public    :                       ~Interfaces           ();
@@ -48,14 +46,20 @@
 #ifdef VHDL
   public    : void                  set_port              (Vhdl           * & vhdl          );
+#  ifdef VHDL_TESTBENCH
+  private   : void                  get_signal            (list<string>   * & list_signal   );
+  private   : void                  set_signal            (Vhdl           * & vhdl          );
+#  endif
 #endif
 #ifdef VHDL_TESTBENCH
-  public    : void                  set_port              (Vhdl_Testbench * & vhdl_testbench);
+  private   : uint32_t              get_cycle             (void);
+  private   : string                get_clock             (void);
+
+  private   : void                  testbench_generate_file (void);
+  public    : void                  testbench             (void);
+  private   : string                testbench_body        (Vhdl           * & vhdl          ,
+							   string             counter_name  );
 #endif
 
   public    : Interface_fifo  *     find_interface        (string name);
-
-#ifdef VHDL_TESTBENCH
-  public    : void                  testbench             (Vhdl_Testbench * & vhdl_testbench);
-#endif
 
   public    : XML                   toXML                 (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 41)
@@ -16,6 +16,6 @@
 #include <iostream>
 
-#ifdef VHDL_TESTBENCH
-#include "Behavioural/include/Vhdl_Testbench.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
 #endif
 
@@ -42,5 +42,7 @@
 		PORT_VHDL_YES_TESTBENCH_NO ,
 		PORT_VHDL_NO_TESTBENCH_YES ,
-		PORT_VHDL_NO_TESTBENCH_NO  } presence_port_t;
+		PORT_VHDL_NO_TESTBENCH_NO  ,
+		CLOCK_VHDL_YES             ,
+		CLOCK_VHDL_NO              } presence_port_t;
 
   class Signal
@@ -109,6 +111,4 @@
     }
 
-  public    : void              testbench       (Vhdl_Testbench * & vhdl_testbench);
-
   public    : template <typename T>
               void              alloc           (void * port)
@@ -136,6 +136,18 @@
 	_type_info = UNKNOW;
     }
+
+  public    : void              testbench        (void);
+  public    : void              testbench_body   (Vhdl           * & vhdl          ,
+						  string             counter_name  );
+  public    : void              testbench_test_ok(Vhdl           * & vhdl          );
 #endif
-
+#ifdef VHDL
+  public    : void              set_port        (Vhdl * & vhdl);
+#  ifdef VHDL_TESTBENCH
+  public    : string            get_clock       (void);
+  public    : void              set_signal      (Vhdl * & vhdl);
+  public    : void              get_name_vhdl   (list<string> * & list_signal);
+#  endif
+#endif
   public    : XML               toXML           (void);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl_Testbench.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl_Testbench.h	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl_Testbench.h	(revision 41)
@@ -38,61 +38,61 @@
     };
 
-    // -----[ fields ]----------------------------------------------------
-  private   : const string     _name       ;
-  private   : const bool       _exhaustive ;
+//     // -----[ fields ]----------------------------------------------------
+//   private   : const string     _name       ;
+//   private   : const bool       _exhaustive ;
 
-  private   : string           _clock_name ;
-  private   : uint32_t         _num_cycle  ;
+//   private   : string           _clock_name ;
+//   private   : uint32_t         _num_cycle  ;
 
-  private   : uint32_t         _size_input ;
-  private   : uint32_t         _size_output;
+//   private   : uint32_t         _size_input ;
+//   private   : uint32_t         _size_output;
 
-  private   : list<string>     _list_input ;
-  private   : list<string>     _list_input_cycle;
-  private   : list<uint32_t>   _list_input_size ;
+//   private   : list<string>     _list_input ;
+//   private   : list<string>     _list_input_cycle;
+//   private   : list<uint32_t>   _list_input_size ;
 
-  private   : list<string>     _list_output;
-  private   : list<string>     _list_output_cycle;
-  private   : list<uint32_t>   _list_output_size ;
+//   private   : list<string>     _list_output;
+//   private   : list<string>     _list_output_cycle;
+//   private   : list<uint32_t>   _list_output_size ;
 
-  private   : list<bool>       _list_test;
-  private   : list<string>     _list_port;
-  private   : list<label_t>    _list_label;
+//   private   : list<bool>       _list_test;
+//   private   : list<string>     _list_port;
+//   private   : list<label_t>    _list_label;
 
-  private   : list<uint32_t>::iterator   _num_input ;
-  private   : list<uint32_t>::iterator   _num_output;
+//   private   : list<uint32_t>::iterator   _num_input ;
+//   private   : list<uint32_t>::iterator   _num_output;
 
-  private   : Vhdl           * _vhdl;
+//   private   : Vhdl           * _vhdl;
     
     // -----[ methods ]---------------------------------------------------
   public    :                  Vhdl_Testbench              (string   name,
-							    bool     exhaustive=true);
-  public    : virtual          ~Vhdl_Testbench             ();
+							    bool     exhaustive=true){};
+  public    :                  ~Vhdl_Testbench             (){};
 						           
-  public    : void             generate_file               (void);
+  public    : void             generate_file               (void){};
 
   public    : void             set_port                    (string      name      ,
 							    direction_t direction ,
-							    uint32_t    size      );
+							    uint32_t    size      ){};
   public    : void             set_clock                   (string      name      ,
-							    bool        model_have_clock);
-  public    : void             new_cycle                   (void);
+							    bool        model_have_clock){};
+  public    : void             new_cycle                   (void){};
 
-  private   : uint32_t         get_input                   (void);
-  private   : void             set_input                   (void);
-  public    : void             add_input                   (uint32_t    value     );
+  private   : uint32_t         get_input                   (void){return 0;};
+  private   : void             set_input                   (void){};
+  public    : void             add_input                   (uint32_t    value     ){};
 
-  private   : uint32_t         get_output                  (void);
-  private   : void             set_output                  (void);
-  public    : void             add_output                  (uint32_t    value     );
+  private   : uint32_t         get_output                  (void){return 0;};
+  private   : void             set_output                  (void){};
+  public    : void             add_output                  (uint32_t    value     ){};
 
-  private   : uint32_t         get_test                    (void);
-  public    : void             add_test                    (bool        must_test );
+  private   : uint32_t         get_test                    (void){return 0;};
+  public    : void             add_test                    (bool        must_test ){};
 
-  private   : void             get_label                   (void);
-  public    : void             add_label                   (string      label     );
+  private   : void             get_label                   (void){};
+  public    : void             add_label                   (string      label     ){};
 
-  private   : void             generate_process_clock      (uint32_t    counter   );
-  private   : void             generate_instance           (void);
+  private   : void             generate_process_clock      (uint32_t    counter   ){};
+  private   : void             generate_instance           (void){};
   };
 
