Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp	(revision 40)
@@ -19,7 +19,7 @@
   Select_Priority_Fixed * _Select_Priority_Fixed = new Select_Priority_Fixed (name.c_str(),
 #ifdef STATISTICS
-					     morpheo::behavioural::Parameters_Statistics(5,50),
+									      morpheo::behavioural::Parameters_Statistics(5,50),
 #endif
-					     _param);
+									      _param);
   
 #ifdef SYSTEMC
@@ -137,17 +137,10 @@
   cout << "<" << name << "> ............ Stop Simulation" << endl;
 
-  delete CLOCK;
-  delete NRESET;
-
-  for (uint32_t i=0; i<_param._nb_entity; i++)
-    {
-      delete VAL [i];
-      delete ACK [i];
-    }
-  
-  delete VAL       ;
-  delete ACK       ;
-  delete ENTITY    ;
-  delete ENTITY_ACK;
+  delete    CLOCK;
+  delete    NRESET;
+  delete [] VAL       ;
+  delete [] ACK       ;
+  delete    ENTITY    ;
+  delete    ENTITY_ACK;
 #endif
 
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 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 40)
@@ -19,12 +19,11 @@
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h"
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h"
+#ifdef STATISTICS
+#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h"
+#endif
 #ifdef POSITION
 #include "Behavioural/include/Position.h"
 #else
 #include "Behavioural/include/Interfaces.h"
-#endif
-
-#ifdef STATISTICS
-#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h"
 #endif
 #ifdef VHDL
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters_msg_error.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters_msg_error.cpp	(revision 40)
@@ -31,7 +31,7 @@
       }
 
+    log_printf(FUNC,Select_Priority_Fixed,"msg_error","End");
+
     return msg;
-
-    log_printf(FUNC,Select_Priority_Fixed,"msg_error","End");
   };
 
@@ -39,5 +39,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.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp	(revision 40)
@@ -38,10 +38,4 @@
 #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");
@@ -56,7 +50,4 @@
     log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Creation of a testbench");
 
-    // Creation of a testbench
-    //  -> port
-    //  -> clock's signals
     _vhdl_testbench = new Vhdl_Testbench (_name);
 #endif
@@ -137,5 +128,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_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp	(revision 40)
@@ -35,8 +35,5 @@
     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    Interface * interface_ = _interfaces->set_interface(""  ,
-							IN  ,
-							WEST,
-							"...");
+    Interface_fifo * interface_ = _interfaces->set_interface("", IN  ,WEST, "Generalist interface");
 
      in_CLOCK        = interface_->set_signal_clk              ("clock" ,1, PORT_VHDL_YES_TESTBENCH_NO);
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 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp	(revision 40)
@@ -20,23 +20,19 @@
     log_printf(FUNC,Select_Priority_Fixed,"deallocation","Begin");
 
-    delete in_CLOCK;
-    delete in_NRESET;
+    delete     in_CLOCK;
+    delete     in_NRESET;
 
-    for (uint32_t i=0; i<_param._nb_entity; i++)
-      {
-	delete  in_VAL [i];
-	if (_param._encoding_one_hot)
-	delete out_ACK [i];
-      }
+    delete []  in_VAL;
+    if (_param._encoding_one_hot)
+    delete [] out_ACK;
 
-    delete  in_VAL;
-    if (_param._encoding_one_hot)
-    delete out_ACK;
     if (_param._encoding_compact)
       {
-    delete out_ENTITY;
-    delete out_ENTITY_ACK;
+    delete    out_ENTITY;
+    delete    out_ENTITY_ACK;
       }
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    cout << *_interfaces << endl;
 
 #ifdef POSITION
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_genMealy_entity.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_genMealy_entity.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_genMealy_entity.cpp	(revision 40)
@@ -1,4 +1,3 @@
 #ifdef SYSTEMC
