Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h	(revision 81)
@@ -1,6 +1,9 @@
-#ifndef Allocation_H
-#define Allocation_H
+#ifndef morpheo_behavioural_Allocation_h
+#define morpheo_behavioural_Allocation_h
+
+#include "Common/include/Debug.h"
 
 // Help to allocate interface
+#define INTERFACE_PRINT(name) log_printf(TRACE,true,"allocation","Interface's creation : %s (%s, %d)",name,__FILE__,__LINE__);
 
 // ----------------------------------------------------------------------
@@ -15,7 +18,9 @@
 #ifdef POSITION
 #define ALLOC_INTERFACE( name, direction, localisation, str)		\
+  INTERFACE_PRINT(name);						\
   Interface_fifo * interface = _interfaces->set_interface( name, direction, localisation, str);
 #else
 #define ALLOC_INTERFACE( name, direction, localisation, str)		\
+  INTERFACE_PRINT(name);						\
   Interface_fifo * interface = _interfaces->set_interface( name);
 #endif
@@ -48,4 +53,10 @@
     }
 
+#define DELETE_SIGNAL( sig, size)					\
+  if (size > 0)								\
+    {									\
+      delete sig;							\
+    }
+
 #define ALLOC_SC_SIGNAL(  sig, name, type)		                \
   sc_signal<type> * sig = new sc_signal<type> (name);
@@ -54,10 +65,14 @@
   (*(component->sig)) (*(sig));
 
+#define DELETE_SC_SIGNAL( sig)						\
+  delete sig;
+
 // ----------------------------------------------------------------------
 // -----[ ITERATION 1 ]--------------------------------------------------
 // ----------------------------------------------------------------------
 
-#define __ALLOC1_INTERFACE(name, it1)		\
-  const std::string interface_name = name;	\
+#define __ALLOC1_INTERFACE(name, it1)					\
+  INTERFACE_PRINT(name);						\
+  const std::string interface_name = name;				\
   const uint32_t iterator_1 = it1;
 
@@ -86,4 +101,5 @@
 #ifdef POSITION
 #define ALLOC1_INTERFACE( name, direction, localisation, str, it1)	\
+  INTERFACE_PRINT(name);						\
   const uint32_t iterator_1 = it1;					\
   Interface_fifo * interface [iterator_1];				\
@@ -97,4 +113,5 @@
 #else
 #define ALLOC1_INTERFACE( name, direction, localisation, str, it1)	\
+  INTERFACE_PRINT(name);						\
   const uint32_t iterator_1 = it1;					\
   Interface_fifo * interface [iterator_1];				\
@@ -141,22 +158,38 @@
   }
 #define ALLOC1_SIGNAL_IN( sig, name, type, size)			\
-  if (size > 0)								\
-    {									\
-      sig = new SC_IN (type) * [iterator_1];				\
-      for (uint32_t alloc_signal_it1=0; alloc_signal_it1<iterator_1; alloc_signal_it1++) \
-	{								\
-	  sig [alloc_signal_it1] = interface[alloc_signal_it1]->set_signal_in <type> (name, size); \
-	}								\
-    }
+  {									\
+    sig = new SC_IN (type) * [iterator_1];				\
+    for (uint32_t alloc_signal_it1=0; alloc_signal_it1<iterator_1; alloc_signal_it1++) \
+      {									\
+	if (size > 0)							\
+	  {								\
+	    sig [alloc_signal_it1] = interface[alloc_signal_it1]->set_signal_in <type> (name, size); \
+	  }								\
+      }									\
+  }
 
 #define ALLOC1_SIGNAL_OUT(sig, name, type, size)			\
