Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl.cpp	(revision 43)
@@ -19,9 +19,10 @@
   {
     log_printf(FUNC,Counter,"vhdl","Begin");
+
     Vhdl * vhdl = new Vhdl (_name);
 
-    vhdl->set_library_work (_name + "_Pack");
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
 
-    vhdl_port        (vhdl);
     vhdl_declaration (vhdl);
     vhdl_body        (vhdl);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_port.cpp	(revision 42)
+++ 	(revision )
@@ -1,31 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Counter/include/Counter.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace counter {
-
-
-  void Counter::vhdl_port (Vhdl * & vhdl)
-  {
-    log_printf(FUNC,Counter,"vhdl_port","Begin");
-
-    _interfaces->set_port(vhdl);
-
-    log_printf(FUNC,Counter,"vhdl_port","End");
-  };
-
-}; // end namespace counter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 43)
@@ -114,7 +114,5 @@
 #if VHDL				       
   private : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl * & vhdl);
-  private : void     vhdl_type                 (Vhdl * & vhdl);
-  private : void     vhdl_signal               (Vhdl * & vhdl);
+  private : void     vhdl_declaration          (Vhdl * & vhdl);
   private : void     vhdl_body                 (Vhdl * & vhdl);
 #endif					       
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp	(revision 43)
@@ -20,10 +20,9 @@
     Vhdl * vhdl = new Vhdl (_name);
 
-    vhdl->set_library_work (_name + "_Pack");
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
 
-    vhdl_port   (vhdl);
-    vhdl_type   (vhdl);
-    vhdl_signal (vhdl);
-    vhdl_body   (vhdl);
+    vhdl_declaration (vhdl);
+    vhdl_body        (vhdl);
 
     vhdl->generate_file();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_port.cpp	(revision 42)
+++ 	(revision )
@@ -1,27 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  void RegisterFile_Monolithic::vhdl_port (Vhdl * & vhdl)
-  {
-    _interfaces->set_port(vhdl);
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile 
-}; // end namespace generic
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_signal.cpp	(revision 42)
+++ 	(revision )
@@ -1,27 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  void RegisterFile_Monolithic::vhdl_signal (Vhdl * & vhdl)
-  {
-    vhdl->set_signal ("reg_DATA", "Tregfile");
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile 
-}; // end namespace generic
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_type.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_type.cpp	(revision 42)
+++ 	(revision )
@@ -1,27 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
-
-namespace morpheo                    {
-namespace behavioural                {
-namespace generic                    {
-namespace registerfile               {
-namespace registerfile_monolithic    {
-
-  void RegisterFile_Monolithic::vhdl_type (Vhdl * & vhdl)
-  {
-    vhdl->set_type ("Tregfile", "array (" + toString(_param._nb_word-1) + " downto 0) of " + std_logic(_param._size_word));
-  };
-
-}; // end namespace registerfile_monolithic
-}; // end namespace registerfile 
-}; // end namespace generic
-}; // end namespace behavioural          
-}; // end namespace morpheo              
-#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 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 43)
@@ -110,5 +110,4 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl * & vhdl);
   private : void     vhdl_declaration          (Vhdl * & vhdl);
   private : void     vhdl_body                 (Vhdl * & vhdl);
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 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp	(revision 43)
@@ -23,7 +23,7 @@
     Vhdl * vhdl = new Vhdl (_name);
 
-    vhdl->set_library_work (_name + "_Pack");
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
 
-    vhdl_port        (vhdl);
     vhdl_declaration (vhdl);
     vhdl_body        (vhdl);
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 42)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h"
-
-namespace morpheo {
-namespace behavioural {
-namespace generic {
-namespace select {
-namespace select_priority_fixed {
-
-  void Select_Priority_Fixed::vhdl_port (Vhdl * & vhdl)
-  {
-    log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","Begin");
-
-    _interfaces->set_port(vhdl);
-
-   log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","End");
-  };
-
-}; // end namespace select_priority_fixed
-}; // end namespace select
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h	(revision 43)
@@ -103,5 +103,4 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl * & vhdl);
   private : void     vhdl_declaration          (Vhdl * & vhdl);
   private : void     vhdl_body                 (Vhdl * & vhdl);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl.cpp	(revision 43)
@@ -20,7 +20,7 @@
     Vhdl * vhdl = new Vhdl (_name);
 
-    vhdl->set_library_work (_name + "_Pack");
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
 
-    vhdl_port        (vhdl);
     vhdl_declaration (vhdl);
     vhdl_body        (vhdl);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_port.cpp	(revision 42)
+++ 	(revision )
@@ -1,26 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Shifter/include/Shifter.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace shifter {
-
-
-  void Shifter::vhdl_port (Vhdl * & vhdl)
-  {
-    _interfaces->set_port(vhdl);
-  };
-}; // end namespace shifter
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h	(revision 43)
@@ -240,5 +240,4 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl * & vhdl);
   private : void     vhdl_declaration          (Vhdl * & vhdl);
   private : void     vhdl_body                 (Vhdl * & vhdl);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl.cpp	(revision 43)
@@ -21,20 +21,16 @@
     log_printf(FUNC,Victim_Pseudo_LRU,"vhdl","Begin");
 
-    log_printf(TRACE,Victim_Pseudo_LRU,"vhdl","Construction of vhdl");
     Vhdl * vhdl = new Vhdl (_name);
 
-    log_printf(TRACE,Victim_Pseudo_LRU,"vhdl","Set library");
-    vhdl->set_library_work (_name + "_Pack");
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
 
-    log_printf(TRACE,Victim_Pseudo_LRU,"vhdl","Set port");
-    vhdl_port        (vhdl);
-    log_printf(TRACE,Victim_Pseudo_LRU,"vhdl","Set declaration");
     vhdl_declaration (vhdl);
-    log_printf(TRACE,Victim_Pseudo_LRU,"vhdl","Set body");
     vhdl_body        (vhdl);
-    log_printf(TRACE,Victim_Pseudo_LRU,"vhdl","Generate File");
+
     vhdl->generate_file();
 
     delete vhdl;
+
     log_printf(FUNC,Victim_Pseudo_LRU,"vhdl","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_port.cpp	(revision 42)
+++ 	(revision )
@@ -1,29 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace generic {
-namespace victim {
-namespace victim_pseudo_lru {
-
-
-  void Victim_Pseudo_LRU::vhdl_port (Vhdl * & vhdl)
-  {
-    _interfaces->set_port(vhdl);
-  };
-
-}; // end namespace victim_pseudo_lru
-}; // end namespace victim
-}; // end namespace generic
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest	(revision 43)
@@ -15,5 +15,5 @@
 
 #-----[ Variables ]----------------------------------------
-CFG_FILE			= configuration.cfg
+CFG_FILE_EXTENSION		= cfg
 
 OBJECTS      			= $(OBJECTS_COMMON)
@@ -45,51 +45,58 @@
 				@$(ECHO) "Generate configuration"
 				@													\
-				declare     NAME;											\
-				declare -ai MIN ;											\
-				declare -ai MAX ;											\
-				declare -a  STEP; 											\
-				declare -a  LINE; 											\
 				declare -i  CPT=0;											\
-				declare -ai PERIOD;											\
-				declare -a  RANGE;											\
-				declare -a  RANGE_LOCAL;										\
-				declare -a  SIZE;											\
-				PERIOD[0]=1;												\
+				for file in $$($(LS) *.$(CFG_FILE_EXTENSION) ); do							\
 																	\
-				while $(READ) line; do											\
-				        LINE=($$line);											\
+					declare     NAME;										\
+					declare -ai MIN ;										\
+					declare -ai MAX ;										\
+					declare -a  STEP; 										\
+					declare -a  LINE; 										\
+					declare -ai PERIOD;										\
+					declare -a  RANGE;										\
+					declare -a  RANGE_LOCAL;									\
+					declare -a  SIZE;										\
+					declare -i  IT=0; 										\
 																	\
-					if $(TEST) $$CPT -eq 0; then 									\
-						NAME=$${LINE[0]};									\
-					else												\
-						MIN[$$CPT]=$${LINE[0]};									\
-						MAX[$$CPT]=$${LINE[1]};									\
-						STEP[$$CPT]=$${LINE[2]};								\
-						RANGE[$$CPT]=$$($(DIR_SCRIPT)/range.sh $${LINE[0]} $${LINE[1]} $${LINE[2]});		\
-						RANGE_LOCAL=($${RANGE[$$CPT]});								\
-						SIZE[$$CPT]=$${#RANGE_LOCAL[*]};							\
-						PERIOD[$$CPT]=$$(($${PERIOD[$$(($$CPT-1))]}*$${SIZE[$$CPT]}));				\
-					fi;												\
+					PERIOD[0]=1;											\
 																	\
-					CPT=$$(($$CPT+1));										\
-				done < $(CFG_FILE);											\
+					while $(READ) line; do										\
+					        LINE=($$line);										\
 																	\
-				declare -i x;												\
-				declare -a DATA;											\
-				declare -ai ENUM_CONFIG=($$($(DIR_SCRIPT)/range.sh 0 $$(($${PERIOD[$$(($$CPT-1))]}-1))));		\
-				declare -ai ENUM_PARAM=($$($(DIR_SCRIPT)/range.sh 1 $${#MIN[*]}));            				\
+						if $(TEST) $$IT -eq 0; then 								\
+							NAME=$${LINE[0]};								\
+						else											\
+							MIN[$$IT]=$${LINE[0]};								\
+							MAX[$$IT]=$${LINE[1]};								\
+							STEP[$$IT]=$${LINE[2]};								\
+							RANGE[$$IT]=$$($(DIR_SCRIPT)/range.sh $${LINE[0]} $${LINE[1]} $${LINE[2]});	\
+							RANGE_LOCAL=($${RANGE[$$IT]});							\
+							SIZE[$$IT]=$${#RANGE_LOCAL[*]};							\
+							PERIOD[$$IT]=$$(($${PERIOD[$$(($$IT-1))]}*$${SIZE[$$IT]}));			\
+						fi;											\
 																	\
- 				$(ECHO) " * they are $${#MIN[*]} parameters";								\
- 				$(ECHO) " * generate $${PERIOD[$$(($$CPT-1))]} configurations";						\
+						IT=$$(($$IT+1));									\
+					done < $$file;											\
 																	\
-				for i in $${ENUM_CONFIG[*]}; do										\
-					x=$$i;												\
-					for j in $${ENUM_PARAM[*]}; do									\
-						RANGE_LOCAL=($${RANGE[$$j]});								\
-						DATA[$$j]="$${RANGE_LOCAL[$$((($$x % $${SIZE[$$j]})))]} ";				\
-						x=$$(($$x/$${SIZE[$$j]})); 								\
+					declare -i x;											\
+					declare -a DATA;										\
+					declare -ai ENUM_CONFIG=($$($(DIR_SCRIPT)/range.sh 0 $$(($${PERIOD[$$(($$IT-1))]}-1))));	\
+					declare -ai ENUM_PARAM=($$($(DIR_SCRIPT)/range.sh 1 $${#MIN[*]}));            			\
+																	\
+					$(ECHO) " * File : $$file";									\
+ 					$(ECHO) "   * They are $${#MIN[*]} parameters";							\
+ 					$(ECHO) "   * Generate $${PERIOD[$$(($$IT-1))]} configurations";				\
+																	\
+					for i in $${ENUM_CONFIG[*]}; do									\
+						x=$$i;											\
+						for j in $${ENUM_PARAM[*]}; do								\
+							RANGE_LOCAL=($${RANGE[$$j]});							\
+							DATA[$$j]="$${RANGE_LOCAL[$$((($$x % $${SIZE[$$j]})))]} ";			\
+							x=$$(($$x/$${SIZE[$$j]})); 							\
+						done;											\
+						$(ECHO) $${DATA[*]} > "$(DIR_CFG_GEN)/$${NAME}_$$CPT.cfg";				\
+						$(ECHO) "   - {$$CPT} $${DATA[*]}";							\
+						CPT=$$(($$CPT+1));									\
 					done;												\
-					$(ECHO) $${DATA[*]} > "$(DIR_CFG_GEN)/$${NAME}_$${i}.cfg";						\
-					$(ECHO) "  - {$$i} $${DATA[*]}";								\
 				done;
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps	(revision 43)
@@ -8,10 +8,18 @@
 # DIR_MORPHEO must be defined
 
+#ifndef Behavioural
+#include $(DIR_MORPHEO)/Behavioural/Makefile.deps
+#endif
+#
 Behavioural			= yes
 
 #-----[ Library ]------------------------------------------
-Behavioural_LIBRARY		= 	-lBehavioural
+Behavioural_LIBRARY		= 	-lBehavioural				
+
+#					$(Common_LIBRARY)
 
 Behavioural_DIR_LIBRARY		=	-L$(DIR_MORPHEO)/Behavioural/lib
+
+#					$(Common_DIR_LIBRARY)
 
 #-----[ Rules ]--------------------------------------------
@@ -19,5 +27,9 @@
 Behavioural_library		:
 				@$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural --makefile=Makefile 
+
+#				@$(MAKE) Common_library
 	
 Behavioural_library_clean	:
 				@$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural --makefile=Makefile clean
+
+#				@$(MAKE) Common_library_clean
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 43)
@@ -18,5 +18,5 @@
  					-DVHDL_TESTBENCH	\
  					-DVHDL_TESTBENCH_ASSERT	\
-					-DDEBUG=DEBUG_NONE
+					-DDEBUG=DEBUG_ALL
 
 #					-DCONFIGURATION  	\
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 42)
+++ 	(revision )
@@ -1,27 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
-
-namespace morpheo                    {
-namespace behavioural {
-@NAMESPACE_BEGIN
-
-//   void @COMPONENT::vhdl_port (Vhdl & vhdl)
-//   {
-//     log_printf(FUNC,@COMPONENT,"vhdl_port","Begin");
-
-//     _interfaces->set_port(vhdl);
-
-//     Log_printf(FUNC,@COMPONENT,"vhdl_port","End");
-//   };
-
-@NAMESPACE_END
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/config0.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/config0.cfg	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/config0.cfg	(revision 43)
@@ -0,0 +1,5 @@
+Branch_History_Table
+2	8	*2	# size_shifter      	
+2	64	*4	# nb_shifter        
+1	1	+1	# nb_prediction     
+1	1	+1	# nb_branch_complete
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/config1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/config1.cfg	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/config1.cfg	(revision 43)
@@ -0,0 +1,5 @@
+Branch_History_Table
+2	8	*2	# size_shifter      	
+2	64	*4	# nb_shifter        
+2	2	+1	# nb_prediction     
+2	2	+1	# nb_branch_complete
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/configuration.cfg	(revision 42)
+++ 	(revision )
@@ -1,5 +1,0 @@
-Branch_History_Table
-2	8	*2	# size_shifter      	
-2	64	*4	# nb_shifter        
-1	2	+1	# nb_prediction     
-1	2	+1	# nb_branch_complete
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Branch_History_Table.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Branch_History_Table.h	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Branch_History_Table.h	(revision 43)
@@ -119,7 +119,5 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl * & vhdl);
-  private : void     vhdl_type                 (Vhdl * & vhdl);
-  private : void     vhdl_signal               (Vhdl * & vhdl);
+  private : void     vhdl_declaration          (Vhdl * & vhdl);
   private : void     vhdl_body                 (Vhdl * & vhdl);
 #endif					       
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl.cpp	(revision 43)
@@ -23,12 +23,9 @@
     Vhdl * vhdl = new Vhdl (_name);
 
-    vhdl->set_library_work (_name + "_Pack");
-    vhdl->set_library_work (_name + "_RegisterFile_Pack");
-    vhdl->set_library_work (_name + "_Shifter_Pack");
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
 
-    vhdl_port   (vhdl);
-    vhdl_type   (vhdl);
-    vhdl_signal (vhdl);
-    vhdl_body   (vhdl);
+    vhdl_declaration (vhdl);
+    vhdl_body        (vhdl);
 
     vhdl->generate_file();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl_declaration.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl_declaration.cpp	(revision 43)
@@ -0,0 +1,30 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Branch_History_Table.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace stage_1_ifetch {
+namespace predictor {
+namespace meta_predictor {
+namespace two_level_branch_predictor {
+namespace branch_history_table {
+
+  void Branch_History_Table::vhdl_declaration (Vhdl * & vhdl)
+  {
+  };
+
+}; // end namespace branch_history_table
+}; // end namespace two_level_branch_predictor
+}; // end namespace meta_predictor
+}; // end namespace predictor
+}; // end namespace stage_1_ifetch
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl_port.cpp	(revision 42)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Branch_History_Table.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-namespace two_level_branch_predictor {
-namespace branch_history_table {
-
-
-  void Branch_History_Table::vhdl_port (Vhdl * & vhdl)
-  {
-    _interfaces->set_port(vhdl);
-  };
-
-}; // end namespace branch_history_table
-}; // end namespace two_level_branch_predictor
-}; // end namespace meta_predictor
-}; // end namespace predictor
-}; // end namespace stage_1_ifetch
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl_signal.cpp	(revision 42)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Branch_History_Table.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-namespace two_level_branch_predictor {
-namespace branch_history_table {
-
-  void Branch_History_Table::vhdl_signal (Vhdl * & vhdl)
-  {
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      vhdl->set_signal  ("signal_BRANCH_COMPLETE_"+toString(i)+"_HISTORY", _param._size_shifter);
-  };
-
-}; // end namespace branch_history_table
-}; // end namespace two_level_branch_predictor
-}; // end namespace meta_predictor
-}; // end namespace predictor
-}; // end namespace stage_1_ifetch
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl_type.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/src/Branch_History_Table_vhdl_type.cpp	(revision 42)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Branch_History_Table.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-namespace two_level_branch_predictor {
-namespace branch_history_table {
-
-
-  void Branch_History_Table::vhdl_type (Vhdl * & vhdl)
-  {
-  };
-
-}; // end namespace branch_history_table
-}; // end namespace two_level_branch_predictor
-}; // end namespace meta_predictor
-}; // end namespace predictor
-}; // end namespace stage_1_ifetch
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/configuration.cfg	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/configuration.cfg	(revision 43)
@@ -1,5 +1,5 @@
 Pattern_History_Table
