Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp	(revision 40)
@@ -20,11 +20,15 @@
     log_printf(FUNC,Behavioural,"Interface","Begin");
 
-    _comment     = "";
-    _list_signal = new (list<Signal*>);
+    _comment       = "";
+    _list_signal   = new (list<Signal*>);
 
 #ifdef POSITION
-     _is_map        = false;
-     _entity_map    = NULL;
-     _interface_map = NULL;
+    _is_map        = false;
+    _entity_map    = NULL;
+    _interface_map = NULL;
+#endif
+
+#ifdef VHDL_TESTBENCH
+    _list_cycle    = new list<string>;
 #endif
 
@@ -45,4 +49,8 @@
     _interface_map = interface._interface_map;
 #endif
+#ifdef VHDL_TESTBENCH
+    _list_cycle    = interface._list_cycle;
+#endif
+
     log_printf(FUNC,Behavioural,"Interface (copy)","End");
   };
@@ -54,5 +62,5 @@
     if (_list_signal->empty()== false)
       {
-	list<Signal*>::iterator i     = _list_signal->begin();
+	list<Signal*>::iterator i = _list_signal->begin();
 
 	while (i != _list_signal->end())
@@ -64,4 +72,9 @@
 
     delete _list_signal;
+
+#ifdef VHDL_TESTBENCH
+    delete _list_cycle ;
+#endif
+
     log_printf(FUNC,Behavioural,"~Interface","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo.cpp	(revision 40)
@@ -0,0 +1,60 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface_fifo.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Interface_fifo::Interface_fifo  (string         name        ,
+				   direction_t    direction   ,
+				   localisation_t localisation):
+    Interface (name        , 
+	       direction   ,
+	       localisation)
+  {
+    log_printf(FUNC,Behavioural,"Interface_fifo","Begin");
+
+    _list_signal_val = new (list<Signal*>);
+    _list_signal_ack = new (list<Signal*>);
+
+#ifdef VHDL_TESTBENCH
+    _test_exhaustive = true;
+#endif
+
+    log_printf(FUNC,Behavioural,"Interface_fifo","End");
+  };
+
+  Interface_fifo::Interface_fifo  (const Interface_fifo & interface_fifo) :
+    Interface (interface_fifo._name        , 
+	       interface_fifo._direction   ,
+	       interface_fifo._localisation)
+  {
+    log_printf(FUNC,Behavioural,"Interface_fifo (copy)","Begin");
+
+    _list_signal_val = interface_fifo._list_signal_val;
+    _list_signal_ack = interface_fifo._list_signal_ack;
+
+#ifdef VHDL_TESTBENCH
+    _test_exhaustive = interface_fifo._test_exhaustive;
+#endif
+
+    log_printf(FUNC,Behavioural,"Interface_fifo (copy)","End");
+  };
+  
+  Interface_fifo::~Interface_fifo ()
+  {
+    log_printf(FUNC,Behavioural,"~Interface_fifo","Begin");
+
+    delete _list_signal_val;
+    delete _list_signal_ack;
+
+    log_printf(FUNC,Behavioural,"~Interface_fifo","End");
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_save_ptr.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_save_ptr.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_save_ptr.cpp	(revision 40)
@@ -0,0 +1,27 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface_fifo.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interface_fifo::save_ptr (Signal *  signal ,
+				 val_ack_t val_ack)
+  {
+    log_printf(FUNC,Behavioural,"save_ptr","Begin");
+    
+    if (val_ack == VAL)
+      _list_signal_val->push_back (signal);
+    else
+      _list_signal_ack->push_back (signal);
+
+    log_printf(FUNC,Behavioural,"save_ptr","End");
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_set_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_set_signal.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_set_signal.cpp	(revision 40)
@@ -0,0 +1,34 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface_fifo.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Signal * Interface_fifo::set_signal_valack (string          name     ,
+					      direction_t     direction,
+					      val_ack_t       val_ack  ,
+					      presence_port_t presence_port)
+  {
+    log_printf(FUNC,Behavioural,"set_signal_valack","Begin");
+    
+    Signal * sig = Interface::set_signal (name         ,
+					  direction    ,
+					  1            ,
+					  presence_port);
+
+    // save the ptr
+    save_ptr(sig, val_ack);
+
+    log_printf(FUNC,Behavioural,"set_signal_valack","End");
+
+    return sig;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench.cpp	(revision 40)
@@ -0,0 +1,29 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface_fifo.h"
+#include "Behavioural/include/Entity.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interface_fifo::testbench (Vhdl_Testbench * & vhdl_testbench)
+  {
+    log_printf(FUNC,Behavioural,"testbench","Begin");
+
+    if (_test_exhaustive or testbench_transaction())
+      testbench_cycle ();
+    
+    Interface::testbench(vhdl_testbench);
+
+    log_printf(FUNC,Behavioural,"testbench","End");
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench_transaction.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench_transaction.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench_transaction.cpp	(revision 40)
@@ -0,0 +1,49 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface_fifo.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  bool Interface_fifo::testbench_transaction (void)
+  {
+    log_printf(FUNC,Behavioural,"testbench_transaction","Begin");
+    
+    bool res = true;
+
+    // list "val"
+    if (_list_signal_val->empty()== false)
+      {
+	list<Signal*>::iterator i = _list_signal_val->begin();
+
+	while ((i != _list_signal_val->end()) and (res == true))
+	  {
+	    res = (*i)->read<bool>();
+	    ++i;
+	  }
+      }
+
+    // list "ack"
+    if (_list_signal_ack->empty()== false)
+      {
+	list<Signal*>::iterator i = _list_signal_ack->begin();
+
+	while ((i != _list_signal_ack->end()) and (res == true))
+	  {
+	    res = (*i)->read<bool>();
+	    ++i;
+	  }
+      }
+
+    log_printf(FUNC,Behavioural,"testbench_transaction","End");
+
+    return res;
+  };
+
+}; // 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 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp	(revision 40)
@@ -15,4 +15,5 @@
   {
     log_printf(FUNC,Behavioural,"get_signal","Begin");
+
     uint32_t               depth          = 0;
     string                 separator      = ",\n";
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp	(revision 40)
@@ -19,4 +19,18 @@
     output_stream << x.get_comment() << endl;
     output_stream << x.get_signal () << endl;
+
+#ifdef VHDL_TESTBENCH
+    if (x._list_cycle->empty()== false)
+      {
+	list<string>::iterator i = x._list_cycle->begin();
+
+	while (i != x._list_cycle->end())
+	  {
+	    output_stream << "\n\t" << *i ;
+	    ++i;
+	  }
+      }
+#endif
+
     log_printf(FUNC,Behavioural,"operator<<","End");
     return output_stream;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp	(revision 40)
@@ -1,3 +1,2 @@
-#ifdef VHDL
 /*
  * $Id$
@@ -13,4 +12,5 @@
 namespace behavioural          {
 
+#ifdef VHDL
   void Interface::set_port (Vhdl * & vhdl)
   {
@@ -31,5 +31,7 @@
     log_printf(FUNC,Behavioural,"set_port (Vhdl)","End");
   };
+#endif
 
+#ifdef VHDL_TESTBENCH
   void Interface::set_port (Vhdl_Testbench * & vhdl_testbench)
   {
@@ -50,6 +52,5 @@
     log_printf(FUNC,Behavioural,"set_port (Testbench)","End");
   };
-
+#endif
 }; // 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 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp	(revision 40)
@@ -6,5 +6,4 @@
  */
 
-#include "Include/ChangeCase.h"
 #include "Behavioural/include/Interface.h"
 
@@ -18,17 +17,6 @@
   {
     log_printf(FUNC,Behavioural,"set_signal","Begin");
-    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;
+    string signame = signal_name(_name, name, direction);
 
     Signal * sig = new Signal (signame      ,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_signal_name.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_signal_name.cpp	(revision 40)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_signal_name.cpp	(revision 40)
@@ -0,0 +1,40 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+#include "Include/ChangeCase.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interface::signal_name          (string      name_interface,
+					  string      name_signal   ,
+					  direction_t direction     )
+  {
+    log_printf(FUNC,Behavioural,"signal_name","Begin");
+
+    string str_direction = toString(direction);
+    string str_interface = name_interface;
+    string str_signal    = name_signal;
+
+    LowerCase(str_direction);    
+    UpperCase(str_interface);
+    UpperCase(str_signal   );
+    
+    string signame = str_direction;
+    if (str_interface != "")
+      signame += "_"+str_interface;
+    if (str_signal    != "")
+      signame += "_"+str_signal;
+
+    log_printf(FUNC,Behavioural,"signal_name","End");
+
+    return signame;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_testbench.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_testbench.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_testbench.cpp	(revision 40)
@@ -12,4 +12,10 @@
 namespace morpheo              {
 namespace behavioural          {
+
+  void Interface::testbench_cycle (void)
+  {
+    // note : if defined(VHDL_TESTBENCH) then defined(SYSTEMC)
+    _list_cycle->push_back(toString(sc_simulation_time()));
+  }
 
   void Interface::testbench (Vhdl_Testbench * & vhdl_testbench)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp	(revision 40)
@@ -14,5 +14,5 @@
   {
     log_printf(FUNC,Behavioural,"Interfaces","Begin");
-    _list_interface = new list<Interface*>;
+    _list_interface = new list<Interface_fifo*>;
     log_printf(FUNC,Behavioural,"Interfaces","End");
   };
@@ -31,5 +31,5 @@
     if (_list_interface->empty()== false)
       {
-	list<Interface*>::iterator i     = _list_interface->begin();
+	list<Interface_fifo*>::iterator i     = _list_interface->begin();
 
 	while (i != _list_interface->end())
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_find_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_find_interface.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_find_interface.cpp	(revision 40)
@@ -11,9 +11,9 @@
 namespace behavioural          {
 
-  Interface * Interfaces::find_interface (string name)
+  Interface_fifo * Interfaces::find_interface (string name)
   {
     if (_list_interface->empty()== false)
       {
-	list<Interface*>::iterator i     = _list_interface->begin();
+	list<Interface_fifo*>::iterator i     = _list_interface->begin();
 
 	while (i != _list_interface->end())
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp	(revision 40)
@@ -18,5 +18,5 @@
     bool                   last_separator = false;
 
-    list<Interface*>::iterator i  = _list_interface->begin();
+    list<Interface_fifo*>::iterator i  = _list_interface->begin();
     bool                   empty = _list_interface->empty();
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp	(revision 40)
@@ -11,9 +11,9 @@
 namespace behavioural          {
 
-  Interface * Interfaces::set_interface (string         name        ,
+  Interface_fifo * Interfaces::set_interface (string         name        ,
 					 direction_t    direction   ,
 					 localisation_t localisation)
   {
-    Interface * interface = new Interface (name, direction, localisation);
+    Interface_fifo * interface = new Interface_fifo (name, direction, localisation);
     
     _list_interface->push_back (interface);
@@ -22,10 +22,10 @@
   };
 
-  Interface * Interfaces::set_interface (string         name        ,
+  Interface_fifo * Interfaces::set_interface (string         name        ,
 					 direction_t    direction   ,
 					 localisation_t localisation,
 					 string         comment     )
   {
-    Interface * interface = set_interface(name, direction, localisation);
+    Interface_fifo * interface = set_interface(name, direction, localisation);
     
     interface->set_comment (comment);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp	(revision 40)
@@ -1,3 +1,2 @@
-#ifdef VHDL
 /*
  * $Id$
@@ -13,9 +12,10 @@
 namespace behavioural          {
 
+#ifdef VHDL
   void Interfaces::set_port (Vhdl * & vhdl)
   {
     if (not _list_interface->empty())
       {
-	list<Interface*>::iterator i     = _list_interface->begin();
+	list<Interface_fifo*>::iterator i     = _list_interface->begin();
 	
 	while (i != _list_interface->end())
@@ -26,10 +26,13 @@
       }
   };
+#endif
 
+
+#ifdef VHDL_TESTBENCH
   void Interfaces::set_port (Vhdl_Testbench * & vhdl_testbench)
   {
     if (not _list_interface->empty())
       {
-	list<Interface*>::iterator i     = _list_interface->begin();
+	list<Interface_fifo*>::iterator i     = _list_interface->begin();
 	
 	while (i != _list_interface->end())
@@ -40,6 +43,6 @@
       }
   };
+#endif
 
 }; // end namespace behavioural          
 }; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench.cpp	(revision 40)
@@ -19,5 +19,5 @@
     if (_list_interface->empty()== false)
       {
-	list<Interface*>::iterator i     = _list_interface->begin();
+	list<Interface_fifo*>::iterator i     = _list_interface->begin();
 
 	while (i != _list_interface->end())
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp	(revision 40)
@@ -17,5 +17,5 @@
     if (_list_interface->empty()== false)
       {
-	list<Interface*>::iterator i     = _list_interface->begin();
+	list<Interface_fifo*>::iterator i     = _list_interface->begin();
 
 	while (i != _list_interface->end())
@@ -36,5 +36,5 @@
     if (_list_interface->empty()== false)
       {
-	list<Interface*>::iterator i     = _list_interface->begin();
+	list<Interface_fifo*>::iterator i     = _list_interface->begin();
 
 	while (i != _list_interface->end())
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 40)
@@ -22,6 +22,7 @@
     log_printf(FUNC,Behavioural,"Signal","Begin");
 #ifdef VHDL_TESTBENCH
-    _signal    = NULL;
-    _type_info = UNKNOW;
+    _signal     = NULL;
+    _type_info  = UNKNOW;
+    _list_value = new list<string>;
 #endif
     log_printf(FUNC,Behavioural,"Signal","End");
@@ -36,6 +37,7 @@
     log_printf(FUNC,Behavioural,"Signal (copy)","Begin");
 #ifdef VHDL_TESTBENCH
-    _signal    = signal._signal   ;
-    _type_info = signal._type_info;
+    _signal     = signal._signal    ;
+    _type_info  = signal._type_info ;
+    _list_value = signal._list_value;
 #endif
     log_printf(FUNC,Behavioural,"Signal (copy)","End");
@@ -45,4 +47,7 @@
   {
     log_printf(FUNC,Behavioural,"~Signal","Begin");
+#ifdef VHDL_TESTBENCH
+    delete _list_value;
+#endif
     log_printf(FUNC,Behavioural,"~Signal","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp	(revision 40)
@@ -9,7 +9,4 @@
 
 namespace morpheo              {
-
-  
-
 namespace behavioural          {
 
@@ -22,5 +19,18 @@
     output_stream << "\t{" << x._size << "}\t"
 		  << toString(x._direction)    << "\t"
-		  << toString(x._presence_port)<< endl;
+		  << toString(x._presence_port);
+
+// #ifdef VHDL_TESTBENCH
+//     if (x._list_value->empty()== false)
+//       {
+// 	list<string>::iterator i = x._list_value->begin();
+
+// 	while (i != x._list_value->end())
+// 	  {
+// 	    output_stream << "\n\t" << *i ;
+// 	    ++i;
+// 	  }
+//       }
+// #endif
 
     log_printf(FUNC,Behavioural,"operator<<","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_testbench.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_testbench.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_testbench.cpp	(revision 40)
@@ -20,12 +20,18 @@
 	(_presence_port == PORT_VHDL_NO_TESTBENCH_YES))
       {
+	string str;
+
 	switch (_type_info)
 	  {
 	  case BOOL     : 
 	    {
+	      bool value = read <bool> ();
+
 	      switch (_direction)
 		{
-		case IN    : {vhdl_testbench->add_input (static_cast<sc_in  <bool    > *>(_signal)->read()); break; }
-		case OUT   : {vhdl_testbench->add_output(static_cast<sc_out <bool    > *>(_signal)->read()); break; }
+		case IN    : {vhdl_testbench->add_input (value);
+		              str =             toBase2 (value); break;}
+		case OUT   : {vhdl_testbench->add_output(value); 
+		              str =             toBase2 (value); break;}
 		case INOUT : {break;}
 		}
@@ -34,8 +40,12 @@
 	  case UINT8_T  :
 	    {
+	      uint8_t value = read <uint8_t> ();
+
 	      switch (_direction)
 		{
-		case IN    : {vhdl_testbench->add_input (static_cast<sc_in  <uint8_t > *>(_signal)->read()); break; }
-		case OUT   : {vhdl_testbench->add_output(static_cast<sc_out <uint8_t > *>(_signal)->read()); break; }
+		case IN    : {vhdl_testbench->add_input (value); 
+		              str =             toBase2 (value,_size); break;}
+		case OUT   : {vhdl_testbench->add_output(value); 
+		              str =             toBase2 (value,_size); break;}
 		case INOUT : {break;}
 		}
@@ -44,9 +54,13 @@
 	  case UINT16_T :
 	    {
+	      uint16_t value = read <uint16_t> ();
+
 	      switch (_direction)
 		{
-		case IN    : {vhdl_testbench->add_input (static_cast<sc_in  <uint16_t> *>(_signal)->read()); break; }
-		case OUT   : {vhdl_testbench->add_output(static_cast<sc_out <uint16_t> *>(_signal)->read()); break; }
-		case INOUT : {break;}
+		case IN    : {vhdl_testbench->add_input (value);
+		              str =             toBase2 (value,_size); break;}
+		case OUT   : {vhdl_testbench->add_output(value);
+                              str =             toBase2 (value,_size); break;}
+		case INOUT : {break;}		
 		}
 	      break;
@@ -54,8 +68,12 @@
 	  case UINT32_T :
 	    {
+	      uint32_t value = read <uint32_t> ();
+
 	      switch (_direction)
 		{
-		case IN    : {vhdl_testbench->add_input (static_cast<sc_in  <uint32_t> *>(_signal)->read()); break; }
-		case OUT   : {vhdl_testbench->add_output(static_cast<sc_out <uint32_t> *>(_signal)->read()); break; }
+		case IN    : {vhdl_testbench->add_input (value); 
+		              str =             toBase2 (value,_size); break;}
+		case OUT   : {vhdl_testbench->add_output(value); 
+                              str =             toBase2 (value,_size); break;}
 		case INOUT : {break;}
 		}
@@ -64,8 +82,12 @@
 	  case UINT64_T :
 	    {
+	      uint64_t value = read <uint64_t> ();
+
 	      switch (_direction)
 		{
-		case IN    : {vhdl_testbench->add_input (static_cast<sc_in  <uint64_t> *>(_signal)->read()); break; }
-		case OUT   : {vhdl_testbench->add_output(static_cast<sc_out <uint64_t> *>(_signal)->read()); break; }
+		case IN    : {vhdl_testbench->add_input (value); 
+                              str =             toBase2 (value,_size); break;}
+		case OUT   : {vhdl_testbench->add_output(value); 
+                              str =             toBase2 (value,_size); break;}
 		case INOUT : {break;}
 		}
@@ -76,4 +98,5 @@
 	  }
 
+	_list_value->push_back(str);
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_Testbench.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_Testbench.cpp	(revision 38)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_Testbench.cpp	(revision 40)
@@ -13,6 +13,8 @@
 namespace behavioural          {
 
-  Vhdl_Testbench::Vhdl_Testbench  (string   name       ):
-    _name        (name       )
+  Vhdl_Testbench::Vhdl_Testbench  (string   name       ,
+				   bool     exhaustive ):
+    _name        (name       ),
+    _exhaustive  (exhaustive )
   {
     _vhdl = new Vhdl (_name + "_Testbench");
@@ -26,4 +28,5 @@
   Vhdl_Testbench::~Vhdl_Testbench ()
   {
+    delete _vhdl;
   };
   