-#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
 /*
  * $Id$
@@ -64,3 +63,2 @@
 }; // end namespace morpheo              
 #endif
-#endif
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 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp	(revision 40)
@@ -30,6 +30,8 @@
 
     vhdl->generate_file();
+
+    delete vhdl;
+
     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_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp	(revision 40)
@@ -19,7 +19,6 @@
     log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","Begin");
 
-#ifdef VHDL
     _interfaces->set_port(vhdl);
-#endif
+
 #ifdef VHDL_TESTBENCH
     _interfaces->set_port(_vhdl_testbench);			
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp	(revision 40)
@@ -23,8 +23,4 @@
     sc_start(0);
 
-    // In order with file Select_Priority_Fixed_vhdl_testbench_port.cpp
-    // Warning : if a output depend of a subcomponent, take directly the port of subcomponent
-    // (because we have no control on the ordonnancer's policy)
-
     _interfaces->testbench(_vhdl_testbench);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest	(revision 40)
@@ -96,5 +96,5 @@
 $(DIR_LOG)/%.exec.log		: $(DIR_CFG_GEN)/%.cfg $(DIR_BIN)/$(EXEC).x
 				@$(ECHO) "Execute            : $*"
-				@$(EXPORT) SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; ./$(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` > $@
+				@$(EXPORT) SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; $(VALGRIND) ./$(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@
 				declare -i count=`$(GREP) -ch "Test KO" $@`;		\
 				if $(TEST) $$count -eq 0;       			\
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis	(revision 40)
@@ -60,5 +60,5 @@
 $(DIR_LOG)/%.fpga.log     	: 
 				@$(ECHO) "Synthetis on FPGA  : $*"
-				@$(XILINX_ENV); $(MAKE) -f Makefile.mkf $*.ngc > $@
+				@$(XILINX_ENV); $(MAKE) -f Makefile.mkf $*.ngc &> $@
 
 $(DIR_WORK)			:
@@ -67,6 +67,6 @@
 
 $(DIR_LOG)/%.vhdl_sim.log	: $(DIR_VHDL)/%.vhdl $(DIR_LOG)/%.vhdl.log
-				@$(ECHO) "VHDL's Simulation: $*"
-				@$(MODELTECH_VSIM) "$(DIR_WORK).`$(BASENAME) $* |$(UPPERtoLOWER)`" > $@
+				@$(ECHO) "VHDL's Simulation  : $*"
+				@$(MODELTECH_VSIM) "$(DIR_WORK).`$(BASENAME) $* |$(UPPERtoLOWER)`" &> $@
 				declare -i count=`$(GREP) -ch "Test KO" $@`;		\
 				if $(TEST) $$count -eq 0;       			\
@@ -77,5 +77,5 @@
 $(DIR_LOG)/%.vhdl.log		: $(DIR_VHDL)/%.vhdl
 				@$(ECHO) "VHDL's Compilation : $*"
-				@$(MODELTECH_VCOM) $< > $@
+				@$(MODELTECH_VCOM) $< &> $@
 
 synthesis_clean			:
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 40)
@@ -6,5 +6,5 @@
 
 #-----[ Simulator ]----------------------------------------
-SIMULATOR			= systemcass_deps
+SIMULATOR			= systemcass
 
 # 3 simulators :
@@ -17,10 +17,9 @@
 					-DVHDL			\
  					-DVHDL_TESTBENCH	\
+					-DCONFIGURATION  	\
+					-DPOSITION       	\
 					-DSTATISTICS 		\
-					-DPOSITION       	\
-					-DCONFIGURATION  	\
-					-DDEBUG=DEBUG_ALL   
+					-DDEBUG=DEBUG_NONE
 
-					
 # Flags :
 # DEBUG={level}                 - Print Debug Message
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/New_Component.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/New_Component.h	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/New_Component.h	(revision 40)
@@ -21,4 +21,9 @@
 #ifdef STATISTICS
 #include "Behavioural/@DIRECTORY/include/Statistics.h"
+#endif
+#ifdef POSITION
+#include "Behavioural/include/Position.h"
+#else
+#include "Behavioural/include/Interfaces.h"
 #endif
 #ifdef VHDL
@@ -56,4 +61,10 @@
   private   : Vhdl_Testbench                 * _vhdl_testbench;
 #endif
+
+#ifdef POSITION
+  private   : Position                       * _position;
+#endif
+
+  private   : Interfaces                     * _interfaces;
 
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component.cpp	(revision 40)
@@ -29,4 +29,10 @@
     log_printf(FUNC,@COMPONENT,"@COMPONENT","Begin");
 
+#ifdef SYSTEMC
+    log_printf(INFO,@COMPONENT,"@COMPONENT","Allocation");
+
+    allocation ();
+#endif
+
 #ifdef STATISTICS
     log_printf(INFO,@COMPONENT,"@COMPONENT","Allocation of statistics");
@@ -41,7 +47,4 @@
     log_printf(INFO,@COMPONENT,"@COMPONENT","Creation of a testbench");
 
-    // Creation of a testbench
-    //  -> port
-    //  -> clock's signals
     _vhdl_testbench = new Vhdl_Testbench (_name);
 #endif
@@ -54,14 +57,5 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-    // must be invoke after affect of port
-    _vhdl_testbench->set_clock    ("in_CLOCK",true);
-#endif
-
 #ifdef SYSTEMC
-    log_printf(INFO,@COMPONENT,"@COMPONENT","Allocation");
-
-    allocation ();
-
 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     log_printf(INFO,@COMPONENT,"@COMPONENT","Method - transition");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_allocation.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_allocation.cpp	(revision 40)
@@ -19,10 +19,29 @@
     log_printf(FUNC,@COMPONENT,"allocation","Begin");
 
-//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
-//#endif
-    in_NRESET = new SC_IN (Tcontrol_t) ("in_NRESET");
+#ifdef POSITION
+    _position   = new Position ();
+
+    Entity * entity = _position->set_entity (_name       ,
+					     "@COMPONENT",
+					     COMBINATORY );
+
+    _interfaces = entity->set_interfaces();
+#else
+    _interfaces = new Interfaces();
+#endif
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    Interface * interface_ = _interfaces->set_interface("", IN  ,WEST, "Generalist interface");
+
+     in_CLOCK        = interface_->set_signal_clk              ("clock" ,1, PORT_VHDL_YES_TESTBENCH_NO);
+     in_NRESET       = interface_->set_signal_in  <Tcontrol_t> ("nreset",1);
+
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+#ifdef POSITION
+    _position->generate_file();
+#endif
 
     log_printf(FUNC,@COMPONENT,"allocation","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_deallocation.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_deallocation.cpp	(revision 40)
@@ -24,4 +24,10 @@
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
+#ifdef POSITION
+    delete _position;
+#else
+    delete _interfaces;
+#endif
+
     log_printf(FUNC,@COMPONENT,"deallocation","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl.cpp	(revision 40)
@@ -17,4 +17,5 @@
   {
     log_printf(FUNC,@COMPONENT,"vhdl","Begin");
+
     Vhdl vhdl (_name);
 
@@ -26,6 +27,8 @@
 
     vhdl.generate_file();
+
+    delete vhdl;
+
     log_printf(FUNC,@COMPONENT,"vhdl","End");
-
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_port.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_port.cpp	(revision 40)
@@ -9,10 +9,4 @@
 #include "Behavioural/@DIRECTORY/include/@COMPONENT.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 behavioural {
@@ -23,6 +17,10 @@
     log_printf(FUNC,@COMPONENT,"vhdl_port","Begin");
 
-    vhdl.set_port (" in_CLOCK" , IN, 1);
-    VHDL_SET_PORT (" in_NRESET", IN, 1);
+    _interfaces->set_port(vhdl);
+
+#ifdef VHDL_TESTBENCH
+    _interfaces->set_port(_vhdl_testbench);			
+   _vhdl_testbench->set_clock    ("in_CLOCK",true);
+#endif    
 
     log_printf(FUNC,@COMPONENT,"vhdl_port","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_testbench_transition.cpp	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_testbench_transition.cpp	(revision 40)
@@ -20,9 +20,5 @@
     sc_start(0);
 
-    // In order with file @COMPONENT_vhdl_testbench_port.cpp
-    // Warning : if a output depend of a subcomponent, take directly the port of subcomponent
-    // (because we have no control on the ordonnancer's policy)
-
-    _vhdl_testbench->add_input (PORT_READ( in_NRESET));
+    _interfaces->testbench(_vhdl_testbench);
     
     // add_test :
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Configuration_Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Configuration_Parameters.h	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Configuration_Parameters.h	(revision 40)
@@ -12,4 +12,5 @@
 #include <iostream>
 #include "Behavioural/include/XML.h"
+#include "Behavioural/include/Environnement.h"
 #include "Include/ErrorMorpheo.h"
 #include "Include/ToString.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Environnement.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Environnement.h	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Environnement.h	(revision 40)
@@ -6,2 +6,6 @@
 #  error "To have the vhdl's test bench, you must set flags SYSTEMC"
 #endif
+
+#if (defined(VHDL_TESTBENCH) and not defined(VHDL))
+#  error "To have the vhdl's test bench, you must set flags VHDL"
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 40)
@@ -39,18 +39,21 @@
 
     // -----[ fields ]----------------------------------------------------
-  private   : const string          _name         ;
-  private   : const direction_t     _direction    ;
-  private   : const localisation_t  _localisation ;
-  private   :       string          _comment      ;
+  protected : const string          _name         ;
+  protected : const direction_t     _direction    ;
+  protected : const localisation_t  _localisation ;
+  protected :       string          _comment      ;
 
-  private   : list<Signal *>      * _list_signal  ;
-
+  protected : 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
+  protected :       bool            _is_map       ;
+  protected :       void          * _entity_map   ; // Entity -> erreur cyclique
+  protected :       void          * _interface_map; // pour être homogène avec _entity_map
 #endif
 
+#ifdef VHDL_TESTBENCH
+  private   : list<string>        * _list_cycle   ;
+#endif
+    
     // -----[ methods ]---------------------------------------------------
   public    :                       Interface            (string         name        ,
@@ -62,7 +65,11 @@
 
   public    : void                  set_comment          (string comment);
-  private   : string                get_comment          (void          );
+  protected : string                get_comment          (void          );
 
-  private   : string                get_signal           (void);
+  protected : string                signal_name          (string      name_interface,
+							  string      name_signal   ,
+							  direction_t direction     );
+
+  protected : string                get_signal           (void);
   public    : Signal *              set_signal           (string          name     ,
 							  direction_t     direction,
@@ -135,4 +142,5 @@
 
 #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 40)
@@ -0,0 +1,82 @@
+#ifndef morpheo_behavioural_Interface_fifo_h
+#define morpheo_behavioural_Interface_fifo_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  typedef enum {VAL, ACK} val_ack_t;
+
+  class Interface_fifo : public Interface
+  {
+  private   : list<Signal *>      * _list_signal_val;
+  private   : list<Signal *>      * _list_signal_ack;
+
+#ifdef VHDL_TESTBENCH
+  private   : bool                  _test_exhaustive;
+#endif
+
+   // -----[ methods ]---------------------------------------------------
+  public    :                       Interface_fifo       (string         name        ,
+							  direction_t    direction   ,
+							  localisation_t localisation);
+    
+  public    :                       Interface_fifo       (const Interface_fifo & interface_fifo);
+  public    :                       ~Interface_fifo      ();
+
+  public    : Signal *              set_signal_valack    (string          name     ,
+							  direction_t     direction,
+							  val_ack_t       val_ack  ,
+							  presence_port_t presence_port = PORT_VHDL_YES_TESTBENCH_YES);
+
+  private   : void                  save_ptr             (Signal *        signal   ,
+							  val_ack_t       val_ack  );
+
+#ifdef SYSTEMC
+  public    : sc_in <bool> *        set_signal_valack_in (string          name     ,
+							  val_ack_t       val_ack  ,
+							  presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+    {
+      log_printf(FUNC,Behavioural,"set_signal_valack_in","Begin");
+
+      sc_in <bool> * port = set_signal_in <bool> (name, 1, presence_port);
+      
+      save_ptr(_list_signal->back(), val_ack);
+      
+      log_printf(FUNC,Behavioural,"set_signal_valack_in","End");
+      return port;
+    };
+
+  public    : sc_out<bool> *        set_signal_valack_out(string          name     ,
+							  val_ack_t       val_ack  ,
+							  presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+    {
+      log_printf(FUNC,Behavioural,"set_signal_valack_out","Begin");
+
+      sc_out<bool> * port = set_signal_out<bool> (name, 1, presence_port);
+      
+      save_ptr(_list_signal->back(), val_ack);
+      
+      log_printf(FUNC,Behavioural,"set_signal_valack_out","End");
+      return port;
+    };
+#endif
+
+#ifdef VHDL_TESTBENCH
+  public    : bool                  testbench_transaction(void);
+  public    : void                  testbench            (Vhdl_Testbench * & vhdl_testbench);
+#endif
+  };
+
+}; // 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 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 40)
@@ -12,5 +12,5 @@
 #include <iostream>
 #include <list>
-#include "Behavioural/include/Interface.h"
+#include "Behavioural/include/Interface_fifo.h"
 #include "Include/ToString.h"
 #include "Include/Debug.h"
@@ -30,5 +30,5 @@
   {
     // -----[ fields ]----------------------------------------------------
-  private   : list<Interface*>    * _list_interface;
+  private   : list<Interface_fifo*>    * _list_interface;
 
     // -----[ methods ]---------------------------------------------------
@@ -37,8 +37,8 @@
   public    :                       ~Interfaces           ();
 
-  public    : Interface *           set_interface         (string         name        ,
+  public    : Interface_fifo *      set_interface         (string         name        ,
 							   direction_t    direction   ,
 							   localisation_t localisation);
-  public    : Interface *           set_interface         (string         name        ,
+  public    : Interface_fifo *      set_interface         (string         name        ,
 							   direction_t    direction   ,
 							   localisation_t localisation,
@@ -53,5 +53,5 @@
 #endif
 
-  public    : Interface  *          find_interface        (string name);
+  public    : Interface_fifo  *     find_interface        (string name);
 
 #ifdef VHDL_TESTBENCH
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 40)
@@ -23,4 +23,5 @@
 #include "Behavioural/include/XML.h"
 #include "Include/ErrorMorpheo.h"
+#include "Include/ToBase2.h"
 #include "Include/ToString.h"
 #include "Include/Debug.h"
@@ -56,4 +57,6 @@
   private   : void *                _signal       ;
   private   : type_info_t           _type_info    ;
+
+  private   : list<string>        * _list_value   ;
 #endif
 
@@ -67,4 +70,43 @@
 
 #ifdef VHDL_TESTBENCH
+  public    :template <typename T>
+             T                  read (void)
+    {
+      switch (_direction)
+	{
+	case IN  : {return read_in  <T>();}
+	case OUT : {return read_out <T>();}
+	default  : throw (ErrorMorpheo ("Signal \""+_name+"\" : direction unknow."));
+	}
+    }
+
+  public    :template <typename T>
+             T                  read_in (void)
+    {
+      switch (_type_info)
+	{
+	case BOOL     : return (static_cast<sc_in  <bool    > *>(_signal)->read()); 
+	case UINT8_T  : return (static_cast<sc_in  <uint8_t > *>(_signal)->read()); 
+	case UINT16_T : return (static_cast<sc_in  <uint16_t> *>(_signal)->read());
+	case UINT32_T : return (static_cast<sc_in  <uint32_t> *>(_signal)->read()); 
+	case UINT64_T : return (static_cast<sc_in  <uint64_t> *>(_signal)->read()); 
+	default       : throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow."));
+	}
+    }
+
+  public    :template <typename T>
+             T                  read_out(void)
+    {
+      switch (_type_info)
+	{
+	case BOOL     : return (static_cast<sc_out <bool    > *>(_signal)->read()); 
+	case UINT8_T  : return (static_cast<sc_out <uint8_t > *>(_signal)->read()); 
+	case UINT16_T : return (static_cast<sc_out <uint16_t> *>(_signal)->read());
+	case UINT32_T : return (static_cast<sc_out <uint32_t> *>(_signal)->read()); 
+	case UINT64_T : return (static_cast<sc_out <uint64_t> *>(_signal)->read()); 
+	default       : throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow."));
+	}
+    }
+
   public    : void              testbench       (Vhdl_Testbench * & vhdl_testbench);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Statistics.h	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Statistics.h	(revision 40)
@@ -13,4 +13,5 @@
 #include <stdint.h>
 #include <iostream>
+#include "Behavioural/include/Environnement.h"
 #include "Behavioural/include/Parameters_Statistics.h"
 #include "Include/Average.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 40)
@@ -14,4 +14,5 @@
 #include <iostream>
 #include <list>
+#include "Behavioural/include/Environnement.h"
 #include "Behavioural/include/Direction.h"
 #include "Include/ToString.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl_Testbench.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl_Testbench.h	(revision 39)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl_Testbench.h	(revision 40)
@@ -11,4 +11,5 @@
  */
 
+#include "Behavioural/include/Environnement.h"
 #include "Behavioural/include/Vhdl.h"
 #include "Include/ToString.h"
@@ -39,4 +40,6 @@
     // -----[ fields ]----------------------------------------------------
   private   : const string     _name       ;
+  private   : const bool       _exhaustive ;
+
   private   : string           _clock_name ;
   private   : uint32_t         _num_cycle  ;
@@ -48,7 +51,9 @@
   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<bool>       _list_test;
   private   : list<string>     _list_port;
@@ -61,5 +66,6 @@
     
     // -----[ methods ]---------------------------------------------------
-  public    :                  Vhdl_Testbench              (string   name);
+  public    :                  Vhdl_Testbench              (string   name,
+							    bool     exhaustive=true);
   public    : virtual          ~Vhdl_Testbench             ();
 						           
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp	(revision 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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 39)
+++ 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;
   };
   