-8	8	*2	# size_counter      	
-64	64	*4	# nb_counter        
-2	2	+1	# nb_prediction     
-2	2	+1	# nb_branch_complete
+2	8	*2	# size_counter      	
+2	64	*4	# nb_counter        
+1	2	+1	# nb_prediction     
+1	2	+1	# nb_branch_complete
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/src/Pattern_History_Table_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/src/Pattern_History_Table_vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/src/Pattern_History_Table_vhdl.cpp	(revision 43)
@@ -22,8 +22,9 @@
   {
     log_printf(FUNC,Pattern_History_Table,"vhdl","Begin");
+
     Vhdl * vhdl = new Vhdl (_name);
 
-    _interfaces->set_port(vhdl);
-    _component->vhdl_instance(vhdl);
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
 
     vhdl_declaration (vhdl);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/src/Pattern_History_Table_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/src/Pattern_History_Table_vhdl_declaration.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/src/Pattern_History_Table_vhdl_declaration.cpp	(revision 43)
@@ -0,0 +1,35 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Pattern_History_Table.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace stage_1_ifetch {
+namespace predictor {
+namespace meta_predictor {
+namespace two_level_branch_predictor {
+namespace pattern_history_table {
+
+
+  void Pattern_History_Table::vhdl_declaration (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Pattern_History_Table,"vhdl_declaration","Begin");
+
+    log_printf(FUNC,Pattern_History_Table,"vhdl_declaration","End");
+  };
+
+}; // end namespace pattern_history_table
+}; // end namespace two_level_branch_predictor
+}; // end namespace meta_predictor
+}; // end namespace predictor
+}; // end namespace stage_1_ifetch
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/src/Pattern_History_Table_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/src/Pattern_History_Table_vhdl_port.cpp	(revision 42)
+++ 	(revision )
@@ -1,37 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Pattern_History_Table.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-namespace two_level_branch_predictor {
-namespace pattern_history_table {
-
-
-//   void Pattern_History_Table::vhdl_port (Vhdl * & vhdl)
-//   {
-//     log_printf(FUNC,Pattern_History_Table,"vhdl_port","Begin");
-
-//     _interfaces->set_port(vhdl);
-
-//     log_printf(FUNC,Pattern_History_Table,"vhdl_port","End");
-//   };
-
-}; // end namespace pattern_history_table
-}; // end namespace two_level_branch_predictor
-}; // end namespace meta_predictor
-}; // end namespace predictor
-}; // end namespace stage_1_ifetch
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/src/Pattern_History_Table_vhdl_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/src/Pattern_History_Table_vhdl_signal.cpp	(revision 42)
+++ 	(revision )
@@ -1,35 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Pattern_History_Table.h"
-
-namespace morpheo {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-namespace two_level_branch_predictor {
-namespace pattern_history_table {
-
-
-  void Pattern_History_Table::vhdl_declaration (Vhdl * & vhdl)
-  {
-    log_printf(FUNC,Pattern_History_Table,"vhdl_declaration","Begin");
-
-    log_printf(FUNC,Pattern_History_Table,"vhdl_declaration","End");
-  };
-
-}; // end namespace pattern_history_table
-}; // end namespace two_level_branch_predictor
-}; // end namespace meta_predictor
-}; // end namespace predictor
-}; // end namespace stage_1_ifetch
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/config0.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/config0.cfg	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/config0.cfg	(revision 43)
@@ -0,0 +1,11 @@
+Two_Level_Branch_Predictor
+1	1	+1	# have_bht           
+8	8	+1	# bht_size_shifter   
+32	32	*2	# bht_nb_shifter     
+1	1	+1	# have_pht           
+8	8	+1	# pht_size_counter   
+32	32	*2	# pht_nb_counter     
+2	2	+1	# pht_size_address_share
+16	16	+1	# size_address      
+2	2	+1	# nb_prediction     
+2	2	+1	# nb_branch_complete
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/configuration.cfg	(revision 42)
+++ 	(revision )
@@ -1,11 +1,0 @@
-Two_Level_Branch_Predictor
-1	1	+1	# have_bht           
-8	8	+1	# bht_size_shifter   
-512	512	*2	# bht_nb_shifter     
-1	1	+1	# have_pht           
-8	8	+1	# pht_size_counter   
-512	512	*2	# pht_nb_counter     
-2	2	+1	# pht_size_address_share
-16	16	+1	# size_address      
-2	2	+1	# nb_prediction     
-2	2	+1	# nb_branch_complete
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/src/test.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/src/test.cpp	(revision 43)
@@ -137,5 +137,4 @@
     BRANCH_COMPLETE_VAL          [i]->write(0);
 
-  _Two_Level_Branch_Predictor->vhdl_testbench_label("Initialisation");
   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
 
@@ -157,5 +156,4 @@
       uint32_t nb_reg_by_group = (1<<(param._pht_size_address-size_address_shift));
 
-      _Two_Level_Branch_Predictor->vhdl_testbench_label("Init pht");
       cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Init pht" << endl;
       
@@ -186,5 +184,4 @@
       BRANCH_COMPLETE_BHT_HISTORY  [num_port_branch_complete]->write(0);
       
-      _Two_Level_Branch_Predictor->vhdl_testbench_label("Init bht");
       cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Init bht" << endl;
       
@@ -206,5 +203,4 @@
   BRANCH_COMPLETE_ADDRESS      [num_port_branch_complete]->write(address);
 
-  _Two_Level_Branch_Predictor->vhdl_testbench_label("Loop of Test");
   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl
        << " * predict_address : " << hex << address << dec << endl;
@@ -219,6 +215,4 @@
   for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
     {
-      _Two_Level_Branch_Predictor->vhdl_testbench_label("Iteration "+toString(iteration));
-
       cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Predict          : bht_history " << bht_history << " - pht_history " << pht_history[bht_history] << endl; 
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Two_Level_Branch_Predictor_Glue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Two_Level_Branch_Predictor_Glue.h	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Two_Level_Branch_Predictor_Glue.h	(revision 43)
@@ -129,5 +129,4 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl * & vhdl);
   private : void     vhdl_declaration          (Vhdl * & vhdl);
   private : void     vhdl_body                 (Vhdl * & vhdl);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/src/Two_Level_Branch_Predictor_Glue_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/src/Two_Level_Branch_Predictor_Glue_vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/src/Two_Level_Branch_Predictor_Glue_vhdl.cpp	(revision 43)
@@ -25,7 +25,7 @@
     Vhdl * vhdl = new Vhdl (_name);
 
-    vhdl->set_library_work (_name + "_Pack");
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
 
-    vhdl_port        (vhdl);
     vhdl_declaration (vhdl);
     vhdl_body        (vhdl);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/src/Two_Level_Branch_Predictor_Glue_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/src/Two_Level_Branch_Predictor_Glue_vhdl_port.cpp	(revision 42)
+++ 	(revision )
@@ -1,36 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Two_Level_Branch_Predictor_Glue.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-namespace two_level_branch_predictor {
-namespace two_level_branch_predictor_glue {
-
-
-  void Two_Level_Branch_Predictor_Glue::vhdl_port (Vhdl * & vhdl)
-  {
-    log_printf(FUNC,Two_Level_Branch_Predictor_Glue,"vhdl_port","Begin");
-
-    _interfaces->set_port(vhdl);
-
-    log_printf(FUNC,Two_Level_Branch_Predictor_Glue,"vhdl_port","End");
-  };
-
-}; // end namespace two_level_branch_predictor_glue
-}; // end namespace two_level_branch_predictor
-}; // end namespace meta_predictor
-}; // end namespace predictor
-}; // end namespace stage_1_ifetch
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Two_Level_Branch_Predictor.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Two_Level_Branch_Predictor.h	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Two_Level_Branch_Predictor.h	(revision 43)
@@ -135,5 +135,4 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl * & vhdl);
   private : void     vhdl_declaration          (Vhdl * & vhdl);
   private : void     vhdl_body                 (Vhdl * & vhdl);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_allocation.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_allocation.cpp	(revision 43)
@@ -89,12 +89,20 @@
     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
       {
-	 in_BRANCH_COMPLETE_VAL         [i] = new interface->set_signal_valack_in            ("val"        , VAL);		   
-	out_BRANCH_COMPLETE_ACK         [i] = new interface->set_signal_valack_out           ("ack"        , ACK);		   
-	 in_BRANCH_COMPLETE_ADDRESS     [i] = new interface->set_signal_in  <Taddress_t    > ("address"    , _param._size_address);
+	Interface_fifo * interface = _interfaces->set_interface("branch_complete_"+toString(i)
+#ifdef POSITION
+								, IN  
+								, EAST
+								, "Interface branch complete"
+#endif
+								);
+
+	 in_BRANCH_COMPLETE_VAL         [i] = interface->set_signal_valack_in            ("val"        , VAL);		   
+	out_BRANCH_COMPLETE_ACK         [i] = interface->set_signal_valack_out           ("ack"        , ACK);		   
+	 in_BRANCH_COMPLETE_ADDRESS     [i] = interface->set_signal_in  <Taddress_t    > ("address"    , _param._size_address);
 	if (_param._have_bht)
-	 in_BRANCH_COMPLETE_BHT_HISTORY [i] = new interface->set_signal_in  <Tbht_history_t> ("bht_history", _param._bht_size_shifter);
+	 in_BRANCH_COMPLETE_BHT_HISTORY [i] = interface->set_signal_in  <Tbht_history_t> ("bht_history", _param._bht_size_shifter);
 	if (_param._have_pht)
-	 in_BRANCH_COMPLETE_PHT_HISTORY [i] = new interface->set_signal_in  <Tpht_history_t> ("pht_history", _param._pht_size_counter);
-	 in_BRANCH_COMPLETE_DIRECTION   [i] = new interface->set_signal_in  <Tcontrol_t    > ("direction"  , 1);
+	 in_BRANCH_COMPLETE_PHT_HISTORY [i] = interface->set_signal_in  <Tpht_history_t> ("pht_history", _param._pht_size_counter);
+	 in_BRANCH_COMPLETE_DIRECTION   [i] = interface->set_signal_in  <Tcontrol_t    > ("direction"  , 1);
       }
 
@@ -111,5 +119,5 @@
 																						       ,_param_statistics
 #endif