-  if (size > 0)								\
-    {									\
-      sig = new SC_OUT(type) * [iterator_1];				\
-      for (uint32_t alloc_signal_it1=0; alloc_signal_it1<iterator_1; alloc_signal_it1++) \
-	{								\
-	  sig [alloc_signal_it1] = interface[alloc_signal_it1]->set_signal_out<type> (name, size); \
-	}								\
-    }
+  {									\
+    sig = new SC_OUT(type) * [iterator_1];				\
+    for (uint32_t alloc_signal_it1=0; alloc_signal_it1<iterator_1; alloc_signal_it1++) \
+      {									\
+	if (size > 0)							\
+	  {								\
+	    sig [alloc_signal_it1] = interface[alloc_signal_it1]->set_signal_out<type> (name, size); \
+	  }								\
+      }									\
+  }
+
+#define DELETE1_SIGNAL(sig, it1, size)					\
+  {									\
+    for (uint32_t alloc_signal_it1=0; alloc_signal_it1<it1; alloc_signal_it1++) \
+      {									\
+	if (size > 0)							\
+	  {								\
+	    delete sig[alloc_signal_it1];				\
+	  }								\
+      }									\
+    delete [] sig;							\
+  }
 
 #define ALLOC1_SC_SIGNAL( sig, name, type, it1)				\
@@ -178,4 +211,13 @@
     }
 
+#define DELETE1_SC_SIGNAL(sig, it1)					\
+  {									\
+    for (uint32_t alloc_signal_it1=0; alloc_signal_it1<it1; alloc_signal_it1++) \
+      {									\
+	delete sig[alloc_signal_it1];					\
+      }									\
+    delete [] sig;							\
+  }
+
 // ----------------------------------------------------------------------
 // -----[ ITERATION 2 ]--------------------------------------------------
@@ -184,4 +226,5 @@
 #ifdef POSITION
 #define ALLOC2_INTERFACE( name, direction, localisation, str, it1, it2)	\
+  INTERFACE_PRINT(name);						\
   uint32_t iterator_1 = 0;						\
   uint32_t iterator_2 = 0;						\
@@ -203,4 +246,5 @@
 #else
 #define ALLOC2_INTERFACE( name, direction, localisation, str, it1, it2)	\
+  INTERFACE_PRINT(name);						\
   uint32_t iterator_1 = 0;						\
   uint32_t iterator_2 = 0;						\
@@ -275,30 +319,34 @@
 
 #define _ALLOC2_SIGNAL_IN( sig, name, type, size, it1, it2)		\
-  if (size > 0)								\
-    {									\
-      sig = new SC_IN (type) ** [it1];					\
-      for (uint32_t alloc_signal_it1=0; alloc_signal_it1<it1; alloc_signal_it1++) \
-	{								\
-	  sig [alloc_signal_it1] = new SC_IN (type) * [it2];		\
-	  for (uint32_t alloc_signal_it2=0; alloc_signal_it2<it2; alloc_signal_it2++) \
-	    {								\
-	      sig [alloc_signal_it1][alloc_signal_it2] = interface[alloc_signal_it1][alloc_signal_it2]->set_signal_in <type> (name, size); \
-	    }								\
-	}								\
-    }
+  {									\
+    sig = new SC_IN (type) ** [it1];					\
+    for (uint32_t alloc_signal_it1=0; alloc_signal_it1<it1; alloc_signal_it1++) \
+      {									\
+	sig [alloc_signal_it1] = new SC_IN (type) * [it2];		\
+	for (uint32_t alloc_signal_it2=0; alloc_signal_it2<it2; alloc_signal_it2++) \
+	  {								\
+	    if (size > 0)						\
+	      {								\
+		sig [alloc_signal_it1][alloc_signal_it2] = interface[alloc_signal_it1][alloc_signal_it2]->set_signal_in <type> (name, size); \
+	      }								\
+	  }								\
+      }									\
+  }
 
 #define _ALLOC2_SIGNAL_OUT( sig, name, type, size, it1, it2)		\