-																						       ,*(_param._param_counter));
+																						       ,*(_param._param_branch_history_table));
 	
 	_component->set_component (component_Branch_History_Table->_component
@@ -132,5 +140,5 @@
 																							  ,_param_statistics
 #endif
-																							  ,*(_param._param_counter));
+																							  ,*(_param._param_pattern_history_table));
 	
 	_component->set_component (component_Pattern_History_Table->_component
@@ -152,7 +160,7 @@
 																										   ,_param_statistics
 #endif
-																										   ,*(_param._param_counter));
-    
-    _component->set_component (component_Pattern_History_Table->_component
+																										   ,*(_param._param_two_level_branch_predictor_glue));
+    
+    _component->set_component (component_Two_Level_Branch_Predictor_Glue->_component
 #ifdef POSITION
 			       , 50
@@ -164,8 +172,9 @@
     
     // ~~~~~[ Component - Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    
+
     // =====[ component_Branch_History_Table - Instanciation ]============
     if (_param._have_bht)
       {
+	cout << "GEU 1" << endl;
 #ifdef POSITION
 	_component->interface_map (_name+"_Branch_History_Table","",
@@ -205,4 +214,5 @@
     if (_param._have_pht)
       {
+	cout << "GEU 2" << endl;
 #ifdef POSITION
 	_component->interface_map (_name+"_Pattern_History_Table","",
@@ -224,5 +234,5 @@
 	    _component->port_map(_name+"_Pattern_History_Table","out_PREDICT_"+toString(i)+"_HISTORY", _name                                   ,"out_PREDICT_"+toString(i)+"_PHT_HISTORY");
 	  }
-	
+
 	for (uint32_t i=0; i<_param._nb_branch_complete; i++)
 	  {
@@ -240,4 +250,5 @@
 
     // =====[ component_Two_Level_Branch_Predictor_Glue - Instanciation ]=
+    cout << "GEU 3" << endl;
 #ifdef POSITION
 	_component->interface_map (_name+"_Two_Level_Branch_Predictor_Glue","",
@@ -247,33 +258,39 @@
 	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "in_NRESET", _name,"in_NRESET");
 
+	cout << "GEU 3.1" << endl;
 	for (uint32_t i=0; i<_param._nb_prediction; i++)
 	  {
+	    cout << "GEU 3.1.1" << endl;
 	if (_param._have_bht)
 	  {
-	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue",  "in_PREDICT_"+toString(i)+"_BHT_ACK"    , _name+"_Branch_History_Table" , "out_PREDICT_"+toString(i)+"_BHT_ACK"    );
-	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "out_PREDICT_"+toString(i)+"_BHT_ADDRESS", _name+"_Branch_History_Table" ,  "in_PREDICT_"+toString(i)+"_BHT_ADDRESS");
-	  }
+	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue",  "in_PREDICT_"+toString(i)+"_BHT_ACK"    , _name+"_Branch_History_Table" , "out_PREDICT_"+toString(i)+"_ACK"    );
+	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "out_PREDICT_"+toString(i)+"_BHT_ADDRESS", _name+"_Branch_History_Table" ,  "in_PREDICT_"+toString(i)+"_ADDRESS");
+	  }
+	cout << "GEU 3.1.2" << endl;
 	if (_param._have_pht)
 	  {
-	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue",  "in_PREDICT_"+toString(i)+"_PHT_ACK"    , _name+"_Pattern_History_Table", "out_PREDICT_"+toString(i)+"_PHT_ACK"    );
-	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "out_PREDICT_"+toString(i)+"_PHT_ADDRESS", _name+"_Pattern_History_Table",  "in_PREDICT_"+toString(i)+"_PHT_ADDRESS");
-	  }
+	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue",  "in_PREDICT_"+toString(i)+"_PHT_ACK"    , _name+"_Pattern_History_Table", "out_PREDICT_"+toString(i)+"_ACK"    );
+	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "out_PREDICT_"+toString(i)+"_PHT_ADDRESS", _name+"_Pattern_History_Table",  "in_PREDICT_"+toString(i)+"_ADDRESS");
+	  }
+	cout << "GEU 3.1.3" << endl;
 	if (_param._have_bht and _param._have_pht)
-	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "in_PREDICT_"+toString(i)+"_BHT_HISTORY" , _name                         , "in_PREDICT_"+toString(i)+"_BHT_HISTORY");
+	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "in_PREDICT_"+toString(i)+"_BHT_HISTORY" , _name                         ,"out_PREDICT_"+toString(i)+"_BHT_HISTORY");
+	cout << "GEU 3.1.4.1" << endl;
 	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue","out_PREDICT_"+toString(i)+"_ACK"         , _name                         ,"out_PREDICT_"+toString(i)+"_ACK");
         _component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "in_PREDICT_"+toString(i)+"_ADDRESS"     , _name                         , "in_PREDICT_"+toString(i)+"_ADDRESS");
 	  }
     
+	cout << "GEU 3.2" << endl;
     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
       {
 	if (_param._have_bht)
 	  {
-	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue",  "in_BRANCH_COMPLETE_"+toString(i)+"_BHT_ACK"    , _name+"_Branch_History_Table" , "out_BRANCH_COMPLETE_"+toString(i)+"_BHT_ACK"    );
-	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "out_BRANCH_COMPLETE_"+toString(i)+"_BHT_ADDRESS", _name+"_Branch_History_Table" ,  "in_BRANCH_COMPLETE_"+toString(i)+"_BHT_ADDRESS");
+	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue",  "in_BRANCH_COMPLETE_"+toString(i)+"_BHT_ACK"    , _name+"_Branch_History_Table" , "out_BRANCH_COMPLETE_"+toString(i)+"_ACK"    );
+	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "out_BRANCH_COMPLETE_"+toString(i)+"_BHT_ADDRESS", _name+"_Branch_History_Table" ,  "in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS");
 	  }
 	if (_param._have_pht)
 	  {
-	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue",  "in_BRANCH_COMPLETE_"+toString(i)+"_PHT_ACK"    , _name+"_Pattern_History_Table", "out_BRANCH_COMPLETE_"+toString(i)+"_PHT_ACK"    );
-	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "out_BRANCH_COMPLETE_"+toString(i)+"_PHT_ADDRESS", _name+"_Pattern_History_Table",  "in_BRANCH_COMPLETE_"+toString(i)+"_PHT_ADDRESS");
+	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue",  "in_BRANCH_COMPLETE_"+toString(i)+"_PHT_ACK"    , _name+"_Pattern_History_Table", "out_BRANCH_COMPLETE_"+toString(i)+"_ACK"    );
+	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "out_BRANCH_COMPLETE_"+toString(i)+"_PHT_ADDRESS", _name+"_Pattern_History_Table",  "in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS");
 	  }
 	if (_param._have_bht and _param._have_pht)
@@ -282,5 +299,5 @@
         _component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"     , _name                         , "in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS");
       }
-  
+    cout << "GEU 4" << endl;  
 #ifdef POSITION
     _component->generate_file();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl.cpp	(revision 43)
@@ -21,14 +21,10 @@
   {
     log_printf(FUNC,Two_Level_Branch_Predictor,"vhdl","Begin");
+
     Vhdl * vhdl = new Vhdl (_name);
 
-    vhdl->set_library_work (_name + "_Pack");
-    if (_param._have_bht)
-    vhdl->set_library_work (_name + "_Branch_History_Table_Pack");
-    if (_param._have_pht)
-    vhdl->set_library_work (_name + "_Pattern_History_Table_Pack");
-    vhdl->set_library_work (_name + "_Two_Level_Branch_Predictor_Glue_Pack");
-    
-    vhdl_port        (vhdl);
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
+
     vhdl_declaration (vhdl);
     vhdl_body        (vhdl);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl_body.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl_body.cpp	(revision 43)
@@ -21,107 +21,107 @@
     log_printf(FUNC,Two_Level_Branch_Predictor,"vhdl_body","Begin");
 
-    list<string> list_port_map;
+//     list<string> list_port_map;
 
-    if (_param._have_bht)
-      {
-	list_port_map.clear();
+//     if (_param._have_bht)
+//       {
+// 	list_port_map.clear();
 
-	vhdl.set_body_component_port_map (list_port_map,"in_CLOCK ","in_CLOCK ");
-	vhdl.set_body_component_port_map (list_port_map,"in_NRESET","in_NRESET");
+// 	vhdl.set_body_component_port_map (list_port_map,"in_CLOCK ","in_CLOCK ");
+// 	vhdl.set_body_component_port_map (list_port_map,"in_NRESET","in_NRESET");
 
-	for (uint32_t i=0; i<_param._nb_prediction; i++)
-	  {
-	    vhdl.set_body_component_port_map (list_port_map," in_PREDICT_VAL_"+toString(i)+"              ","    in_PREDICT_VAL_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_ACK_"+toString(i)+"              ","signal_PREDICT_BHT_ACK_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map," in_PREDICT_ADDRESS_"+toString(i)+"          ","signal_PREDICT_BHT_ADDRESS_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_HISTORY_"+toString(i)+"          ","signal_PREDICT_BHT_HISTORY_"+toString(i));
-	  }
+// 	for (uint32_t i=0; i<_param._nb_prediction; i++)
+// 	  {
+// 	    vhdl.set_body_component_port_map (list_port_map," in_PREDICT_VAL_"+toString(i)+"              ","    in_PREDICT_VAL_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_ACK_"+toString(i)+"              ","signal_PREDICT_BHT_ACK_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map," in_PREDICT_ADDRESS_"+toString(i)+"          ","signal_PREDICT_BHT_ADDRESS_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_HISTORY_"+toString(i)+"          ","signal_PREDICT_BHT_HISTORY_"+toString(i));
+// 	  }
 	
-	for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-	  {
-	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_VAL_"+toString(i)+"      ","    in_BRANCH_COMPLETE_VAL_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_ACK_"+toString(i)+"      ","signal_BRANCH_COMPLETE_BHT_ACK_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"  ","signal_BRANCH_COMPLETE_BHT_ADDRESS_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_HISTORY_"+toString(i)+"  ","    in_BRANCH_COMPLETE_BHT_HISTORY_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+"","    in_BRANCH_COMPLETE_DIRECTION_"+toString(i));
-	  }
+// 	for (uint32_t i=0; i<_param._nb_branch_complete; i++)
+// 	  {
+// 	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_VAL_"+toString(i)+"      ","    in_BRANCH_COMPLETE_VAL_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_ACK_"+toString(i)+"      ","signal_BRANCH_COMPLETE_BHT_ACK_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"  ","signal_BRANCH_COMPLETE_BHT_ADDRESS_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_HISTORY_"+toString(i)+"  ","    in_BRANCH_COMPLETE_BHT_HISTORY_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+"","    in_BRANCH_COMPLETE_DIRECTION_"+toString(i));
+// 	  }
 	
-	vhdl.set_body_component ("component_Branch_History_Table",_name+"_Branch_History_Table",list_port_map);
-      }
+// 	vhdl.set_body_component ("component_Branch_History_Table",_name+"_Branch_History_Table",list_port_map);
+//       }
 
-    if (_param._have_pht)
-      {
-	list_port_map.clear();
+//     if (_param._have_pht)
+//       {
+// 	list_port_map.clear();
 
-	vhdl.set_body_component_port_map (list_port_map,"in_CLOCK ","in_CLOCK ");
-	vhdl.set_body_component_port_map (list_port_map,"in_NRESET","in_NRESET");
+// 	vhdl.set_body_component_port_map (list_port_map,"in_CLOCK ","in_CLOCK ");
+// 	vhdl.set_body_component_port_map (list_port_map,"in_NRESET","in_NRESET");
 
-	for (uint32_t i=0; i<_param._nb_prediction; i++)
-	  {
-	    vhdl.set_body_component_port_map (list_port_map," in_PREDICT_VAL_"+toString(i)+"              ","    in_PREDICT_VAL_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_ACK_"+toString(i)+"              ","signal_PREDICT_PHT_ACK_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map," in_PREDICT_ADDRESS_"+toString(i)+"          ","signal_PREDICT_PHT_ADDRESS_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_HISTORY_"+toString(i)+"          ","   out_PREDICT_PHT_HISTORY_"+toString(i));
-	  }
+// 	for (uint32_t i=0; i<_param._nb_prediction; i++)
+// 	  {
+// 	    vhdl.set_body_component_port_map (list_port_map," in_PREDICT_VAL_"+toString(i)+"              ","    in_PREDICT_VAL_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_ACK_"+toString(i)+"              ","signal_PREDICT_PHT_ACK_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map," in_PREDICT_ADDRESS_"+toString(i)+"          ","signal_PREDICT_PHT_ADDRESS_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_HISTORY_"+toString(i)+"          ","   out_PREDICT_PHT_HISTORY_"+toString(i));
+// 	  }
 	
-	for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-	  {
-	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_VAL_"+toString(i)+"      ","    in_BRANCH_COMPLETE_VAL_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_ACK_"+toString(i)+"      ","signal_BRANCH_COMPLETE_PHT_ACK_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"  ","signal_BRANCH_COMPLETE_PHT_ADDRESS_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_HISTORY_"+toString(i)+"  ","    in_BRANCH_COMPLETE_PHT_HISTORY_"+toString(i));
-	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+"","    in_BRANCH_COMPLETE_DIRECTION_"+toString(i));
-	  }
+// 	for (uint32_t i=0; i<_param._nb_branch_complete; i++)
+// 	  {
+// 	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_VAL_"+toString(i)+"      ","    in_BRANCH_COMPLETE_VAL_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_ACK_"+toString(i)+"      ","signal_BRANCH_COMPLETE_PHT_ACK_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"  ","signal_BRANCH_COMPLETE_PHT_ADDRESS_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_HISTORY_"+toString(i)+"  ","    in_BRANCH_COMPLETE_PHT_HISTORY_"+toString(i));
+// 	    vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+"","    in_BRANCH_COMPLETE_DIRECTION_"+toString(i));
+// 	  }
 	
-	vhdl.set_body_component ("component_Pattern_History_Table",_name+"_Pattern_History_Table",list_port_map);
-      }
+// 	vhdl.set_body_component ("component_Pattern_History_Table",_name+"_Pattern_History_Table",list_port_map);
+//       }
 
-    list_port_map.clear();
+//     list_port_map.clear();
     
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	if (_param._have_bht)
-	  {
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_BHT_ACK_"+toString(i)+"            ","signal_PREDICT_BHT_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_BHT_ADDRESS_"+toString(i)+"        ","signal_PREDICT_BHT_ADDRESS_"+toString(i));
-	  }											   										  
-	if (_param._have_pht)								   							  
-	  {											   										  
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PHT_ACK_"+toString(i)+"            ","signal_PREDICT_PHT_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_PHT_ADDRESS_"+toString(i)+"        ","signal_PREDICT_PHT_ADDRESS_"+toString(i));
-	  }											   										  
-	if (_param._have_bht and _param._have_pht)						   					  
-	  {											   										  
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_BHT_HISTORY_"+toString(i)+"        ","signal_PREDICT_BHT_HISTORY_"+toString(i));
-	  }											   										  
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_ACK_"+toString(i)+"                ","   out_PREDICT_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_ADDRESS_"+toString(i)+"            ","    in_PREDICT_ADDRESS_"+toString(i));
-      }
+//     for (uint32_t i=0; i<_param._nb_prediction; i++)
+//       {
+// 	if (_param._have_bht)
+// 	  {
+// 	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_BHT_ACK_"+toString(i)+"            ","signal_PREDICT_BHT_ACK_"+toString(i));
+// 	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_BHT_ADDRESS_"+toString(i)+"        ","signal_PREDICT_BHT_ADDRESS_"+toString(i));
+// 	  }											   										  
+// 	if (_param._have_pht)								   							  
+// 	  {											   										  
+// 	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PHT_ACK_"+toString(i)+"            ","signal_PREDICT_PHT_ACK_"+toString(i));
+// 	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_PHT_ADDRESS_"+toString(i)+"        ","signal_PREDICT_PHT_ADDRESS_"+toString(i));
+// 	  }											   										  
+// 	if (_param._have_bht and _param._have_pht)						   					  
+// 	  {											   										  
+// 	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_BHT_HISTORY_"+toString(i)+"        ","signal_PREDICT_BHT_HISTORY_"+toString(i));
+// 	  }											   										  
+// 	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_ACK_"+toString(i)+"                ","   out_PREDICT_ACK_"+toString(i));
+// 	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_ADDRESS_"+toString(i)+"            ","    in_PREDICT_ADDRESS_"+toString(i));
+//       }
     
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_bht)
-	  {
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_BHT_ACK_"+toString(i)+"    ","signal_BRANCH_COMPLETE_BHT_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_BHT_ADDRESS_"+toString(i)+"","signal_BRANCH_COMPLETE_BHT_ADDRESS_"+toString(i));
-	  }										   					       				  
-	if (_param._have_pht)
-	  {
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_PHT_ACK_"+toString(i)+"    ","signal_BRANCH_COMPLETE_PHT_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_PHT_ADDRESS_"+toString(i)+"","signal_BRANCH_COMPLETE_PHT_ADDRESS_"+toString(i));
-	  }										   					       				  
-	if (_param._have_bht and _param._have_pht)
-	  {
-        vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_BHT_HISTORY_"+toString(i)+"","    in_BRANCH_COMPLETE_BHT_HISTORY_"+toString(i));
-	  }										   					       				  
-	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_ACK_"+toString(i)+"        ","   out_BRANCH_COMPLETE_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"    ","    in_BRANCH_COMPLETE_ADDRESS_"+toString(i));
-      }
+//     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
+//       {
+// 	if (_param._have_bht)
+// 	  {
+// 	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_BHT_ACK_"+toString(i)+"    ","signal_BRANCH_COMPLETE_BHT_ACK_"+toString(i));
+// 	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_BHT_ADDRESS_"+toString(i)+"","signal_BRANCH_COMPLETE_BHT_ADDRESS_"+toString(i));
+// 	  }										   					       				  
+// 	if (_param._have_pht)
+// 	  {
+// 	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_PHT_ACK_"+toString(i)+"    ","signal_BRANCH_COMPLETE_PHT_ACK_"+toString(i));
+// 	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_PHT_ADDRESS_"+toString(i)+"","signal_BRANCH_COMPLETE_PHT_ADDRESS_"+toString(i));
+// 	  }										   					       				  
+// 	if (_param._have_bht and _param._have_pht)
+// 	  {
+//         vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_BHT_HISTORY_"+toString(i)+"","    in_BRANCH_COMPLETE_BHT_HISTORY_"+toString(i));
+// 	  }										   					       				  
+// 	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_ACK_"+toString(i)+"        ","   out_BRANCH_COMPLETE_ACK_"+toString(i));
+// 	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"    ","    in_BRANCH_COMPLETE_ADDRESS_"+toString(i));
+//       }
 
-    vhdl.set_body_component ("component_Two_Level_Branch_Predictor_Glue",_name+"_Two_Level_Branch_Predictor_Glue",list_port_map);
+//     vhdl.set_body_component ("component_Two_Level_Branch_Predictor_Glue",_name+"_Two_Level_Branch_Predictor_Glue",list_port_map);
 
-    if (_param._have_bht)
-      for (uint32_t i=0; i<_param._nb_prediction; i++)
-	vhdl.set_body("out_PREDICT_BHT_HISTORY_"+toString(i)+" <= signal_PREDICT_BHT_HISTORY_"+toString(i)+";");
+//     if (_param._have_bht)
+//       for (uint32_t i=0; i<_param._nb_prediction; i++)
+// 	vhdl.set_body("out_PREDICT_BHT_HISTORY_"+toString(i)+" <= signal_PREDICT_BHT_HISTORY_"+toString(i)+";");
     
     log_printf(FUNC,Two_Level_Branch_Predictor,"vhdl_body","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl_port.cpp	(revision 42)
+++ 	(revision )
@@ -1,33 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Two_Level_Branch_Predictor.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-namespace two_level_branch_predictor {
-
-  void Two_Level_Branch_Predictor::vhdl_port (Vhdl * & vhdl)
-  {
-    log_printf(FUNC,Two_Level_Branch_Predictor,"vhdl_port","Begin");
-
-    _interfaces->set_port(vhdl);
-
-    log_printf(FUNC,Two_Level_Branch_Predictor,"vhdl_port","End");
-  };
-
-}; // end namespace two_level_branch_predictor
-}; // end namespace meta_predictor
-}; // end namespace predictor
-}; // end namespace stage_1_ifetch
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h	(revision 43)
@@ -16,4 +16,5 @@
 #include "Include/ErrorMorpheo.h"
 #include "Include/ToString.h"
+#include "Include/Debug.h"
 
 using namespace morpheo::behavioural::constant;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h	(revision 43)
@@ -14,4 +14,5 @@
 #include <list>
 #include "Include/ToString.h"
+#include "Include/Debug.h"
 
 using namespace std;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component.cpp	(revision 43)
@@ -13,23 +13,23 @@
   Component::Component  (void)
   {
-    log_printf(FUNC,Behavioural,"Component","Begin");
+    log_printf(FUNC,Behavioural,"Component::Component","Begin");
     _list_component = new list<Entity *>;
-    log_printf(FUNC,Behavioural,"Component","End");
+    log_printf(FUNC,Behavioural,"Component::Component","End");
   };
 
   Component::Component  (const Component & component)
   {
-    log_printf(FUNC,Behavioural,"Component (copy)","Begin");
+    log_printf(FUNC,Behavioural,"Component::Component (copy)","Begin");
     _entity         = component._entity        ;
     _list_component = component._list_component;
-    log_printf(FUNC,Behavioural,"Component (copy)","End");
+    log_printf(FUNC,Behavioural,"Component::Component (copy)","End");
   };
   
   Component::~Component ()
   {
-    log_printf(FUNC,Behavioural,"~Component","Begin");
+    log_printf(FUNC,Behavioural,"Component::~Component","Begin");
     delete _entity;
     delete _list_component;
-    log_printf(FUNC,Behavioural,"~Component","End");
+    log_printf(FUNC,Behavioural,"Component::~Component","End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_find_entity.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_find_entity.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_find_entity.cpp	(revision 43)
@@ -13,7 +13,10 @@
   Entity * Component::find_entity (string name)
   {
+    log_printf(FUNC,Behavioural,"Component::find_entity", "Begin");
+
+    Entity * _return = NULL;
 
     if (_entity->get_name() == name)
-      return _entity;
+      _return = _entity;
     else
       if (_list_component->empty()== false)
@@ -25,5 +28,5 @@
 	      if ((*i)->get_name() == name)
 		{
-		  return  *i;
+		  _return = *i;
 		  break;
 		}
@@ -32,5 +35,7 @@
 	}
 
-    return NULL;
+    log_printf(FUNC,Behavioural,"Component::find_entity", "End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_generate_file.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_generate_file.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_generate_file.cpp	(revision 43)
@@ -14,4 +14,6 @@
   void Component::generate_file (void)
   {
+    log_printf(FUNC,Behavioural,"Component::generate_file","Begin");
+
     try 
       {
@@ -27,4 +29,6 @@
 	throw (ErrorMorpheo ("Component \""+_entity->get_name()+"\" have a bad mapping : "+e.what()));
       }
+
+    log_printf(FUNC,Behavioural,"Component::generate_file","End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_get_component.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_get_component.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_get_component.cpp	(revision 43)
@@ -11,6 +11,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Component::get_component"
+
   string Component::get_component (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     uint32_t               depth          = 0;
     string                 separator      = "\n";
@@ -43,4 +48,6 @@
       }
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return text.str();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_get_entity.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_get_entity.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_get_entity.cpp	(revision 43)
@@ -11,8 +11,15 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Component::get_entity"
   string Component::get_entity (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     ostringstream text;
     text << *(_entity); 
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return text.str();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_interface_map.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_interface_map.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_interface_map.cpp	(revision 43)
@@ -12,4 +12,6 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Component::interface_map"
   void Component::interface_map (string component_src ,
 				 string port_src      ,
@@ -17,4 +19,6 @@
 				 string port_dest     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     // First entity 
     Entity * entity_dest = find_entity(component_dest);
@@ -53,5 +57,6 @@
       interface_src->interface_map(static_cast<void *>(entity_dest   ),
 				   static_cast<void *>(interface_dest));
-    
+  
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp	(revision 43)
@@ -11,4 +11,6 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Component::port_map"
   void Component::port_map (string component_src ,
 			    string port_src      ,
@@ -16,4 +18,6 @@
 			    string port_dest     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     string name_entity = _entity->get_name();
 
@@ -22,10 +26,10 @@
 
     if (entity_dest == NULL)
-      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with unknow component \""+component_dest+"\"."));
+      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", port map with unknow component \""+component_dest+"\"."));
 
     Signal * signal_dest = entity_dest->find_signal (port_dest);
 
     if (signal_dest == NULL)
-      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with component \""+component_dest+"\" and a unknow signal \""+port_dest+"\"."));
+      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", port map with component \""+component_dest+"\" and a unknow signal \""+port_dest+"\"."));
 
     // Second entity
@@ -33,14 +37,19 @@
 
     if (entity_src == NULL)
-      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with unknow component \""+component_src+"\"."));
+      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", port map with unknow component \""+component_src+"\"."));
 
     Signal * signal_src = entity_src->find_signal (port_src);
 
     if (signal_src == NULL)
-      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with component \""+component_src+"\" and a unknow signal \""+port_src+"\"."));
+      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", port map with component \""+component_src+"\" and a unknow signal \""+port_src+"\"."));
 
     // If all is ok, mapping
+    
+    //cout << " - " << entity_src->get_name() << "("<< signal_src->get_name() << ")" << "\t-> " << entity_dest->get_name() << "(" << signal_dest->get_name() << ")" << endl;
+
     signal_src ->link   (signal_dest);
-    signal_dest->mapping(signal_src );
+    //signal_dest->mapping(signal_src );
+    
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_print.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_print.cpp	(revision 43)
@@ -12,9 +12,16 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Component::operator<<"
   ostream& operator<< (ostream& output_stream,
 		       morpheo::behavioural::Component & x)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     output_stream << x.get_entity    () << endl;
     output_stream << x.get_component () << endl;
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    
     return output_stream;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_set_component.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_set_component.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_set_component.cpp	(revision 43)
@@ -11,4 +11,6 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Component::set_component"
   void Component::set_component (Component * component
 #ifdef POSITION
@@ -20,4 +22,6 @@
 				 )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     Entity * entity = component->_entity;
 