-  if (size > 0)								\
-    {									\
-      sig = new SC_OUT (type) ** [it1];					\
-      for (uint32_t alloc_signal_it1=0; alloc_signal_it1<it1; alloc_signal_it1++) \
-	{								\
-	  sig [alloc_signal_it1] = new SC_OUT (type) * [it2];		\
-	  for (uint32_t alloc_signal_it2=0; alloc_signal_it2<it2; alloc_signal_it2++) \
-	    {								\
-	      sig [alloc_signal_it1][alloc_signal_it2] = interface[alloc_signal_it1][alloc_signal_it2]->set_signal_out <type> (name, size); \
-	    }								\
-	}								\
-    }
+  {									\
+    sig = new SC_OUT (type) ** [it1];					\
+    for (uint32_t alloc_signal_it1=0; alloc_signal_it1<it1; alloc_signal_it1++) \
+      {									\
+	sig [alloc_signal_it1] = new SC_OUT (type) * [it2];		\
+	for (uint32_t alloc_signal_it2=0; alloc_signal_it2<it2; alloc_signal_it2++) \
+	  {								\
+	    if (size > 0)						\
+	      {								\
+		sig [alloc_signal_it1][alloc_signal_it2] = interface[alloc_signal_it1][alloc_signal_it2]->set_signal_out <type> (name, size); \
+	      }								\
+	  }								\
+      }									\
+  }
 
 #define ALLOC2_VAL_ACK_IN( sig, name, type      ) _ALLOC2_VAL_ACK_IN( sig, name, type      , iterator_1, iterator_2) 
@@ -309,4 +357,20 @@
 #define ALLOC2_SIGNAL_OUT( sig, name, type, size) _ALLOC2_SIGNAL_OUT( sig, name, type, size, iterator_1, iterator_2) 
 
+#define DELETE2_SIGNAL(sig, it1,it2, size)				\
+  {									\
+    for (uint32_t alloc_signal_it1=0; alloc_signal_it1<it1; alloc_signal_it1++) \
+      {									\
+	for (uint32_t alloc_signal_it2=0; alloc_signal_it2<it2; alloc_signal_it2++) \
+	  {								\
+	    if (size > 0)						\
+	      {								\
+		delete sig[alloc_signal_it1][alloc_signal_it2];		\
+	      }								\
+	  }								\
+	delete [] sig[alloc_signal_it1];				\
+      }									\
+    delete [] sig;							\
+  }
+
 #define ALLOC2_SC_SIGNAL( sig, name, type, it1, it2)			\
   sc_signal<type> *** sig = new sc_signal<type> ** [it1];		\
@@ -331,3 +395,17 @@
 	(*(component->sig[alloc_signal_it1][alloc_signal_it2])) (*(sig[alloc_signal_it1][alloc_signal_it2])); \
       }
+
+#define DELETE2_SC_SIGNAL(sig,it1,it2)					\
+  {									\
+    for (uint32_t alloc_signal_it1=0; alloc_signal_it1<it1; alloc_signal_it1++) \
+      {									\
+	for (uint32_t alloc_signal_it2=0; alloc_signal_it2<it2; alloc_signal_it2++) \
+	  {								\
+	    delete sig[alloc_signal_it1][alloc_signal_it2];		\
+	  }								\
+	delete [] sig[alloc_signal_it1];				\
+      }									\
+    delete [] sig;							\
+  }
+
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Configuration_Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Configuration_Parameters.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Configuration_Parameters.h	(revision 81)
@@ -1,9 +1,10 @@
 #ifndef morpheo_behavioural_Configuration_Parameters_h
 #define morpheo_behavioural_Configuration_Parameters_h