@@ -27,4 +31,6 @@
     entity->mapping( pos_x, pos_y, size_x, size_y);
 #endif
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_set_entity.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_set_entity.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_set_entity.cpp	(revision 43)
@@ -11,4 +11,6 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Component::set_entity"
   Entity * Component::set_entity (string        name   
 				  ,string        type   
@@ -18,4 +20,6 @@
 				  )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    
     Entity * entity = new Entity (name   
 				  ,type   
@@ -26,4 +30,6 @@
     _entity = entity;
     
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return entity;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_toXML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_toXML.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_toXML.cpp	(revision 43)
@@ -12,6 +12,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Component::toXML"
+
   XML Component::toXML (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     XML xml (_entity->get_name());
     
@@ -33,5 +38,7 @@
     xml.  balise_close      ();
     xml.balise_close        ();
-    
+  
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+  
     return xml;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_vhdl_instance.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_vhdl_instance.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_vhdl_instance.cpp	(revision 43)
@@ -12,6 +12,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Component::vhdl_instance"
   void Component::vhdl_instance (Vhdl * & vhdl)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     uint32_t             cpt = 0;
     map<Signal *,string> tab;
@@ -85,4 +89,5 @@
 	  }
       }
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Configuration_Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Configuration_Parameters.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Configuration_Parameters.cpp	(revision 43)
@@ -12,4 +12,6 @@
 namespace behavioural          {
     
+#undef  FUNCTION
+#define FUNCTION "Configuration_Parameters::Configuration_Parameters"
   Configuration_Parameters::Configuration_Parameters  (string   name   ,
 						       uint32_t value  ,
@@ -29,10 +31,17 @@
     _comment (comment      )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     if ((value<min) or (value>max))
       throw (ErrorMorpheo ("Parameters \""+name+"\" is out of bound : "+toString(value)+" not include in ["+toString(min)+":"+toString(max)+"]"));
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
     
+
+#undef  FUNCTION
+#define FUNCTION "Configuration_Parameters::~Configuration_Parameters"
   Configuration_Parameters::~Configuration_Parameters () 
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Configuration_Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Configuration_Parameters_print.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Configuration_Parameters_print.cpp	(revision 43)
@@ -13,6 +13,9 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Configuration_Parameters::print"
   string Configuration_Parameters::print (uint32_t depth)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     XML * xml = new XML (_name);
     
@@ -29,12 +32,16 @@
     xml->balise_close();
     
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     return xml->get_body(depth);
   };
   
+#undef  FUNCTION
+#define FUNCTION "Configuration_Parameters::operator<<"
   ostream& operator<< (ostream& output_stream,
 		       morpheo::behavioural::Configuration_Parameters & x)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     output_stream << x.print(0);
-
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     return output_stream;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_find_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_find_interface.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_find_interface.cpp	(revision 43)
@@ -11,7 +11,15 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::find_interface"
   Interface * Entity::find_interface (string name)
   {
-    return _interfaces->find_interface(name);
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    
+    Interface* _return = _interfaces->find_interface(name);
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_find_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_find_signal.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_find_signal.cpp	(revision 43)
@@ -11,12 +11,28 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::find_signal"
   Signal * Entity::find_signal (string name)
   {
-    return _interfaces->find_signal(name);
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    Signal * _return = _interfaces->find_signal(name);
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
+#undef  FUNCTION
+#define FUNCTION "Entity::find_signal"
   bool Entity::find_signal (Signal * signal)
   {
-    return _interfaces->find_signal(signal);
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    bool _return = _interfaces->find_signal(signal);
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_comment.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_comment.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_comment.cpp	(revision 43)
@@ -13,7 +13,12 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::get_comment"
   string Entity::get_comment (void)
   {
-    return _comment;
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = _comment;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_interfaces.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_interfaces.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_interfaces.cpp	(revision 43)
@@ -12,14 +12,23 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::get_interfaces"
   string Entity::get_interfaces (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     ostringstream text;
     text << *(_interfaces); 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     return text.str();
   };
 
+#undef  FUNCTION
+#define FUNCTION "Entity::get_interfaces_list"
   Interfaces * Entity::get_interfaces_list (void)
   {
-    return _interfaces; 
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    Interfaces * _return = _interfaces; 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_name.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_name.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_name.cpp	(revision 43)
@@ -12,7 +12,12 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::get_name"
   string Entity::get_name (void)
   {
-    return _name;
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = _name;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_type.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_type.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_get_type.cpp	(revision 43)
@@ -12,7 +12,13 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::get_type"
   string Entity::get_type (void)
   {
-    return _type;
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = _type;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_mapping.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_mapping.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_mapping.cpp	(revision 43)
@@ -13,4 +13,6 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::mapping"
   void Entity::mapping (uint32_t pos_x,
 			uint32_t pos_y,
@@ -18,4 +20,6 @@
 			uint32_t size_y )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     if (_is_map != false)
       throw (ErrorMorpheo ("Entity \""+_name+"\" is already mapped"));
@@ -27,4 +31,6 @@
     _map_pos_x  = pos_x ;
     _map_pos_y  = pos_y ;
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_print.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_print.cpp	(revision 43)
@@ -12,7 +12,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::operator<<"
   ostream& operator<< (ostream& output_stream,
 		       morpheo::behavioural::Entity & x)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+ 
 #ifdef POSITION
     output_stream << x._name + "\t"+x._type+"\t"+toString(x._schema) << endl;
@@ -22,4 +26,6 @@
 #endif
     output_stream << x.get_interfaces() << endl;
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     return output_stream;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_set_comment.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_set_comment.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_set_comment.cpp	(revision 43)
@@ -13,7 +13,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::set_comment"
   void Entity::set_comment (string comment)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _comment = _comment + comment;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_set_interfaces.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_set_interfaces.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_set_interfaces.cpp	(revision 43)
@@ -11,7 +11,12 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::set_interfaces"
   Interfaces * Entity::set_interfaces (void)
   {
-    return _interfaces;
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    Interfaces * _return = _interfaces;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_toXML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_toXML.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Entity_toXML.cpp	(revision 43)
@@ -12,6 +12,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Entity::toXML"
   XML Entity::toXML (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    
     XML xml (_name);
     
@@ -27,9 +31,15 @@
     xml.  balise_close      ();
     
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    
     return xml;
   };
 
+#undef  FUNCTION
+#define FUNCTION "Entity::toXML_mapping"
   XML Entity::toXML_mapping (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    
     if (_is_map != true)
       throw (ErrorMorpheo ("Entity \""+_name+"\" is never mapped"));
@@ -56,4 +66,6 @@
     xml.  balise_close      ();
     
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return xml;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_get_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_get_cycle.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_get_cycle.cpp	(revision 43)
@@ -13,13 +13,23 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Interface_fifo::get_cycle"
   uint32_t Interface_fifo::get_cycle (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    
+    uint32_t _return;
+
     if (_test_exhaustive == true)
-      return Interface::get_cycle();
+      _return = Interface::get_cycle();
+    else
+      if (_list_cycle->empty() == true)
+	_return = 0;
+      else
+	_return = _list_cycle->back();
 
-    if (_list_cycle->empty() == true)
-      return 0;
-    else
-      return _list_cycle->back();
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_clock.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_clock.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_clock.cpp	(revision 43)
@@ -13,6 +13,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Interface::"
   Signal * Interface::get_clock (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     Signal * clock = NULL;
     
@@ -35,4 +39,5 @@
       }
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     return clock;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_cycle.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_cycle.cpp	(revision 43)
@@ -13,7 +13,12 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Interface::get_cycle"
   uint32_t Interface::get_cycle (void)
   {
-    return _nb_cycle;
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    uint32_t _return = _nb_cycle;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_reset.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_reset.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_reset.cpp	(revision 43)
@@ -13,6 +13,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Interface::get_reset"
   Signal * Interface::get_reset (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     Signal * reset = NULL;
     
@@ -35,4 +39,6 @@
       }
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return reset;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp	(revision 43)
@@ -53,6 +53,11 @@
 #ifdef VHDL
 #  ifdef VHDL_TESTBENCH
+
+#undef  FUNCTION
+#define FUNCTION "Interface::get_signal"
   void Interface::get_signal (list<string> * & list_signal)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     if (not _list_signal->empty())
       {
@@ -65,11 +70,19 @@
 	  }
       }
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 #  endif
 #endif
 
+#undef  FUNCTION
+#define FUNCTION "Interface::get_signal_list"
   list<Signal *> * Interface::get_signal_list (void)
     {
-      return _list_signal;
+      log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+      list<Signal *> * _return = _list_signal;
+      log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+      return _return;
     }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_port_map.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_port_map.cpp	(revision 42)
+++ 	(revision )
@@ -1,27 +1,0 @@
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/include/Interface.h"
-
-
-namespace morpheo              {
-namespace behavioural          {
-
-//   void Interface::port_map (void * entity,
-// 			    void * interface)
-//   {
-//     log_printf(FUNC,Behavioural,"port_map","Begin");
-// #ifdef POSITION
-//     _is_map        = true     ;
-//     _entity_map    = entity   ;
-//     _interface_map = interface;
-// #endif
-//     log_printf(FUNC,Behavioural,"port_map","End");
-//   };
-
-}; // end namespace behavioural          
-}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp	(revision 43)
@@ -31,6 +31,10 @@
 #ifdef VHDL
 #  ifdef VHDL_TESTBENCH
+
+#undef  FUNCTION
+#define FUNCTION "Interface::set_signal"
   void Interface::set_signal (Vhdl * & vhdl)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     if (not _list_signal->empty())
       {
@@ -43,4 +47,5 @@
 	  }
       }
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 #  endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_find_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_find_interface.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_find_interface.cpp	(revision 43)
@@ -11,6 +11,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Interfaces::find_interface"
   Interface_fifo * Interfaces::find_interface (string name)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    Interface_fifo * _return = NULL;
     if (_list_interface->empty()== false)
       {
@@ -20,10 +25,15 @@
 	  {
 	    if ((*i)->get_name() == name)
-	      return (*i);
+	      {
+		_return = (*i);
+		break;
+	      }
 	    ++i;
 	  }
       }
-     
-    return NULL;
+    
+    log_printf(FUNC,Behavioural,FUNCTION,"End"); 
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_find_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_find_signal.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_find_signal.cpp	(revision 43)
@@ -11,6 +11,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Interfaces::find_signal"
   Signal * Interfaces::find_signal (string name)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    Signal * _return = NULL;
     if (_list_interface->empty()== false)
       {
@@ -23,5 +28,8 @@
 	    // Warning : Name of signal is uniq
 	    if (signal != NULL)
-	      return signal;
+	      {
+		_return = signal;
+		break;
+	      }
 
 	    ++i;
@@ -29,9 +37,16 @@
       }
      
-    return NULL;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
 
+#undef  FUNCTION
+#define FUNCTION "Interfaces::find_signal"
   bool Interfaces::find_signal (Signal * signal)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    bool _return = false;
+
     if (_list_interface->empty()== false)
       {
@@ -41,11 +56,15 @@
 	  {
 	    if ((*i)->find_signal(signal) == true)
-	      return true;
+	      {
+		_return = true;
+		break;
+	      }
 
 	    ++i;
 	  }
       }
-     
-    return false;
+  
+    log_printf(FUNC,Behavioural,FUNCTION,"End");   
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_clock.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_clock.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_clock.cpp	(revision 43)
@@ -13,6 +13,10 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Interfaces::get_clock"
   Signal * Interfaces::get_clock (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     Signal * clock = NULL;
     
@@ -37,5 +41,6 @@
     if (clock == NULL)
       throw ErrorMorpheo ("<Interfaces.get_clock> : no clock find.");
-    
+  
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");  
     return clock;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_cycle.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_cycle.cpp	(revision 43)
@@ -13,6 +13,9 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Interfaces::get_cycle"
   uint32_t Interfaces::get_cycle (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     uint32_t cycle = 0;
     
@@ -31,5 +34,6 @@
 	  }
       }
-    
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return cycle;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp	(revision 43)
@@ -12,6 +12,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Interfaces::get_interface"
   string Interfaces::get_interface (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     uint32_t               depth          = 0;
     string                 separator      = "\n";
@@ -44,10 +48,18 @@
       }
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    
     return text.str();
   };
 
+#undef  FUNCTION
+#define FUNCTION "Interfaces::get_interface_list"
   list<Interface_fifo*>* Interfaces::get_interface_list (void)
   {
-    return _list_interface;
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    list<Interface_fifo*>* _return =  _list_interface;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_reset.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_reset.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_reset.cpp	(revision 43)
@@ -13,6 +13,10 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Interfaces::get_reset"
   Signal * Interfaces::get_reset (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     Signal * reset = NULL;
     
@@ -38,4 +42,6 @@
       throw ErrorMorpheo ("<Interfaces.get_reset> : no reset find.");
     
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return reset;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_signal.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_signal.cpp	(revision 43)
@@ -14,6 +14,11 @@
 #ifdef VHDL
 #  ifdef VHDL_TESTBENCH
+
+#undef  FUNCTION
+#define FUNCTION "Interfaces::get_signal"
   void Interfaces::get_signal (list<string> * & list_signal)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     if (not _list_interface->empty())
       {
@@ -26,4 +31,5 @@
 	  }
       }
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 #  endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp	(revision 43)
@@ -12,8 +12,13 @@
 namespace behavioural          {
 
+
+#undef  FUNCTION
+#define FUNCTION "Interfaces::operator<<"
   ostream& operator<< (ostream& output_stream ,
 		       morpheo::behavioural::Interfaces & x)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     output_stream << x.get_interface () << endl;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     return output_stream;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp	(revision 43)
@@ -11,4 +11,6 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Interfaces::set_interface"
   Interface_fifo * Interfaces::set_interface (string         name        
 #ifdef POSITION
@@ -18,4 +20,6 @@
 					      )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    
     Interface_fifo * interface = new Interface_fifo (name
 #ifdef POSITION
@@ -27,17 +31,22 @@
     _list_interface->push_back (interface);
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
      return interface;
   };
 
 #ifdef POSITION
+#undef  FUNCTION
+#define FUNCTION "Interfaces::set_interface"
   Interface_fifo * Interfaces::set_interface (string         name        ,
-					 direction_t    direction   ,
-					 localisation_t localisation,
-					 string         comment     )
+					      direction_t    direction   ,
+					      localisation_t localisation,
+					      string         comment     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     Interface_fifo * interface = set_interface(name, direction, localisation);
     
     interface->set_comment (comment);
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     return interface;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp	(revision 43)
@@ -13,6 +13,9 @@
 
 #ifdef VHDL
+#undef  FUNCTION
+#define FUNCTION "Interfaces::set_port"
   void Interfaces::set_port (Vhdl * & vhdl)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     if (not _list_interface->empty())
       {
@@ -25,4 +28,5 @@
 	  }
       }
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_signal.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_signal.cpp	(revision 43)
@@ -14,6 +14,9 @@
 #ifdef VHDL
 #  ifdef VHDL_TESTBENCH
+#undef  FUNCTION
+#define FUNCTION "Interfaces::set_signal"
   void Interfaces::set_signal (Vhdl * & vhdl)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     if (not _list_interface->empty())
       {
@@ -26,4 +29,5 @@
 	  }
       }
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 #  endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp	(revision 43)
@@ -12,6 +12,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Interfaces::toXML"
   XML Interfaces::toXML (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     XML xml ("interfaces");
     
@@ -26,10 +30,15 @@
 	  }
       }
-     
+  
+    log_printf(FUNC,Behavioural,FUNCTION,"End");   
     return xml;
   };
 
+#undef  FUNCTION
+#define FUNCTION "Interfaces::toXML_mapping"
   XML Interfaces::toXML_mapping (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     XML xml ("interfaces");
     
@@ -44,5 +53,6 @@
 	  }
       }
-     
+  
+    log_printf(FUNC,Behavioural,FUNCTION,"End");   
     return xml;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters.cpp	(revision 43)
@@ -11,10 +11,18 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Parameters::Parameters"
   Parameters::Parameters  (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
+#undef  FUNCTION
+#define FUNCTION "Parameters::~Parameters"  
   Parameters::~Parameters () 
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters_Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters_Statistics.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters_Statistics.cpp	(revision 43)
@@ -13,12 +13,22 @@
 
 
+#undef  FUNCTION
+#define FUNCTION "Parameters_Statistics::Parameters_Statistics"
   Parameters_Statistics::Parameters_Statistics  (uint32_t   nb_cycle_before_begin,
 						 uint32_t   period_save          ):
     _nb_cycle_before_begin (nb_cycle_before_begin),
     _period_save           (period_save          )
-  {};
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+  };
 
+#undef  FUNCTION
+#define FUNCTION "Parameters_Statistics::~Parameters_Statistics"  
   Parameters_Statistics::~Parameters_Statistics () 
-  {};
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+  };
 
 }; // end namespace behavioural          
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters_test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters_test.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters_test.cpp	(revision 43)
@@ -12,10 +12,14 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Parameters::test"
   void Parameters::test (void)          
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     string msg = msg_error();
     
     if (msg.length() != 0)
       throw (ErrorMorpheo (msg));
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_clock.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_clock.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_clock.cpp	(revision 43)
@@ -13,11 +13,20 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::get_clock"
   Signal * Signal::get_clock (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    Signal * _return;
+
     if ((_presence_port == CLOCK_VHDL_YES) or
 	(_presence_port == CLOCK_VHDL_NO ))
-      return this;
+      _return = this;
     else
-      return NULL;
+      _return = NULL;
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_name.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_name.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_name.cpp	(revision 43)
@@ -12,7 +12,12 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::get_name"
   string Signal::get_name (void)
   {
-      return _name;
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = _name;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_name_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_name_vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_name_vhdl.cpp	(revision 43)
@@ -13,6 +13,9 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::get_name_vhdl"
   void Signal::get_name_vhdl (list<string> *& list_signal)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     if ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
 	(_presence_port == PORT_VHDL_YES_TESTBENCH_NO ) or
@@ -20,4 +23,5 @@
 	(_presence_port == RESET_VHDL_YES))
       list_signal->push_back(_name);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_reset.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_reset.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_reset.cpp	(revision 43)
@@ -13,6 +13,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::get_reset"
   Signal * Signal::get_reset (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    Signal * _return;
     if ((_presence_port == RESET_VHDL_YES) or
 	(_presence_port == RESET_VHDL_NO ))
@@ -21,8 +26,11 @@
 	  throw ErrorMorpheo ("<Signal.get_reset> : size of signal reset is more than one bit.");
 
-	return this;
+	_return = this;
       }
     else
-      return NULL;
+      _return = NULL;
+
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_reset_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_reset_cycle.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_reset_cycle.cpp	(revision 43)
@@ -13,6 +13,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::get_reset_cycle"
   uint32_t Signal::get_reset_cycle (bool active_low)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+ 
     uint32_t num = 0;
     uint32_t cpt = 0;
@@ -36,4 +40,6 @@
       }
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return num;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_signal_link.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_signal_link.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_signal_link.cpp	(revision 43)
@@ -12,7 +12,13 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::get_signal_link"
   Signal * Signal::get_signal_link (void)
   {
-      return _signal;
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    Signal * _return = _signal;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_size.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_size.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_size.cpp	(revision 43)
@@ -12,7 +12,13 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::get_size"
   uint32_t Signal::get_size (void)
   {
-      return _size;
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    uint32_t _return = _size;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_link.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_link.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_link.cpp	(revision 43)
@@ -12,6 +12,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::link"
   void Signal::link (Signal * signal)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     if (        _is_allocate == false)
       throw (ErrorMorpheo ("Signal \""+_name+"\", can't map with signal \""+        get_name()+"\", because it's not already allocate."));
@@ -33,13 +37,17 @@
     else
       if ((_direction == OUT) and (signal->_direction == OUT))
-	switch (_type_info)
-	  {
-	  case BOOL     : {(*(static_cast<sc_out <bool    > *>(_sc_signal))) (*(static_cast<sc_out <bool    > *>(signal->_sc_signal))); break;} 
-	  case UINT8_T  : {(*(static_cast<sc_out <uint8_t > *>(_sc_signal))) (*(static_cast<sc_out <uint8_t > *>(signal->_sc_signal))); break;} 
-	  case UINT16_T : {(*(static_cast<sc_out <uint16_t> *>(_sc_signal))) (*(static_cast<sc_out <uint16_t> *>(signal->_sc_signal))); break;}
-	  case UINT32_T : {(*(static_cast<sc_out <uint32_t> *>(_sc_signal))) (*(static_cast<sc_out <uint32_t> *>(signal->_sc_signal))); break;} 
-	  case UINT64_T : {(*(static_cast<sc_out <uint64_t> *>(_sc_signal))) (*(static_cast<sc_out <uint64_t> *>(signal->_sc_signal))); break;} 
-	  default       : {throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow.")); break;}
-	  }
+	{
+	  signal->_sc_signal_map = _sc_signal_map;
+
+	  switch (_type_info)
+	    {
+	    case BOOL     : {(*(static_cast<sc_out <bool    > *>(_sc_signal))) (*(static_cast<sc_out <bool    > *>(signal->_sc_signal))); break;} 
+	    case UINT8_T  : {(*(static_cast<sc_out <uint8_t > *>(_sc_signal))) (*(static_cast<sc_out <uint8_t > *>(signal->_sc_signal))); break;} 
+	    case UINT16_T : {(*(static_cast<sc_out <uint16_t> *>(_sc_signal))) (*(static_cast<sc_out <uint16_t> *>(signal->_sc_signal))); break;}
+	    case UINT32_T : {(*(static_cast<sc_out <uint32_t> *>(_sc_signal))) (*(static_cast<sc_out <uint32_t> *>(signal->_sc_signal))); break;} 
+	    case UINT64_T : {(*(static_cast<sc_out <uint64_t> *>(_sc_signal))) (*(static_cast<sc_out <uint64_t> *>(signal->_sc_signal))); break;} 
+	    default       : {throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow.")); break;}
+	    }
+	}
       else
 	if ((_direction == IN ) and (signal->_direction == OUT))
@@ -66,4 +74,6 @@
 	  else
 	    throw (ErrorMorpheo ("Signal \""+_name+"\" : unsupported direction to link."));
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_mapping.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_mapping.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_mapping.cpp	(revision 43)
@@ -12,11 +12,15 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::mapping"
   void Signal::mapping (Signal * signal)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     if (_is_map == true)
-      throw (ErrorMorpheo ("Signal \""+_name+"\", can't map, because it's already map."));
+      throw (ErrorMorpheo ("<Signal::mapping> Can't mapping signal \""+_name+"\" with \""+signal->get_name()+"\", because it's already map."));
     
     if (signal->_is_allocate == false)
-      throw (ErrorMorpheo ("Signal \""+_name+"\", can't map with signal \""+signal->get_name()+"\", because it's not already allocate."));
+      throw (ErrorMorpheo ("<Signal::mapping> Signal \""+_name+"\", can't map with signal \""+signal->get_name()+"\", because it's not already allocate."));
 
     if (_direction == OUT)
@@ -29,4 +33,5 @@
       }
     
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_presence_testbench.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_presence_testbench.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_presence_testbench.cpp	(revision 43)
@@ -12,10 +12,18 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::presence_vhdl"
   bool Signal::presence_vhdl (void)
   {
-    return ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
-	    (_presence_port == PORT_VHDL_NO_TESTBENCH_YES ) or
-	    (_presence_port == CLOCK_VHDL_YES             ) or
-	    (_presence_port == RESET_VHDL_YES             ) );
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    bool _return = ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
+		    (_presence_port == PORT_VHDL_NO_TESTBENCH_YES ) or
+		    (_presence_port == CLOCK_VHDL_YES             ) or
+		    (_presence_port == RESET_VHDL_YES             ) );
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_presence_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_presence_vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_presence_vhdl.cpp	(revision 43)
@@ -12,10 +12,16 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Signal::presence_vhdl"
   bool Signal::presence_vhdl (void)
   {
-    return ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
-	    (_presence_port == PORT_VHDL_YES_TESTBENCH_NO ) or
-	    (_presence_port == CLOCK_VHDL_YES             ) or
-	    (_presence_port == RESET_VHDL_YES             ) );
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    bool _return = ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or
+		    (_presence_port == PORT_VHDL_YES_TESTBENCH_NO ) or
+		    (_presence_port == CLOCK_VHDL_YES             ) or
+		    (_presence_port == RESET_VHDL_YES             ) );
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics.cpp	(revision 43)
@@ -13,4 +13,6 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Statistics::Statistics"
   Statistics::Statistics  (string                name                 ,
 			   Parameters_Statistics parameters_statistics):
@@ -18,10 +20,16 @@
     _parameters_statistics (parameters_statistics)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _nb_statistics  = 0;
     _period_current = 0;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
+#undef  FUNCTION
+#define FUNCTION "Statistics::~Statistics"
   Statistics::~Statistics ()
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");  
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_compute_cycle_xxx.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_compute_cycle_xxx.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_compute_cycle_xxx.cpp	(revision 43)
@@ -13,15 +13,30 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Statistics::compute_cycle_begin"
   uint32_t Statistics::compute_cycle_begin (uint32_t num_statistics)
   {
-    return _parameters_statistics._nb_cycle_before_begin + num_statistics*_parameters_statistics._period_save;
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    uint32_t _return = _parameters_statistics._nb_cycle_before_begin + num_statistics*_parameters_statistics._period_save;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    
+    return _return;
   };
 
+#undef  FUNCTION
+#define FUNCTION "Statistics::compute_cycle_end"
   uint32_t Statistics::compute_cycle_end   (uint32_t num_statistics, uint32_t nb_cycle)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    uint32_t _return;
     if (num_statistics == (_nb_statistics-1)) // Last ?
-      return compute_cycle_begin(num_statistics  ) + nb_cycle;
+      _return = compute_cycle_begin(num_statistics  ) + nb_cycle;
     else
-      return compute_cycle_begin(num_statistics+1) - 1;
+      _return = compute_cycle_begin(num_statistics+1) - 1;
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_generate_file.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_generate_file.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_generate_file.cpp	(revision 43)
@@ -17,6 +17,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Statistics::generate_file"
   void Statistics::generate_file(string stat)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     ostringstream filename;
     filename << _name << ".stat";
@@ -41,9 +45,17 @@
     
     file.close();
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   }
 
+#undef  FUNCTION
+#define FUNCTION "Statistics::generate_file"
   void Statistics::generate_file(void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     generate_file(print(0));
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_save.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_save.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_save.cpp	(revision 43)
@@ -16,7 +16,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Statistics::save"
   template <class Counters, class Parameters_Counters>
   void Statistics::save(Counters ** & counters, Parameters_Counters parameters)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     // Allocation of a new slot -> take param a first count
     Counters ** counters_tmp;
@@ -34,6 +38,7 @@
     counters = counters_tmp;
     _nb_statistics ++;
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
-
 
 }; // end namespace behavioural          
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_test_if_save.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_test_if_save.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_test_if_save.cpp	(revision 43)
@@ -16,7 +16,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Statistics::test_if_save"
   template <class Counters, class Parameters_Counters>
   void Statistics::test_if_save(Counters ** & counters, Parameters_Counters parameters)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     _period_current ++;
 
@@ -28,4 +32,6 @@
 	_period_current = 0;
       }
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl.cpp	(revision 43)
@@ -13,11 +13,19 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Vhdl::Vhdl"
   Vhdl::Vhdl  (string                name):
     _name   (name)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::~Vhdl"
   Vhdl::~Vhdl ()
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_direction_toString.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_direction_toString.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_direction_toString.cpp	(revision 43)
@@ -16,12 +16,20 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::direction_toString"
   string Vhdl::direction_toString (direction_t direction)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    string _return;
     switch (direction)
       {
-      case IN    : return "in    "; break;
-      case OUT   : return "out   "; break;
-      default    : return "      "; break;
+      case IN    : _return = "in    "; break;
+      case OUT   : _return = "out   "; break;
+      default    : _return = "      "; break;
       }
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_alias.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_alias.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_alias.cpp	(revision 43)
@@ -16,7 +16,13 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_alias"
   string Vhdl::get_alias (uint32_t depth)
   {
-    return get_list(_list_alias, depth, ";", true);
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = get_list(_list_alias, depth, ";", true);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_architecture.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_architecture.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_architecture.cpp	(revision 43)
@@ -16,8 +16,12 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_architecture"
   string Vhdl::get_architecture (uint32_t depth      ,
 				 string   name       ,
 				 string   entity_name)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     string        tab = string(depth,'\t');
     ostringstream text;
@@ -31,4 +35,6 @@
 	 << tab << "end " << name << ";"                                     << endl;
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return text.str();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_body.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_body.cpp	(revision 43)
@@ -16,7 +16,13 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_body"
   string Vhdl::get_body (uint32_t depth)
   {
-    return get_list(_list_body,depth,"",true);
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = get_list(_list_body,depth,"",true);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_component.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_component.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_component.cpp	(revision 43)
@@ -16,7 +16,11 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_component"
   string Vhdl::get_component(uint32_t depth,
 			     string   name)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     string        tab = string(depth,'\t');
     ostringstream text;
@@ -29,5 +33,6 @@
 	   << tab << "\t     );"                << endl;
     text << tab << "end component;"           << endl;
-    
+  
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     return text.str();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_entity.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_entity.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_entity.cpp	(revision 43)
@@ -16,7 +16,11 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_entity"
   string Vhdl::get_entity(uint32_t depth,
 			  string   name)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     string        tab = string(depth,'\t');
     ostringstream text;
@@ -32,4 +36,6 @@
     text << tab << "end " << name << ";"      << endl;
     
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+      
     return text.str();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_header.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_header.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_header.cpp	(revision 43)
@@ -16,7 +16,11 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_header"
   string Vhdl::get_header(uint32_t depth,
 			  string   filename)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     string        tab = string(depth,'\t');
     ostringstream text;
@@ -31,4 +35,6 @@
 	 << tab << "-------------------------------------------------------------------------------" << endl;
     
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return text.str();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_library_ieee.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_library_ieee.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_library_ieee.cpp	(revision 43)
@@ -16,6 +16,10 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_library_ieee"
   string Vhdl::get_library_ieee (uint32_t depth)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     string        tab = string(depth,'\t');
     ostringstream text;
@@ -32,4 +36,6 @@
          << tab << "--use ieee.std_logic_textio.all;"   << endl;
       
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return text.str();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_library_work.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_library_work.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_library_work.cpp	(revision 43)
@@ -16,6 +16,10 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_library_work"
   string Vhdl::get_library_work (uint32_t depth)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     list<string>::iterator i   = _list_library_work.begin();
     string                 tab = string(depth,'\t');
@@ -27,4 +31,6 @@
 	   << get_list(_list_library_work,depth,";",true);
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return text.str();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_list.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_list.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_list.cpp	(revision 43)
@@ -16,4 +16,6 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_list"
   string Vhdl::get_list (list<string> liste                ,
 			 uint32_t     depth                ,
@@ -21,4 +23,6 @@
 			 bool         last_separator       )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     list<string>::iterator i     = liste.begin();
     bool                   empty = liste.empty();
@@ -47,4 +51,6 @@
       }
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return text.str();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_package.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_package.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_package.cpp	(revision 43)
@@ -16,4 +16,6 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_package"
   string Vhdl::get_package(uint32_t depth       ,
 			   string   filename    ,
@@ -21,4 +23,6 @@
 			   string   entity_name )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     string        tab = string(depth,'\t');
     ostringstream text;
@@ -29,4 +33,6 @@
 	 << tab << get_component    (depth+1,entity_name)                 << endl
 	 << tab << "end " << package_name << ";"                          << endl;
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     
     return text.str();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_port.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_port.cpp	(revision 43)
@@ -16,7 +16,13 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_port"
   string Vhdl::get_port (uint32_t depth)
   {
-    return get_list (_list_port, depth, ";", false);    
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = get_list (_list_port, depth, ";", false);    
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_signal.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_signal.cpp	(revision 43)
@@ -16,7 +16,13 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_signal"
   string Vhdl::get_signal (uint32_t depth)
   {
-    return get_list (_list_signal, depth, ";", true);
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = get_list (_list_signal, depth, ";", true);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_type.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_type.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_type.cpp	(revision 43)
@@ -16,7 +16,13 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::get_type"
   string Vhdl::get_type (uint32_t depth)
   {
-    return get_list (_list_type, depth, ";", true);
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = get_list (_list_type, depth, ";", true);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_alias.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_alias.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_alias.cpp	(revision 43)
@@ -16,10 +16,14 @@
 namespace behavioural          {
   
-  void Vhdl::set_alias (string      name1                 ,
-			string      type1                 ,
-			string      name2                 ,
-			string      range2                )
+#undef  FUNCTION
+#define FUNCTION "Vhdl::set_alias"
+  void Vhdl::set_alias (string      name1 ,
+			string      type1 ,
+			string      name2 ,
+			string      range2)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_list(_list_alias, "alias "+ name1+"\t: "+type1+"\tis "+name2+"\t"+range2);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body.cpp	(revision 43)
@@ -16,7 +16,11 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::set_body"
   void Vhdl::set_body (string      text     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_list(_list_body, text);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component.cpp	(revision 43)
@@ -16,12 +16,18 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::set_body_component"
   void Vhdl::set_body_component (string         name_instance      ,
 				 string         name_component     ,
 				 list<string>   list_port_map      )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     set_body(name_instance + " : " + name_component);
     set_body("port map (");
     set_list(_list_body, get_list(list_port_map, 1, ",", false));
     set_body(");");
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component_port_map.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component_port_map.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component_port_map.cpp	(revision 43)
@@ -16,9 +16,13 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::set_body_component_port_map"
   void Vhdl::set_body_component_port_map (list<string> & list_port_map      ,
 					  string         name_port          ,
 					  string         name_signal        )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_list(list_port_map, name_port + "\t=>" + name_signal);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_constant.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_constant.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_constant.cpp	(revision 43)
@@ -16,9 +16,13 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::set_constant"
   void Vhdl::set_constant (string      name     ,
 			   string      type     ,
 			   string      init)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_list(_list_type, "constant "+ name+"\t: "+type+"\t:= "+init);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
@@ -27,5 +31,7 @@
 			   string      init)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_constant(name,std_logic(size),init);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
@@ -34,5 +40,7 @@
 			   uint32_t    init)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_constant(name,std_logic(size),std_logic_conv(size,init));
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_library_work.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_library_work.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_library_work.cpp	(revision 43)
@@ -16,7 +16,11 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::set_library_work"
   void Vhdl::set_library_work (string      package_name)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_list(_list_library_work, "use work."+ package_name + ".all");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_list.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_list.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_list.cpp	(revision 43)
@@ -16,8 +16,12 @@
 namespace behavioural          {
   
-  void Vhdl::set_list (list<string> & liste ,
-		       string         text  )
+#undef  FUNCTION
+#define FUNCTION "Vhdl::set_list"
+  void Vhdl::set_list (list<string> & liste,
+		       string         text )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     liste.push_back (text);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_port.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_port.cpp	(revision 43)
@@ -16,9 +16,13 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::set_port"
   void Vhdl::set_port (string      name     ,
 		       direction_t direction,
 		       string      type     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_list (_list_port, name + "\t: " + direction_toString(direction) + " " + type);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
@@ -27,5 +31,7 @@
 		       uint32_t    size     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_port(name,direction,std_logic(size));
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_signal.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_signal.cpp	(revision 43)
@@ -16,8 +16,13 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::set_signal"
+
   void Vhdl::set_signal (string      name     ,
 			 string      type     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_list(_list_signal, "signal "+ name + "\t: " + type);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
@@ -25,5 +30,7 @@
 			 uint32_t    size     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_signal(name,std_logic(size));
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   }
 
@@ -32,5 +39,7 @@
 			 string      init)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _list_signal.push_back ("signal "+ name+"\t: "+type+"\t:= "+init);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
@@ -39,5 +48,7 @@
 			 string      init     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_signal(name,std_logic(size),init);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   void Vhdl::set_signal (string      name     ,
@@ -45,5 +56,7 @@
 			 uint32_t    init     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_signal(name,std_logic(size),std_logic_conv(size,init));
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_type.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_type.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_type.cpp	(revision 43)
@@ -16,8 +16,12 @@
 namespace behavioural          {
   
+#undef  FUNCTION
+#define FUNCTION "Vhdl::set_type"
   void Vhdl::set_type (string      name     ,
 		       string      type     )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     set_list(_list_type, "type "+ name + "\tis " + type);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
   
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp	(revision 43)
@@ -14,6 +14,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "Vhdl::std_logic"
   string std_logic (uint32_t size)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     string type;
 
@@ -23,9 +27,15 @@
       type = "std_logic_vector(" + toString(size-1) + " downto 0)";
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return type;
   };
 
+#undef  FUNCTION
+#define FUNCTION "Vhdl::std_logic_conv"
   string std_logic_conv (uint32_t size, string value)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     string conv;
 
@@ -35,4 +45,6 @@
       conv = "conv_std_logic_vector("+value+","+toString(size)+")";
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return conv;
   };
@@ -40,9 +52,16 @@
   string std_logic_conv (uint32_t size, uint32_t value)
   {
-    return std_logic_conv(size,toString(value));
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = std_logic_conv(size,toString(value));
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
+#undef  FUNCTION
+#define FUNCTION "Vhdl::std_logic_range"
   string std_logic_range (uint32_t max, uint32_t min)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     string type;
 
@@ -52,4 +71,6 @@
       type = "("+toString(max)+" downto "+toString(min)+")";
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
     return type;
   };
@@ -57,13 +78,27 @@
   string std_logic_range (uint32_t size)
   {
-    return std_logic_range(size-1,0);
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = std_logic_range(size-1,0);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   }
 
+#undef  FUNCTION
+#define FUNCTION "Vhdl::std_logic_others"
   string std_logic_others (uint32_t size, uint32_t cst  )
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    string _return;
+
     if (size < 2)
-      return "'"+toString(cst)+"'";
+      _return = "'"+toString(cst)+"'";
     else
-      return "(others => '"+toString(cst)+"')";
+      _return = "(others => '"+toString(cst)+"')";
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   }
 }; // end namespace behavioural          
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML.cpp	(revision 43)
@@ -11,12 +11,20 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::XML"
   XML::XML  (string name) :
     _name (name)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _filename_extension="xml";
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
+#undef  FUNCTION
+#define FUNCTION "XML::~XML"
   XML::~XML () 
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_attribut.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_attribut.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_attribut.cpp	(revision 43)
@@ -11,7 +11,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::attribut"
   bool XML::attribut (string name, string value)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _body += " "+name+"=\""+value+"\"";
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     
     return true;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_close.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_close.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_close.cpp	(revision 43)
@@ -11,6 +11,9 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::balise_close"
   bool XML::balise_close ()
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     string name=*(_list_balise_name.begin());
 
@@ -18,4 +21,5 @@
 
     _body += indent()+"</"+name+">\n";
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
 
     return true;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_open.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_open.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_open.cpp	(revision 43)
@@ -11,8 +11,18 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::balise_open"
   bool XML::balise_open (string name)
   {
-    if (not balise_open_begin(name)) return false;
-    return  balise_open_end  ();
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
+    bool _return;
+    if (not balise_open_begin(name)) 
+      _return = false;
+    else
+      _return = balise_open_end  ();
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_open_begin.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_open_begin.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_open_begin.cpp	(revision 43)
@@ -11,9 +11,15 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::balise_open_begin"
   bool XML::balise_open_begin (string name)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     _body += indent() + "<"+name;
 
     _list_balise_name.push_front(name);
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
 
     return true;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_open_end.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_open_end.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_balise_open_end.cpp	(revision 43)
@@ -11,7 +11,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::balise_open_end"
   bool XML::balise_open_end (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _body += " >\n";
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
 
     return true;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_comment.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_comment.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_comment.cpp	(revision 43)
@@ -11,7 +11,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::comment"
   bool XML::comment (string texte)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _body+=indent()+"<!-- "+texte+" -->\n";
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
 
     return true;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_depth.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_depth.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_depth.cpp	(revision 43)
@@ -11,7 +11,13 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::depth"
   uint32_t XML::depth (void)
   {
-    return _list_balise_name.size();
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    uint32_t _return = _list_balise_name.size();
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_filename_extension.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_filename_extension.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_filename_extension.cpp	(revision 43)
@@ -13,7 +13,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::filename_extension"
   void XML::filename_extension (string extension)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _filename_extension = extension;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_generate_file.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_generate_file.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_generate_file.cpp	(revision 43)
@@ -13,6 +13,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::generate_file"
   void XML::generate_file (string encoding)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     header (encoding);
 
@@ -28,9 +32,13 @@
 
     file.close();
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
   void XML::generate_file (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     generate_file("UTF-8");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_get_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_get_body.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_get_body.cpp	(revision 43)
@@ -11,6 +11,10 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::get_body"
   string XML::get_body (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     return _body;
   };
@@ -18,4 +22,6 @@
   string XML::get_body (uint32_t depth)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     string body       = _body;
     string tabulation = indent(depth);
@@ -25,4 +31,5 @@
       body.insert(++pos,tabulation);
 
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     return body;
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_header.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_header.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_header.cpp	(revision 43)
@@ -11,7 +11,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::header"
   void XML::header (string encoding)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _body = "<?xml version=\"1.0\" encoding=\""+encoding+"\" ?>\n" + _body;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_indent.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_indent.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_indent.cpp	(revision 43)
@@ -11,12 +11,22 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::indent"
   string XML::indent (uint32_t depth)
   {
-    return string(depth,'\t');
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = string(depth,'\t');
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
   string XML::indent (void)
   {
-    return indent(depth());
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string _return = indent(depth());
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp	(revision 43)
@@ -11,8 +11,12 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::insert_XML"
   bool XML::insert_XML (XML xml)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     //return text (xml.get_body());
     _body += xml.get_body(depth());
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
 
     return true;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_singleton.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_singleton.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_singleton.cpp	(revision 43)
@@ -11,8 +11,19 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::singleton"
   bool XML::singleton (string name)
   {
-    if (not singleton_begin(name)) return false;
-    return  singleton_end  ();
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    
+    bool _return;
+
+    if (not singleton_begin(name)) 
+      _return = false;
+    else
+      _return = singleton_end  ();
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+    return _return;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_singleton_begin.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_singleton_begin.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_singleton_begin.cpp	(revision 43)
@@ -11,7 +11,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::singleton_begin"
   bool XML::singleton_begin (string name)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _body += indent() + "<"+name+" ";
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
 
     return true;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_singleton_end.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_singleton_end.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_singleton_end.cpp	(revision 43)
@@ -11,7 +11,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::singleton_end"
   bool XML::singleton_end (void)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _body+=" />\n";
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
     
     return true;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_text.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_text.cpp	(revision 42)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_text.cpp	(revision 43)
@@ -11,7 +11,11 @@
 namespace behavioural          {
 
+#undef  FUNCTION
+#define FUNCTION "XML::text"
   bool XML::text (string text)
   {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     _body += indent()+text+"\n";
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
 
     return true;
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/Address.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/Address.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/Address.h	(revision 43)
@@ -0,0 +1,37 @@
+#ifndef morpheo_Address
+#define morpheo_Address
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+namespace morpheo              {
+
+  // get_tag, get_index, get_offset ...............
+  template <typename T>
+  T get_tag    (T value, uint32_t size_tag, uint32_t size_index, uint32_t size_offset) 
+  {
+    const T mask = gen_mask<T>(size_tag   ); 
+    return (value >> (size_index+size_offset)) & mask;
+  }
+  
+  template <typename T>
+  T get_index  (T value, uint32_t size_tag, uint32_t size_index, uint32_t size_offset) 
+  {
+    const T mask = gen_mask<T>(size_index ); 
+    return (value >> (           size_offset)) & mask;
+  }
+  
+  template <typename T>
+  T get_offset (T value, uint32_t size_tag, uint32_t size_index, uint32_t size_offset) 
+  {
+    const T mask = gen_mask<T>(size_offset); 
+    return (value                            ) & mask;
+  }
+
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/Average.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/Average.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/Average.h	(revision 43)
@@ -0,0 +1,20 @@
+#ifndef morpheo_Average
+#define morpheo_Average
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+namespace morpheo              {
+
+  inline double average (double   val, double   val_max) {return ((val_max == 0)?0:(val/val_max));}
+  inline double average (uint32_t val, double   val_max) {return (average(static_cast<double>(val),                    val_max ));}
+  inline double average (double   val, uint32_t val_max) {return (average(                    val ,static_cast<double>(val_max)));}
+  inline double average (uint32_t val, uint32_t val_max) {return (average(static_cast<double>(val),static_cast<double>(val_max)));}
+  
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/BitManipulation.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/BitManipulation.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/BitManipulation.h	(revision 43)
@@ -0,0 +1,160 @@
+#ifndef morpheo_BitManipulation
+#define morpheo_BitManipulation
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <stdint.h>
+#include <iostream>
+using namespace std;
+
+namespace morpheo              {
+
+  // gen_mask .....................................
+
+  template <typename T>
+  T gen_mask       (uint32_t size) 
+  { 
+    T mask = 0; 
+    for (uint32_t i=0; i<size; i++)
+      {
+	mask <<= 1;
+	mask  |= 1;
+      }
+    return mask;
+  };
+
+  // shift_left_logic, shift_right_logic ..........
+  template <typename T>
+  T shift_logic_left (uint32_t size, uint32_t data, uint32_t value)  
+  {
+    T mask = gen_mask<T> (size);
+
+    return (mask & ((mask & data) << value));
+  }
+
+  template <typename T>
+  T shift_logic_right (uint32_t size, uint32_t data, uint32_t value)  
+  {
+    T mask = gen_mask<T> (size);
+
+    return (mask & ((mask & data) >> value));
+  }
+
+  // shift_logic ..................................
+  template <typename T>
+  T shift_logic      (uint32_t size, uint32_t data, uint32_t value, bool is_direction_left)
+  {
+    if (is_direction_left == true)
+      return shift_logic_left  <T> (size, data, value);
+    else
+      return shift_logic_right <T> (size, data, value);
+  }
+
+  // shift_left_arithmetic, shift_right_arithmetic 
+  template <typename T>
+  T shift_arithmetic_left (uint32_t size, uint32_t data, uint32_t value)  
+  {
+    bool carry = (data&1) != 0;
+
+    if (carry == false)
+      return shift_logic_left <T> (size,data,value);
+    else
+      {
+	if (value > size)
+	  return gen_mask<T> (size);
+
+	T mask = gen_mask<T> (value);
+	return shift_logic_left <T> (size,data,value) | mask;
+      }
+  }
+
+
+  template <typename T>
+  T shift_arithmetic_right (uint32_t size, uint32_t data, uint32_t value)  
+  {
+    bool carry = (data&(1<<(size-1))) != 0;
+
+    if (carry == false)
+      return shift_logic_right <T> (size,data,value);
+    else
+      {
+	if (value > size)
+	  return gen_mask<T> (size);
+	
+	T mask = gen_mask<T> (value) << (size-value);
+	return ((shift_logic_right <T> (size,data,value)) | mask);
+      }
+  }
+
+  // shift_arithmetic .............................
+  template <typename T>
+  T shift_arithmetic      (uint32_t size, uint32_t data, uint32_t value, bool is_direction_left)
+  {
+    if (is_direction_left == true)
+      return shift_arithmetic_left  <T> (size, data, value);
+    else
+      return shift_arithmetic_right <T> (size, data, value);
+  }
+
+  // shift ........................................
+  template <typename T>
+  T shift            (uint32_t size, uint32_t data, uint32_t value, bool is_direction_left, bool is_shift_arithmetic)
+  {
+    if (is_shift_arithmetic == true)
+      return shift_arithmetic <T> (size, data, value, is_direction_left);
+    else
+      return shift_logic      <T> (size, data, value, is_direction_left);
+  }
+
+  // rotate_left, rotate_right ....................
+
+  template <typename T>
+  T rotate_left    (uint32_t size, uint32_t data, uint32_t value)  
+  {
+    T mask        = gen_mask<T> (size);
+    T rotate_mask = gen_mask<T> (value);
+    T rotate      = rotate_mask & shift_logic_right<T>(size,data,size-value);
+    return (mask & (shift_logic_left <T> (size, data, value) | rotate));
+  }
+
+  template <typename T>
+  T rotate_right    (uint32_t size, uint32_t data, uint32_t value)  
+  {
+    T mask        = gen_mask<T> (size);
+    T rotate_mask = gen_mask<T> (value);
+    T rotate      = shift_logic_left <T> (size,rotate_mask & data,size-value);
+    return (mask & (shift_logic_right<T> (size, data, value) | rotate));
+  }
+
+  // rotate .......................................
+  template <typename T>
+  T rotate         (uint32_t size, uint32_t data, uint32_t value, bool is_direction_left)  
+  {
+    if (is_direction_left == true)
+      return rotate_left  <T> (size, data, value);
+    else
+      return rotate_right <T> (size, data, value);
+  }
+
+  // range ........................................
+  template <typename T>
+  T range          (uint32_t size, uint32_t data, uint32_t index_max, uint32_t index_min)  
+  {
+    return gen_mask<T>(index_max-index_min+1) & shift_logic_left<T> (size, data, index_min);
+  }
+
+  template <typename T>
+  T range          (uint32_t size, uint32_t data, uint32_t nb_bits)  
+  {
+    return gen_mask<T>(nb_bits) & data;
+  }
+
+
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/ChangeCase.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/ChangeCase.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/ChangeCase.h	(revision 43)
@@ -0,0 +1,42 @@
+#ifndef morpheo_changecase
+#define morpheo_changecase
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <string>
+#include <stdint.h>
+
+using namespace std;
+
+namespace morpheo              {
+  
+  void UpperCase(string& S)
+  {
+    uint32_t n = S.size();
+    for (uint32_t j = 0; j < n; j++)
+      {
+	char sj = S[j];
+	if (sj >= 'a' && sj <= 'z')
+	  S[j] = static_cast<char>(sj - ('a' - 'A'));
+      }
+  }
+  
+  void LowerCase(string& S)
+  {
+    uint32_t n = S.size();
+    for (uint32_t j = 0; j < n; j++)
+      {
+	char sj = S[j];
+	if (sj >= 'A' && sj <= 'Z')
+	  S[j] = static_cast<char>(sj + ('a' - 'A'));
+      }
+  }
+  
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/Debug.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/Debug.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/Debug.h	(revision 43)
@@ -0,0 +1,73 @@
+#ifndef DEBUG_H
+#define DEBUG_H
+
+#include "Behavioural/include/Debug_component.h"
+#include <stdio.h>
+#include <string.h>
+#include <iostream>
+#include <sstream>
+#include <string>
+using namespace std;
+
+// Debug's Level :
+//  * None    : print elementary information
+//  * Info    : print basic information
+//  * Trace   : trace internal variable
+//  * Func    : trace call and return function
+//  * All     : print all information
+
+enum _debug_verbosity 
+  {
+    DEBUG_NONE ,
+    DEBUG_INFO ,
+    DEBUG_TRACE,
+    DEBUG_FUNC ,
+    DEBUG_ALL
+  };
+
+#ifdef DEBUG
+//Debug
+
+#  define log_printf(level, component, func, str... )                   \
+do                                                                      \
+{                                                                       \
+    if ( (DEBUG == DEBUG_ALL) or                                        \
+         (( DEBUG_ ## level     <= DEBUG) and                           \
+          ( DEBUG_ ## component == true )) )                            \
+      {                                                                 \
+        if (DEBUG >= DEBUG_ALL )                                        \
+          {                                                             \
+            switch (DEBUG_ ## level)                                    \
+            {                                                           \
+	    case DEBUG_NONE  : fprintf(stdout,"(none       ) "); break; \
+	    case DEBUG_INFO  : fprintf(stdout,"(information) "); break; \
+	    case DEBUG_TRACE : fprintf(stdout,"(trace      ) "); break; \
+	    case DEBUG_FUNC  : fprintf(stdout,"(function   ) "); break; \
+	    case DEBUG_ALL   : fprintf(stdout,"(all        ) "); break; \
+	    default          : fprintf(stdout,"(undefine   ) "); break; \
+	    }                                                           \
+          }                                                             \
+        fprintf(stdout,"In file %s, ",__FILE__);                        \
+        fprintf(stdout,"at line %d, ",__LINE__);                        \
+        if (DEBUG >= DEBUG_FUNC)                                        \
+          {                                                             \
+            fprintf(stdout,"in function \"%s\" ",func);                 \
+          }                                                             \
+        fprintf(stdout,": ");                                           \
+        fprintf(stdout,str);                                            \
+        fprintf(stdout,"\n");                                           \
+        fflush (stdout);                                                \
+      }                                                                 \
+} while(0)
+
+#else
+// No debug
+
+#  define log_printf(level, component, func, str... )                                 \
+do                                                                                    \
+{                                                                                     \
+} while(0)
+
+#endif // DEBUG
+
+#endif // !DEBUG_H
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/ErrorMorpheo.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/ErrorMorpheo.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/ErrorMorpheo.h	(revision 43)
@@ -0,0 +1,45 @@
+#ifndef morpheo_ErrorMorpheo
+#define morpheo_ErrorMorpheo
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <iostream>
+#include <exception>
+
+using namespace std;
+
+namespace morpheo              {
+
+  class ErrorMorpheo : public exception 
+  {
+    // -----[ fields ]----------------------------------------------------
+  private : string _msg;
+    
+    // -----[ methods ]---------------------------------------------------
+  public  :             ErrorMorpheo  ()           throw() { _msg = "Exception detected ...";}
+  public  :             ErrorMorpheo  (string msg) throw() { _msg = msg;}
+  public  :             ~ErrorMorpheo (void)       throw() {}
+  public  : const char* what          ()    const  throw() { return ( _msg.c_str() );}
+
+  };
+
+  class TestMorpheo : public exception 
+  {
+    // -----[ fields ]----------------------------------------------------
+  private : string _msg;
+    
+    // -----[ methods ]---------------------------------------------------
+  public  :             TestMorpheo   ()           throw() { _msg = "Test error ...";}
+  public  :             TestMorpheo   (string msg) throw() { _msg = msg;}
+  public  :             ~TestMorpheo  (void)       throw() {}
+  public  : const char* what          ()    const  throw() { return ( _msg.c_str() );}
+  };
+
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/FromString.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/FromString.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/FromString.h	(revision 43)
@@ -0,0 +1,31 @@
+#ifndef morpheo_fromstring
+#define morpheo_fromstring
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+// #include <iosfwd>
+// #include <sstream>
+// #include <iomanip>
+#include <string>
+// #include <limits>
+
+namespace morpheo {
+  
+  template<typename T> inline T   fromString             (const std::string& x)
+  {
+    return static_cast<T>(x.c_str());
+  }
+  
+  template<>           inline int fromString<int>        (const std::string& x)
+  {
+    return atoi(x.c_str());
+  }
+  
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/Message.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/Message.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/Message.h	(revision 43)
@@ -0,0 +1,13 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Routine of Test
+ */
+
+namespace morpheo    {
+
+#define cerr_msg   cerr << "<" << __FILE__ << "> line " << __LINE__ << " : "
+  
+}; // end namespace morpheo
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/Percent.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/Percent.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/Percent.h	(revision 43)
@@ -0,0 +1,20 @@
+#ifndef morpheo_Percent
+#define morpheo_Percent
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+namespace morpheo              {
+  
+  inline double percent (double   val, double   val_max) {return ((val_max == 0)?0:(100.0 * val)/val_max);}
+  inline double percent (uint32_t val, double   val_max) {return (percent(static_cast<double>(val),                    val_max ));}
+  inline double percent (double   val, uint32_t val_max) {return (percent(                    val ,static_cast<double>(val_max)));}
+  inline double percent (uint32_t val, uint32_t val_max) {return (percent(static_cast<double>(val),static_cast<double>(val_max)));}
+
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/Test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/Test.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/Test.h	(revision 43)
@@ -0,0 +1,46 @@
+#ifndef TEST_H
+#define TEST_H
+
+#include <iostream>
+#include <sstream>
+#include <stdint.h>
+#include "Include/ErrorMorpheo.h"
+using namespace std;
+
+//-----[ Routine de test ]---------------------------------------
+
+static uint32_t num_test;
+
+template <class T>
+void test_ko (T exp1, T exp2, char * file, uint32_t line)
+{
+  string msg = ("<"+toString(num_test)+"> : Test KO\n" +
+		" * Localisation\n"                    +
+		"   - File : "+file+"\n"               +
+		"   - Line : "+toString(line)+"\n"     +
+		" * Expression is different\n"         +
+		"   - exp1 : "+toString(exp1)+"\n"     +
+		"   - exp2 : "+toString(exp2)+"\n");
+  
+  throw (ErrorMorpheo (msg));
+};
+
+void test_ok ()
+{
+  cout << "{" << num_test << "} : Test OK" << endl;
+
+  num_test ++;
+};
+
+template <class T>
+void test(T exp1, T exp2, char * file, uint32_t line)
+{
+  if (exp1 != exp2)
+    test_ko <T> (exp1,exp2,file,line);
+  else
+    test_ok     ();
+};
+
+#define TEST(type,exp1,exp2) do { test<type> (exp1,exp2,__FILE__,__LINE__);} while(0)
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/ToBase2.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/ToBase2.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/ToBase2.h	(revision 43)
@@ -0,0 +1,58 @@
+#ifndef morpheo_ToBase2
+#define morpheo_ToBase2
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo              {
+
+  template<typename T> inline std::string toBase2 (const T& value, const uint32_t & size)
+  {
+    ostringstream res;
+    T mask = 1<<(size-1);
+    
+    while (mask != 0)
+      {
+	res  << ((value&mask)?'1':'0');
+	mask >>= 1;
+      }
+
+    return res.str();
+  }
+
+  inline std::string toBase2 (const bool    & value)
+  {
+    return toBase2<bool   >  (value, 1);
+  }
+
+  inline std::string toBase2 (const uint8_t & value, const uint32_t & size)
+  {
+    return toBase2<uint8_t>  (value, size);
+  }
+
+  inline std::string toBase2 (const uint16_t& value, const uint32_t & size)
+  {
+    return toBase2<uint16_t> (value, size);
+  }
+
+  inline std::string toBase2 (const uint32_t& value, const uint32_t & size)
+  {
+    return toBase2<uint32_t> (value, size);
+  }
+
+  inline std::string toBase2 (const uint64_t& value, const uint32_t & size)
+  {
+    return toBase2<uint64_t> (value, size);
+  }
+
+
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/ToString.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/ToString.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/ToString.h	(revision 43)
@@ -0,0 +1,64 @@
+#ifndef morpheo_tostring
+#define morpheo_tostring
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <iosfwd>
+#include <sstream>
+#include <iomanip>
+#include <string>
+#include <limits>
+
+using std::setprecision ; 
+using std::ostringstream ; 
+using std::boolalpha ;
+
+namespace morpheo              {
+  
+  template<typename T> inline std::string toString             (const T& x)
+  {
+    ostringstream out;
+    out << x;
+    return out.str();
+  }
+  
+  template<>           inline std::string toString<bool>       (const bool& x)
+  {
+    ostringstream out;
+    //out << boolalpha << x;
+    out << x;
+    return out.str();
+  }
+  
+  template<>           inline std::string toString<float>      (const float& x)
+  {
+    const int sigdigits = std::numeric_limits<float>::digits10;
+    ostringstream out;
+    out << setprecision(sigdigits) << x;
+    return out.str();
+  }
+  
+  template<>           inline std::string toString<double>     (const double& x)
+  {
+    const int sigdigits = std::numeric_limits<double>::digits10;
+    ostringstream out;
+    out << setprecision(sigdigits) << x;
+    return out.str();
+  }
+  
+  template<>           inline std::string toString<long double>(const long double& x)
+  {
+    const int sigdigits = std::numeric_limits<long double>::digits10;
+    ostringstream out;
+    out << setprecision(sigdigits) << x;
+    return out.str();
+  }
+  
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Include/Types.h	(revision 43)
@@ -0,0 +1,54 @@
+#ifndef morpheo_Type
+#define morpheo_Type
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <stdint.h>
+
+namespace morpheo              {
+
+#ifdef SYSTEMC
+
+// Definition of type
+#if ( defined(SC_CLOCK) || defined(SC_INTERNAL) || defined(SC_SIGNAL) || defined(SC_REGISTER) || defined(SC_IN) || defined(SC_OUT) )
+#  error "A type is already defined"
+#endif
+
+#if ( defined(PORT_READ)     || defined(PORT_WRITE)     )
+#  error "Action is already defined"
+#endif
+#if ( defined(INTERNAL_READ) || defined(INTERNAL_WRITE) )
+#  error "Action is already defined"
+#endif
+#if ( defined(SIGNAL_READ)   || defined(SIGNAL_WRITE) )
+#  error "Action is already defined"
+#endif
+#if ( defined(REGISTER_READ) || defined(REGISTER_WRITE) )
+#  error "Action is already defined"
+#endif
+
+#define SC_CLOCK                 sc_in_clk       
+#define SC_INTERNAL(type)        type
+#define SC_REGISTER(type)        sc_signal<type >
+#define SC_SIGNAL(type)          sc_signal<type >
+#define SC_IN(type)              sc_in    <type >
+#define SC_OUT(type)             sc_out   <type >
+			         
+#define PORT_READ(sig)           sig->read()
+#define PORT_WRITE(sig,val)      sig->write(val)
+#define INTERNAL_READ(sig)       (*sig)
+#define INTERNAL_WRITE(sig,val)  (*sig) = val
+#define SIGNAL_READ(sig)         sig->read()
+#define SIGNAL_WRITE(sig,val)    sig->write(val)
+#define REGISTER_READ(sig)       sig->read()
+#define REGISTER_WRITE(sig,val)  sig->write(val)
+
+#endif  
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Common/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Makefile	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Makefile	(revision 43)
@@ -0,0 +1,23 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT                   = ./
+include                         $(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libCommon.a
+
+#-----[ include ]------------------------------------------
+
+all				: $(LIBRARY_NEED)
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: trunk/IPs/systemC/processor/Morpheo/Common/Makefile.defs
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Makefile.defs	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Makefile.defs	(revision 43)
@@ -0,0 +1,9 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO           = ..
+DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: trunk/IPs/systemC/processor/Morpheo/Common/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/Makefile.deps	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Common/Makefile.deps	(revision 43)
@@ -0,0 +1,23 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+Common			= 	yes
+
+#-----[ Library ]------------------------------------------
+Common_LIBRARY		= 	-lCommon
+
+Common_DIR_LIBRARY	=	-L$(DIR_MORPHEO)/Common/lib
+
+#-----[ Rules ]--------------------------------------------
+
+Common_library		:
+				@$(MAKE) --directory=$(DIR_MORPHEO)/Common --makefile=Makefile 
+	
+Common_library_clean	:
+				@$(MAKE) --directory=$(DIR_MORPHEO)/Common --makefile=Makefile clean