+#ifdef CONFIGURATION
 
 /*
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -12,5 +13,5 @@
 #include <iostream>
 #include "Behavioural/include/XML.h"
-#include "Behavioural/include/Environnement.h"
+#include "Behavioural/include/Environment.h"
 #include "Common/include/ErrorMorpheo.h"
 #include "Common/include/ToString.h"
@@ -21,24 +22,24 @@
   class Configuration_Parameters
   {
-    // -----[ fields ]----------------------------------------------------
+    // -----[ fields ]----------------------------------------------------
     // Constant
-  public   : const std::string    _name   ;
-  public   : const uint32_t  _value  ;
-  public   : const uint32_t  _min    ;
-  public   : const uint32_t  _max    ;
-  public   : const std::string    _step   ;
-  public   : const uint32_t  _default;
-  public   : const uint32_t  _level  ;
-  public   : const std::string    _comment;
+  public   : const std::string _name   ;
+  public   : const uint32_t    _value  ;
+  public   : const uint32_t    _min    ;
+  public   : const uint32_t    _max    ;
+  public   : const std::string _step   ;
+  public   : const uint32_t    _default;
+  public   : const uint32_t    _level  ;
+  public   : const std::string _comment;
 
-    // -----[ methods ]---------------------------------------------------
-  public   :                 Configuration_Parameters  (std::string   name   ,
-							uint32_t value  ,
-							uint32_t min    ,
-							uint32_t max    ,
-							std::string   step   ,
-							uint32_t value_default,
-							uint32_t level  ,
-							std::string   comment);
+    // -----[ methods ]---------------------------------------------------
+  public   :                 Configuration_Parameters  (std::string name   ,
+							uint32_t    value  ,
+							uint32_t    min    ,
+							uint32_t    max    ,
+							std::string step   ,
+							uint32_t    value_default,
+							uint32_t    level  ,
+							std::string comment);
   public   :                 ~Configuration_Parameters ();
 
@@ -53,2 +54,3 @@
 
 #endif
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h	(revision 81)
@@ -24,26 +24,25 @@
 
   //-------------------------------------------------------[ Memory ]-----
-#  define OPERATION_MEMORY_LOAD                    0x0        // 000_0000
-#  define OPERATION_MEMORY_LOAD_8_Z                0x0        // 000_0000
-#  define OPERATION_MEMORY_LOAD_16_Z               0x20       // 010_0000
-#  define OPERATION_MEMORY_LOAD_32_Z               0x40       // 100_0000
-#  define OPERATION_MEMORY_LOAD_64_Z               0x60       // 110_0000
-#  define OPERATION_MEMORY_LOAD_8_S                0x10       // 001_0000
-#  define OPERATION_MEMORY_LOAD_16_S               0x30       // 011_0000
-#  define OPERATION_MEMORY_LOAD_32_S               0x50       // 101_0000
-#  define OPERATION_MEMORY_LOAD_64_S               0x70       // 111_0000
-
-#  define OPERATION_MEMORY_STORE_8                 0x8        // 000_1000
-#  define OPERATION_MEMORY_STORE_16                0x9        // 000_1001
-#  define OPERATION_MEMORY_STORE_32                0xa        // 000_1010
-#  define OPERATION_MEMORY_STORE_64                0xb        // 000_1011
-#  define OPERATION_MEMORY_STORE_HEAD_OK           0xc        // 000_1100
-#  define OPERATION_MEMORY_STORE_HEAD_KO           0xd        // 000_1101
-
-#  define OPERATION_MEMORY_LOCK                    0x1        // 000_0001
-#  define OPERATION_MEMORY_INVALIDATE              0x2        // 000_0010
-#  define OPERATION_MEMORY_PREFETCH                0x3        // 000_0011
-#  define OPERATION_MEMORY_FLUSH                   0x6        // 000_0110
-#  define OPERATION_MEMORY_SYNCHRONIZATION         0x7        // 000_0111
+#  define OPERATION_MEMORY_LOAD_8_Z                0x08       // 0_1000
+#  define OPERATION_MEMORY_LOAD_16_Z               0x09       // 0_1001
+#  define OPERATION_MEMORY_LOAD_32_Z               0x0a       // 0_1010
+#  define OPERATION_MEMORY_LOAD_64_Z               0x0b       // 0_1011
+#  define OPERATION_MEMORY_LOAD_8_S                0x18       // 1_1000
+#  define OPERATION_MEMORY_LOAD_16_S               0x19       // 1_1001
+#  define OPERATION_MEMORY_LOAD_32_S               0x1a       // 1_1010
+#  define OPERATION_MEMORY_LOAD_64_S               0x1b       // 1_1011
+
+#  define OPERATION_MEMORY_STORE_8                 0x0c       // 0_1100
+#  define OPERATION_MEMORY_STORE_16                0x0d       // 0_1101
+#  define OPERATION_MEMORY_STORE_32                0x0e       // 0_1110
+#  define OPERATION_MEMORY_STORE_64                0x0f       // 0_1111
+#  define OPERATION_MEMORY_STORE_HEAD_OK           0x1c       // 1_1100
+#  define OPERATION_MEMORY_STORE_HEAD_KO           0x1d       // 1_1101
+
+#  define OPERATION_MEMORY_LOCK                    0x01       // 0_0001
+#  define OPERATION_MEMORY_INVALIDATE              0x02       // 0_0010
+#  define OPERATION_MEMORY_PREFETCH                0x03       // 0_0011
+#  define OPERATION_MEMORY_FLUSH                   0x06       // 0_0110
+#  define OPERATION_MEMORY_SYNCHRONIZATION         0x07       // 0_0111
   
 #define is_operation_memory_load(x)             \
@@ -322,5 +321,5 @@
 #  define SIZE_DCACHE_TYPE                              4
 
-#  define DCACHE_TYPE_LOAD                              0x0        // 0000
+//#define DCACHE_TYPE_                                  0x0        // 0000
 #  define DCACHE_TYPE_LOCK                              0x1        // 0001
 #  define DCACHE_TYPE_INVALIDATE                        0x2        // 0010
@@ -330,12 +329,12 @@
 #  define DCACHE_TYPE_FLUSH                             0x6        // 0110
 #  define DCACHE_TYPE_SYNCHRONIZATION                   0x7        // 0111
-#  define DCACHE_TYPE_STORE_8                           0x8        // 1000
-#  define DCACHE_TYPE_STORE_16                          0x9        // 1001
-#  define DCACHE_TYPE_STORE_32                          0xa        // 1010
-#  define DCACHE_TYPE_STORE_64                          0xb        // 1011
-//#define DCACHE_TYPE_                                  0xc        // 1100
-//#define DCACHE_TYPE_                                  0xd        // 1101
-//#define DCACHE_TYPE_                                  0xe        // 1110
-//#define DCACHE_TYPE_                                  0xf        // 1111
+#  define DCACHE_TYPE_LOAD_8                            0x8        // 1000
+#  define DCACHE_TYPE_LOAD_16                           0x9        // 1001
+#  define DCACHE_TYPE_LOAD_32                           0xa        // 1010
+#  define DCACHE_TYPE_LOAD_64                           0xb        // 1011
+#  define DCACHE_TYPE_STORE_8                           0xc        // 1100
+#  define DCACHE_TYPE_STORE_16                          0xd        // 1101
+#  define DCACHE_TYPE_STORE_32                          0xe        // 1110
+#  define DCACHE_TYPE_STORE_64                          0xf        // 1111
 
 // just take the 4 less significative bits.
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 81)
@@ -59,4 +59,5 @@
 #  define                   DEBUG_Branch_History_Table              false
 #  define                   DEBUG_Pattern_History_Table             false
+#  define           DEBUG_Prediction_unit_Glue                      true 
 #  define           DEBUG_Return_Address_Stack                      true
 #  define           DEBUG_Update_Prediction_Table                   true
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Environment.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Environment.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Environment.h	(revision 81)
@@ -0,0 +1,35 @@
+#ifndef morpheo_behavioural_Environment_h
+#define morpheo_behavioural_Environment_h
+
+#if (defined(STATISTICS) and not defined(SYSTEMC))
+#  error "To have the statistics, you must set flags SYSTEMC"
+#endif
+
+#if (defined(INFORMATION) and not defined(STATISTICS))
+#  error "To have the information, you must set flags STATISTICS"
+#endif
+
+#if (defined(VHDL_TESTBENCH) and not defined(SYSTEMC))
+#  error "To have the vhdl's test bench, you must set flags SYSTEMC"
+#endif
+
+#if (defined(VHDL_TESTBENCH) and not defined(VHDL))
+#  error "To have the vhdl's test bench, you must set flags VHDL"
+#endif
+
+#if (defined(VHDL_TESTBENCH_ASSERT) and not defined(VHDL_TESTBENCH))
+#  error "To have an assert in vhdl's test bench, you must set flags VHDL_TESTBENCH"
+#endif
+
+#if (defined(VHDL_TESTBENCH) and defined(SYSTEMC))
+#  define SYSTEMC_VHDL_COMPATIBILITY
+#endif
+
+#if (defined(DEBUG))
+#  define DEBUG_TEST
+#endif
+
+// Environment variable
+#define MORPHEO_HOME          "MORPHEO_HOME"
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Environnement.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Environnement.h	(revision 78)
+++ 	(revision )
@@ -1,25 +1,0 @@
-#if (defined(STATISTICS) and not defined(SYSTEMC))
-#  error "To have the statistics, you must set flags SYSTEMC"
-#endif
-
-#if (defined(VHDL_TESTBENCH) and not defined(SYSTEMC))
-#  error "To have the vhdl's test bench, you must set flags SYSTEMC"
-#endif
-
-#if (defined(VHDL_TESTBENCH) and not defined(VHDL))
-#  error "To have the vhdl's test bench, you must set flags VHDL"
-#endif
-
-#if (defined(VHDL_TESTBENCH_ASSERT) and not defined(VHDL_TESTBENCH))
-#  error "To have an assert in vhdl's test bench, you must set flags VHDL_TESTBENCH"
-#endif
-
-#if (defined(VHDL_TESTBENCH) and defined(SYSTEMC))
-#  define SYSTEMC_VHDL_COMPATIBILITY
-#endif
-
-#if (defined(DEBUG))
-#  define DEBUG_TEST
-#endif
-
-#define MORPHEO_HOME "MORPHEO_HOME"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h	(revision 81)
@@ -12,5 +12,5 @@
 #include <iostream>
 #include <math.h>
-#include "Behavioural/include/Environnement.h"
+#include "Behavioural/include/Environment.h"
 #include "Behavioural/include/Constants.h"
 #include "Behavioural/include/Test.h"
@@ -22,4 +22,9 @@
 namespace morpheo     {
 namespace behavioural {
+
+  template <typename T> bool test (uint32_t size) 
+  {
+    return (size <= (8*sizeof(T)));
+  };
 
   class Parameters_test
@@ -75,15 +80,15 @@
 
     // -----[ methods ]---------------------------------------------------
-  public   :                          Parameters           (void);
-  public   : virtual                 ~Parameters           ();
+  public   :                            Parameters (void);
+  public   : virtual                   ~Parameters ();
 	
     // methods to print and test parameters
-  public   : virtual std::string     print                 (uint32_t depth) = 0;
-  public   : virtual Parameters_test msg_error             (void) = 0;
+  public   : virtual std::string        print       (uint32_t depth) = 0;
+  public   : virtual Parameters_test    msg_error   (void) = 0;
 
     // methods to generate configuration file
     
     // methods to test
-  public   :         void            test                  (void);
+  public   :         void               test        (void);
   };
 }; // end namespace behavioural          
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 81)
@@ -20,4 +20,5 @@
 #endif
 
+#include "Behavioural/include/Parameters.h"
 #include "Behavioural/include/Direction.h"
 #include "Behavioural/include/XML.h"
@@ -147,4 +148,7 @@
       if (_type_info != UNKNOW)
 	throw (ErrorMorpheo ("Signal \""+_name+"\" : already allocate."));
+
+      if (test<T>(_size) == false)
+	throw (ErrorMorpheo ("Signal \""+_name+"\" : size is too small to the associate type."));
 
       _is_allocate    = true;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h	(revision 81)
@@ -16,52 +16,54 @@
 
   // ***** general
-  typedef uint32_t        Tinstruction_t;
-  typedef bool            Tcontrol_t;
-  typedef uint8_t         Toperation_t;
-//typedef uint32_t        Tdestination1_t;
-//typedef uint32_t        Tdestination2_t;
-//typedef uint32_t        Texec_flag_t;
-//typedef bool            Texec_excep_t;
-			  
-  typedef uint8_t         Texception_t;
-  typedef uint8_t         Tcontext_t;
-  typedef uint8_t         Tpacket_t;
-  typedef uint8_t         Ttype_t;
-  typedef uint8_t         Tevent_state_t;
-  typedef uint8_t         Tevent_type_t;
-  typedef uint8_t         Tcounter_t; // universal counter
-  typedef uint8_t         Tptr_t;     // universal pointer
-			  
-  // ***** Register	  
-  typedef uint32_t        Tgeneral_address_t;
-  typedef uint32_t        Tgeneral_data_t;
-  typedef uint32_t        Tspecial_address_t;
-  typedef uint32_t        Tspecial_data_t;
+  typedef uint32_t           Tinstruction_t;
+  typedef bool               Tcontrol_t;
+  typedef uint8_t            Texception_t;
+  typedef uint8_t            Tcontext_t;
+  typedef uint8_t            Tpacket_t;
+  typedef uint8_t            Toperation_t;
+  typedef uint8_t            Ttype_t;
+  typedef uint8_t            Tcounter_t; // universal counter
+  typedef uint8_t            Tptr_t;     // universal pointer
+			     
+//typedef uint32_t           Tdestination1_t;
+//typedef uint32_t           Tdestination2_t;
+//typedef uint32_t           Texec_flag_t;
+//typedef bool               Texec_excep_t;
+			     
+  // ***** Event	     
+  typedef uint8_t            Tevent_state_t;
+  typedef uint8_t            Tevent_type_t;
+			     
+  // ***** Register	     
+  typedef uint32_t           Tgeneral_address_t;
+  typedef uint32_t           Tgeneral_data_t;
+  typedef uint32_t           Tspecial_address_t;
+  typedef uint32_t           Tspecial_data_t;
+			     
+  // ~~~~~ prediction_unit   
+  typedef uint8_t            Thistory_t;
+  typedef Tptr_t             Tprediction_ptr_t;
+  typedef uint8_t            Tbranch_state_t;
+  typedef uint8_t            Tbranch_condition_t;
+  typedef Tprediction_ptr_t  Tdepth_t;
+  typedef Tgeneral_data_t    Taddress_t;
 
   // ***** component dependant
   // ~~~~~ load store queue
-  typedef uint8_t         Taccess_t;
-  typedef uint8_t         Tlsq_ptr_t;
-  typedef uint32_t        Tdcache_address_t;
-  typedef uint32_t        Tdcache_data_t;
-  typedef bool            Tdcache_error_t;
-  typedef uint8_t         Tdcache_type_t;
-
-  // ~~~~~ prediction_unit
-  typedef uint8_t         Thistory_t;
-  typedef uint8_t         Tprediction_ptr_t;
-  typedef uint8_t         Tbranch_state_t;
-  typedef uint8_t         Tbranch_condition_t;
-  typedef uint8_t         Tdepth_t;      
-  typedef Tgeneral_data_t Taddress_t;
-
-
-  // ~~~~~ ifetch
-  typedef uint8_t         Tinst_ifetch_ptr_t;
-  typedef uint8_t         Tifetch_queue_ptr_t;
-  typedef uint32_t        Ticache_address_t;
-  typedef uint32_t        Ticache_instruction_t;
-  typedef bool            Ticache_error_t;
-  typedef uint8_t         Ticache_type_t;
+  typedef uint8_t            Taccess_t;
+  typedef Tptr_t             Tlsq_ptr_t;
+  typedef Tgeneral_address_t Tdcache_address_t;
+  typedef Tgeneral_data_t    Tdcache_data_t;
+  typedef bool               Tdcache_error_t;
+  typedef uint8_t            Tdcache_type_t;
+			     
+			     
+  // ~~~~~ ifetch	     
+  typedef Tptr_t             Tinst_ifetch_ptr_t;
+  typedef Tptr_t             Tifetch_queue_ptr_t;
+  typedef Tgeneral_address_t Ticache_address_t;
+  typedef Tgeneral_data_t    Ticache_instruction_t;
+  typedef bool               Ticache_error_t;
+  typedef uint8_t            Ticache_type_t;
 
   typedef enum
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Usage.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Usage.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Usage.h	(revision 81)
@@ -1,4 +1,6 @@
 #ifndef morpheo_behavioural_Usage_h
 #define morpheo_behavioural_Usage_h
+
+#include <stdint.h>
 
 namespace morpheo {
@@ -7,10 +9,23 @@
   typedef uint8_t Tusage_t;
 
-#define USE_SYSTEMC        0x01
-#define USE_VHDL           0x02
-#define USE_VHDL_TESTBENCH 0x04
-#define USE_STATISTICS     0x08
-#define USE_POSITION       0x10
-#define USE_ALL            0x1F
+#  define USE_SYSTEMC               0x01
+#  define USE_VHDL                  0x02
+#  define USE_VHDL_TESTBENCH        0x04
+#  define USE_VHDL_TESTBENCH_ASSERT 0x08
+#  define USE_POSITION              0x10
+#  define USE_STATISTICS            0x20
+#  define USE_INFORMATION           0x40
+//#define USE_                      0x80
+
+#  define USE_NONE                  0x00
+//#define USE_ALL                   0xff
+#  define USE_ALL                   usage_all()
+
+
+  Tusage_t usage_set         (Tusage_t usage, Tusage_t flag);
+  Tusage_t usage_unset       (Tusage_t usage, Tusage_t flag);
+  bool     usage_is_set      (Tusage_t usage, Tusage_t flag);
+  void     usage_environment (Tusage_t usage);
+  Tusage_t usage_all         (void);
 
 }; // end namespace behavioural
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h	(revision 81)
@@ -0,0 +1,16 @@
+#ifndef morpheo_behavioural_Version_h
+#define morpheo_behavioural_Version_h
+
+#include "Common/include/ToString.h"
+
+// Identification : MORPHEO_MAJOR_VERSION.MORPHEO_MINOR_VERSION.MORPHEO_REVISION
+// Revision       : svn variable 
+
+#define MORPHEO_MAJOR_VERSION 0
+#define MORPHEO_MINOR_VERSION 2
+#define MORPHEO_REVISION      0
+//$Revision$
+
+#define MORPHEO_VERSION       morpheo::toString(MORPHEO_MAJOR_VERSION)+"."+morpheo::toString(MORPHEO_MINOR_VERSION)+"."+morpheo::toString(MORPHEO_REVISION)
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 78)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 81)
@@ -14,5 +14,5 @@
 #include <iostream>
 #include <list>
-#include "Behavioural/include/Environnement.h"
+#include "Behavioural/include/Environment.h"
 #include "Behavioural/include/Direction.h"
 #include "Common/include/ToString.h"
