Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp	(revision 44)
@@ -10,5 +10,5 @@
 
 #include "Behavioural/Generic/Counter/SelfTest/include/test.h"
-#include "Include/Test.h"
+#include "Common/include/Test.h"
 
 void test (string name,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h	(revision 44)
@@ -14,6 +14,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 #include "Behavioural/Generic/Counter/include/Parameters.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 #include <math.h>
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Types.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo                    {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_testbench_transition.cpp	(revision 44)
@@ -19,5 +19,5 @@
     log_printf(FUNC,Counter,"vhdl_testbench_transition","Begin");
 
-    sc_start(0);
+//     sc_start(0);
 
     _interfaces->testbench();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 44)
@@ -8,5 +8,5 @@
 
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h"
-#include "Include/Test.h"
+#include "Common/include/Test.h"
 
 void test (string name,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 #include <math.h>
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 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 44)
@@ -13,6 +13,6 @@
 #endif
 
-#include "Include/Debug.h"
-#include "Include/ToString.h"
+#include "Common/include/Debug.h"
+#include "Common/include/ToString.h"
 #include <iostream>
 using namespace std;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo                    {
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 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp	(revision 44)
@@ -9,5 +9,5 @@
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
 #include "Behavioural/include/Vhdl.h"
-#include "Include/ToString.h"
+#include "Common/include/ToString.h"
 namespace morpheo                    {
 namespace behavioural                {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_declaration.cpp	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_declaration.cpp	(revision 44)
@@ -0,0 +1,30 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
+#include "Behavioural/include/Vhdl.h"
+#include "Common/include/ToString.h"
+namespace morpheo                    {
+namespace behavioural                {
+namespace generic                    {
+namespace registerfile               {
+namespace registerfile_monolithic    {
+
+  void RegisterFile_Monolithic::vhdl_declaration (Vhdl * & vhdl)
+  {
+    vhdl->set_type ("Tregfile", "array (" + toString(_param._nb_word-1) + " downto 0) of " + std_logic(_param._size_word));
+
+    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_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_testbench_transition.cpp	(revision 44)
@@ -18,6 +18,6 @@
   {
     // Evaluation before read the ouput signal
-    sc_start(0);
-
+    
+//  sc_start(0);
     _interfaces->testbench();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp	(revision 44)
@@ -13,6 +13,6 @@
 
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/include/test.h"
-#include "Include/Test.h"
-#include "Include/BitManipulation.h"
+#include "Common/include/Test.h"
+#include "Common/include/BitManipulation.h"
 
 void test (string name,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h	(revision 44)
@@ -9,6 +9,6 @@
  */
 
-#include "Include/Debug.h"
-#include "Include/FromString.h"
+#include "Common/include/Debug.h"
+#include "Common/include/FromString.h"
 #include "Behavioural/include/Parameters.h"
 #include <math.h>
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h	(revision 44)
@@ -14,6 +14,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Types.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo                    {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_vhdl_testbench_transition.cpp	(revision 44)
@@ -22,5 +22,5 @@
 
     // Evaluation before read the ouput signal
-    sc_start(0);
+//     sc_start(0);
 
     // In order with file RegisterFile_Multi_Banked_Glue_vhdl_testbench_port.cpp
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp	(revision 44)
@@ -10,5 +10,5 @@
 
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h"
-#include "Include/Test.h"
+#include "Common/include/Test.h"
 
 void test (string name,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 #include <math.h>
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h	(revision 44)
@@ -14,6 +14,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo                    {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_transition.cpp	(revision 44)
@@ -21,5 +21,5 @@
 
     // Evaluation before read the ouput signal
-    sc_start(0);
+//     sc_start(0);
 
     // In order with file RegisterFile_Multi_Banked_vhdl_testbench_port.cpp
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp	(revision 44)
@@ -10,5 +10,5 @@
 
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/include/test.h"
-#include "Include/Test.h"
+#include "Common/include/Test.h"
 
 void test (string name,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 #include <math.h>
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 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h	(revision 44)
@@ -14,6 +14,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo                    {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_testbench_transition.cpp	(revision 44)
@@ -21,5 +21,5 @@
 
     // Evaluation before read the ouput signal
-    sc_start(0);
+//     sc_start(0);
 
     _interfaces->testbench();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp	(revision 44)
@@ -8,6 +8,6 @@
 
 #include "Behavioural/Generic/Shifter/SelfTest/include/test.h"
-#include "Include/BitManipulation.h"
-#include "Include/Test.h"
+#include "Common/include/BitManipulation.h"
+#include "Common/include/Test.h"
 
 #define NB_ITERATION 64
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Shifter.h	(revision 44)
@@ -14,5 +14,5 @@
 
 #include <iostream>
-#include "Include/ToString.h"
+#include "Common/include/ToString.h"
 
 #include "Behavioural/Generic/Shifter/include/Parameters.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Types.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_genMealy_shift.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_genMealy_shift.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_genMealy_shift.cpp	(revision 44)
@@ -8,5 +8,5 @@
 
 #include "Behavioural/Generic/Shifter/include/Shifter.h"
-#include "Include/BitManipulation.h"
+#include "Common/include/BitManipulation.h"
 #include <bitset>
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_testbench_transition.cpp	(revision 44)
@@ -17,5 +17,5 @@
   void Shifter::vhdl_testbench_transition (void)
   {
-    sc_start(0);
+//     sc_start(0);
 
     _interfaces->testbench();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp	(revision 44)
@@ -8,5 +8,5 @@
 
 #include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/include/test.h"
-#include "Include/Test.h"
+#include "Common/include/Test.h"
 
 void test (string name,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Types.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo {
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 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h	(revision 44)
@@ -29,6 +29,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 #include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Parameters.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_vhdl_testbench_transition.cpp	(revision 44)
@@ -19,5 +19,5 @@
   {
     // Evaluation before read the ouput signal
-    sc_start(0);
+//     sc_start(0);
 
     _interfaces->testbench();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest	(revision 44)
@@ -16,4 +16,5 @@
 #-----[ Variables ]----------------------------------------
 CFG_FILE_EXTENSION		= cfg
+CFG_FILE_DEBUG       		= debug.$(CFG_FILE_EXTENSION)
 
 OBJECTS      			= $(OBJECTS_COMMON)
@@ -46,5 +47,13 @@
 				@													\
 				declare -i  CPT=0;											\
-				for file in $$($(LS) *.$(CFG_FILE_EXTENSION) ); do							\
+				declare     files;											\
+																	\
+				if $(TEST) -f $(CFG_FILE_DEBUG); then									\
+					files=$(CFG_FILE_DEBUG);									\
+				else													\
+					files=$$($(LS) *.$(CFG_FILE_EXTENSION) );							\
+				fi;													\
+																	\
+				for file in $$files; do											\
 																	\
 					declare     NAME;										\
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 44)
@@ -18,5 +18,5 @@
  					-DVHDL_TESTBENCH	\
  					-DVHDL_TESTBENCH_ASSERT	\
-					-DDEBUG=DEBUG_ALL
+					-DDEBUG=DEBUG_NONE
 
 #					-DCONFIGURATION  	\
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp	(revision 44)
@@ -12,5 +12,5 @@
 
 #include "Behavioural/@DIRECTORY/SelfTest/include/test.h"
-#include "Include/Test.h"
+#include "Common/include/Test.h"
 
 void test (string name,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/New_Component.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/New_Component.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/New_Component.h	(revision 44)
@@ -14,6 +14,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 #include "Behavioural/@DIRECTORY/include/Parameters.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 #include <math.h>
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Types.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo                    {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_testbench_transition.cpp	(revision 44)
@@ -18,5 +18,5 @@
 
     // Evaluation before read the ouput signal
-    sc_start(0);
+//     sc_start(0);
 
     _interfaces->testbench();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/config0.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/config0.cfg	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/config0.cfg	(revision 44)
@@ -0,0 +1,16 @@
+Meta_Predictor_Glue
+0	1	+1	# have_meta_predictor               
+0	1	+1	# predictor_0_have_bht              
+4	4	+1	# predictor_0_bht_size_shifter      
+1	1	+1	# predictor_0_have_pht              
+2	2	+1	# predictor_0_pht_size_counter      
+1	1	+1	# predictor_1_have_bht              
+3	3	+1	# predictor_1_bht_size_shifter      
+0	1	+1	# predictor_1_have_pht              
+4	4	+1	# predictor_1_pht_size_counter      
+1	1	+1	# predictor_2_have_bht              
+2	2	+1	# predictor_2_bht_size_shifter      
+0	1	+1	# predictor_2_have_pht              
+4	4	+1	# predictor_2_pht_size_counter      
+2	2	+1	# nb_prediction                     
+2	2	+1	# nb_branch_complete                
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/config1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/config1.cfg	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/config1.cfg	(revision 44)
@@ -0,0 +1,16 @@
+Meta_Predictor_Glue
+0	1	+1	# have_meta_predictor               
+1	1	+1	# predictor_0_have_bht              
+4	4	+1	# predictor_0_bht_size_shifter      
+0	1	+1	# predictor_0_have_pht              
+2	2	+1	# predictor_0_pht_size_counter      
+0	1	+1	# predictor_1_have_bht              
+3	3	+1	# predictor_1_bht_size_shifter      
+1	1	+1	# predictor_1_have_pht              
+4	4	+1	# predictor_1_pht_size_counter      
+0	1	+1	# predictor_2_have_bht              
+2	2	+1	# predictor_2_bht_size_shifter      
+1	1	+1	# predictor_2_have_pht              
+4	4	+1	# predictor_2_pht_size_counter      
+2	2	+1	# nb_prediction                     
+2	2	+1	# nb_branch_complete                
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/configuration.cfg	(revision 43)
+++ 	(revision )
@@ -1,16 +1,0 @@
-Meta_Predictor_Glue
-0	1	+1	# have_meta_predictor               
-0	1	+1	# predictor_0_have_bht              
-4	4	+1	# predictor_0_bht_size_shifter      
-1	1	+1	# predictor_0_have_pht              
-2	2	+1	# predictor_0_pht_size_counter      
-1	1	+1	# predictor_1_have_bht              
-3	3	+1	# predictor_1_bht_size_shifter      
-0	1	+1	# predictor_1_have_pht              
-4	4	+1	# predictor_1_pht_size_counter      
-1	1	+1	# predictor_2_have_bht              
-2	2	+1	# predictor_2_bht_size_shifter      
-0	1	+1	# predictor_2_have_pht              
-4	4	+1	# predictor_2_pht_size_counter      
-1	1	+1	# nb_prediction                     
-1	1	+1	# nb_branch_complete                
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/src/test.cpp	(revision 44)
@@ -10,5 +10,5 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/include/test.h"
-#include "Include/Test.h"
+#include "Common/include/Test.h"
 
 void test (string name,
@@ -28,4 +28,5 @@
    *********************************************************************/
   sc_clock                         * CLOCK;
+  sc_signal<Tcontrol_t>            * NRESET;
 
     // Interface Predict
@@ -65,5 +66,6 @@
 
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-  CLOCK                                  = new sc_clock ("clock", 1.0, 0.5);
+  CLOCK                             = new sc_clock ("clock", 1.0, 0.5);
+  NRESET                            = new sc_signal<Tcontrol_t> ("nreset");
 #endif  
 
@@ -170,4 +172,5 @@
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
   (*(_Meta_Predictor_Glue->in_CLOCK))        (*(CLOCK));
+  (*(_Meta_Predictor_Glue->in_NRESET))        (*(NRESET));
 #endif
 
@@ -252,10 +255,11 @@
 
   sc_start(0);
-  _Meta_Predictor_Glue->vhdl_testbench_label("Initialisation");
   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
-  
+
+  NRESET->write(0);
+  sc_start(5);
+  NRESET->write(1);
   // No need initialisation
 
-  _Meta_Predictor_Glue->vhdl_testbench_label("Loop of Test");
   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl;
   
@@ -282,7 +286,13 @@
 //uint32_t shift_6 = shift_5 + _param._predictor_2_pht_size_counter;
 
+  cout << "shift_0 : " << shift_0 << endl;
+  cout << "shift_1 : " << shift_1 << endl;
+  cout << "shift_2 : " << shift_2 << endl;
+  cout << "shift_3 : " << shift_3 << endl;
+  cout << "shift_4 : " << shift_4 << endl;
+  cout << "shift_5 : " << shift_5 << endl;
+
   for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
     {
-      _Meta_Predictor_Glue->vhdl_testbench_label("Iteration "+toString(iteration));
 
       for (uint32_t i=0; i<_param._nb_prediction; i++)
@@ -365,17 +375,30 @@
 	  BRANCH_COMPLETE_PREDICTOR_2_ACK         [i] ->write (predictor_2_ack);
 
-	  branch_complete_predictor_0_bht_history [i] = rand() % (_param._predictor_0_bht_size_shifter+1);
-	  branch_complete_predictor_0_pht_history [i] = rand() % (_param._predictor_0_pht_size_counter+1);
-	  branch_complete_predictor_1_bht_history [i] = rand() % (_param._predictor_1_bht_size_shifter+1);
-	  branch_complete_predictor_1_pht_history [i] = rand() % (_param._predictor_1_pht_size_counter+1);
-	  branch_complete_predictor_2_bht_history [i] = rand() % (_param._predictor_2_bht_size_shifter+1);
-	  branch_complete_predictor_2_pht_history [i] = rand() % (_param._predictor_2_pht_size_counter+1);
+	  branch_complete_predictor_0_bht_history [i] = rand() % (1<<_param._predictor_0_bht_size_shifter);
+	  branch_complete_predictor_0_pht_history [i] = rand() % (1<<_param._predictor_0_pht_size_counter);
+	  branch_complete_predictor_1_bht_history [i] = rand() % (1<<_param._predictor_1_bht_size_shifter);
+	  branch_complete_predictor_1_pht_history [i] = rand() % (1<<_param._predictor_1_pht_size_counter);
+	  branch_complete_predictor_2_bht_history [i] = rand() % (1<<_param._predictor_2_bht_size_shifter);
+	  branch_complete_predictor_2_pht_history [i] = rand() % (1<<_param._predictor_2_pht_size_counter);
 		
-	  BRANCH_COMPLETE_HISTORY                 [i]->write((branch_complete_predictor_0_bht_history [i] << shift_0) |
-							     (branch_complete_predictor_0_pht_history [i] << shift_1) |
-							     (branch_complete_predictor_1_bht_history [i] << shift_2) |
-							     (branch_complete_predictor_1_pht_history [i] << shift_3) |
-							     (branch_complete_predictor_2_bht_history [i] << shift_4) |
-							     (branch_complete_predictor_2_pht_history [i] << shift_5) );
+	  Thistory_t history = ((branch_complete_predictor_0_bht_history [i] << shift_0) |
+				(branch_complete_predictor_0_pht_history [i] << shift_1) |
+				(branch_complete_predictor_1_bht_history [i] << shift_2) |
+				(branch_complete_predictor_1_pht_history [i] << shift_3) |
+				(branch_complete_predictor_2_bht_history [i] << shift_4) |
+				(branch_complete_predictor_2_pht_history [i] << shift_5) );
+
+	  BRANCH_COMPLETE_HISTORY                 [i]->write (history);
+
+	  cout << "<test> [" << i << "] : " << endl
+	     << hex 
+	     << " *   " << history << endl
+	     << "   - " << branch_complete_predictor_0_bht_history [i] << endl
+	     << "   - " << branch_complete_predictor_0_pht_history [i] << endl
+	     << "   - " << branch_complete_predictor_1_bht_history [i] << endl
+	     << "   - " << branch_complete_predictor_1_pht_history [i] << endl
+	     << "   - " << branch_complete_predictor_2_bht_history [i] << endl
+	     << "   - " << branch_complete_predictor_2_pht_history [i] << endl
+	     << dec;
 
 	  Tcontrol_t direction_0 = ((_param._predictor_0_have_pht)?(branch_complete_predictor_0_pht_history [i] >> (_param._predictor_0_pht_size_counter-1)):(branch_complete_predictor_0_bht_history [i] >> (_param._predictor_0_bht_size_shifter-1)))&1;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Meta_Predictor_Glue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Meta_Predictor_Glue.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Meta_Predictor_Glue.h	(revision 44)
@@ -14,6 +14,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Parameters.h"
@@ -25,7 +25,5 @@
 #include "Behavioural/include/Vhdl.h"
 #endif
-#ifdef VHDL_TESTBENCH
-#include "Behavioural/include/Vhdl_Testbench.h"
-#endif
+#include "Behavioural/include/Component.h"
 
 using namespace std;
@@ -57,7 +55,6 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-  private   : Vhdl_Testbench                 * _vhdl_testbench;
-#endif
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
 
 #ifdef SYSTEMC
@@ -65,4 +62,5 @@
     // Interface
   public    : SC_CLOCK                      *  in_CLOCK                                  ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET                                 ;
 
     // Interface Predict
@@ -146,14 +144,10 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl & vhdl);
-  private : void     vhdl_declaration          (Vhdl & vhdl);
-  private : void     vhdl_body                 (Vhdl & vhdl);
+  private : void     vhdl_declaration          (Vhdl * & vhdl);
+  private : void     vhdl_body                 (Vhdl * & vhdl);
 #endif					       
-					       
 #ifdef VHDL_TESTBENCH			       
-  private : void     vhdl_testbench_port       (void);
   private : void     vhdl_testbench_transition (void);
 #endif
-  public  : void     vhdl_testbench_label      (string label);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 #include <math.h>
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Types.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo                    {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue.cpp	(revision 44)
@@ -33,4 +33,7 @@
     log_printf(FUNC,Meta_Predictor_Glue,"Meta_Predictor_Glue","Begin");
 
+    log_printf(INFO,Meta_Predictor_Glue,"Meta_Predictor_Glue","Allocation");
+    allocation ();
+
 #ifdef STATISTICS
     log_printf(INFO,Meta_Predictor_Glue,"Meta_Predictor_Glue","Allocation of statistics");
@@ -42,14 +45,4 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-    // Creation of a testbench
-    //  -> port
-    //  -> clock's signals
-    log_printf(INFO,Meta_Predictor_Glue,"Meta_Predictor_Glue","Creation of a testbench");
-    _vhdl_testbench = new Vhdl_Testbench (_name);
-    vhdl_testbench_port           ();
-    _vhdl_testbench->set_clock    ("in_CLOCK",false);
-#endif
-
 #ifdef VHDL
     // generate the vhdl
@@ -59,7 +52,4 @@
 
 #ifdef SYSTEMC
-    log_printf(INFO,Meta_Predictor_Glue,"Meta_Predictor_Glue","Allocation");
-    allocation ();
-
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     log_printf(INFO,Meta_Predictor_Glue,"Meta_Predictor_Glue","method - transition");
@@ -259,11 +249,4 @@
     log_printf(FUNC,Meta_Predictor_Glue,"~Meta_Predictor_Glue","Begin");
 
-#ifdef VHDL_TESTBENCH
-    log_printf(INFO,Meta_Predictor_Glue,"~Meta_Predictor_Glue","Generate Testbench");
-    // generate the test bench
-    _vhdl_testbench->generate_file();
-    delete _vhdl_testbench;
-#endif
-
 #ifdef STATISTICS
     log_printf(INFO,Meta_Predictor_Glue,"~Meta_Predictor_Glue","Generate Statistics");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_allocation.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_allocation.cpp	(revision 44)
@@ -23,9 +23,31 @@
     log_printf(FUNC,Meta_Predictor_Glue,"allocation","Begin");
 
-#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
-#endif
-
-    // Interface Predict
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name                 
+					     ,"Two_Level_Branch_Predictor_Glue"
+#ifdef POSITION
+					     ,COMBINATORY
+#endif
+					      );
+    
+    _interfaces = entity->set_interfaces();
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							 , IN  
+							 , SOUTH
+							 , "Generalist interface"
+#endif
+							 );
+      
+      in_CLOCK              = interface->set_signal_clk              ("clock" ,1,CLOCK_VHDL_NO);
+      in_NRESET             = interface->set_signal_in  <Tcontrol_t> ("nreset",1,RESET_VHDL_NO);
+    }
+
+
+    // ~~~~~[ Interface : "Predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
     if (_param._have_meta_predictor)
@@ -56,59 +78,41 @@
     for (uint32_t i=0; i<_param._nb_prediction; i++)
       {
-	if (_param._have_meta_predictor)
-	  {
-	rename = " in_PREDICT_PREDICTOR_0_ACK_"          +toString(i);
-	 in_PREDICT_PREDICTOR_0_ACK                   [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
+	Interface_fifo * interface = _interfaces->set_interface("predict_"+toString(i)
+#ifdef POSITION
+								, IN  
+								, WEST
+								, "Interface Predict"
+#endif
+								);
+
+	if (_param._have_meta_predictor)
+	  {
+	 in_PREDICT_PREDICTOR_0_ACK                   [i] = interface->set_signal_in  <Tcontrol_t>     ("predictor_0_ack"        , 1);
+	 in_PREDICT_PREDICTOR_1_ACK                   [i] = interface->set_signal_in  <Tcontrol_t>     ("predictor_1_ack"        , 1);
+	  }
+	 in_PREDICT_PREDICTOR_2_ACK                   [i] = interface->set_signal_in  <Tcontrol_t>     ("predictor_2_ack"        , 1);
 	
-	rename = " in_PREDICT_PREDICTOR_1_ACK_"          +toString(i);
-	 in_PREDICT_PREDICTOR_1_ACK                   [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-	  }
-	rename = " in_PREDICT_PREDICTOR_2_ACK_"          +toString(i);
-	 in_PREDICT_PREDICTOR_2_ACK                   [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-	
-	rename = "out_PREDICT_ACK_"                    +toString(i);
-	out_PREDICT_ACK                               [i] = new SC_OUT(Tcontrol_t)     (rename.c_str());
+	out_PREDICT_ACK                               [i] = interface->set_signal_out <Tcontrol_t>     ("ack"                    , 1);
 
 	if (_param._have_meta_predictor)
 	  {
 	if (_param._predictor_0_have_bht)
-	  {
-	rename = " in_PREDICT_PREDICTOR_0_BHT_HISTORY_"+toString(i);
-	 in_PREDICT_PREDICTOR_0_BHT_HISTORY           [i] = new SC_IN (Tbht_history_t) (rename.c_str());
-	  }
+	 in_PREDICT_PREDICTOR_0_BHT_HISTORY           [i] = interface->set_signal_in  <Tbht_history_t> ("predictor_0_bht_history", _param._predictor_0_bht_size_shifter);
 	if (_param._predictor_0_have_pht)
-	  {
-	rename = " in_PREDICT_PREDICTOR_0_PHT_HISTORY_"+toString(i);
-	 in_PREDICT_PREDICTOR_0_PHT_HISTORY           [i] = new SC_IN (Tpht_history_t) (rename.c_str());
-	  }
+	 in_PREDICT_PREDICTOR_0_PHT_HISTORY           [i] = interface->set_signal_in  <Tpht_history_t> ("predictor_0_pht_history", _param._predictor_0_pht_size_counter);
 	if (_param._predictor_1_have_bht)
-	  {
-	rename = " in_PREDICT_PREDICTOR_1_BHT_HISTORY_"+toString(i);
-	 in_PREDICT_PREDICTOR_1_BHT_HISTORY           [i] = new SC_IN (Tbht_history_t) (rename.c_str());
-	  }
+	 in_PREDICT_PREDICTOR_1_BHT_HISTORY           [i] = interface->set_signal_in  <Tbht_history_t> ("predictor_1_bht_history", _param._predictor_1_bht_size_shifter);
 	if (_param._predictor_1_have_pht)
-	  {
-	rename = " in_PREDICT_PREDICTOR_1_PHT_HISTORY_"+toString(i);
-	 in_PREDICT_PREDICTOR_1_PHT_HISTORY           [i] = new SC_IN (Tpht_history_t) (rename.c_str());
-	  }
+	 in_PREDICT_PREDICTOR_1_PHT_HISTORY           [i] = interface->set_signal_in  <Tpht_history_t> ("predictor_1_pht_history", _param._predictor_1_pht_size_counter);
 	  }
 	if (_param._predictor_2_have_bht)
-	  {
-	rename = " in_PREDICT_PREDICTOR_2_BHT_HISTORY_"+toString(i);
-	 in_PREDICT_PREDICTOR_2_BHT_HISTORY           [i] = new SC_IN (Tbht_history_t) (rename.c_str());
-	  }
+	 in_PREDICT_PREDICTOR_2_BHT_HISTORY           [i] = interface->set_signal_in  <Tbht_history_t> ("predictor_2_bht_history", _param._predictor_2_bht_size_shifter);
 	if (_param._predictor_2_have_pht)
-	  {
-	rename = " in_PREDICT_PREDICTOR_2_PHT_HISTORY_"+toString(i);
-	 in_PREDICT_PREDICTOR_2_PHT_HISTORY           [i] = new SC_IN (Tpht_history_t) (rename.c_str());
-	  }
-	rename = "out_PREDICT_HISTORY_"                +toString(i);
-	out_PREDICT_HISTORY                           [i] = new SC_OUT(Thistory_t)     (rename.c_str());
-
-    	rename = "out_PREDICT_DIRECTION_"              +toString(i);
-	out_PREDICT_DIRECTION                         [i] = new SC_OUT(Tcontrol_t)     (rename.c_str());
-      }
-
-    // Interface Branch_complete
+	 in_PREDICT_PREDICTOR_2_PHT_HISTORY           [i] = interface->set_signal_in  <Tpht_history_t> ("predictor_2_pht_history", _param._predictor_2_pht_size_counter);
+	out_PREDICT_HISTORY                           [i] = interface->set_signal_out <Thistory_t>     ("history"                , _param._size_history);
+	out_PREDICT_DIRECTION                         [i] = interface->set_signal_out <Tcontrol_t>     ("direction"              , 1);
+      }
+
+    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
     if (_param._have_meta_predictor)
@@ -145,70 +149,48 @@
     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
       {
-	if (_param._have_meta_predictor)
-	  {
-	rename = " in_BRANCH_COMPLETE_VAL_"                      +toString(i);
-	 in_BRANCH_COMPLETE_VAL                               [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-	
-	rename = "out_BRANCH_COMPLETE_PREDICTOR_2_VAL_"          +toString(i);
-	out_BRANCH_COMPLETE_PREDICTOR_2_VAL                   [i] = new SC_OUT(Tcontrol_t)     (rename.c_str());
-
-	rename = " in_BRANCH_COMPLETE_PREDICTOR_0_ACK_"          +toString(i);
-	 in_BRANCH_COMPLETE_PREDICTOR_0_ACK                   [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-	
-	rename = " in_BRANCH_COMPLETE_PREDICTOR_1_ACK_"          +toString(i);
-	 in_BRANCH_COMPLETE_PREDICTOR_1_ACK                   [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-	  }
-	rename = " in_BRANCH_COMPLETE_PREDICTOR_2_ACK_"          +toString(i);
-	 in_BRANCH_COMPLETE_PREDICTOR_2_ACK                   [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-	
-	rename = "out_BRANCH_COMPLETE_ACK_"                    +toString(i);
-	out_BRANCH_COMPLETE_ACK                               [i] = new SC_OUT(Tcontrol_t)     (rename.c_str());
-
+	Interface_fifo * interface = _interfaces->set_interface("branch_complete_"+toString(i)
+#ifdef POSITION
+								, IN  
+								, EAST
+								, "Interface branch complete"
+#endif
+								);
+
+	if (_param._have_meta_predictor)
+	  {
+	 in_BRANCH_COMPLETE_VAL                      [i] = interface->set_signal_in  <Tcontrol_t>     ("val"            , 1);
+	out_BRANCH_COMPLETE_PREDICTOR_2_VAL          [i] = interface->set_signal_out <Tcontrol_t>     ("predictor_2_val", 1);
+	 in_BRANCH_COMPLETE_PREDICTOR_0_ACK          [i] = interface->set_signal_in  <Tcontrol_t>     ("predictor_0_ack", 1);
+	 in_BRANCH_COMPLETE_PREDICTOR_1_ACK          [i] = interface->set_signal_in  <Tcontrol_t>     ("predictor_1_ack", 1);
+	  }
+	 in_BRANCH_COMPLETE_PREDICTOR_2_ACK          [i] = interface->set_signal_in  <Tcontrol_t>     ("predictor_2_ack" , 1);
+	out_BRANCH_COMPLETE_ACK                      [i] = interface->set_signal_out <Tcontrol_t>     ("ack"             , 1);
 	if (_param._have_meta_predictor)
 	  {
 	if (_param._predictor_0_have_bht)
-	  {
-	rename = "out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY_"+toString(i);
-	out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY           [i] = new SC_OUT(Tbht_history_t) (rename.c_str());
-	  }
+	out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY  [i] = interface->set_signal_out <Tbht_history_t> ("predictor_0_bht_history" , _param._predictor_0_bht_size_shifter );
 	if (_param._predictor_0_have_pht)
-	  {
-	rename = "out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY_"+toString(i);
-	out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY           [i] = new SC_OUT(Tpht_history_t) (rename.c_str());
-	  }
+	out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY  [i] = interface->set_signal_out <Tpht_history_t> ("predictor_0_pht_history" , _param._predictor_0_pht_size_counter);
 	if (_param._predictor_1_have_bht)
-	  {
-	rename = "out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY_"+toString(i);
-	out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY           [i] = new SC_OUT(Tbht_history_t) (rename.c_str());
-	  }
+	out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY  [i] = interface->set_signal_out <Tbht_history_t> ("predictor_1_bht_history" , _param._predictor_1_bht_size_shifter );
 	if (_param._predictor_1_have_pht)
-	  {
-	rename = "out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY_"+toString(i);
-	out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY           [i] = new SC_OUT(Tpht_history_t) (rename.c_str());
-	  }
+	out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY  [i] = interface->set_signal_out <Tpht_history_t> ("predictor_1_pht_history" , _param._predictor_1_pht_size_counter );
 	  }
 	if (_param._predictor_2_have_bht)
-	  {
-	rename = "out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY_"+toString(i);
-	out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY           [i] = new SC_OUT(Tbht_history_t) (rename.c_str());
-	  }
+	out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY  [i] = interface->set_signal_out <Tbht_history_t> ("predictor_2_bht_history" , _param._predictor_2_bht_size_shifter);
 	if (_param._predictor_2_have_pht)
-	  {
-	rename = "out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY_"+toString(i);
-	out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY           [i] = new SC_OUT(Tpht_history_t) (rename.c_str());
-	  }
-	rename = " in_BRANCH_COMPLETE_HISTORY_"                +toString(i);
-	 in_BRANCH_COMPLETE_HISTORY                           [i] = new SC_IN (Thistory_t)     (rename.c_str());
-
-	if (_param._have_meta_predictor)
-	  {
-	rename = " in_BRANCH_COMPLETE_DIRECTION_"              +toString(i);
-	 in_BRANCH_COMPLETE_DIRECTION                         [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-
-	rename = "out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION_"  +toString(i);
-	out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION             [i] = new SC_OUT(Tcontrol_t)     (rename.c_str());
+	out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY  [i] = interface->set_signal_out <Tpht_history_t> ("predictor_2_pht_history" , _param._predictor_2_pht_size_counter);
+	 in_BRANCH_COMPLETE_HISTORY                  [i] = interface->set_signal_in  <Thistory_t>     ("history"                 , _param._size_history);
+	if (_param._have_meta_predictor)
+	  {
+	 in_BRANCH_COMPLETE_DIRECTION                [i] = interface->set_signal_in  <Tcontrol_t>     ("direction"             , 1);
+	out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION    [i] = interface->set_signal_out <Tcontrol_t>     ("predictor_2_direction" , 1);
 	  }
       }
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
 
     log_printf(FUNC,Meta_Predictor_Glue,"allocation","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_deallocation.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_deallocation.cpp	(revision 44)
@@ -21,131 +21,65 @@
     log_printf(FUNC,Meta_Predictor_Glue,"deallocation","Begin");
 
-#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-    delete in_CLOCK;
-#endif
-
-    // Interface Predict
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	if (_param._have_meta_predictor)
-	{
-	delete  in_PREDICT_PREDICTOR_0_ACK                   [i];
-	delete  in_PREDICT_PREDICTOR_1_ACK                   [i];
-	}
-	delete  in_PREDICT_PREDICTOR_2_ACK                   [i];
-	delete out_PREDICT_ACK                               [i];
-	if (_param._have_meta_predictor)
-	{
-	if (_param._predictor_0_have_bht)
-	delete  in_PREDICT_PREDICTOR_0_BHT_HISTORY           [i];
-	if (_param._predictor_0_have_pht)
-	delete  in_PREDICT_PREDICTOR_0_PHT_HISTORY           [i];
-	if (_param._predictor_1_have_bht)
-	delete  in_PREDICT_PREDICTOR_1_BHT_HISTORY           [i];
-	if (_param._predictor_1_have_pht)
-	delete  in_PREDICT_PREDICTOR_1_PHT_HISTORY           [i];
-	}
-	if (_param._predictor_2_have_bht)
-	delete  in_PREDICT_PREDICTOR_2_BHT_HISTORY           [i];
-	if (_param._predictor_2_have_pht)
-	delete  in_PREDICT_PREDICTOR_2_PHT_HISTORY           [i];
-	delete out_PREDICT_HISTORY                           [i];
-	delete out_PREDICT_DIRECTION                         [i];
-      }
+    delete     in_CLOCK;
+    delete     in_NRESET;
 
     if (_param._have_meta_predictor)
     {
-    delete  in_PREDICT_PREDICTOR_0_ACK;
-    delete  in_PREDICT_PREDICTOR_1_ACK;
+    delete []   in_PREDICT_PREDICTOR_0_ACK;
+    delete []   in_PREDICT_PREDICTOR_1_ACK;
     }			           
-    delete  in_PREDICT_PREDICTOR_2_ACK;
-    delete out_PREDICT_ACK            ;
+    delete []   in_PREDICT_PREDICTOR_2_ACK;
+    delete []  out_PREDICT_ACK            ;
     if (_param._have_meta_predictor)
     {
     if (_param._predictor_0_have_bht)
-    delete  in_PREDICT_PREDICTOR_0_BHT_HISTORY;
+    delete []   in_PREDICT_PREDICTOR_0_BHT_HISTORY;
     if (_param._predictor_0_have_pht)
-    delete  in_PREDICT_PREDICTOR_0_PHT_HISTORY;
+    delete []   in_PREDICT_PREDICTOR_0_PHT_HISTORY;
     if (_param._predictor_1_have_bht)
-    delete  in_PREDICT_PREDICTOR_1_BHT_HISTORY;
+    delete []   in_PREDICT_PREDICTOR_1_BHT_HISTORY;
     if (_param._predictor_1_have_pht)
-    delete  in_PREDICT_PREDICTOR_1_PHT_HISTORY ;
+    delete []   in_PREDICT_PREDICTOR_1_PHT_HISTORY ;
     }
     if (_param._predictor_2_have_bht)
-    delete  in_PREDICT_PREDICTOR_2_BHT_HISTORY ;
+    delete []   in_PREDICT_PREDICTOR_2_BHT_HISTORY ;
     if (_param._predictor_2_have_pht)
-    delete  in_PREDICT_PREDICTOR_2_PHT_HISTORY ;
-    delete out_PREDICT_HISTORY                 ;
-    delete out_PREDICT_DIRECTION               ;
-
-    // Interface Branch_complete
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_meta_predictor)
-	{
-	delete  in_BRANCH_COMPLETE_VAL                               [i];
-	delete out_BRANCH_COMPLETE_PREDICTOR_2_VAL                   [i];
-
-	delete  in_BRANCH_COMPLETE_PREDICTOR_0_ACK                   [i];
-	delete  in_BRANCH_COMPLETE_PREDICTOR_1_ACK                   [i];
-	}
-	delete  in_BRANCH_COMPLETE_PREDICTOR_2_ACK                   [i];
-	delete out_BRANCH_COMPLETE_ACK                               [i];
- 
-	if (_param._have_meta_predictor)
-	{
-	if (_param._predictor_0_have_bht)
-	delete out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY           [i];
-	if (_param._predictor_0_have_pht)
-	delete out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY           [i];
-	if (_param._predictor_1_have_bht)
-	delete out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY           [i];
-	if (_param._predictor_1_have_pht)
-	delete out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY           [i];
-	}
-	if (_param._predictor_2_have_bht)
-	delete out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY           [i];
-	if (_param._predictor_2_have_pht)
-	delete out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY           [i];
-	delete  in_BRANCH_COMPLETE_HISTORY                           [i];
-	if (_param._have_meta_predictor)
-	  {
-	delete  in_BRANCH_COMPLETE_DIRECTION                         [i];
-	delete out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION             [i];
-	  }
-      }
+    delete []   in_PREDICT_PREDICTOR_2_PHT_HISTORY ;
+    delete []  out_PREDICT_HISTORY                 ;
+    delete []  out_PREDICT_DIRECTION               ;
 
     if (_param._have_meta_predictor)
     {
-    delete  in_BRANCH_COMPLETE_VAL                     ;
-    delete out_BRANCH_COMPLETE_PREDICTOR_2_VAL         ;
+    delete []   in_BRANCH_COMPLETE_VAL                     ;
+    delete []  out_BRANCH_COMPLETE_PREDICTOR_2_VAL         ;
 
-    delete  in_BRANCH_COMPLETE_PREDICTOR_0_ACK         ;
-    delete  in_BRANCH_COMPLETE_PREDICTOR_1_ACK         ;
+    delete []   in_BRANCH_COMPLETE_PREDICTOR_0_ACK         ;
+    delete []   in_BRANCH_COMPLETE_PREDICTOR_1_ACK         ;
     }			           
-    delete  in_BRANCH_COMPLETE_PREDICTOR_2_ACK         ;
-    delete out_BRANCH_COMPLETE_ACK                     ;
+    delete []   in_BRANCH_COMPLETE_PREDICTOR_2_ACK         ;
+    delete []  out_BRANCH_COMPLETE_ACK                     ;
     if (_param._have_meta_predictor)
     {
     if (_param._predictor_0_have_bht)
-    delete out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY ;
+    delete []  out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY ;
     if (_param._predictor_0_have_pht)
-    delete out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY ;
+    delete []  out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY ;
     if (_param._predictor_1_have_bht)
-    delete out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY ;
+    delete []  out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY ;
     if (_param._predictor_1_have_pht)
-    delete out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY ;
+    delete []  out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY ;
     }
     if (_param._predictor_2_have_bht)
-    delete out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY ;
+    delete []  out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY ;
     if (_param._predictor_2_have_pht)
-    delete out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY ;
-    delete  in_BRANCH_COMPLETE_HISTORY                 ;
+    delete []  out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY ;
+    delete []   in_BRANCH_COMPLETE_HISTORY                 ;
     if (_param._have_meta_predictor)
       {
-    delete  in_BRANCH_COMPLETE_DIRECTION               ;
-    delete out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION   ;
+    delete []   in_BRANCH_COMPLETE_DIRECTION               ;
+    delete []  out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION   ;
       }
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    delete _component;
 
     log_printf(FUNC,Meta_Predictor_Glue,"deallocation","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_genMealy_branch_complete_history.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_genMealy_branch_complete_history.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_genMealy_branch_complete_history.cpp	(revision 44)
@@ -8,5 +8,5 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Meta_Predictor_Glue.h"
-#include "Include/BitManipulation.h"
+#include "Common/include/BitManipulation.h"
 
 namespace morpheo                    {
@@ -27,5 +27,5 @@
 	if (_param._have_meta_predictor)
 	  {
-	if (_param._predictor_0_have_bht)
+	if (_param._predictor_0_have_bht) 
 	PORT_WRITE(out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY [i], (history >> _param._shift_0) & gen_mask<Tbht_history_t>(_param._predictor_0_bht_size_shifter));
 	if (_param._predictor_0_have_pht)
@@ -34,10 +34,7 @@
 
 	if (_param._predictor_1_have_bht)
-	  {
 	PORT_WRITE(out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY [i], (history >> _param._shift_2) & gen_mask<Tbht_history_t>(_param._predictor_1_bht_size_shifter));
-
 	if (_param._predictor_1_have_pht)
 	PORT_WRITE(out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY [i], (history >> _param._shift_3) & gen_mask<Tpht_history_t>(_param._predictor_1_pht_size_counter));
-	  }
 
 	if (_param._predictor_2_have_bht)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl.cpp	(revision 44)
@@ -21,13 +21,17 @@
   {
     log_printf(FUNC,Meta_Predictor_Glue,"vhdl","Begin");
-    Vhdl vhdl (_name);
 
-    vhdl.set_library_work (_name + "_Pack");
+    Vhdl * vhdl = new Vhdl (_name);
 
-    vhdl_port        (vhdl);
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
+
     vhdl_declaration (vhdl);
     vhdl_body        (vhdl);
 
-    vhdl.generate_file();
+    vhdl->generate_file();
+
+    delete vhdl;
+
     log_printf(FUNC,Meta_Predictor_Glue,"vhdl","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_body.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_body.cpp	(revision 44)
@@ -17,15 +17,15 @@
 
 
-  void Meta_Predictor_Glue::vhdl_body (Vhdl & vhdl)
+  void Meta_Predictor_Glue::vhdl_body (Vhdl * & vhdl)
   {
     log_printf(FUNC,Meta_Predictor_Glue,"vhdl_body","Begin");
-    vhdl.set_body ("");
-    vhdl.set_body (" -- predict");
+    vhdl->set_body ("");
+    vhdl->set_body (" -- predict");
     
     for (uint32_t i=0; i<_param._nb_prediction; i++)
       {
-	string meta_predictor_ack =  (_param._have_meta_predictor==true)?("in_PREDICT_PREDICTOR_0_ACK_"+toString(i)+" and in_PREDICT_PREDICTOR_1_ACK_"+toString(i)):"'1'";
+	string meta_predictor_ack =  (_param._have_meta_predictor==true)?("in_PREDICT_"+toString(i)+"_PREDICTOR_0_ACK and in_PREDICT_"+toString(i)+"_PREDICTOR_1_ACK"):"'1'";
 
-	vhdl.set_body ("out_PREDICT_ACK_"+toString(i)+"         <= "+meta_predictor_ack+" and "+"in_PREDICT_PREDICTOR_2_ACK_"+toString(i)+";");
+	vhdl->set_body ("out_PREDICT_"+toString(i)+"_ACK         <= "+meta_predictor_ack+" and "+"in_PREDICT_"+toString(i)+"_PREDICTOR_2_ACK;");
 
 	uint32_t index=_param._size_history;
@@ -34,10 +34,10 @@
 	if (_param._predictor_2_have_pht)
 	  {
-	vhdl.set_body ("out_PREDICT_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_2_pht_size_counter)+" <= in_PREDICT_PREDICTOR_2_PHT_HISTORY_"+toString(i)+";");
+	vhdl->set_body ("out_PREDICT_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_2_pht_size_counter)+" <= in_PREDICT_"+toString(i)+"_PREDICTOR_2_PHT_HISTORY;");
 	index-= _param._predictor_2_pht_size_counter;
 	  }
 	if (_param._predictor_2_have_bht)
 	  {
-	vhdl.set_body ("out_PREDICT_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_2_bht_size_shifter)+" <= in_PREDICT_PREDICTOR_2_BHT_HISTORY_"+toString(i)+";");
+	vhdl->set_body ("out_PREDICT_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_2_bht_size_shifter)+" <= in_PREDICT_"+toString(i)+"_PREDICTOR_2_BHT_HISTORY;");
 	index-= _param._predictor_2_bht_size_shifter;
 	  }
@@ -47,10 +47,10 @@
 	if (_param._predictor_1_have_pht)
 	  {
-	vhdl.set_body ("out_PREDICT_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_1_pht_size_counter)+" <= in_PREDICT_PREDICTOR_1_PHT_HISTORY_"+toString(i)+";");
+	vhdl->set_body ("out_PREDICT_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_1_pht_size_counter)+" <= in_PREDICT_"+toString(i)+"_PREDICTOR_1_PHT_HISTORY;");
 	index-= _param._predictor_1_pht_size_counter;
 	  }
 	if (_param._predictor_1_have_bht)
 	  {
-	vhdl.set_body ("out_PREDICT_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_1_bht_size_shifter)+" <= in_PREDICT_PREDICTOR_1_BHT_HISTORY_"+toString(i)+";");
+	vhdl->set_body ("out_PREDICT_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_1_bht_size_shifter)+" <= in_PREDICT_"+toString(i)+"_PREDICTOR_1_BHT_HISTORY;");
 	index-= _param._predictor_1_bht_size_shifter;
 	  }
@@ -58,10 +58,10 @@
  	if (_param._predictor_0_have_pht)
 	  {
-	vhdl.set_body ("out_PREDICT_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_0_pht_size_counter)+" <= in_PREDICT_PREDICTOR_0_PHT_HISTORY_"+toString(i)+";");
+	vhdl->set_body ("out_PREDICT_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_0_pht_size_counter)+" <= in_PREDICT_"+toString(i)+"_PREDICTOR_0_PHT_HISTORY;");
 	index-= _param._predictor_0_pht_size_counter;
 	  }
 	if (_param._predictor_0_have_bht)
 	  {
-	vhdl.set_body ("out_PREDICT_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_0_bht_size_shifter)+" <= in_PREDICT_PREDICTOR_0_BHT_HISTORY_"+toString(i)+";");
+	vhdl->set_body ("out_PREDICT_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_0_bht_size_shifter)+" <= in_PREDICT_"+toString(i)+"_PREDICTOR_0_BHT_HISTORY;");
 	index-= _param._predictor_0_bht_size_shifter;
 	  }
@@ -69,15 +69,15 @@
 
 	// direction of prediction
-	vhdl.set_body ("");
+	vhdl->set_body ("");
 	if (_param._have_meta_predictor)
-	  vhdl.set_body ("out_PREDICT_DIRECTION_"+toString(i)+"   <= predict_predictor_0_direction_"+toString(i)+" when predict_predictor_2_direction_"+toString(i)+"='0' else predict_predictor_1_direction_"+toString(i)+";");
+	  vhdl->set_body ("out_PREDICT_"+toString(i)+"_DIRECTION   <= predict_"+toString(i)+"_predictor_0_direction when predict_"+toString(i)+"_predictor_2_direction='0' else predict_"+toString(i)+"_predictor_1_direction;");
 	else
-	  vhdl.set_body ("out_PREDICT_DIRECTION_"+toString(i)+"   <= predict_predictor_2_direction_"+toString(i)+";");
+	  vhdl->set_body ("out_PREDICT_"+toString(i)+"_DIRECTION   <= predict_"+toString(i)+"_predictor_2_direction;");
       }
 
     // Interface - branch_complete
 
-    vhdl.set_body ("");
-    vhdl.set_body (" -- branch_complete");
+    vhdl->set_body ("");
+    vhdl->set_body (" -- branch_complete");
     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
       {
@@ -85,11 +85,11 @@
 	if (_param._have_meta_predictor)
 	  {
-	vhdl.set_body ("out_BRANCH_COMPLETE_PREDICTOR_2_VAL_"+toString(i)+"       <= (branch_complete_predictor_0_direction_"+toString(i)+" xor branch_complete_predictor_1_direction_"+toString(i)+") and "+"in_BRANCH_COMPLETE_VAL_"+toString(i)+";");
-	vhdl.set_body ("out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION_"+toString(i)+" <= (branch_complete_predictor_0_direction_"+toString(i)+" and not in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+") or (branch_complete_predictor_1_direction_"+toString(i)+" and in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+");");
+	vhdl->set_body ("out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_VAL       <= (branch_complete_"+toString(i)+"_predictor_0_direction xor branch_complete_"+toString(i)+"_predictor_1_direction) and "+"in_BRANCH_COMPLETE_"+toString(i)+"_VAL;");
+	vhdl->set_body ("out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_DIRECTION <= (branch_complete_"+toString(i)+"_predictor_0_direction and not in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION) or (branch_complete_"+toString(i)+"_predictor_1_direction and in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION);");
 	  }
 
-	string meta_predictor_ack =  (_param._have_meta_predictor==true)?("in_BRANCH_COMPLETE_PREDICTOR_0_ACK_"+toString(i)+" and in_BRANCH_COMPLETE_PREDICTOR_1_ACK_"+toString(i)):"'1'";
+	string meta_predictor_ack =  (_param._have_meta_predictor==true)?("in_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_0_ACK and in_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_1_ACK"):"'1'";
 
-	vhdl.set_body ("out_BRANCH_COMPLETE_ACK_"+toString(i)+"                   <= "+meta_predictor_ack+" and "+"in_BRANCH_COMPLETE_PREDICTOR_2_ACK_"+toString(i)+";");
+	vhdl->set_body ("out_BRANCH_COMPLETE_"+toString(i)+"_ACK                   <= "+meta_predictor_ack+" and "+"in_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_ACK;");
 
 	uint32_t index=_param._size_history;
@@ -97,10 +97,10 @@
 	if (_param._predictor_2_have_pht)
 	  {
-	vhdl.set_body ("out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY_"+toString(i)+" <= in_BRANCH_COMPLETE_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_2_pht_size_counter)+";");
+	vhdl->set_body ("out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_PHT_HISTORY <= in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_2_pht_size_counter)+";");
 	index-= _param._predictor_2_pht_size_counter;
 	  }
 	if (_param._predictor_2_have_bht)
 	  {
-	vhdl.set_body ("out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY_"+toString(i)+" <= in_BRANCH_COMPLETE_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_2_bht_size_shifter)+";");
+	vhdl->set_body ("out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_BHT_HISTORY <= in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_2_bht_size_shifter)+";");
 	index-= _param._predictor_2_bht_size_shifter;
 	  }
@@ -110,10 +110,10 @@
 	if (_param._predictor_1_have_pht)
 	  {
-	vhdl.set_body ("out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY_"+toString(i)+" <= in_BRANCH_COMPLETE_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_1_pht_size_counter)+";");
+	vhdl->set_body ("out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_1_PHT_HISTORY <= in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_1_pht_size_counter)+";");
 	index-= _param._predictor_1_pht_size_counter;
 	  }
 	if (_param._predictor_1_have_bht)
 	  {
-	vhdl.set_body ("out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY_"+toString(i)+" <= in_BRANCH_COMPLETE_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_1_bht_size_shifter)+";");
+	vhdl->set_body ("out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_1_BHT_HISTORY <= in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_1_bht_size_shifter)+";");
 	index-= _param._predictor_1_bht_size_shifter;
 	  }
@@ -121,10 +121,10 @@
 	if (_param._predictor_0_have_pht)
 	  {
-	vhdl.set_body ("out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY_"+toString(i)+" <= in_BRANCH_COMPLETE_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_0_pht_size_counter)+";");
+	vhdl->set_body ("out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_0_PHT_HISTORY <= in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_0_pht_size_counter)+";");
 	index-= _param._predictor_0_pht_size_counter;
 	  }
 	if (_param._predictor_0_have_bht)
 	  {
-	vhdl.set_body ("out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY_"+toString(i)+" <= in_BRANCH_COMPLETE_HISTORY_"+toString(i)+std_logic_range(index-1,index-_param._predictor_0_bht_size_shifter)+";");
+	vhdl->set_body ("out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_0_BHT_HISTORY <= in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY"+std_logic_range(index-1,index-_param._predictor_0_bht_size_shifter)+";");
 	index-= _param._predictor_0_bht_size_shifter;
 	  }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_declaration.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_declaration.cpp	(revision 44)
@@ -17,5 +17,5 @@
 
 
-  void Meta_Predictor_Glue::vhdl_declaration (Vhdl & vhdl)
+  void Meta_Predictor_Glue::vhdl_declaration (Vhdl * & vhdl)
   {
     log_printf(FUNC,Meta_Predictor_Glue,"vhdl_declaration","Begin");
@@ -26,17 +26,17 @@
 	  {
 	if (_param._predictor_0_have_pht)
-	  vhdl.set_alias ("predict_predictor_0_direction_"+toString(i),std_logic(1), "in_PREDICT_PREDICTOR_0_PHT_HISTORY_"+toString(i),std_logic_range(_param._predictor_0_pht_size_counter-1,_param._predictor_0_pht_size_counter-1));
+	  vhdl->set_alias ("predict_"+toString(i)+"_predictor_0_direction",std_logic(1), "in_PREDICT_"+toString(i)+"_PREDICTOR_0_PHT_HISTORY",std_logic_range(_param._predictor_0_pht_size_counter-1,_param._predictor_0_pht_size_counter-1));
 	else
-	  vhdl.set_alias ("predict_predictor_0_direction_"+toString(i),std_logic(1), "in_PREDICT_PREDICTOR_0_BHT_HISTORY_"+toString(i),std_logic_range(_param._predictor_0_bht_size_shifter-1,_param._predictor_0_bht_size_shifter-1));
+	  vhdl->set_alias ("predict_"+toString(i)+"_predictor_0_direction",std_logic(1), "in_PREDICT_"+toString(i)+"_PREDICTOR_0_BHT_HISTORY",std_logic_range(_param._predictor_0_bht_size_shifter-1,_param._predictor_0_bht_size_shifter-1));
 	if (_param._predictor_1_have_pht)
-	  vhdl.set_alias ("predict_predictor_1_direction_"+toString(i),std_logic(1), "in_PREDICT_PREDICTOR_1_PHT_HISTORY_"+toString(i),std_logic_range(_param._predictor_1_pht_size_counter-1,_param._predictor_1_pht_size_counter-1));
+	  vhdl->set_alias ("predict_"+toString(i)+"_predictor_1_direction",std_logic(1), "in_PREDICT_"+toString(i)+"_PREDICTOR_1_PHT_HISTORY",std_logic_range(_param._predictor_1_pht_size_counter-1,_param._predictor_1_pht_size_counter-1));
 	else
-	  vhdl.set_alias ("predict_predictor_1_direction_"+toString(i),std_logic(1), "in_PREDICT_PREDICTOR_1_BHT_HISTORY_"+toString(i),std_logic_range(_param._predictor_1_bht_size_shifter-1,_param._predictor_1_bht_size_shifter-1));
+	  vhdl->set_alias ("predict_"+toString(i)+"_predictor_1_direction",std_logic(1), "in_PREDICT_"+toString(i)+"_PREDICTOR_1_BHT_HISTORY",std_logic_range(_param._predictor_1_bht_size_shifter-1,_param._predictor_1_bht_size_shifter-1));
 	  }
 
 	if (_param._predictor_2_have_pht)
-	  vhdl.set_alias ("predict_predictor_2_direction_"+toString(i),std_logic(1), "in_PREDICT_PREDICTOR_2_PHT_HISTORY_"+toString(i),std_logic_range(_param._predictor_2_pht_size_counter-1,_param._predictor_2_pht_size_counter-1));
+	  vhdl->set_alias ("predict_"+toString(i)+"_predictor_2_direction",std_logic(1), "in_PREDICT_"+toString(i)+"_PREDICTOR_2_PHT_HISTORY",std_logic_range(_param._predictor_2_pht_size_counter-1,_param._predictor_2_pht_size_counter-1));
 	else
-	  vhdl.set_alias ("predict_predictor_2_direction_"+toString(i),std_logic(1), "in_PREDICT_PREDICTOR_2_BHT_HISTORY_"+toString(i),std_logic_range(_param._predictor_2_bht_size_shifter-1,_param._predictor_2_bht_size_shifter-1));
+	  vhdl->set_alias ("predict_"+toString(i)+"_predictor_2_direction",std_logic(1), "in_PREDICT_"+toString(i)+"_PREDICTOR_2_BHT_HISTORY",std_logic_range(_param._predictor_2_bht_size_shifter-1,_param._predictor_2_bht_size_shifter-1));
       }
 
@@ -46,22 +46,20 @@
       {
 // 	if (_param._predictor_2_have_pht)
-// 	vhdl.set_alias ("branch_complete_predictor_2_direction_"+toString(i),std_logic(1)," in_BRANCH_COMPLETE_HISTORY_"+toString(i),std_logic_range(_param._shift_6-1, _param._shift_6-1));
+// 	vhdl->set_alias ("branch_complete_"+toString(i)+"_predictor_2_direction",std_logic(1)," in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY",std_logic_range(_param._shift_6-1, _param._shift_6-1));
 // 	else
-// 	vhdl.set_alias ("branch_complete_predictor_2_direction_"+toString(i),std_logic(1)," in_BRANCH_COMPLETE_HISTORY_"+toString(i),std_logic_range(_param._shift_5-1, _param._shift_5-1));
+// 	vhdl->set_alias ("branch_complete_"+toString(i)+"_predictor_2_direction",std_logic(1)," in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY",std_logic_range(_param._shift_5-1, _param._shift_5-1));
 
 	if (_param._predictor_1_have_pht)
-	vhdl.set_alias ("branch_complete_predictor_1_direction_"+toString(i),std_logic(1)," in_BRANCH_COMPLETE_HISTORY_"+toString(i),std_logic_range(_param._shift_4-1, _param._shift_4-1));
+	vhdl->set_alias ("branch_complete_"+toString(i)+"_predictor_1_direction",std_logic(1)," in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY",std_logic_range(_param._shift_4-1, _param._shift_4-1));
 	else
-	vhdl.set_alias ("branch_complete_predictor_1_direction_"+toString(i),std_logic(1)," in_BRANCH_COMPLETE_HISTORY_"+toString(i),std_logic_range(_param._shift_3-1, _param._shift_3-1));
+	vhdl->set_alias ("branch_complete_"+toString(i)+"_predictor_1_direction",std_logic(1)," in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY",std_logic_range(_param._shift_3-1, _param._shift_3-1));
 
 	if (_param._predictor_0_have_pht)
-	vhdl.set_alias ("branch_complete_predictor_0_direction_"+toString(i),std_logic(1)," in_BRANCH_COMPLETE_HISTORY_"+toString(i),std_logic_range(_param._shift_2-1, _param._shift_2-1));
+	vhdl->set_alias ("branch_complete_"+toString(i)+"_predictor_0_direction",std_logic(1)," in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY",std_logic_range(_param._shift_2-1, _param._shift_2-1));
 	else
-	vhdl.set_alias ("branch_complete_predictor_0_direction_"+toString(i),std_logic(1)," in_BRANCH_COMPLETE_HISTORY_"+toString(i),std_logic_range(_param._shift_1-1, _param._shift_1-1));
+	vhdl->set_alias ("branch_complete_"+toString(i)+"_predictor_0_direction",std_logic(1)," in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY",std_logic_range(_param._shift_1-1, _param._shift_1-1));
 
       }
       }
-
-
 
     log_printf(FUNC,Meta_Predictor_Glue,"vhdl_declaration","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_port.cpp	(revision 43)
+++ 	(revision )
@@ -1,100 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Meta_Predictor_Glue.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-namespace meta_predictor_glue {
-
-
-  void Meta_Predictor_Glue::vhdl_port (Vhdl & vhdl)
-  {
-    log_printf(FUNC,Meta_Predictor_Glue,"vhdl_port","Begin");
-
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {
-	vhdl.set_port (" in_PREDICT_PREDICTOR_0_ACK_"+toString(i)+"                ", IN, 1);
-	vhdl.set_port (" in_PREDICT_PREDICTOR_1_ACK_"+toString(i)+"                ", IN, 1);
-	  }
-	vhdl.set_port (" in_PREDICT_PREDICTOR_2_ACK_"+toString(i)+"                ", IN, 1);
-	vhdl.set_port ("out_PREDICT_ACK_"+toString(i)+"                            ",OUT, 1);
-
-	if (_param._have_meta_predictor)
-	  {
-	if (_param._predictor_0_have_bht)
-	vhdl.set_port (" in_PREDICT_PREDICTOR_0_BHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_0_bht_size_shifter);
-	if (_param._predictor_0_have_pht)
-	vhdl.set_port (" in_PREDICT_PREDICTOR_0_PHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_0_pht_size_counter);
-	if (_param._predictor_1_have_bht)
-	vhdl.set_port (" in_PREDICT_PREDICTOR_1_BHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_1_bht_size_shifter);
-	if (_param._predictor_1_have_pht)
-	vhdl.set_port (" in_PREDICT_PREDICTOR_1_PHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_1_pht_size_counter);
-	  }
-	if (_param._predictor_2_have_bht)
-	vhdl.set_port (" in_PREDICT_PREDICTOR_2_BHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_2_bht_size_shifter);
-	if (_param._predictor_2_have_pht)
-	vhdl.set_port (" in_PREDICT_PREDICTOR_2_PHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_2_pht_size_counter);
-
-	vhdl.set_port ("out_PREDICT_HISTORY_"+toString(i)+"                        ",OUT,_param._size_history);
-	vhdl.set_port ("out_PREDICT_DIRECTION_"+toString(i)+"                      ",OUT,1);
-      }
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {
-	vhdl.set_port (" in_BRANCH_COMPLETE_VAL_"+toString(i)+"                    ", IN, 1);
-	vhdl.set_port ("out_BRANCH_COMPLETE_PREDICTOR_2_VAL_"+toString(i)+"        ",OUT, 1);
-
-	vhdl.set_port (" in_BRANCH_COMPLETE_PREDICTOR_0_ACK_"+toString(i)+"        ", IN, 1);
-	vhdl.set_port (" in_BRANCH_COMPLETE_PREDICTOR_1_ACK_"+toString(i)+"        ", IN, 1);
-	  }
-	vhdl.set_port (" in_BRANCH_COMPLETE_PREDICTOR_2_ACK_"+toString(i)+"        ", IN, 1);
-	vhdl.set_port ("out_BRANCH_COMPLETE_ACK_"+toString(i)+"                    ",OUT, 1);
-
-	if (_param._have_meta_predictor)
-	  {
-	if (_param._predictor_0_have_bht)
-	vhdl.set_port ("out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_0_bht_size_shifter);
-	if (_param._predictor_0_have_pht)
-	vhdl.set_port ("out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_0_pht_size_counter);
-	if (_param._predictor_1_have_bht)
-	vhdl.set_port ("out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_1_bht_size_shifter);
-	if (_param._predictor_1_have_pht)
-	vhdl.set_port ("out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_1_pht_size_counter);
-	  }
-	if (_param._predictor_2_have_bht)
-	vhdl.set_port ("out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_2_bht_size_shifter);
-	if (_param._predictor_2_have_pht)
-	vhdl.set_port ("out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_2_pht_size_counter);
-
-	vhdl.set_port (" in_BRANCH_COMPLETE_HISTORY_"+toString(i)+"                ", IN,_param._size_history);
-	if (_param._have_meta_predictor)
-	  {
-	vhdl.set_port (" in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+"              ", IN,1);
-	vhdl.set_port ("out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION_"+toString(i)+"  ",OUT,1);
-	  }
-      }
-
-    log_printf(FUNC,Meta_Predictor_Glue,"vhdl_port","End");
-  };
-
-}; // end namespace meta_predictor_glue
-}; // 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/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_testbench_label.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_testbench_label.cpp	(revision 43)
+++ 	(revision )
@@ -1,35 +1,0 @@
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Meta_Predictor_Glue.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-namespace meta_predictor_glue {
-
-
-  void Meta_Predictor_Glue::vhdl_testbench_label (string label)
-  {
-    log_printf(FUNC,Meta_Predictor_Glue,"vhdl_testbench_label","Begin");
-
-#ifdef VHDL_TESTBENCH
-    _vhdl_testbench->add_label(label);
-#endif
-    
-    log_printf(FUNC,Meta_Predictor_Glue,"vhdl_testbench_label","End");
-  };
-
-}; // end namespace meta_predictor_glue
-}; // end namespace meta_predictor
-}; // end namespace predictor
-}; // end namespace stage_1_ifetch
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_testbench_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_testbench_port.cpp	(revision 43)
+++ 	(revision )
@@ -1,100 +1,0 @@
-#ifdef VHDL_TESTBENCH
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/include/Meta_Predictor_Glue.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-namespace meta_predictor_glue {
-
-
-  void Meta_Predictor_Glue::vhdl_testbench_port ()
-  {
-    log_printf(FUNC,Meta_Predictor_Glue,"vhdl_testbench_port","Begin");
-
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {
-	_vhdl_testbench->set_port (" in_PREDICT_PREDICTOR_0_ACK_"+toString(i)+"                ", IN, 1);
-	_vhdl_testbench->set_port (" in_PREDICT_PREDICTOR_1_ACK_"+toString(i)+"                ", IN, 1);
-	  }
-	_vhdl_testbench->set_port (" in_PREDICT_PREDICTOR_2_ACK_"+toString(i)+"                ", IN, 1);
-	_vhdl_testbench->set_port ("out_PREDICT_ACK_"+toString(i)+"                            ",OUT, 1);
-
-	if (_param._have_meta_predictor)
-	  {
-	if (_param._predictor_0_have_bht)
-	_vhdl_testbench->set_port (" in_PREDICT_PREDICTOR_0_BHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_0_bht_size_shifter);
-	if (_param._predictor_0_have_pht)
-	_vhdl_testbench->set_port (" in_PREDICT_PREDICTOR_0_PHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_0_pht_size_counter);
-	if (_param._predictor_1_have_bht)
-	_vhdl_testbench->set_port (" in_PREDICT_PREDICTOR_1_BHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_1_bht_size_shifter);
-	if (_param._predictor_1_have_pht)
-	_vhdl_testbench->set_port (" in_PREDICT_PREDICTOR_1_PHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_1_pht_size_counter);
-	  }
-	if (_param._predictor_2_have_bht)
-	_vhdl_testbench->set_port (" in_PREDICT_PREDICTOR_2_BHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_2_bht_size_shifter);
-	if (_param._predictor_2_have_pht)
-	_vhdl_testbench->set_port (" in_PREDICT_PREDICTOR_2_PHT_HISTORY_"+toString(i)+"        ", IN,_param._predictor_2_pht_size_counter);
-
-	_vhdl_testbench->set_port ("out_PREDICT_HISTORY_"+toString(i)+"                        ",OUT,_param._size_history);
-	_vhdl_testbench->set_port ("out_PREDICT_DIRECTION_"+toString(i)+"                      ",OUT,1);
-      }
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {
-	_vhdl_testbench->set_port (" in_BRANCH_COMPLETE_VAL_"+toString(i)+"                    ", IN, 1);
-	_vhdl_testbench->set_port ("out_BRANCH_COMPLETE_PREDICTOR_2_VAL_"+toString(i)+"        ",OUT, 1);
-
-	_vhdl_testbench->set_port (" in_BRANCH_COMPLETE_PREDICTOR_0_ACK_"+toString(i)+"        ", IN, 1);
-	_vhdl_testbench->set_port (" in_BRANCH_COMPLETE_PREDICTOR_1_ACK_"+toString(i)+"        ", IN, 1);
-	  }
-	_vhdl_testbench->set_port (" in_BRANCH_COMPLETE_PREDICTOR_2_ACK_"+toString(i)+"        ", IN, 1);
-	_vhdl_testbench->set_port ("out_BRANCH_COMPLETE_ACK_"+toString(i)+"                    ",OUT, 1);
-
-	if (_param._have_meta_predictor)
-	  {
-	if (_param._predictor_0_have_bht)
-	_vhdl_testbench->set_port ("out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_0_bht_size_shifter);
-	if (_param._predictor_0_have_pht)
-	_vhdl_testbench->set_port ("out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_0_pht_size_counter);
-	if (_param._predictor_1_have_bht)
-	_vhdl_testbench->set_port ("out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_1_bht_size_shifter);
-	if (_param._predictor_1_have_pht)
-	_vhdl_testbench->set_port ("out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_1_pht_size_counter);
-	  }
-	if (_param._predictor_2_have_bht)
-	_vhdl_testbench->set_port ("out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_2_bht_size_shifter);
-	if (_param._predictor_2_have_pht)
-	_vhdl_testbench->set_port ("out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY_"+toString(i)+"",OUT,_param._predictor_2_pht_size_counter);
-
-	_vhdl_testbench->set_port (" in_BRANCH_COMPLETE_HISTORY_"+toString(i)+"                ", IN,_param._size_history);
-	if (_param._have_meta_predictor)
-	  {
-	_vhdl_testbench->set_port (" in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+"              ", IN,1);
-	_vhdl_testbench->set_port ("out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION_"+toString(i)+"  ",OUT,1);
-	  }
-      }
-
-    log_printf(FUNC,Meta_Predictor_Glue,"vhdl_testbench_port","End");
-  };
-
-}; // end namespace meta_predictor_glue
-}; // 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/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_vhdl_testbench_transition.cpp	(revision 44)
@@ -21,84 +21,6 @@
     log_printf(FUNC,Meta_Predictor_Glue,"vhdl_testbench_transition","Begin");
 
-    // Evaluation before read the ouput signal
-    sc_start(0);
-
-    // In order with file Meta_Predictor_Glue_vhdl_testbench_port.cpp
-    // Warning : if a output depend of a subcomponent, take directly the port of subcomponent
-    // (because we have no control on the ordonnancer's policy)
-
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_PREDICTOR_0_ACK [i]));
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_PREDICTOR_1_ACK [i]));
-	  }
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_PREDICTOR_2_ACK [i]));
-	_vhdl_testbench->add_output(PORT_READ(out_PREDICT_ACK [i]));
-
-	if (_param._have_meta_predictor)
-	  {
-	if (_param._predictor_0_have_bht)
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_PREDICTOR_0_BHT_HISTORY [i]));
-	if (_param._predictor_0_have_pht)
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_PREDICTOR_0_PHT_HISTORY [i]));
-	if (_param._predictor_1_have_bht)
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_PREDICTOR_1_BHT_HISTORY [i]));
-	if (_param._predictor_1_have_pht)
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_PREDICTOR_1_PHT_HISTORY [i]));
-	  }
-	if (_param._predictor_2_have_bht)
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_PREDICTOR_2_BHT_HISTORY [i]));
-	if (_param._predictor_2_have_pht)
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_PREDICTOR_2_PHT_HISTORY [i]));
-
-	_vhdl_testbench->add_output(PORT_READ(out_PREDICT_HISTORY [i]));
-	_vhdl_testbench->add_output(PORT_READ(out_PREDICT_DIRECTION [i]));
-      }
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {
-	_vhdl_testbench->add_input (PORT_READ( in_BRANCH_COMPLETE_VAL             [i]));
-	_vhdl_testbench->add_output(PORT_READ(out_BRANCH_COMPLETE_PREDICTOR_2_VAL [i]));
-
-	_vhdl_testbench->add_input (PORT_READ( in_BRANCH_COMPLETE_PREDICTOR_0_ACK [i]));
-	_vhdl_testbench->add_input (PORT_READ( in_BRANCH_COMPLETE_PREDICTOR_1_ACK [i]));
-	  }
-	_vhdl_testbench->add_input (PORT_READ( in_BRANCH_COMPLETE_PREDICTOR_2_ACK [i]));
-	_vhdl_testbench->add_output(PORT_READ(out_BRANCH_COMPLETE_ACK [i]));
-
-	if (_param._have_meta_predictor)
-	  {
-	if (_param._predictor_0_have_bht)
-	_vhdl_testbench->add_output(PORT_READ(out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY [i]));
-	if (_param._predictor_0_have_pht)
-	_vhdl_testbench->add_output(PORT_READ(out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY [i]));
-	if (_param._predictor_1_have_bht)
-	_vhdl_testbench->add_output(PORT_READ(out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY [i]));
-	if (_param._predictor_1_have_pht)
-	_vhdl_testbench->add_output(PORT_READ(out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY [i]));
-	  }
-	if (_param._predictor_2_have_bht)
-	_vhdl_testbench->add_output(PORT_READ(out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY [i]));
-	if (_param._predictor_2_have_pht)
-	_vhdl_testbench->add_output(PORT_READ(out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY [i]));
-
-	_vhdl_testbench->add_input (PORT_READ( in_BRANCH_COMPLETE_HISTORY   [i]));
-	if (_param._have_meta_predictor)
-	  {
-	_vhdl_testbench->add_input (PORT_READ( in_BRANCH_COMPLETE_DIRECTION [i]));
-	_vhdl_testbench->add_output(PORT_READ(out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION [i]));
-	  }
-      }
-    
-    // add_test :
-    //  - True  : the cycle must be compare with the output of systemC
-    //  - False : no test
-    _vhdl_testbench->add_test(true);
-
-    _vhdl_testbench->new_cycle (); // always at the end
+//  sc_start(0);
+    _interfaces->testbench();
 
     log_printf(FUNC,Meta_Predictor_Glue,"vhdl_testbench_transition","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/config-alpha_21264.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/config-alpha_21264.cfg	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/config-alpha_21264.cfg	(revision 44)
@@ -0,0 +1,26 @@
+Meta_Predictor
+1	1	+1	# have_meta_predictor               
+1	1	+1	# predictor_0_have_bht              
+10	10	+1	# predictor_0_bht_size_shifter      
+1024	1024	*2	# predictor_0_bht_nb_shifter
+1	1	+1	# predictor_0_have_pht              
+3	3	+1	# predictor_0_pht_size_counter      
+1024	1024	*2	# predictor_0_pht_nb_counter
+0	0	+1	# predictor_0_pht_size_address_share
+1	1	+1	# predictor_1_have_bht              
+12	12	+1	# predictor_1_bht_size_shifter      
+2  	2  	*2	# predictor_1_bht_nb_shifter
+1	1	+1	# predictor_1_have_pht              
+2	2	+1	# predictor_1_pht_size_counter      
+4096	4096	*2	# predictor_1_pht_nb_counter
+0	0	+1	# predictor_1_pht_size_address_share
+0	0	+1	# predictor_2_have_bht              
+4	4	+1	# predictor_2_bht_size_shifter      
+256	256	*2	# predictor_2_bht_nb_shifter
+1	1	+1	# predictor_2_have_pht              
+2	2	+1	# predictor_2_pht_size_counter      
+4096	4096	*2	# predictor_2_pht_nb_counter
+0	0	+1	# predictor_2_pht_size_address_share
+30	30	*2	# size_address
+1	1	+1	# nb_prediction                     
+1	1	+1	# nb_branch_complete                
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/configuration.cfg	(revision 43)
+++ 	(revision )
@@ -1,26 +1,0 @@
-Meta_Predictor
-1	1	+1	# have_meta_predictor               
-1	1	+1	# predictor_0_have_bht              
-10	10	+1	# predictor_0_bht_size_shifter      
-1024	1024	*2	# predictor_0_bht_nb_shifter
-1	1	+1	# predictor_0_have_pht              
-3	3	+1	# predictor_0_pht_size_counter      
-1024	1024	*2	# predictor_0_pht_nb_counter
-0	0	+1	# predictor_0_pht_size_address_share
-1	1	+1	# predictor_1_have_bht              
-12	12	+1	# predictor_1_bht_size_shifter      
-2  	2  	*2	# predictor_1_bht_nb_shifter
-1	1	+1	# predictor_1_have_pht              
-2	2	+1	# predictor_1_pht_size_counter      
-4096	4096	*2	# predictor_1_pht_nb_counter
-0	0	+1	# predictor_1_pht_size_address_share
-0	0	+1	# predictor_2_have_bht              
-4	4	+1	# predictor_2_bht_size_shifter      
-256	256	*2	# predictor_2_bht_nb_shifter
-1	1	+1	# predictor_2_have_pht              
-2	2	+1	# predictor_2_pht_size_counter      
-4096	4096	*2	# predictor_2_pht_nb_counter
-0	0	+1	# predictor_2_pht_size_address_share
-30	30	*2	# size_address
-1	1	+1	# nb_prediction                     
-1	1	+1	# nb_branch_complete                
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/src/test.cpp	(revision 44)
@@ -10,5 +10,5 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/include/test.h"
-#include "Include/Test.h"
+#include "Common/include/Test.h"
 
 void test (string name,
@@ -128,14 +128,15 @@
 
   sc_start(0);
-  _Meta_Predictor->vhdl_testbench_label("Initialisation");
+
+  NRESET->write(0);
+  sc_start(5);
+  NRESET->write(1);
+
   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
 
-
-  _Meta_Predictor->vhdl_testbench_label("Loop of Test");
   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl;
 
   for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
     {
-      _Meta_Predictor->vhdl_testbench_label("Iteration "+toString(iteration));
 
       sc_start(1);
@@ -146,4 +147,6 @@
    ********************************************************/
 
+  cout << "Test OK" << endl;
+
   cout << "<" << name << "> ............ Stop Simulation" << endl;
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/src/test.cpp	(revision 44)
@@ -10,6 +10,6 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/include/test.h"
-#include "Include/BitManipulation.h"
-#include "Include/Test.h"
+#include "Common/include/BitManipulation.h"
+#include "Common/include/Test.h"
 
 void test (string name,
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 43)
+++ 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 44)
@@ -13,6 +13,6 @@
 #endif
 
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 // Internal structure
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 // Internal structure
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Types.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo                    {
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_body.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_body.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_body.cpp	(revision 44)
@@ -20,42 +20,4 @@
   void Branch_History_Table::vhdl_body (Vhdl * & vhdl)
   {
-//     vhdl->set_body ("-- Output : always at '1'");
-//     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-//       vhdl->set_body ("out_BRANCH_COMPLETE_ACK_"+toString(i)+" <= '1';");
-//     for (uint32_t i=0; i<_param._nb_prediction     ; i++)
-//       vhdl->set_body ("out_PREDICT_ACK_"+toString(i)+"         <= '1';");
-//     vhdl->set_body ("");
-
-    list<string> list_port_map;
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	vhdl->set_body_component_port_map (list_port_map," in_SHIFTER_"+toString(i)+"_DATA     ","    in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY"  );
-	vhdl->set_body_component_port_map (list_port_map," in_SHIFTER_"+toString(i)+"_CARRY_IN ","    in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION");
-	vhdl->set_body_component_port_map (list_port_map,"out_SHIFTER_"+toString(i)+"_DATA     ","signal_BRANCH_COMPLETE_"+toString(i)+"_HISTORY"  );
-      }
-
-    vhdl->set_body_component ("component_Shifter",_name+"_Shifter",list_port_map);
-
-    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");
-
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	vhdl->set_body_component_port_map (list_port_map," in_READ_"+toString(i)+"_VAL     "," In_PREDICT_"+toString(i)+"_VAL");
-	vhdl->set_body_component_port_map (list_port_map,"out_READ_"+toString(i)+"_ACK     ","out_PREDICT_"+toString(i)+"_ACK");
-	vhdl->set_body_component_port_map (list_port_map," in_READ_"+toString(i)+"_ADDRESS "," in_PREDICT_"+toString(i)+"_ADDRESS");
-	vhdl->set_body_component_port_map (list_port_map,"out_READ_"+toString(i)+"_DATA    ","out_PREDICT_"+toString(i)+"_HISTORY");
-      }
-    
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	vhdl->set_body_component_port_map (list_port_map," in_WRITE_"+toString(i)+"_VAL    ","    in_BRANCH_COMPLETE_"+toString(i)+"_VAL");
-	vhdl->set_body_component_port_map (list_port_map,"out_WRITE_"+toString(i)+"_ACK    ","   out_BRANCH_COMPLETE_"+toString(i)+"_ACK");
-	vhdl->set_body_component_port_map (list_port_map," in_WRITE_"+toString(i)+"_ADDRESS","    in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS");
-	vhdl->set_body_component_port_map (list_port_map," in_WRITE_"+toString(i)+"_DATA   ","signal_BRANCH_COMPLETE_"+toString(i)+"_HISTORY");
-      }
-    vhdl->set_body_component ("component_RegisterFile",_name+"_RegisterFile",list_port_map);
   };
 
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_testbench_transition.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_testbench_transition.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_testbench_transition.cpp	(revision 44)
@@ -20,5 +20,5 @@
   void Branch_History_Table::vhdl_testbench_transition (void)
   {
-    sc_start(0);
+//     sc_start(0);
 
     _interfaces->testbench();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/config0.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/config0.cfg	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/config0.cfg	(revision 44)
@@ -0,0 +1,5 @@
+Pattern_History_Table
+2	8	*2	# size_counter      	
+2	64	*4	# nb_counter        
+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/Pattern_History_Table/SelfTest/config1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/config1.cfg	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/config1.cfg	(revision 44)
@@ -0,0 +1,5 @@
+Pattern_History_Table
+2	8	*2	# size_counter      	
+2	64	*4	# nb_counter        
+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/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 43)
+++ 	(revision )
@@ -1,5 +1,0 @@
-Pattern_History_Table
-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/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/src/test.cpp	(revision 44)
@@ -10,5 +10,5 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/include/test.h"
-#include "Include/Test.h"
+#include "Common/include/Test.h"
 
 void test (string name,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 // Internal structure
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Pattern_History_Table.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Pattern_History_Table.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Pattern_History_Table.h	(revision 44)
@@ -14,6 +14,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 // Internal structure
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/include/Types.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo                    {
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_testbench_transition.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_testbench_transition.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_testbench_transition.cpp	(revision 44)
@@ -22,5 +22,5 @@
     log_printf(FUNC,Pattern_History_Table,"vhdl_testbench_transition","Begin");
 
-    sc_start(0);
+//     sc_start(0);
 
     _interfaces->testbench();
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 44)
@@ -1,5 +1,5 @@
 Two_Level_Branch_Predictor
-1	1	+1	# have_bht           
-8	8	+1	# bht_size_shifter   
+0	1	+1	# have_bht           
+4	4	+1	# bht_size_shifter   
 32	32	*2	# bht_nb_shifter     
 1	1	+1	# have_pht           
@@ -8,4 +8,4 @@
 2	2	+1	# pht_size_address_share
 16	16	+1	# size_address      
-2	2	+1	# nb_prediction     
-2	2	+1	# nb_branch_complete
+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/SelfTest/config1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/config1.cfg	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/config1.cfg	(revision 44)
@@ -0,0 +1,11 @@
+Two_Level_Branch_Predictor
+1	1	+1	# have_bht           
+4	4	+1	# bht_size_shifter   
+32	32	*2	# bht_nb_shifter     
+0	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      
+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/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 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/src/test.cpp	(revision 44)
@@ -10,6 +10,6 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/include/test.h"
-#include "Include/Test.h"
-#include "Include/BitManipulation.h"
+#include "Common/include/Test.h"
+#include "Common/include/BitManipulation.h"
 void test (string name,
 	   morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Parameters param)
@@ -132,4 +132,8 @@
   sc_start(0);
 
+  NRESET->write(0);
+  sc_start(5);
+  NRESET->write(1);
+
   for (uint32_t i=0; i<param._nb_prediction; i++)
     PREDICT_VAL                  [i]->write(0);
@@ -156,4 +160,9 @@
       uint32_t nb_reg_by_group = (1<<(param._pht_size_address-size_address_shift));
 
+//       cout << "pht_size_address           : " << param._pht_size_address << endl;
+//       cout << "size_address_shift         : " << size_address_shift << endl;
+//       cout << "nb_group                   : " << nb_group           << endl;
+//       cout << "nb_reg_by_group            : " << nb_reg_by_group    << endl;
+
       cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Init pht" << endl;
       
@@ -168,11 +177,14 @@
 	  for (uint32_t j=0; j<nb_reg_by_group; j++)
 	    {
+	      cout << "j : " << j << " on " << nb_reg_by_group << endl;
 	      BRANCH_COMPLETE_ADDRESS [num_port_branch_complete]->write(j);
-	      
+
 	      sc_start(1);
 
 	      // wait ackwolegde
 	      while (BRANCH_COMPLETE_ACK [num_port_branch_complete] -> read() == 0)
-		sc_start(1);
+		{
+		  sc_start(1);
+		}
 	    }
 	}
@@ -195,5 +207,7 @@
       // wait ackwolegde
       while (BRANCH_COMPLETE_ACK [num_port_branch_complete] -> read() == 0)
-	sc_start(1);
+	{
+	  sc_start(1);
+	}
     }
 
@@ -225,5 +239,7 @@
       // wait ackwolegde
       while (PREDICT_ACK [num_port_predict] -> read() == 0)
-	sc_start(1);
+	{
+	  sc_start(1);
+	}
       PREDICT_ACK                  [num_port_predict        ]->write(0);
 
@@ -231,8 +247,15 @@
 
       // Test
+      cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Predict (Test)   : " << endl; 
       if (param._have_bht)
-      TEST(Tbht_history_t,bht_history             ,PREDICT_BHT_HISTORY[num_port_predict]->read());
+	{
+	  cout << "\tbht_history " << PREDICT_BHT_HISTORY[num_port_predict]->read() << endl;
+	  TEST(Tbht_history_t,bht_history             ,PREDICT_BHT_HISTORY[num_port_predict]->read());
+	}
       if (param._have_pht)
-      TEST(Tpht_history_t,pht_history[bht_history],PREDICT_PHT_HISTORY[num_port_predict]->read());
+	{
+	  cout << "\tpht_history " << PREDICT_PHT_HISTORY[num_port_predict]->read() << endl;
+	  TEST(Tpht_history_t,pht_history[bht_history],PREDICT_PHT_HISTORY[num_port_predict]->read());
+	}
 
       // update
@@ -267,6 +290,7 @@
       // wait ackwolegde
       while (BRANCH_COMPLETE_ACK [num_port_branch_complete] -> read() == 0)
-	sc_start(1);
-
+	{
+	  sc_start(1);
+	}
       BRANCH_COMPLETE_VAL          [num_port_branch_complete]->write(0);
     }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/config0.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/config0.cfg	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/config0.cfg	(revision 44)
@@ -0,0 +1,10 @@
+Two_Level_Branch_Predictor_Glue
+0	1	+1	# have_bht           
+11	11	+1	# bht_size_history   
+4	4	+1	# bht_size_address   
+1	1	+1	# have_pht           
+13	13	+1	# pht_size_address   
+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/Two_Level_Branch_Predictor_Glue/SelfTest/config1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/config1.cfg	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/config1.cfg	(revision 44)
@@ -0,0 +1,10 @@
+Two_Level_Branch_Predictor_Glue
+1	1	+1	# have_bht           
+11	11	+1	# bht_size_history   
+4	4	+1	# bht_size_address   
+0	1	+1	# have_pht           
+13	13	+1	# pht_size_address   
+0	2	+1	# pht_size_address_share
+16	16	+1	# size_address       
+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/Two_Level_Branch_Predictor_Glue/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/configuration.cfg	(revision 43)
+++ 	(revision )
@@ -1,10 +1,0 @@
-Two_Level_Branch_Predictor_Glue
-1	1	+1	# have_bht           
-11	11	+1	# bht_size_history   
-4	4	+1	# bht_size_address   
-0	1	+1	# have_pht           
-13	13	+1	# pht_size_address   
-0	2	+1	# pht_size_address_share
-16	16	+1	# size_address       
-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/Two_Level_Branch_Predictor_Glue/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/src/test.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/src/test.cpp	(revision 44)
@@ -10,6 +10,6 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/include/test.h"
-#include "Include/BitManipulation.h"
-#include "Include/Test.h"
+#include "Common/include/BitManipulation.h"
+#include "Common/include/Test.h"
 
 void test (string name,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 #include <math.h>
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
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 43)
+++ 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 44)
@@ -14,6 +14,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Parameters.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Types.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo                    {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/src/Parameters_msg_error.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/src/Parameters_msg_error.cpp	(revision 44)
@@ -26,9 +26,15 @@
     string msg = "";
     
-    if (_have_pht and (_pht_size_address_share >= _pht_size_address))
+    if ((_have_bht and _have_pht) and (_pht_size_address_share >= _pht_size_address))
       {
 	msg += "  - You can't have higher pht_size_address_share >= pht_size_address\n";
 	msg += "    * pht_size_address                : " + toString(_pht_size_address      ) + "\n";
 	msg += "    * pht_size_address_share          : " + toString(_pht_size_address_share) + "\n";
+      }
+    if ((_have_bht and _have_pht) and (_bht_size_history > _pht_size_address))
+      {
+	msg += "  - You can't have higher bht_size_history > pht_size_address\n";
+	msg += "    * bht_size_history                : " + toString(_bht_size_history      ) + "\n";
+	msg += "    * pht_size_address                : " + toString(_pht_size_address      ) + "\n";
       }
 
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.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.cpp	(revision 43)
+++ 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.cpp	(revision 44)
@@ -34,7 +34,5 @@
     log_printf(FUNC,Two_Level_Branch_Predictor_Glue,"Two_Level_Branch_Predictor_Glue","Begin");
 
-#ifdef SYSTEMC
     allocation ();
-#endif
 
 #ifdef STATISTICS
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_genMealy_branch_complete_ack.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_genMealy_branch_complete_ack.cpp	(revision 43)
+++ 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_genMealy_branch_complete_ack.cpp	(revision 44)
@@ -8,5 +8,5 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Two_Level_Branch_Predictor_Glue.h"
-#include "Include/BitManipulation.h"
+#include "Common/include/BitManipulation.h"
 
 namespace morpheo {
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_genMealy_branch_complete_bht_address.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_genMealy_branch_complete_bht_address.cpp	(revision 43)
+++ 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_genMealy_branch_complete_bht_address.cpp	(revision 44)
@@ -8,5 +8,5 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Two_Level_Branch_Predictor_Glue.h"
-#include "Include/BitManipulation.h"
+#include "Common/include/BitManipulation.h"
 
 namespace morpheo {
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_genMealy_branch_complete_pht_address.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_genMealy_branch_complete_pht_address.cpp	(revision 43)
+++ 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_genMealy_branch_complete_pht_address.cpp	(revision 44)
@@ -8,5 +8,5 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Two_Level_Branch_Predictor_Glue.h"
-#include "Include/BitManipulation.h"
+#include "Common/include/BitManipulation.h"
 
 namespace morpheo {
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_genMealy_predict_ack.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_genMealy_predict_ack.cpp	(revision 43)
+++ 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_genMealy_predict_ack.cpp	(revision 44)
@@ -8,5 +8,5 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Two_Level_Branch_Predictor_Glue.h"
-#include "Include/BitManipulation.h"
+#include "Common/include/BitManipulation.h"
 
 namespace morpheo {
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_genMealy_predict_bht_address.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_genMealy_predict_bht_address.cpp	(revision 43)
+++ 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_genMealy_predict_bht_address.cpp	(revision 44)
@@ -8,5 +8,5 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Two_Level_Branch_Predictor_Glue.h"
-#include "Include/BitManipulation.h"
+#include "Common/include/BitManipulation.h"
 
 namespace morpheo {
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_genMealy_predict_pht_address.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_genMealy_predict_pht_address.cpp	(revision 43)
+++ 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_genMealy_predict_pht_address.cpp	(revision 44)
@@ -8,5 +8,5 @@
 
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/include/Two_Level_Branch_Predictor_Glue.h"
-#include "Include/BitManipulation.h"
+#include "Common/include/BitManipulation.h"
 
 namespace morpheo {
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_testbench_transition.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_testbench_transition.cpp	(revision 43)
+++ 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_testbench_transition.cpp	(revision 44)
@@ -22,5 +22,5 @@
     log_printf(FUNC,Two_Level_Branch_Predictor_Glue,"vhdl_testbench_transition","Begin");
 
-    sc_start(0);
+//     sc_start(0);
 
     _interfaces->testbench();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 // Internal structure
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 // Internal structure
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/include/Statistics.h"
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 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Two_Level_Branch_Predictor.h	(revision 44)
@@ -14,6 +14,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 // Internal structure
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Types.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo {
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 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_allocation.cpp	(revision 44)
@@ -18,6 +18,4 @@
   void Two_Level_Branch_Predictor::allocation (void)
   {
-    string rename;
-
     log_printf(FUNC,Two_Level_Branch_Predictor,"allocation","Begin");
 
@@ -176,5 +174,4 @@
     if (_param._have_bht)
       {
-	cout << "GEU 1" << endl;
 #ifdef POSITION
 	_component->interface_map (_name+"_Branch_History_Table","",
@@ -214,5 +211,4 @@
     if (_param._have_pht)
       {
-	cout << "GEU 2" << endl;
 #ifdef POSITION
 	_component->interface_map (_name+"_Pattern_History_Table","",
@@ -250,5 +246,4 @@
 
     // =====[ component_Two_Level_Branch_Predictor_Glue - Instanciation ]=
-    cout << "GEU 3" << endl;
 #ifdef POSITION
 	_component->interface_map (_name+"_Two_Level_Branch_Predictor_Glue","",
@@ -258,8 +253,6 @@
 	_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)
 	  {
@@ -267,5 +260,4 @@
 	_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)
 	  {
@@ -273,13 +265,10 @@
 	_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                         ,"out_PREDICT_"+toString(i)+"_BHT_HISTORY");
-	cout << "GEU 3.1.4.1" << endl;
+	_component->port_map(_name+"_Two_Level_Branch_Predictor_Glue", "in_PREDICT_"+toString(i)+"_BHT_HISTORY" , _name+"_Branch_History_Table" ,"out_PREDICT_"+toString(i)+"_HISTORY");
 	_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++)
       {
@@ -299,5 +288,4 @@
         _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();
@@ -306,294 +294,4 @@
     log_printf(FUNC,Two_Level_Branch_Predictor,"allocation","End");
   };
-
-
-
-
-
-
-
-//   void Two_Level_Branch_Predictor::allocation (void)
-//   {
-//     string rename;
-
-//     log_printf(FUNC,Two_Level_Branch_Predictor,"allocation","Begin");
-
-//     _component   = new Component ();
-
-//     Entity * entity = _component->set_entity (_name                 
-// #ifdef POSITION
-// 					     ,"Two_Level_Branch_Predictor"
-// 					     ,MIXTE
-// #endif
-// 					      );
-    
-//     _interfaces = entity->set_interfaces();
-
-//     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//     {
-//       Interface * interface = _interfaces->set_interface(""
-// #ifdef POSITION
-// 							 , IN  
-// 							 , SOUTH
-// 							 , "Generalist interface"
-// #endif
-// 							 );
-      
-//       in_CLOCK              = interface->set_signal_clk              ("clock" ,1);
-//       in_NRESET             = interface->set_signal_in  <Tcontrol_t> ("nreset",1,RESET_VHDL_YES);
-//     }
-    
-//     // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-//      in_PREDICT_VAL                 = new SC_IN (Tcontrol_t)     * [_param._nb_prediction     ];
-//     out_PREDICT_ACK                 = new SC_OUT(Tcontrol_t)     * [_param._nb_prediction     ];
-//      in_PREDICT_ADDRESS             = new SC_IN (Taddress_t)     * [_param._nb_prediction     ];
-//     if (_param._have_bht)
-//     out_PREDICT_BHT_HISTORY         = new SC_OUT(Tbht_history_t) * [_param._nb_prediction     ];
-//     if (_param._have_pht)
-//     out_PREDICT_PHT_HISTORY         = new SC_OUT(Tpht_history_t) * [_param._nb_prediction     ];
-// //     if (_param._have_bht)
-// //       {
-// //     signal_PREDICT_BHT_ACK          = new SC_SIGNAL(Tcontrol_t)     * [_param._nb_prediction];
-// //     signal_PREDICT_BHT_ADDRESS      = new SC_SIGNAL(Taddress_t)     * [_param._nb_prediction];
-// //       }
-// //     if (_param._have_pht)
-// //       {
-// //     signal_PREDICT_PHT_ACK          = new SC_SIGNAL(Tcontrol_t)     * [_param._nb_prediction];
-// //     signal_PREDICT_PHT_ADDRESS      = new SC_SIGNAL(Taddress_t)     * [_param._nb_prediction];
-// //       }
-
-//     for (uint32_t i=0; i<_param._nb_prediction; i++)
-//       {
-// 	rename = "in_PREDICT_VAL_"         +toString(i);
-// 	 in_PREDICT_VAL                 [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-
-// 	rename = "out_PREDICT_ACK_"        +toString(i);
-// 	out_PREDICT_ACK                 [i] = new SC_OUT(Tcontrol_t)     (rename.c_str());
-
-// 	rename = "in_PREDICT_ADDRESS_"     +toString(i);
-// 	 in_PREDICT_ADDRESS             [i] = new SC_IN (Taddress_t)     (rename.c_str());
-
-// 	if (_param._have_bht)
-// 	  {
-// 	rename = "out_PREDICT_BHT_HISTORY_"+toString(i);
-// 	out_PREDICT_BHT_HISTORY         [i] = new SC_OUT(Tbht_history_t) (rename.c_str());
-// 	  }
-
-// 	if (_param._have_pht)
-// 	  {
-//     	rename = "out_PREDICT_PHT_HISTORY_"+toString(i);
-// 	out_PREDICT_PHT_HISTORY         [i] = new SC_OUT(Tpht_history_t) (rename.c_str());
-// 	  }
-
-// // 	if (_param._have_bht)
-// // 	  {
-// // 	rename = "signal_PREDICT_BHT_ACK_"    +toString(i);
-// // 	signal_PREDICT_BHT_ACK          [i] = new SC_SIGNAL(Tcontrol_t)     (rename.c_str());
-
-// // 	rename = "signal_PREDICT_BHT_ADDRESS_"+toString(i);
-// // 	signal_PREDICT_BHT_ADDRESS      [i] = new SC_SIGNAL(Taddress_t)     (rename.c_str());
-// // 	  }
-
-// // 	if (_param._have_pht)
-// // 	  {
-// // 	rename = "signal_PREDICT_PHT_ACK_"    +toString(i);
-// // 	signal_PREDICT_PHT_ACK          [i] = new SC_SIGNAL(Tcontrol_t)     (rename.c_str());
-
-// // 	rename = "signal_PREDICT_PHT_ADDRESS_"+toString(i);
-// // 	signal_PREDICT_PHT_ADDRESS      [i] = new SC_SIGNAL(Taddress_t)     (rename.c_str());
-// // 	  }
-//       }
-
-//      in_BRANCH_COMPLETE_VAL         = new SC_IN (Tcontrol_t)     * [_param._nb_branch_complete];
-//     out_BRANCH_COMPLETE_ACK         = new SC_OUT(Tcontrol_t)     * [_param._nb_branch_complete];
-//      in_BRANCH_COMPLETE_ADDRESS     = new SC_IN (Taddress_t)     * [_param._nb_branch_complete];
-//     if (_param._have_bht)
-//      in_BRANCH_COMPLETE_BHT_HISTORY = new SC_IN (Tbht_history_t) * [_param._nb_branch_complete];
-//     if (_param._have_pht)
-//      in_BRANCH_COMPLETE_PHT_HISTORY = new SC_IN (Tpht_history_t) * [_param._nb_branch_complete];
-//      in_BRANCH_COMPLETE_DIRECTION   = new SC_IN (Tcontrol_t)     * [_param._nb_branch_complete];
-// //     if (_param._have_bht)
-// //       {
-// //     signal_BRANCH_COMPLETE_BHT_ACK     = new SC_SIGNAL(Tcontrol_t) * [_param._nb_branch_complete];
-// //     signal_BRANCH_COMPLETE_BHT_ADDRESS = new SC_SIGNAL(Taddress_t) * [_param._nb_branch_complete]; 
-// //       }
-// //     if (_param._have_pht)
-// //       {
-// //     signal_BRANCH_COMPLETE_PHT_ACK     = new SC_SIGNAL(Tcontrol_t) * [_param._nb_branch_complete];
-// //     signal_BRANCH_COMPLETE_PHT_ADDRESS = new SC_SIGNAL(Taddress_t) * [_param._nb_branch_complete]; 
-// //       }
-
-//     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-//       {
-// 	rename = "in_BRANCH_COMPLETE_VAL_"         +toString(i);
-// 	 in_BRANCH_COMPLETE_VAL         [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-
-// 	rename = "out_BRANCH_COMPLETE_ACK_"        +toString(i);
-// 	out_BRANCH_COMPLETE_ACK         [i] = new SC_OUT(Tcontrol_t)     (rename.c_str());
-
-// 	rename = "in_BRANCH_COMPLETE_ADDRESS_"     +toString(i);
-// 	 in_BRANCH_COMPLETE_ADDRESS     [i] = new SC_IN (Taddress_t)     (rename.c_str());
-
-// 	if (_param._have_bht)
-// 	  {
-//     	rename = "in_BRANCH_COMPLETE_BHT_HISTORY_"+toString(i);
-// 	 in_BRANCH_COMPLETE_BHT_HISTORY [i] = new SC_IN (Tbht_history_t) (rename.c_str());
-// 	  }
-// 	if (_param._have_pht)
-// 	  {
-// 	rename = "in_BRANCH_COMPLETE_PHT_HISTORY_"+toString(i);
-// 	 in_BRANCH_COMPLETE_PHT_HISTORY [i] = new SC_IN (Tpht_history_t) (rename.c_str());
-// 	  }
-// 	rename = "in_BRANCH_COMPLETE_DIRECTION_"  +toString(i);
-// 	 in_BRANCH_COMPLETE_DIRECTION   [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-// // 	if (_param._have_bht)
-// // 	  {
-// // 	rename = "signal_BRANCH_COMPLETE_BHT_ACK_"    +toString(i);
-// // 	signal_BRANCH_COMPLETE_BHT_ACK     [i] = new SC_SIGNAL(Tcontrol_t) (rename.c_str());
-
-// // 	rename = "signal_BRANCH_COMPLETE_BHT_ADDRESS_"+toString(i); 
-// // 	signal_BRANCH_COMPLETE_BHT_ADDRESS [i] = new SC_SIGNAL(Taddress_t) (rename.c_str()); 
-// // 	  }
-// // 	if (_param._have_pht)
-// // 	  {
-// // 	rename = "signal_BRANCH_COMPLETE_PHT_ACK_"    +toString(i);
-// // 	signal_BRANCH_COMPLETE_PHT_ACK     [i] = new SC_SIGNAL(Tcontrol_t) (rename.c_str());
-
-// // 	rename = "signal_BRANCH_COMPLETE_PHT_ADDRESS_"+toString(i); 
-// // 	signal_BRANCH_COMPLETE_PHT_ADDRESS [i] = new SC_SIGNAL(Taddress_t) (rename.c_str()); 
-// // 	  }
-//       }
-
-//     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-//     string name_component;
-
-//     // =====[ component_Branch_History_Table ]============================    
-//     if (_param._have_bht)
-//       {
-// 	name_component = _name+"_Branch_History_Table";
-
-// 	log_printf(INFO,Two_Level_Branch_Predictor,"allocation","Allocation : %s",name_component.c_str());
-	
-// 	component_Branch_History_Table = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::branch_history_table ::Branch_History_Table (name_component.c_str()               ,
-// #ifdef STATISTICS
-// 																						       _param_statistics                    ,
-// #endif
-// 																						       *(_param._param_branch_history_table));
-	
-// 	// Instantiation
-// 	(*(component_Branch_History_Table->in_CLOCK ))        (*(in_CLOCK ));
-// 	(*(component_Branch_History_Table->in_NRESET))        (*(in_NRESET));
-
-// 	for (uint32_t i=0; i<_param._nb_prediction; i++)
-// 	  {
-// 	    (*(component_Branch_History_Table-> in_PREDICT_VAL             [i]))    (*(    in_PREDICT_VAL          [i]));
-// 	    (*(component_Branch_History_Table->out_PREDICT_ACK             [i]))    (*(signal_PREDICT_BHT_ACK      [i]));
-// 	    (*(component_Branch_History_Table-> in_PREDICT_ADDRESS         [i]))    (*(signal_PREDICT_BHT_ADDRESS  [i]));
-// 	    (*(component_Branch_History_Table->out_PREDICT_HISTORY         [i]))    (*(   out_PREDICT_BHT_HISTORY  [i]));
-// 	  }
-	
-// 	for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-// 	  {
-// 	    (*(component_Branch_History_Table-> in_BRANCH_COMPLETE_VAL       [i]))    (*(    in_BRANCH_COMPLETE_VAL         [i]));
-// 	    (*(component_Branch_History_Table->out_BRANCH_COMPLETE_ACK       [i]))    (*(signal_BRANCH_COMPLETE_BHT_ACK     [i]));
-// 	    (*(component_Branch_History_Table-> in_BRANCH_COMPLETE_ADDRESS   [i]))    (*(signal_BRANCH_COMPLETE_BHT_ADDRESS [i]));
-// 	    (*(component_Branch_History_Table-> in_BRANCH_COMPLETE_HISTORY   [i]))    (*(    in_BRANCH_COMPLETE_BHT_HISTORY [i]));
-// 	    (*(component_Branch_History_Table-> in_BRANCH_COMPLETE_DIRECTION [i]))    (*(    in_BRANCH_COMPLETE_DIRECTION   [i]));
-// 	  }
-//       }
-
-//     // =====[ component_Pattern_History_Table ]===========================    
-//     if (_param._have_pht)
-//       {
-// 	name_component = _name+"_Pattern_History_Table";
-	
-// 	log_printf(INFO,Two_Level_Branch_Predictor,"allocation","Allocation : %s",name_component.c_str());
-	
-// 	component_Pattern_History_Table = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::pattern_history_table::Pattern_History_Table (name_component.c_str()               ,
-// #ifdef STATISTICS
-// 																							 _param_statistics                    ,
-// #endif
-// 																							 *(_param._param_pattern_history_table));
-	
-// 	// Instantiation
-// 	(*(component_Pattern_History_Table->in_CLOCK))        (*(in_CLOCK));
-// 	(*(component_Pattern_History_Table->in_NRESET))       (*(in_NRESET));
-	
-// 	for (uint32_t i=0; i<_param._nb_prediction; i++)
-// 	  {
-// 	    (*(component_Pattern_History_Table-> in_PREDICT_VAL             [i]))    (*(    in_PREDICT_VAL          [i]));
-// 	    (*(component_Pattern_History_Table->out_PREDICT_ACK             [i]))    (*(signal_PREDICT_PHT_ACK      [i]));
-// 	    (*(component_Pattern_History_Table-> in_PREDICT_ADDRESS         [i]))    (*(signal_PREDICT_PHT_ADDRESS  [i]));
-// 	    (*(component_Pattern_History_Table->out_PREDICT_HISTORY         [i]))    (*(   out_PREDICT_PHT_HISTORY  [i]));
-// 	  }
-	
-// 	for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-// 	  {
-// 	    (*(component_Pattern_History_Table-> in_BRANCH_COMPLETE_VAL       [i]))    (*(    in_BRANCH_COMPLETE_VAL         [i]));
-// 	    (*(component_Pattern_History_Table->out_BRANCH_COMPLETE_ACK       [i]))    (*(signal_BRANCH_COMPLETE_PHT_ACK     [i]));
-// 	    (*(component_Pattern_History_Table-> in_BRANCH_COMPLETE_ADDRESS   [i]))    (*(signal_BRANCH_COMPLETE_PHT_ADDRESS [i]));
-// 	    (*(component_Pattern_History_Table-> in_BRANCH_COMPLETE_HISTORY   [i]))    (*(    in_BRANCH_COMPLETE_PHT_HISTORY [i]));
-// 	    (*(component_Pattern_History_Table-> in_BRANCH_COMPLETE_DIRECTION [i]))    (*(    in_BRANCH_COMPLETE_DIRECTION   [i]));
-// 	  }
-//       }
-
-//     // =====[ component_Two_Level_Branch_Predictor_Glue ]===========================    
-//     name_component = _name+"_Two_Level_Branch_Predictor_Glue";
-    
-//     log_printf(INFO,Two_Level_Branch_Predictor,"allocation","Allocation : %s",name_component.c_str());
-    
-//     component_Two_Level_Branch_Predictor_Glue = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::two_level_branch_predictor_glue::Two_Level_Branch_Predictor_Glue (name_component.c_str()               ,
-// #ifdef STATISTICS
-// 																										   _param_statistics                    ,
-// #endif
-// 																										   *(_param._param_two_level_branch_predictor_glue));
-    
-//     // Instantiation
-// #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-//     (*(component_Two_Level_Branch_Predictor_Glue->in_CLOCK))        (*(in_CLOCK));
-// #endif	
-//     for (uint32_t i=0; i<_param._nb_prediction; i++)
-//       {
-// 	if (_param._have_bht)
-// 	  {
-// 	    (*(component_Two_Level_Branch_Predictor_Glue-> in_PREDICT_BHT_ACK             [i])) (*(signal_PREDICT_BHT_ACK              [i]));
-// 	    (*(component_Two_Level_Branch_Predictor_Glue->out_PREDICT_BHT_ADDRESS         [i])) (*(signal_PREDICT_BHT_ADDRESS          [i]));
-// 	  }											   										  
-// 	if (_param._have_pht)								   							  
-// 	  {											   										  
-// 	    (*(component_Two_Level_Branch_Predictor_Glue-> in_PREDICT_PHT_ACK             [i])) (*(signal_PREDICT_PHT_ACK              [i]));
-// 	    (*(component_Two_Level_Branch_Predictor_Glue->out_PREDICT_PHT_ADDRESS         [i])) (*(signal_PREDICT_PHT_ADDRESS          [i]));
-// 	  }											   										  
-// 	if (_param._have_bht and _param._have_pht)						   					  
-// 	  {											   										  
-// 	    (*(component_Two_Level_Branch_Predictor_Glue-> in_PREDICT_BHT_HISTORY         [i])) (*(   out_PREDICT_BHT_HISTORY          [i]));
-// 	  }											   										  
-// 	(*(component_Two_Level_Branch_Predictor_Glue->out_PREDICT_ACK                 [i])) (*(   out_PREDICT_ACK                  [i]));
-// 	(*(component_Two_Level_Branch_Predictor_Glue-> in_PREDICT_ADDRESS             [i])) (*(    in_PREDICT_ADDRESS              [i]));
-//       }
-    
-//     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-//       {
-// 	if (_param._have_bht)
-// 	  {
-// 	    (*(component_Two_Level_Branch_Predictor_Glue-> in_BRANCH_COMPLETE_BHT_ACK     [i])) (*(signal_BRANCH_COMPLETE_BHT_ACK      [i]));
-// 	    (*(component_Two_Level_Branch_Predictor_Glue->out_BRANCH_COMPLETE_BHT_ADDRESS [i])) (*(signal_BRANCH_COMPLETE_BHT_ADDRESS  [i]));
-// 	  }										   					       				  
-// 	if (_param._have_pht)							   					       	  
-// 	  {										   					       				  
-// 	    (*(component_Two_Level_Branch_Predictor_Glue-> in_BRANCH_COMPLETE_PHT_ACK     [i])) (*(signal_BRANCH_COMPLETE_PHT_ACK      [i]));
-// 	    (*(component_Two_Level_Branch_Predictor_Glue->out_BRANCH_COMPLETE_PHT_ADDRESS [i])) (*(signal_BRANCH_COMPLETE_PHT_ADDRESS  [i]));
-// 	  }										   					       				  
-// 	if (_param._have_bht and _param._have_pht)					   					  
-// 	  {										   					       				  
-// 	    (*(component_Two_Level_Branch_Predictor_Glue-> in_BRANCH_COMPLETE_BHT_HISTORY [i])) (*(    in_BRANCH_COMPLETE_BHT_HISTORY  [i]));
-// 	  }										   					       				  
-// 	(*(component_Two_Level_Branch_Predictor_Glue->out_BRANCH_COMPLETE_ACK         [i])) (*(   out_BRANCH_COMPLETE_ACK          [i]));
-// 	(*(component_Two_Level_Branch_Predictor_Glue-> in_BRANCH_COMPLETE_ADDRESS     [i])) (*(    in_BRANCH_COMPLETE_ADDRESS      [i]));
-//       }
-  
-//     log_printf(FUNC,Two_Level_Branch_Predictor,"allocation","End");
-//   };
   
 }; // end namespace two_level_branch_predictor
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 43)
+++ 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 44)
@@ -21,107 +21,4 @@
     log_printf(FUNC,Two_Level_Branch_Predictor,"vhdl_body","Begin");
 
-//     list<string> list_port_map;
-
-//     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");
-
-// 	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));
-// 	  }
-	
-// 	vhdl.set_body_component ("component_Branch_History_Table",_name+"_Branch_History_Table",list_port_map);
-//       }
-
-//     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");
-
-// 	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));
-// 	  }
-	
-// 	vhdl.set_body_component ("component_Pattern_History_Table",_name+"_Pattern_History_Table",list_port_map);
-//       }
-
-//     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_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);
-
-//     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_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl_declaration.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl_declaration.cpp	(revision 44)
@@ -21,32 +21,4 @@
     log_printf(FUNC,Two_Level_Branch_Predictor,"vhdl_declaration","Begin");
 
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	if (_param._have_bht)
-	  {
-	vhdl->set_signal  ("signal_PREDICT_BHT_ACK_"+toString(i), 1);
-	vhdl->set_signal  ("signal_PREDICT_BHT_ADDRESS_"+toString(i), _param._bht_size_address);
-	vhdl->set_signal  ("signal_PREDICT_BHT_HISTORY_"+toString(i), _param._bht_size_shifter);
-	  }
-	if (_param._have_pht)
-	  {
-	vhdl->set_signal  ("signal_PREDICT_PHT_ACK_"+toString(i), 1);
-	vhdl->set_signal  ("signal_PREDICT_PHT_ADDRESS_"+toString(i), _param._pht_size_address);
-	  }
-      }
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_bht)
-	  {
-	vhdl->set_signal  ("signal_BRANCH_COMPLETE_BHT_ACK_"+toString(i), 1);
-	vhdl->set_signal  ("signal_BRANCH_COMPLETE_BHT_ADDRESS_"+toString(i), _param._bht_size_address);
-	  }
-	if (_param._have_pht)
-	  {
-	vhdl->set_signal  ("signal_BRANCH_COMPLETE_PHT_ACK_"+toString(i), 1);
-	vhdl->set_signal  ("signal_BRANCH_COMPLETE_PHT_ADDRESS_"+toString(i), _param._pht_size_address);
-	  }
-      }
     log_printf(FUNC,Two_Level_Branch_Predictor,"vhdl_declaration","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_vhdl_testbench_transition.cpp	(revision 44)
@@ -21,5 +21,5 @@
     log_printf(FUNC,Two_Level_Branch_Predictor,"vhdl_testbench_transition","Begin");
 
-    sc_start(0);
+//     sc_start(0);
 
     _interfaces->testbench();
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Meta_Predictor.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Meta_Predictor.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Meta_Predictor.h	(revision 44)
@@ -14,6 +14,6 @@
 
 #include <iostream>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 // Internal structure
@@ -29,7 +29,5 @@
 #include "Behavioural/include/Vhdl.h"
 #endif
-#ifdef VHDL_TESTBENCH
-#include "Behavioural/include/Vhdl_Testbench.h"
-#endif
+#include "Behavioural/include/Component.h"
 
 using namespace std;
@@ -60,7 +58,6 @@
 #endif
 
-#ifdef VHDL_TESTBENCH
-  private   : Vhdl_Testbench                 * _vhdl_testbench;
-#endif
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
 
 #ifdef SYSTEMC
@@ -155,14 +152,10 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  private : void     vhdl_port                 (Vhdl & vhdl);
-  private : void     vhdl_declaration          (Vhdl & vhdl);
-  private : void     vhdl_body                 (Vhdl & vhdl);
+  private : void     vhdl_declaration          (Vhdl * & vhdl);
+  private : void     vhdl_body                 (Vhdl * & vhdl);
 #endif					       
-					       
 #ifdef VHDL_TESTBENCH			       
-  private : void     vhdl_testbench_port       (void);
   private : void     vhdl_testbench_transition (void);
 #endif
-  public  : void     vhdl_testbench_label      (string label);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Parameters.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
 #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Parameters.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Statistics.h	(revision 44)
@@ -10,5 +10,5 @@
  */
 
-#include "Include/Debug.h"
+#include "Common/include/Debug.h"
 #include "Behavioural/include/Statistics.h"
 #include "Behavioural/include/Parameters_Statistics.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Types.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Types.h	(revision 44)
@@ -9,5 +9,5 @@
  */
 
-#include "Include/Types.h"
+#include "Common/include/Types.h"
 
 namespace morpheo {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor.cpp	(revision 44)
@@ -32,4 +32,8 @@
     log_printf(FUNC,Meta_Predictor,"Meta_Predictor","Begin");
 
+#ifdef SYSTEMC
+    allocation ();
+#endif
+
 #ifdef STATISTICS
     // Allocation of statistics
@@ -37,13 +41,4 @@
 			    param_statistics          ,
 			    param);
-#endif
-
-#ifdef VHDL_TESTBENCH
-    // Creation of a testbench
-    //  -> port
-    //  -> clock's signals
-    _vhdl_testbench = new Vhdl_Testbench (_name);
-    vhdl_testbench_port           ();
-    _vhdl_testbench->set_clock    ("in_CLOCK",true);
 #endif
 
@@ -54,6 +49,4 @@
 
 #ifdef SYSTEMC
-    allocation ();
-
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     SC_METHOD (transition);
@@ -73,10 +66,4 @@
   {
     log_printf(FUNC,Meta_Predictor,"~Meta_Predictor","Begin");
-
-#ifdef VHDL_TESTBENCH
-    // generate the test bench
-    _vhdl_testbench->generate_file();
-    delete _vhdl_testbench;
-#endif
 
 #ifdef STATISTICS
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_allocation.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_allocation.cpp	(revision 44)
@@ -18,10 +18,32 @@
   void Meta_Predictor::allocation (void)
   {
-    string rename;
-
     log_printf(FUNC,Meta_Predictor,"allocation","Begin");
 
-    in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
-    in_NRESET = new SC_IN (Tcontrol_t) ("in_NRESET");
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name                 
+					     ,"Meta_Predictor"
+#ifdef POSITION
+					     ,MIXTE
+#endif
+					      );
+    
+    _interfaces = entity->set_interfaces();
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							 , IN  
+							 , SOUTH
+							 , "Generalist interface"
+#endif
+							 );
+      
+      in_CLOCK              = interface->set_signal_clk              ("clock" ,1);
+      in_NRESET             = interface->set_signal_in  <Tcontrol_t> ("nreset",1,RESET_VHDL_YES);
+    }
+
+    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
      in_PREDICT_VAL                 = new SC_IN (Tcontrol_t)     * [_param._nb_prediction     ];
@@ -33,19 +55,20 @@
     for (uint32_t i=0; i<_param._nb_prediction; i++)
       {
-	rename = "in_PREDICT_VAL_"         +toString(i);
-	 in_PREDICT_VAL                 [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-
-	rename = "out_PREDICT_ACK_"        +toString(i);
-	out_PREDICT_ACK                 [i] = new SC_OUT(Tcontrol_t)     (rename.c_str());
-
-	rename = "in_PREDICT_ADDRESS_"     +toString(i);
-	 in_PREDICT_ADDRESS             [i] = new SC_IN (Taddress_t)     (rename.c_str());
-
-	rename = "out_PREDICT_HISTORY_"    +toString(i);
-	out_PREDICT_HISTORY             [i] = new SC_OUT(Thistory_t)     (rename.c_str());
-
-    	rename = "out_PREDICT_DIRECTION_"  +toString(i);
-	out_PREDICT_DIRECTION           [i] = new SC_OUT(Tcontrol_t)     (rename.c_str());
-      }
+	Interface_fifo * interface = _interfaces->set_interface("predict_"+toString(i)
+#ifdef POSITION
+								, IN  
+								, WEST
+								, "Interface Predict"
+#endif
+								);
+
+	 in_PREDICT_VAL                 [i] = interface->set_signal_valack_in        ("val"      , VAL);
+	out_PREDICT_ACK                 [i] = interface->set_signal_valack_out       ("ack"      , ACK);
+	 in_PREDICT_ADDRESS             [i] = interface->set_signal_in  <Taddress_t> ("address"  , _param._size_address);
+	out_PREDICT_HISTORY             [i] = interface->set_signal_out <Thistory_t> ("history"  , _param._size_history);
+	out_PREDICT_DIRECTION           [i] = interface->set_signal_out <Tcontrol_t> ("direction", 1);
+      }
+
+    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
      in_BRANCH_COMPLETE_VAL         = new SC_IN (Tcontrol_t)     * [_param._nb_branch_complete];
@@ -57,165 +80,17 @@
     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
       {
-	rename = "in_BRANCH_COMPLETE_VAL_"         +toString(i);
-	 in_BRANCH_COMPLETE_VAL         [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-
-	rename = "out_BRANCH_COMPLETE_ACK_"        +toString(i);
-	out_BRANCH_COMPLETE_ACK         [i] = new SC_OUT(Tcontrol_t)     (rename.c_str());
-
-	rename = "in_BRANCH_COMPLETE_ADDRESS_"     +toString(i);
-	 in_BRANCH_COMPLETE_ADDRESS     [i] = new SC_IN (Taddress_t)     (rename.c_str());
-
-    	rename = "in_BRANCH_COMPLETE_HISTORY_"     +toString(i);
-	 in_BRANCH_COMPLETE_HISTORY     [i] = new SC_IN (Thistory_t)     (rename.c_str());
-
-	rename = "in_BRANCH_COMPLETE_DIRECTION_"   +toString(i);
-	 in_BRANCH_COMPLETE_DIRECTION   [i] = new SC_IN (Tcontrol_t)     (rename.c_str());
-      }
-
-    // ~~~~~[ Signal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-    if (_param._have_meta_predictor)
-      {
-    signal_PREDICT_PREDICTOR_0_ACK         = new SC_SIGNAL(Tcontrol_t) * [_param._nb_prediction];
-    signal_PREDICT_PREDICTOR_1_ACK         = new SC_SIGNAL(Tcontrol_t) * [_param._nb_prediction];
-      }
-    signal_PREDICT_PREDICTOR_2_ACK         = new SC_SIGNAL(Tcontrol_t) * [_param._nb_prediction];
-
-    if (_param._have_meta_predictor)
-      {									      					      
-    if (_param._predictor_0_have_bht)
-    signal_PREDICT_PREDICTOR_0_BHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t) * [_param._nb_prediction];
-    if (_param._predictor_0_have_pht)
-    signal_PREDICT_PREDICTOR_0_PHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t) * [_param._nb_prediction];
-    if (_param._predictor_0_have_bht)
-    signal_PREDICT_PREDICTOR_1_BHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t) * [_param._nb_prediction];
-    if (_param._predictor_1_have_pht)
-    signal_PREDICT_PREDICTOR_1_PHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t) * [_param._nb_prediction];
-      }									      					      
-    if (_param._predictor_2_have_bht)
-    signal_PREDICT_PREDICTOR_2_BHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t) * [_param._nb_prediction];
-    if (_param._predictor_2_have_pht)
-    signal_PREDICT_PREDICTOR_2_PHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t) * [_param._nb_prediction];
-
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {									      					      
-	rename = "signal_PREDICT_PREDICTOR_0_ACK_"+toString(i);
-	signal_PREDICT_PREDICTOR_0_ACK         [i] = new SC_SIGNAL(Tcontrol_t) (rename.c_str());
-	rename = "signal_PREDICT_PREDICTOR_1_ACK_"+toString(i);
-	signal_PREDICT_PREDICTOR_1_ACK         [i] = new SC_SIGNAL(Tcontrol_t) (rename.c_str());
-	  }
-	rename = "signal_PREDICT_PREDICTOR_2_ACK_"+toString(i);
-	signal_PREDICT_PREDICTOR_2_ACK         [i] = new SC_SIGNAL(Tcontrol_t) (rename.c_str());
-
-	if (_param._have_meta_predictor)
-	  {									      					      
-	if (_param._predictor_0_have_bht)
-	  {
-	rename = "signal_PREDICT_PREDICTOR_0_BHT_HISTORY_"+toString(i);
-	signal_PREDICT_PREDICTOR_0_BHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t)  (rename.c_str());
-	  }
-	if (_param._predictor_0_have_pht)
-	  {
-	rename = "signal_PREDICT_PREDICTOR_0_PHT_HISTORY_"+toString(i);
-	signal_PREDICT_PREDICTOR_0_PHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t)  (rename.c_str());
-	  }
-	if (_param._predictor_1_have_bht)
-	  {
-	rename = "signal_PREDICT_PREDICTOR_1_BHT_HISTORY_"+toString(i);
-	signal_PREDICT_PREDICTOR_1_BHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t)  (rename.c_str());
-	  }
-	if (_param._predictor_1_have_pht)
-	  {
-	rename = "signal_PREDICT_PREDICTOR_1_PHT_HISTORY_"+toString(i);
-	signal_PREDICT_PREDICTOR_1_PHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t)  (rename.c_str());
-	  }
-	  }
-	if (_param._predictor_2_have_bht)
-	  {
-	rename = "signal_PREDICT_PREDICTOR_2_BHT_HISTORY_"+toString(i);
-	signal_PREDICT_PREDICTOR_2_BHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t)  (rename.c_str());
-	  }
-	if (_param._predictor_2_have_pht)
-	  {
-	rename = "signal_PREDICT_PREDICTOR_2_PHT_HISTORY_"+toString(i);
-	signal_PREDICT_PREDICTOR_2_PHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t)  (rename.c_str());
-	  }
-      }
-    if (_param._have_meta_predictor)
-      {
-    signal_BRANCH_COMPLETE_PREDICTOR_0_ACK         = new SC_SIGNAL(Tcontrol_t) * [_param._nb_prediction];
-    signal_BRANCH_COMPLETE_PREDICTOR_1_ACK         = new SC_SIGNAL(Tcontrol_t) * [_param._nb_prediction];
-    signal_BRANCH_COMPLETE_PREDICTOR_2_VAL         = new SC_SIGNAL(Tcontrol_t) * [_param._nb_prediction];
-    signal_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION   = new SC_SIGNAL(Tcontrol_t) * [_param._nb_prediction];
-      }
-    signal_BRANCH_COMPLETE_PREDICTOR_2_ACK         = new SC_SIGNAL(Tcontrol_t) * [_param._nb_prediction];
-
-    if (_param._have_meta_predictor)
-      {									      					      
-    if (_param._predictor_0_have_bht)
-    signal_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t) * [_param._nb_prediction];
-    if (_param._predictor_0_have_pht)
-    signal_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t) * [_param._nb_prediction];
-    if (_param._predictor_0_have_bht)
-    signal_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t) * [_param._nb_prediction];
-    if (_param._predictor_1_have_pht)
-    signal_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t) * [_param._nb_prediction];
-      }									      					      
-    if (_param._predictor_2_have_bht)
-    signal_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t) * [_param._nb_prediction];
-    if (_param._predictor_2_have_pht)
-    signal_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t) * [_param._nb_prediction];
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {									      					      
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_0_ACK_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_0_ACK         [i] = new SC_SIGNAL(Tcontrol_t) (rename.c_str());
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_1_ACK_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_1_ACK         [i] = new SC_SIGNAL(Tcontrol_t) (rename.c_str());
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_2_VAL_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_2_VAL         [i] = new SC_SIGNAL(Tcontrol_t) (rename.c_str());
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION   [i] = new SC_SIGNAL(Tcontrol_t) (rename.c_str());
-	  }
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_2_ACK_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_2_ACK         [i] = new SC_SIGNAL(Tcontrol_t) (rename.c_str());
-
-	if (_param._have_meta_predictor)
-	  {									      					      
-	if (_param._predictor_0_have_bht)
-	  {
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t)  (rename.c_str());
-	  }
-	if (_param._predictor_0_have_pht)
-	  {
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t)  (rename.c_str());
-	  }
-	if (_param._predictor_1_have_bht)
-	  {
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t)  (rename.c_str());
-	  }
-	if (_param._predictor_1_have_pht)
-	  {
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t)  (rename.c_str());
-	  }
-	  }
-	if (_param._predictor_2_have_bht)
-	  {
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tbht_history_t)  (rename.c_str());
-	  }
-	if (_param._predictor_2_have_pht)
-	  {
-	rename = "signal_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY_"+toString(i);
-	signal_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY [i] = new SC_SIGNAL(morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Tpht_history_t)  (rename.c_str());
-	  }
+	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);
+	 in_BRANCH_COMPLETE_HISTORY     [i] = interface->set_signal_in  <Thistory_t> ("history"    , _param._size_history);
+	 in_BRANCH_COMPLETE_DIRECTION   [i] = interface->set_signal_in  <Tcontrol_t> ("direction"  , 1);
       }
 
@@ -231,203 +106,322 @@
     component_Meta_Predictor_Glue = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::meta_predictor_glue::Meta_Predictor_Glue (name_component.c_str()               ,
 #ifdef STATISTICS	
-																		     _param_statistics                    ,
-#endif
-																		     *(_param._param_meta_predictor_glue));
-    
-    // Instantiation
-#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-    (*(component_Meta_Predictor_Glue->in_CLOCK ))        (*(in_CLOCK ));
-#endif
-   
-        // Interface Predict
+																		   _param_statistics                    ,
+#endif
+																		   *(_param._param_meta_predictor_glue));
+    
+    
+    _component->set_component (component_Meta_Predictor_Glue->_component
+#ifdef POSITION
+			       , 75
+			       , 25
+			       , 10
+			       , 10
+#endif
+			       );
+    
+
+    // =====[ component_Two_Level_Branch_Predictor_2 ]====================    
+
+    name_component = _name+"_Two_Level_Branch_Predictor_2";
+    
+    log_printf(INFO,Meta_Predictor,"allocation","Allocation : %s",name_component.c_str());
+    
+    component_Two_Level_Branch_Predictor_2 = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor ::Two_Level_Branch_Predictor (name_component.c_str()               ,
+#ifdef STATISTICS	
+																					   _param_statistics                    ,
+#endif
+																					   *(_param._param_two_level_branch_predictor_2));
+    
+
+    _component->set_component (component_Two_Level_Branch_Predictor_2->_component
+#ifdef POSITION
+			       , 75
+			       , 25
+			       , 10
+			       , 10
+#endif
+			       );
+    
+
+
+    if (_param._have_meta_predictor)
+      {
+    // =====[ component_Two_Level_Branch_Predictor_1 ]====================    
+
+    name_component = _name+"_Two_Level_Branch_Predictor_1";
+    
+    log_printf(INFO,Meta_Predictor,"allocation","Allocation : %s",name_component.c_str());
+    
+    component_Two_Level_Branch_Predictor_1 = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor ::Two_Level_Branch_Predictor (name_component.c_str()               ,
+#ifdef STATISTICS	
+																					   _param_statistics                    ,
+#endif
+																					   *(_param._param_two_level_branch_predictor_1));
+
+    _component->set_component (component_Two_Level_Branch_Predictor_1->_component
+#ifdef POSITION
+			       , 75
+			       , 25
+			       , 10
+			       , 10
+#endif
+			       );
+
+    // =====[ component_Two_Level_Branch_Predictor_0 ]====================    
+
+    name_component = _name+"_Two_Level_Branch_Predictor_0";
+    
+    log_printf(INFO,Meta_Predictor,"allocation","Allocation : %s",name_component.c_str());
+    
+    component_Two_Level_Branch_Predictor_0 = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor ::Two_Level_Branch_Predictor (name_component.c_str()               ,
+#ifdef STATISTICS	
+																					   _param_statistics                    ,
+#endif
+																					   *(_param._param_two_level_branch_predictor_0));
+    
+    _component->set_component (component_Two_Level_Branch_Predictor_0->_component
+#ifdef POSITION
+			       , 75
+			       , 25
+			       , 10
+			       , 10
+#endif
+			       );
+      
+      }
+
+    // ~~~~~[ Component - Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // =====[ component_Meta_Predictor_Glue - Instanciation ]=============
+
+    name_component = _name+"_Meta_Predictor_Glue";
+
+    cout << "Instance : " << name_component << endl;
+
+#ifdef POSITION
+    _component->interface_map ("Meta_Predictor_Glue","",
+			       _name                ,"");
+#endif
+    
+    _component->port_map(name_component, "in_CLOCK" , _name,"in_CLOCK" );
+    _component->port_map(name_component, "in_NRESET", _name,"in_NRESET");
+    
+    // Interface Predict
     for (uint32_t i=0; i<_param._nb_prediction; i++)
       {
+#ifdef POSITION
+	_component->interface_map ("Meta_Predictor_Glue","predict_"+toString(i),
+				   _name                ,"predict_"+toString(i));
+#endif
+	
 	if (_param._have_meta_predictor)
 	  {
-	(*(component_Meta_Predictor_Glue-> in_PREDICT_PREDICTOR_0_ACK                 [i])) (*(signal_PREDICT_PREDICTOR_0_ACK                 [i]));
-	(*(component_Meta_Predictor_Glue-> in_PREDICT_PREDICTOR_1_ACK                 [i])) (*(signal_PREDICT_PREDICTOR_1_ACK                 [i]));
-	  }									      					      
-	(*(component_Meta_Predictor_Glue-> in_PREDICT_PREDICTOR_2_ACK                 [i])) (*(signal_PREDICT_PREDICTOR_2_ACK                 [i]));
-	(*(component_Meta_Predictor_Glue->out_PREDICT_ACK                             [i])) (*(   out_PREDICT_ACK                             [i]));
+	_component->port_map(name_component,  "in_PREDICT_"+toString(i)+"_PREDICTOR_0_ACK"        , _name+"_Two_Level_Branch_Predictor_0" ,"out_PREDICT_"+toString(i)+"_ACK");
+	_component->port_map(name_component,  "in_PREDICT_"+toString(i)+"_PREDICTOR_1_ACK"        , _name+"_Two_Level_Branch_Predictor_1" ,"out_PREDICT_"+toString(i)+"_ACK");
+	  }
+	_component->port_map(name_component,  "in_PREDICT_"+toString(i)+"_PREDICTOR_2_ACK"        , _name+"_Two_Level_Branch_Predictor_2" ,"out_PREDICT_"+toString(i)+"_ACK");
+	_component->port_map(name_component, "out_PREDICT_"+toString(i)+"_ACK"                    , _name , "out_PREDICT_"+toString(i)+"_ACK");
 	if (_param._have_meta_predictor)
-	  {									      					      
+	  {									      		  	      
 	if (_param._predictor_0_have_bht)
-	(*(component_Meta_Predictor_Glue-> in_PREDICT_PREDICTOR_0_BHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_0_BHT_HISTORY         [i]));
+	_component->port_map(name_component,  "in_PREDICT_"+toString(i)+"_PREDICTOR_0_BHT_HISTORY", _name+"_Two_Level_Branch_Predictor_0" ,"out_PREDICT_"+toString(i)+"_BHT_HISTORY");
 	if (_param._predictor_0_have_pht)
-	(*(component_Meta_Predictor_Glue-> in_PREDICT_PREDICTOR_0_PHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_0_PHT_HISTORY         [i]));
+	_component->port_map(name_component,  "in_PREDICT_"+toString(i)+"_PREDICTOR_0_PHT_HISTORY", _name+"_Two_Level_Branch_Predictor_0" ,"out_PREDICT_"+toString(i)+"_PHT_HISTORY");
 	if (_param._predictor_1_have_bht)
-	(*(component_Meta_Predictor_Glue-> in_PREDICT_PREDICTOR_1_BHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_1_BHT_HISTORY         [i]));
+	_component->port_map(name_component,  "in_PREDICT_"+toString(i)+"_PREDICTOR_1_BHT_HISTORY", _name+"_Two_Level_Branch_Predictor_1" ,"out_PREDICT_"+toString(i)+"_BHT_HISTORY");
 	if (_param._predictor_1_have_pht)
-	(*(component_Meta_Predictor_Glue-> in_PREDICT_PREDICTOR_1_PHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_1_PHT_HISTORY         [i]));
-	  }									      					      
+	_component->port_map(name_component,  "in_PREDICT_"+toString(i)+"_PREDICTOR_1_PHT_HISTORY", _name+"_Two_Level_Branch_Predictor_1" ,"out_PREDICT_"+toString(i)+"_PHT_HISTORY");
+	  }									      		  	      
 	if (_param._predictor_2_have_bht)
-	(*(component_Meta_Predictor_Glue-> in_PREDICT_PREDICTOR_2_BHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_2_BHT_HISTORY         [i]));
+	_component->port_map(name_component,  "in_PREDICT_"+toString(i)+"_PREDICTOR_2_BHT_HISTORY", _name+"_Two_Level_Branch_Predictor_2" ,"out_PREDICT_"+toString(i)+"_BHT_HISTORY");
 	if (_param._predictor_2_have_pht)
-	(*(component_Meta_Predictor_Glue-> in_PREDICT_PREDICTOR_2_PHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_2_PHT_HISTORY         [i]));
-	(*(component_Meta_Predictor_Glue->out_PREDICT_HISTORY                         [i])) (*(   out_PREDICT_HISTORY                         [i]));
-	(*(component_Meta_Predictor_Glue->out_PREDICT_DIRECTION                       [i])) (*(   out_PREDICT_DIRECTION                       [i]));
-      }
-
-    // Interface Branch_complete
-    
+	_component->port_map(name_component,  "in_PREDICT_"+toString(i)+"_PREDICTOR_2_PHT_HISTORY", _name+"_Two_Level_Branch_Predictor_2" ,"out_PREDICT_"+toString(i)+"_PHT_HISTORY");
+	_component->port_map(name_component, "out_PREDICT_"+toString(i)+"_HISTORY"                , _name , "out_PREDICT_"+toString(i)+"_HISTORY");
+	_component->port_map(name_component, "out_PREDICT_"+toString(i)+"_DIRECTION"              , _name , "out_PREDICT_"+toString(i)+"_DIRECTION");
+      }
+
     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
       {
+#ifdef POSITION
+	_component->interface_map ("Meta_Predictor_Glue","branch_complete_"+toString(i),
+				   _name                ,"branch_complete_"+toString(i));
+#endif
+
 	if (_param._have_meta_predictor)
 	  {
-	(*(component_Meta_Predictor_Glue-> in_BRANCH_COMPLETE_VAL                     [i])) (*(    in_BRANCH_COMPLETE_VAL                     [i]));
-	(*(component_Meta_Predictor_Glue->out_BRANCH_COMPLETE_PREDICTOR_2_VAL         [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_2_VAL         [i]));
-
-	(*(component_Meta_Predictor_Glue-> in_BRANCH_COMPLETE_PREDICTOR_0_ACK         [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_0_ACK         [i]));
-	(*(component_Meta_Predictor_Glue-> in_BRANCH_COMPLETE_PREDICTOR_1_ACK         [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_1_ACK         [i]));
+	_component->port_map(name_component,  "in_BRANCH_COMPLETE_"+toString(i)+"_VAL"                     , _name , "in_BRANCH_COMPLETE_"+toString(i)+"_VAL");
+	_component->port_map(name_component, "out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_VAL"         , _name+"_Two_Level_Branch_Predictor_2",  "in_BRANCH_COMPLETE_"+toString(i)+"_VAL");
+
+	_component->port_map(name_component,  "in_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_0_ACK"         , _name+"_Two_Level_Branch_Predictor_0", "out_BRANCH_COMPLETE_"+toString(i)+"_ACK");
+	_component->port_map(name_component,  "in_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_1_ACK"         , _name+"_Two_Level_Branch_Predictor_1", "out_BRANCH_COMPLETE_"+toString(i)+"_ACK");
 	  }					
-	(*(component_Meta_Predictor_Glue-> in_BRANCH_COMPLETE_PREDICTOR_2_ACK         [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_2_ACK         [i]));
-	(*(component_Meta_Predictor_Glue->out_BRANCH_COMPLETE_ACK                     [i])) (*(   out_BRANCH_COMPLETE_ACK                     [i]));
+	_component->port_map(name_component,  "in_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_ACK"         , _name+"_Two_Level_Branch_Predictor_2", "out_BRANCH_COMPLETE_"+toString(i)+"_ACK");
+	_component->port_map(name_component, "out_BRANCH_COMPLETE_"+toString(i)+"_ACK"                     , _name ,"out_BRANCH_COMPLETE_"+toString(i)+"_ACK");
 						
 	if (_param._have_meta_predictor)	
 	  {					
 	if (_param._predictor_0_have_bht)
-	(*(component_Meta_Predictor_Glue->out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY [i]));
+	_component->port_map(name_component, "out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_0_BHT_HISTORY" , _name+"_Two_Level_Branch_Predictor_0",  "in_BRANCH_COMPLETE_"+toString(i)+"_BHT_HISTORY" );
 	if (_param._predictor_0_have_pht)
-	(*(component_Meta_Predictor_Glue->out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY [i]));
+	_component->port_map(name_component, "out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_0_PHT_HISTORY" , _name+"_Two_Level_Branch_Predictor_0",  "in_BRANCH_COMPLETE_"+toString(i)+"_PHT_HISTORY" );
 	if (_param._predictor_1_have_bht)
-	(*(component_Meta_Predictor_Glue->out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY [i]));
+	_component->port_map(name_component, "out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_1_BHT_HISTORY" , _name+"_Two_Level_Branch_Predictor_1",  "in_BRANCH_COMPLETE_"+toString(i)+"_BHT_HISTORY" );
 	if (_param._predictor_1_have_pht)
-	(*(component_Meta_Predictor_Glue->out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY [i]));
+	_component->port_map(name_component, "out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_1_PHT_HISTORY" , _name+"_Two_Level_Branch_Predictor_1",  "in_BRANCH_COMPLETE_"+toString(i)+"_PHT_HISTORY" );
 	  }					
 	if (_param._predictor_2_have_bht)
-	(*(component_Meta_Predictor_Glue->out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY [i]));
+	_component->port_map(name_component, "out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_BHT_HISTORY" , _name+"_Two_Level_Branch_Predictor_2",  "in_BRANCH_COMPLETE_"+toString(i)+"_BHT_HISTORY" );
 	if (_param._predictor_2_have_pht)
-	(*(component_Meta_Predictor_Glue->out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY [i]));
-	(*(component_Meta_Predictor_Glue-> in_BRANCH_COMPLETE_HISTORY                 [i])) (*(    in_BRANCH_COMPLETE_HISTORY                 [i]));
+	_component->port_map(name_component, "out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_PHT_HISTORY" , _name+"_Two_Level_Branch_Predictor_2",  "in_BRANCH_COMPLETE_"+toString(i)+"_PHT_HISTORY" );
+	_component->port_map(name_component,  "in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY"                 , _name , "in_BRANCH_COMPLETE_"+toString(i)+"_HISTORY");
 	if (_param._have_meta_predictor)	
 	  {
-	(*(component_Meta_Predictor_Glue-> in_BRANCH_COMPLETE_DIRECTION               [i])) (*(    in_BRANCH_COMPLETE_DIRECTION               [i]));
-	(*(component_Meta_Predictor_Glue->out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION   [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION   [i]));
+	_component->port_map(name_component,  "in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION"               , _name , "in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION");
+	_component->port_map(name_component, "out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_DIRECTION"   , _name+"_Two_Level_Branch_Predictor_2" , "in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION");
 	  }
       }
 
-    // =====[ component_Two_Level_Branch_Predictor_2 ]====================    
-
+    // =====[ component_Two_Level_Branch_Predictor_2 - Instanciation ]====
     name_component = _name+"_Two_Level_Branch_Predictor_2";
-    
-    log_printf(INFO,Meta_Predictor,"allocation","Allocation : %s",name_component.c_str());
-    
-    component_Two_Level_Branch_Predictor_2 = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor ::Two_Level_Branch_Predictor (name_component.c_str()               ,
-#ifdef STATISTICS	
-																					   _param_statistics                    ,
-#endif
-																					   *(_param._param_two_level_branch_predictor_2));
-      
-    // Instantiation
-    (*(component_Two_Level_Branch_Predictor_2->in_CLOCK ))        (*(in_CLOCK ));
-    (*(component_Two_Level_Branch_Predictor_2->in_NRESET))        (*(in_NRESET));
-    
+
+    cout << "Instance : " << name_component << endl;
+
+#ifdef POSITION
+	_component->interface_map ("Two_Level_Branch_Predictor_2","",
+				   _name         ,"");
+#endif
+	
+	_component->port_map(name_component, "in_CLOCK" , _name,"in_CLOCK" );
+	_component->port_map(name_component, "in_NRESET", _name,"in_NRESET");
+
     for (uint32_t i=0; i<_param._nb_prediction; i++)
       {
-	(*(component_Two_Level_Branch_Predictor_2-> in_PREDICT_VAL                 [i])) (*(    in_PREDICT_VAL                             [i]));
-	(*(component_Two_Level_Branch_Predictor_2->out_PREDICT_ACK                 [i])) (*(signal_PREDICT_PREDICTOR_2_ACK                 [i]));
-	(*(component_Two_Level_Branch_Predictor_2-> in_PREDICT_ADDRESS             [i])) (*(    in_PREDICT_ADDRESS                         [i]));
-	if (_param._predictor_2_have_bht)						       				       
-	(*(component_Two_Level_Branch_Predictor_2->out_PREDICT_BHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_2_BHT_HISTORY         [i]));
+#ifdef POSITION
+	_component->interface_map ("Two_Level_Branch_Predictor_2","predict_"+toString(i),
+				   _name         ,"predict_"+toString(i));
+#endif
+
+	_component->port_map(name_component, "in_PREDICT_"+toString(i)+"_VAL"         , _name, "in_PREDICT_"+toString(i)+"_VAL");
+	_component->port_map(name_component,"out_PREDICT_"+toString(i)+"_ACK"         , _name+"_Meta_Predictor_Glue", "in_PREDICT_"+toString(i)+"_PREDICTOR_2_ACK");
+	_component->port_map(name_component, "in_PREDICT_"+toString(i)+"_ADDRESS"     , _name, "in_PREDICT_"+toString(i)+"_ADDRESS");
+	if (_param._predictor_2_have_bht)					       				       
+	_component->port_map(name_component,"out_PREDICT_"+toString(i)+"_BHT_HISTORY" , _name+"_Meta_Predictor_Glue", "in_PREDICT_"+toString(i)+"_PREDICTOR_2_BHT_HISTORY");
 	if (_param._predictor_2_have_pht)
-	(*(component_Two_Level_Branch_Predictor_2->out_PREDICT_PHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_2_PHT_HISTORY         [i]));
+	_component->port_map(name_component,"out_PREDICT_"+toString(i)+"_PHT_HISTORY" , _name+"_Meta_Predictor_Glue", "in_PREDICT_"+toString(i)+"_PREDICTOR_2_PHT_HISTORY");
       }
     
     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
       {
+#ifdef POSITION
+	_component->interface_map ("Two_Level_Branch_Predictor_2","branch_complete_"+toString(i),
+				   _name         ,"branch_complete_"+toString(i));
+#endif
 	if (_param._have_meta_predictor)
-	(*(component_Two_Level_Branch_Predictor_2-> in_BRANCH_COMPLETE_VAL         [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_2_VAL         [i]));
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_VAL"         , _name+"_Meta_Predictor_Glue","out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_VAL"         );
 	else
-	(*(component_Two_Level_Branch_Predictor_2-> in_BRANCH_COMPLETE_VAL         [i])) (*(    in_BRANCH_COMPLETE_VAL                     [i]));
-	(*(component_Two_Level_Branch_Predictor_2->out_BRANCH_COMPLETE_ACK         [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_2_ACK         [i]));
-	(*(component_Two_Level_Branch_Predictor_2-> in_BRANCH_COMPLETE_ADDRESS     [i])) (*(    in_BRANCH_COMPLETE_ADDRESS                 [i]));
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_VAL"         , _name, "in_BRANCH_COMPLETE_"+toString(i)+"_VAL"                     );
+	_component->port_map(name_component,"out_BRANCH_COMPLETE_"+toString(i)+"_ACK"         , _name+"_Meta_Predictor_Glue", "in_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_ACK"         );
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"     , _name, "in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"                 );
 	if (_param._predictor_2_have_bht)						       					
-	(*(component_Two_Level_Branch_Predictor_2-> in_BRANCH_COMPLETE_BHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY [i]));
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_BHT_HISTORY" , _name+"_Meta_Predictor_Glue","out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_BHT_HISTORY" );
 	if (_param._predictor_2_have_pht)						       					
-	(*(component_Two_Level_Branch_Predictor_2-> in_BRANCH_COMPLETE_PHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY [i]));
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_PHT_HISTORY" , _name+"_Meta_Predictor_Glue","out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_PHT_HISTORY" );
 	if (_param._have_meta_predictor)
-	(*(component_Two_Level_Branch_Predictor_2-> in_BRANCH_COMPLETE_DIRECTION   [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION   [i]));
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION"   , _name+"_Meta_Predictor_Glue","out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_2_DIRECTION"   );
 	else
-	(*(component_Two_Level_Branch_Predictor_2-> in_BRANCH_COMPLETE_DIRECTION   [i])) (*(    in_BRANCH_COMPLETE_DIRECTION               [i]));	 
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION"   , _name, "in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION"               );	 
       }
 
     if (_param._have_meta_predictor)
       {
-    // =====[ component_Two_Level_Branch_Predictor_1 ]====================    
+    // =====[ component_Two_Level_Branch_Predictor_1 - Instanciation ]====
 
     name_component = _name+"_Two_Level_Branch_Predictor_1";
-    
-    log_printf(INFO,Meta_Predictor,"allocation","Allocation : %s",name_component.c_str());
-    
-    component_Two_Level_Branch_Predictor_1 = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor ::Two_Level_Branch_Predictor (name_component.c_str()               ,
-#ifdef STATISTICS	
-																					   _param_statistics                    ,
-#endif
-																					   *(_param._param_two_level_branch_predictor_1));
-      
-    // Instantiation
-    (*(component_Two_Level_Branch_Predictor_1->in_CLOCK ))        (*(in_CLOCK ));
-    (*(component_Two_Level_Branch_Predictor_1->in_NRESET))        (*(in_NRESET));
-    
+
+    cout << "Instance : " << name_component << endl;
+
+#ifdef POSITION
+	_component->interface_map ("Two_Level_Branch_Predictor_1","",
+				   _name         ,"");
+#endif
+	
+	_component->port_map(name_component, "in_CLOCK" , _name,"in_CLOCK" );
+	_component->port_map(name_component, "in_NRESET", _name,"in_NRESET");
+
     for (uint32_t i=0; i<_param._nb_prediction; i++)
       {
-	(*(component_Two_Level_Branch_Predictor_1-> in_PREDICT_VAL                 [i])) (*(    in_PREDICT_VAL                             [i]));
-	(*(component_Two_Level_Branch_Predictor_1->out_PREDICT_ACK                 [i])) (*(signal_PREDICT_PREDICTOR_1_ACK                 [i]));
-	(*(component_Two_Level_Branch_Predictor_1-> in_PREDICT_ADDRESS             [i])) (*(    in_PREDICT_ADDRESS                         [i]));
-	if (_param._predictor_1_have_bht)						       				       
-	(*(component_Two_Level_Branch_Predictor_1->out_PREDICT_BHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_1_BHT_HISTORY         [i]));
+#ifdef POSITION
+	_component->interface_map ("Two_Level_Branch_Predictor_1","predict_"+toString(i),
+				   _name         ,"predict_"+toString(i));
+#endif
+
+	_component->port_map(name_component, "in_PREDICT_"+toString(i)+"_VAL"         , _name, "in_PREDICT_"+toString(i)+"_VAL");
+	_component->port_map(name_component,"out_PREDICT_"+toString(i)+"_ACK"         , _name+"_Meta_Predictor_Glue", "in_PREDICT_"+toString(i)+"_PREDICTOR_1_ACK");
+	_component->port_map(name_component, "in_PREDICT_"+toString(i)+"_ADDRESS"     , _name, "in_PREDICT_"+toString(i)+"_ADDRESS");
+	if (_param._predictor_1_have_bht)					       				       
+	_component->port_map(name_component,"out_PREDICT_"+toString(i)+"_BHT_HISTORY" , _name+"_Meta_Predictor_Glue", "in_PREDICT_"+toString(i)+"_PREDICTOR_1_BHT_HISTORY");
 	if (_param._predictor_1_have_pht)
-	(*(component_Two_Level_Branch_Predictor_1->out_PREDICT_PHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_1_PHT_HISTORY         [i]));
+	_component->port_map(name_component,"out_PREDICT_"+toString(i)+"_PHT_HISTORY" , _name+"_Meta_Predictor_Glue", "in_PREDICT_"+toString(i)+"_PREDICTOR_1_PHT_HISTORY");
       }
     
     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
       {
-	(*(component_Two_Level_Branch_Predictor_1-> in_BRANCH_COMPLETE_VAL         [i])) (*(    in_BRANCH_COMPLETE_VAL                     [i]));
-	(*(component_Two_Level_Branch_Predictor_1->out_BRANCH_COMPLETE_ACK         [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_1_ACK         [i]));
-	(*(component_Two_Level_Branch_Predictor_1-> in_BRANCH_COMPLETE_ADDRESS     [i])) (*(    in_BRANCH_COMPLETE_ADDRESS                 [i]));
+#ifdef POSITION
+	_component->interface_map ("Two_Level_Branch_Predictor_1","branch_complete_"+toString(i),
+				   _name         ,"branch_complete_"+toString(i));
+#endif
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_VAL"         , _name, "in_BRANCH_COMPLETE_"+toString(i)+"_VAL"                     );
+	_component->port_map(name_component,"out_BRANCH_COMPLETE_"+toString(i)+"_ACK"         , _name+"_Meta_Predictor_Glue", "in_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_1_ACK"         );
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"     , _name, "in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"                 );
 	if (_param._predictor_1_have_bht)						       					
-	(*(component_Two_Level_Branch_Predictor_1-> in_BRANCH_COMPLETE_BHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY [i]));
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_BHT_HISTORY" , _name+"_Meta_Predictor_Glue","out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_1_BHT_HISTORY" );
 	if (_param._predictor_1_have_pht)						       					
-	(*(component_Two_Level_Branch_Predictor_1-> in_BRANCH_COMPLETE_PHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY [i]));
-	(*(component_Two_Level_Branch_Predictor_1-> in_BRANCH_COMPLETE_DIRECTION   [i])) (*(    in_BRANCH_COMPLETE_DIRECTION               [i]));	 
-      }
-
-    // =====[ component_Two_Level_Branch_Predictor_0 ]====================    
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_PHT_HISTORY" , _name+"_Meta_Predictor_Glue","out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_1_PHT_HISTORY" );
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION"   , _name, "in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION"               );	 
+      }
+    // =====[ component_Two_Level_Branch_Predictor_0 - Instanciation ]====
 
     name_component = _name+"_Two_Level_Branch_Predictor_0";
-    
-    log_printf(INFO,Meta_Predictor,"allocation","Allocation : %s",name_component.c_str());
-    
-    component_Two_Level_Branch_Predictor_0 = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor ::Two_Level_Branch_Predictor (name_component.c_str()               ,
-#ifdef STATISTICS	
-																					   _param_statistics                    ,
-#endif
-																					   *(_param._param_two_level_branch_predictor_0));
-      
-    // Instantiation
-    (*(component_Two_Level_Branch_Predictor_0->in_CLOCK ))        (*(in_CLOCK ));
-    (*(component_Two_Level_Branch_Predictor_0->in_NRESET))        (*(in_NRESET));
-    
+
+    cout << "Instance : " << name_component << endl;
+
+#ifdef POSITION
+	_component->interface_map ("Two_Level_Branch_Predictor_0","",
+				   _name         ,"");
+#endif
+	
+	_component->port_map(name_component, "in_CLOCK" , _name,"in_CLOCK" );
+	_component->port_map(name_component, "in_NRESET", _name,"in_NRESET");
+
     for (uint32_t i=0; i<_param._nb_prediction; i++)
       {
-	(*(component_Two_Level_Branch_Predictor_0-> in_PREDICT_VAL                 [i])) (*(    in_PREDICT_VAL                             [i]));
-	(*(component_Two_Level_Branch_Predictor_0->out_PREDICT_ACK                 [i])) (*(signal_PREDICT_PREDICTOR_0_ACK                 [i]));
-	(*(component_Two_Level_Branch_Predictor_0-> in_PREDICT_ADDRESS             [i])) (*(    in_PREDICT_ADDRESS                         [i]));
-	if (_param._predictor_0_have_bht)						       				       
-	(*(component_Two_Level_Branch_Predictor_0->out_PREDICT_BHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_0_BHT_HISTORY         [i]));
+#ifdef POSITION
+	_component->interface_map ("Two_Level_Branch_Predictor_0","predict_"+toString(i),
+				   _name         ,"predict_"+toString(i));
+#endif
+
+	_component->port_map(name_component, "in_PREDICT_"+toString(i)+"_VAL"         , _name, "in_PREDICT_"+toString(i)+"_VAL");
+	_component->port_map(name_component,"out_PREDICT_"+toString(i)+"_ACK"         , _name+"_Meta_Predictor_Glue", "in_PREDICT_"+toString(i)+"_PREDICTOR_0_ACK");
+	_component->port_map(name_component, "in_PREDICT_"+toString(i)+"_ADDRESS"     , _name, "in_PREDICT_"+toString(i)+"_ADDRESS");
+	if (_param._predictor_0_have_bht)					       				       
+	_component->port_map(name_component,"out_PREDICT_"+toString(i)+"_BHT_HISTORY" , _name+"_Meta_Predictor_Glue", "in_PREDICT_"+toString(i)+"_PREDICTOR_0_BHT_HISTORY");
 	if (_param._predictor_0_have_pht)
-	(*(component_Two_Level_Branch_Predictor_0->out_PREDICT_PHT_HISTORY         [i])) (*(signal_PREDICT_PREDICTOR_0_PHT_HISTORY         [i]));
+	_component->port_map(name_component,"out_PREDICT_"+toString(i)+"_PHT_HISTORY" , _name+"_Meta_Predictor_Glue", "in_PREDICT_"+toString(i)+"_PREDICTOR_0_PHT_HISTORY");
       }
     
     for (uint32_t i=0; i<_param._nb_branch_complete; i++)
       {
-	(*(component_Two_Level_Branch_Predictor_0-> in_BRANCH_COMPLETE_VAL         [i])) (*(    in_BRANCH_COMPLETE_VAL                     [i]));
-	(*(component_Two_Level_Branch_Predictor_0->out_BRANCH_COMPLETE_ACK         [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_0_ACK         [i]));
-	(*(component_Two_Level_Branch_Predictor_0-> in_BRANCH_COMPLETE_ADDRESS     [i])) (*(    in_BRANCH_COMPLETE_ADDRESS                 [i]));
+#ifdef POSITION
+	_component->interface_map ("Two_Level_Branch_Predictor_0","branch_complete_"+toString(i),
+				   _name         ,"branch_complete_"+toString(i));
+#endif
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_VAL"         , _name, "in_BRANCH_COMPLETE_"+toString(i)+"_VAL"                     );
+	_component->port_map(name_component,"out_BRANCH_COMPLETE_"+toString(i)+"_ACK"         , _name+"_Meta_Predictor_Glue", "in_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_0_ACK"         );
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"     , _name, "in_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"                 );
 	if (_param._predictor_0_have_bht)						       					
-	(*(component_Two_Level_Branch_Predictor_0-> in_BRANCH_COMPLETE_BHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY [i]));
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_BHT_HISTORY" , _name+"_Meta_Predictor_Glue","out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_0_BHT_HISTORY" );
 	if (_param._predictor_0_have_pht)						       					
-	(*(component_Two_Level_Branch_Predictor_0-> in_BRANCH_COMPLETE_PHT_HISTORY [i])) (*(signal_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY [i]));
-	(*(component_Two_Level_Branch_Predictor_0-> in_BRANCH_COMPLETE_DIRECTION   [i])) (*(    in_BRANCH_COMPLETE_DIRECTION               [i]));	 
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_PHT_HISTORY" , _name+"_Meta_Predictor_Glue","out_BRANCH_COMPLETE_"+toString(i)+"_PREDICTOR_0_PHT_HISTORY" );
+	_component->port_map(name_component, "in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION"   , _name, "in_BRANCH_COMPLETE_"+toString(i)+"_DIRECTION"               );	 
       }
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_deallocation.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_deallocation.cpp	(revision 44)
@@ -19,140 +19,18 @@
     log_printf(FUNC,Meta_Predictor,"deallocation","Begin");
 
-    delete in_CLOCK;
-    delete in_NRESET;
+    delete     in_CLOCK;
+    delete     in_NRESET;
 
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	delete  in_PREDICT_VAL                 [i];
-	delete out_PREDICT_ACK                 [i];
-	delete  in_PREDICT_ADDRESS             [i];
-	delete out_PREDICT_HISTORY             [i];
-	delete out_PREDICT_DIRECTION           [i];
-      }
+    delete []  in_PREDICT_VAL        ;
+    delete [] out_PREDICT_ACK        ;
+    delete []  in_PREDICT_ADDRESS    ;
+    delete [] out_PREDICT_HISTORY    ;
+    delete [] out_PREDICT_DIRECTION  ;
 
-    delete  in_PREDICT_VAL        ;
-    delete out_PREDICT_ACK        ;
-    delete  in_PREDICT_ADDRESS    ;
-    delete out_PREDICT_HISTORY    ;
-    delete out_PREDICT_DIRECTION  ;
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	delete  in_BRANCH_COMPLETE_VAL         [i];
-	delete out_BRANCH_COMPLETE_ACK         [i];
-	delete  in_BRANCH_COMPLETE_ADDRESS     [i];
-	delete  in_BRANCH_COMPLETE_HISTORY     [i];
-	delete  in_BRANCH_COMPLETE_DIRECTION   [i];
-      }
-
-    delete  in_BRANCH_COMPLETE_VAL        ;
-    delete out_BRANCH_COMPLETE_ACK        ;
-    delete  in_BRANCH_COMPLETE_ADDRESS    ;
-    delete  in_BRANCH_COMPLETE_HISTORY    ;
-    delete  in_BRANCH_COMPLETE_DIRECTION  ;
-
-    // ~~~~~[ Signal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {									      					      
-	delete signal_PREDICT_PREDICTOR_0_ACK         [i];
-	delete signal_PREDICT_PREDICTOR_1_ACK         [i];
-	  }
-	delete signal_PREDICT_PREDICTOR_2_ACK         [i];
-
-	if (_param._have_meta_predictor)
-	  {									      					      
-	if (_param._predictor_0_have_bht)
-	delete signal_PREDICT_PREDICTOR_0_BHT_HISTORY [i];
-	if (_param._predictor_0_have_pht)
-	delete signal_PREDICT_PREDICTOR_0_PHT_HISTORY [i];
-	if (_param._predictor_1_have_bht)
-	delete signal_PREDICT_PREDICTOR_1_BHT_HISTORY [i];
-	if (_param._predictor_1_have_pht)
-	delete signal_PREDICT_PREDICTOR_1_PHT_HISTORY [i];
-	  }
-	if (_param._predictor_2_have_bht)
-	delete signal_PREDICT_PREDICTOR_2_BHT_HISTORY [i];
-	if (_param._predictor_2_have_pht)
-	delete signal_PREDICT_PREDICTOR_2_PHT_HISTORY [i];
-      }
-
-    if (_param._have_meta_predictor)
-      {
-    delete signal_PREDICT_PREDICTOR_0_ACK         ;
-    delete signal_PREDICT_PREDICTOR_1_ACK         ;
-      }
-    delete signal_PREDICT_PREDICTOR_2_ACK         ;
-
-    if (_param._have_meta_predictor)
-      {									      					      
-    if (_param._predictor_0_have_bht)
-    delete signal_PREDICT_PREDICTOR_0_BHT_HISTORY;
-    if (_param._predictor_0_have_pht)
-    delete signal_PREDICT_PREDICTOR_0_PHT_HISTORY;
-    if (_param._predictor_0_have_bht)
-    delete signal_PREDICT_PREDICTOR_1_BHT_HISTORY;
-    if (_param._predictor_1_have_pht)
-    delete signal_PREDICT_PREDICTOR_1_PHT_HISTORY;
-      }						  
-    if (_param._predictor_2_have_bht)
-    delete signal_PREDICT_PREDICTOR_2_BHT_HISTORY;
-    if (_param._predictor_2_have_pht)
-    delete signal_PREDICT_PREDICTOR_2_PHT_HISTORY;
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {									      					      
-	delete signal_BRANCH_COMPLETE_PREDICTOR_0_ACK         [i];
-	delete signal_BRANCH_COMPLETE_PREDICTOR_1_ACK         [i];
-	delete signal_BRANCH_COMPLETE_PREDICTOR_2_VAL         [i];
-	delete signal_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION   [i];
-	  }
-	delete signal_BRANCH_COMPLETE_PREDICTOR_2_ACK         [i];
-
-	if (_param._have_meta_predictor)
-	  {									      					      
-	if (_param._predictor_0_have_bht)
-	delete signal_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY [i];
-	if (_param._predictor_0_have_pht)
-	delete signal_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY [i];
-	if (_param._predictor_1_have_bht)
-	delete signal_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY [i];
-	if (_param._predictor_1_have_pht)
-	delete signal_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY [i];
-	  }
-	if (_param._predictor_2_have_bht)
-	delete signal_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY [i];
-	if (_param._predictor_2_have_pht)
-	delete signal_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY [i];
-      }
-
-    if (_param._have_meta_predictor)
-      {
-    delete signal_BRANCH_COMPLETE_PREDICTOR_0_ACK         ;
-    delete signal_BRANCH_COMPLETE_PREDICTOR_1_ACK         ;
-    delete signal_BRANCH_COMPLETE_PREDICTOR_2_VAL         ;
-    delete signal_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION   ;
-      }
-    delete signal_BRANCH_COMPLETE_PREDICTOR_2_ACK         ;
-
-    if (_param._have_meta_predictor)
-      {									      					      
-    if (_param._predictor_0_have_bht)
-    delete signal_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY;
-    if (_param._predictor_0_have_pht)
-    delete signal_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY;
-    if (_param._predictor_0_have_bht)
-    delete signal_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY;
-    if (_param._predictor_1_have_pht)
-    delete signal_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY;
-      }						  
-    if (_param._predictor_2_have_bht)
-    delete signal_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY;
-    if (_param._predictor_2_have_pht)
-    delete signal_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY;
+    delete []  in_BRANCH_COMPLETE_VAL        ;
+    delete [] out_BRANCH_COMPLETE_ACK        ;
+    delete []  in_BRANCH_COMPLETE_ADDRESS    ;
+    delete []  in_BRANCH_COMPLETE_HISTORY    ;
+    delete []  in_BRANCH_COMPLETE_DIRECTION  ;
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
@@ -165,5 +43,5 @@
     delete component_Two_Level_Branch_Predictor_2;
     delete component_Meta_Predictor_Glue         ;
-
+    delete _component;
 
     log_printf(FUNC,Meta_Predictor,"deallocation","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl.cpp	(revision 44)
@@ -20,20 +20,17 @@
   {
     log_printf(FUNC,Meta_Predictor,"vhdl","Begin");
-    Vhdl vhdl (_name);
 
-    vhdl.set_library_work (_name + "_Pack");
-    vhdl.set_library_work (_name + "_Meta_Predictor_Glue_Pack");
-    if (_param._have_meta_predictor)
-      {
-    vhdl.set_library_work (_name + "_Two_Level_Branch_Predictor_0_Pack");
-    vhdl.set_library_work (_name + "_Two_Level_Branch_Predictor_1_Pack");
-      }
-    vhdl.set_library_work (_name + "_Two_Level_Branch_Predictor_2_Pack");
+    Vhdl * vhdl = new Vhdl (_name);
 
-    vhdl_port        (vhdl);
+    _interfaces->set_port     (vhdl);
+    _component ->vhdl_instance(vhdl);
+
     vhdl_declaration (vhdl);
     vhdl_body        (vhdl);
 
-    vhdl.generate_file();
+    vhdl->generate_file();
+
+    delete vhdl;
+
     log_printf(FUNC,Meta_Predictor,"vhdl","End");
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_body.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_body.cpp	(revision 44)
@@ -16,197 +16,7 @@
 
 
-  void Meta_Predictor::vhdl_body (Vhdl & vhdl)
+  void Meta_Predictor::vhdl_body (Vhdl * & vhdl)
   {
     log_printf(FUNC,Meta_Predictor,"vhdl_body","Begin");
-    vhdl.set_body ("");
-
-    list<string> list_port_map;
-
-    // =====[ component_Meta_Predictor_Glue ]=============================
-    
-    list_port_map.clear();
-    log_printf(INFO,Meta_Predictor,"vhdl_body","Instanciation : component_Meta_Predictor_Glue");
-    
-    // Instantiation
-
-    // Interface Predict
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PREDICTOR_0_ACK_"+toString(i)+"               ", "signal_PREDICT_PREDICTOR_0_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PREDICTOR_1_ACK_"+toString(i)+"               ", "signal_PREDICT_PREDICTOR_1_ACK_"+toString(i));
-	  }									      					      
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PREDICTOR_2_ACK_"+toString(i)+"               ", "signal_PREDICT_PREDICTOR_2_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_ACK_"+toString(i)+"                           ", "   out_PREDICT_ACK_"+toString(i));
-	if (_param._have_meta_predictor)
-	  {									      					      
-	if (_param._predictor_0_have_bht)
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PREDICTOR_0_BHT_HISTORY_"+toString(i)+"       ", "signal_PREDICT_PREDICTOR_0_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_0_have_pht)
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PREDICTOR_0_PHT_HISTORY_"+toString(i)+"       ", "signal_PREDICT_PREDICTOR_0_PHT_HISTORY_"+toString(i));
-	if (_param._predictor_1_have_bht)
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PREDICTOR_1_BHT_HISTORY_"+toString(i)+"       ", "signal_PREDICT_PREDICTOR_1_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_1_have_pht)
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PREDICTOR_1_PHT_HISTORY_"+toString(i)+"       ", "signal_PREDICT_PREDICTOR_1_PHT_HISTORY_"+toString(i));
-	  }									      					      
-	if (_param._predictor_2_have_bht)
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PREDICTOR_2_BHT_HISTORY_"+toString(i)+"       ", "signal_PREDICT_PREDICTOR_2_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_2_have_pht)
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_PREDICTOR_2_PHT_HISTORY_"+toString(i)+"       ", "signal_PREDICT_PREDICTOR_2_PHT_HISTORY_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_HISTORY_"+toString(i)+"                       ", "   out_PREDICT_HISTORY_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_DIRECTION_"+toString(i)+"                     ", "   out_PREDICT_DIRECTION_"+toString(i));
-      }
-
-    // Interface Branch_complete
-    
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {
-	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_PREDICTOR_2_VAL_"+toString(i)+"        ", "signal_BRANCH_COMPLETE_PREDICTOR_2_VAL_"+toString(i));
-
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_PREDICTOR_0_ACK_"+toString(i)+"        ", "signal_BRANCH_COMPLETE_PREDICTOR_0_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_PREDICTOR_1_ACK_"+toString(i)+"        ", "signal_BRANCH_COMPLETE_PREDICTOR_1_ACK_"+toString(i));
-	  }					
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_PREDICTOR_2_ACK_"+toString(i)+"        ", "signal_BRANCH_COMPLETE_PREDICTOR_2_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_ACK_"+toString(i)+"                    ", "   out_BRANCH_COMPLETE_ACK_"+toString(i));
-						
-	if (_param._have_meta_predictor)	
-	  {					
-	if (_param._predictor_0_have_bht)
-	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_0_have_pht)
-	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY_"+toString(i));
-	if (_param._predictor_1_have_bht)
-	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_1_have_pht)
-	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY_"+toString(i));
-	  }					
-	if (_param._predictor_2_have_bht)
-	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_2_have_pht)
-	vhdl.set_body_component_port_map (list_port_map,"out_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_HISTORY_"+toString(i)+"                ", "    in_BRANCH_COMPLETE_HISTORY_"+toString(i));
-	if (_param._have_meta_predictor)	
-	  {
-	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_port_map (list_port_map,"out_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION_"+toString(i)+"  ", "signal_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION_"+toString(i));
-	  }
-      }
-
-    vhdl.set_body_component ("component_Meta_Predictor_Glue",_name+"_Meta_Predictor_Glue",list_port_map);
-
-    // =====[ component_Two_Level_Branch_Predictor_2 ]====================    
-
-    list_port_map.clear();
-    log_printf(INFO,Meta_Predictor,"vhdl_body","Instanciation : component_Two_Level_Branch_Predictor_2");
-    
-    // Instantiation
-    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_PREDICTOR_2_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_ADDRESS_"+toString(i)+"            ", "    in_PREDICT_ADDRESS_"+toString(i));
-	if (_param._predictor_2_have_bht)						       				       
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_BHT_HISTORY_"+toString(i)+"        ", "signal_PREDICT_PREDICTOR_2_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_2_have_pht)
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_PHT_HISTORY_"+toString(i)+"        ", "signal_PREDICT_PREDICTOR_2_PHT_HISTORY_"+toString(i));
-      }
-    
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_meta_predictor)
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_VAL_"+toString(i)+"        ", "signal_BRANCH_COMPLETE_PREDICTOR_2_VAL_"+toString(i));
-	else
-	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_PREDICTOR_2_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"    ", "    in_BRANCH_COMPLETE_ADDRESS_"+toString(i));
-	if (_param._predictor_2_have_bht)						       					
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_BHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_2_have_pht)						       					
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_PHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY_"+toString(i));
-	if (_param._have_meta_predictor)
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+"  ", "signal_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION_"+toString(i));
-	else
-	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_Two_Level_Branch_Predictor_2",_name+"_Two_Level_Branch_Predictor_2",list_port_map);
-
-    if (_param._have_meta_predictor)
-      {
-    // =====[ component_Two_Level_Branch_Predictor_1 ]====================    
-
-    list_port_map.clear();
-    log_printf(INFO,Meta_Predictor,"vhdl_body","Instanciation : component_Two_Level_Branch_Predictor_1");
-    
-    // Instantiation
-    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_PREDICTOR_1_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_ADDRESS_"+toString(i)+"            ", "    in_PREDICT_ADDRESS_"+toString(i));
-	if (_param._predictor_1_have_bht)						       				       
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_BHT_HISTORY_"+toString(i)+"        ", "signal_PREDICT_PREDICTOR_1_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_1_have_pht)
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_PHT_HISTORY_"+toString(i)+"        ", "signal_PREDICT_PREDICTOR_1_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_PREDICTOR_1_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"    ", "    in_BRANCH_COMPLETE_ADDRESS_"+toString(i));
-	if (_param._predictor_1_have_bht)						       					
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_BHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_1_have_pht)						       					
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_PHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_1_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_Two_Level_Branch_Predictor_1",_name+"_Two_Level_Branch_Predictor_1",list_port_map);
-
-    // =====[ component_Two_Level_Branch_Predictor_0 ]====================    
-
-    list_port_map.clear();
-    log_printf(INFO,Meta_Predictor,"vhdl_body","Instanciation : component_Two_Level_Branch_Predictor_0");
-    
-    // Instantiation
-    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_PREDICTOR_0_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_PREDICT_ADDRESS_"+toString(i)+"            ", "    in_PREDICT_ADDRESS_"+toString(i));
-	if (_param._predictor_0_have_bht)						       				       
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_BHT_HISTORY_"+toString(i)+"        ", "signal_PREDICT_PREDICTOR_0_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_0_have_pht)
-	vhdl.set_body_component_port_map (list_port_map,"out_PREDICT_PHT_HISTORY_"+toString(i)+"        ", "signal_PREDICT_PREDICTOR_0_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_PREDICTOR_0_ACK_"+toString(i));
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"    ", "    in_BRANCH_COMPLETE_ADDRESS_"+toString(i));
-	if (_param._predictor_0_have_bht)						       					
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_BHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY_"+toString(i));
-	if (_param._predictor_0_have_pht)						       					
-	vhdl.set_body_component_port_map (list_port_map," in_BRANCH_COMPLETE_PHT_HISTORY_"+toString(i)+"", "signal_BRANCH_COMPLETE_PREDICTOR_0_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_Two_Level_Branch_Predictor_0",_name+"_Two_Level_Branch_Predictor_0",list_port_map);
-      }
 
     log_printf(FUNC,Meta_Predictor,"vhdl_body","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_declaration.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_declaration.cpp	(revision 44)
@@ -16,62 +16,7 @@
 
 
-  void Meta_Predictor::vhdl_declaration (Vhdl & vhdl)
+  void Meta_Predictor::vhdl_declaration (Vhdl * & vhdl)
   {
     log_printf(FUNC,Meta_Predictor,"vhdl_declaration","Begin");
-
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {									      					      
-	vhdl.set_signal("signal_PREDICT_PREDICTOR_0_ACK_"+toString(i)+"", 1);
-	vhdl.set_signal("signal_PREDICT_PREDICTOR_1_ACK_"+toString(i)+"", 1);
-	  }
-	vhdl.set_signal("signal_PREDICT_PREDICTOR_2_ACK_"+toString(i)+"", 1);
-
-	if (_param._have_meta_predictor)
-	  {									      					      
-	if (_param._predictor_0_have_bht)
-	vhdl.set_signal("signal_PREDICT_PREDICTOR_0_BHT_HISTORY_"+toString(i)+"", _param._predictor_0_bht_size_shifter);
-	if (_param._predictor_0_have_pht)
-	vhdl.set_signal("signal_PREDICT_PREDICTOR_0_PHT_HISTORY_"+toString(i)+"", _param._predictor_0_pht_size_counter);
-	if (_param._predictor_1_have_bht)
-	vhdl.set_signal("signal_PREDICT_PREDICTOR_1_BHT_HISTORY_"+toString(i)+"", _param._predictor_1_bht_size_shifter);
-	if (_param._predictor_1_have_pht)
-	vhdl.set_signal("signal_PREDICT_PREDICTOR_1_PHT_HISTORY_"+toString(i)+"", _param._predictor_1_pht_size_counter);
-	  }
-	if (_param._predictor_2_have_bht)
-	vhdl.set_signal("signal_PREDICT_PREDICTOR_2_BHT_HISTORY_"+toString(i)+"", _param._predictor_2_bht_size_shifter);
-	if (_param._predictor_2_have_pht)
-	vhdl.set_signal("signal_PREDICT_PREDICTOR_2_PHT_HISTORY_"+toString(i)+"", _param._predictor_2_pht_size_counter);
-      }
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	if (_param._have_meta_predictor)
-	  {									      					      
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_0_ACK_"+toString(i)+"      ", 1);
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_1_ACK_"+toString(i)+"      ", 1);
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_2_VAL_"+toString(i)+"      ", 1);
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_2_DIRECTION_"+toString(i)+"", 1);
-	  }
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_2_ACK_"+toString(i)+"      ", 1);
-
-	if (_param._have_meta_predictor)
-	  {									      					      
-	if (_param._predictor_0_have_bht)
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_0_BHT_HISTORY_"+toString(i)+"", _param._predictor_0_bht_size_shifter);
-	if (_param._predictor_0_have_pht)
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_0_PHT_HISTORY_"+toString(i)+"", _param._predictor_0_pht_size_counter);
-	if (_param._predictor_1_have_bht)
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_1_BHT_HISTORY_"+toString(i)+"", _param._predictor_1_bht_size_shifter);
-	if (_param._predictor_1_have_pht)
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_1_PHT_HISTORY_"+toString(i)+"", _param._predictor_1_pht_size_counter);
-	  }
-	if (_param._predictor_2_have_bht)
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_2_BHT_HISTORY_"+toString(i)+"", _param._predictor_2_bht_size_shifter);
-	if (_param._predictor_2_have_pht)
-	vhdl.set_signal("signal_BRANCH_COMPLETE_PREDICTOR_2_PHT_HISTORY_"+toString(i)+"", _param._predictor_2_pht_size_counter);
-      }
-
 
     log_printf(FUNC,Meta_Predictor,"vhdl_declaration","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_port.cpp	(revision 43)
+++ 	(revision )
@@ -1,52 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Meta_Predictor.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-
-
-  void Meta_Predictor::vhdl_port (Vhdl & vhdl)
-  {
-    log_printf(FUNC,Meta_Predictor,"vhdl_port","Begin");
-
-    vhdl.set_port (" in_CLOCK ", IN, 1);
-    vhdl.set_port (" in_NRESET", IN, 1);
-
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	vhdl.set_port (" in_PREDICT_VAL_"+toString(i)+"                ", IN, 1);
-	vhdl.set_port ("out_PREDICT_ACK_"+toString(i)+"                ",OUT, 1);
-	vhdl.set_port (" in_PREDICT_ADDRESS_"+toString(i)+"            ", IN,_param._size_address);
-	vhdl.set_port ("out_PREDICT_HISTORY_"+toString(i)+"            ",OUT,_param._size_history);
-    	vhdl.set_port ("out_PREDICT_DIRECTION_"+toString(i)+"          ",OUT,1);
-      }
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	vhdl.set_port (" in_BRANCH_COMPLETE_VAL_"+toString(i)+"        ", IN, 1);
-	vhdl.set_port ("out_BRANCH_COMPLETE_ACK_"+toString(i)+"        ",OUT, 1);
-	vhdl.set_port (" in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"    ", IN,_param._size_address);
-	vhdl.set_port (" in_BRANCH_COMPLETE_HISTORY_"+toString(i)+"    ", IN,_param._size_history);
-	vhdl.set_port (" in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+"  ", IN, 1);
-      }
-    
-    log_printf(FUNC,Meta_Predictor,"vhdl_port","End");
-  };
-
-}; // 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/src/Meta_Predictor_vhdl_testbench_label.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_testbench_label.cpp	(revision 43)
+++ 	(revision )
@@ -1,33 +1,0 @@
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Meta_Predictor.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-
-
-  void Meta_Predictor::vhdl_testbench_label (string label)
-  {
-    log_printf(FUNC,Meta_Predictor,"vhdl_testbench_label","Begin");
-
-#ifdef VHDL_TESTBENCH
-    _vhdl_testbench->add_label(label);
-#endif
-    
-    log_printf(FUNC,Meta_Predictor,"vhdl_testbench_label","End");
-  };
-
-}; // end namespace meta_predictor
-}; // end namespace predictor
-}; // end namespace stage_1_ifetch
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_testbench_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_testbench_port.cpp	(revision 43)
+++ 	(revision )
@@ -1,51 +1,0 @@
-#ifdef VHDL_TESTBENCH
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/include/Meta_Predictor.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace stage_1_ifetch {
-namespace predictor {
-namespace meta_predictor {
-
-
-  void Meta_Predictor::vhdl_testbench_port ()
-  {
-    log_printf(FUNC,Meta_Predictor,"vhdl_testbench_port","Begin");
-
-    _vhdl_testbench->set_port (" in_NRESET", IN, 1);
-
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	_vhdl_testbench->set_port (" in_PREDICT_VAL_"+toString(i)+"                ", IN, 1);
-	_vhdl_testbench->set_port ("out_PREDICT_ACK_"+toString(i)+"                ",OUT, 1);
-	_vhdl_testbench->set_port (" in_PREDICT_ADDRESS_"+toString(i)+"            ", IN,_param._size_address);
-	_vhdl_testbench->set_port ("out_PREDICT_HISTORY_"+toString(i)+"            ",OUT,_param._size_history);
-    	_vhdl_testbench->set_port ("out_PREDICT_DIRECTION_"+toString(i)+"          ",OUT,1);
-      }
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	_vhdl_testbench->set_port (" in_BRANCH_COMPLETE_VAL_"+toString(i)+"        ", IN, 1);
-	_vhdl_testbench->set_port ("out_BRANCH_COMPLETE_ACK_"+toString(i)+"        ",OUT, 1);
-	_vhdl_testbench->set_port (" in_BRANCH_COMPLETE_ADDRESS_"+toString(i)+"    ", IN,_param._size_address);
-	_vhdl_testbench->set_port (" in_BRANCH_COMPLETE_HISTORY_"+toString(i)+"    ", IN,_param._size_history);
-	_vhdl_testbench->set_port (" in_BRANCH_COMPLETE_DIRECTION_"+toString(i)+"  ", IN, 1);
-      }
-
-    log_printf(FUNC,Meta_Predictor,"vhdl_testbench_port","End");
-  };
-
-}; // 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/src/Meta_Predictor_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_testbench_transition.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Meta_Predictor_vhdl_testbench_transition.cpp	(revision 44)
@@ -20,37 +20,7 @@
     log_printf(FUNC,Meta_Predictor,"vhdl_testbench_transition","Begin");
 
-    // Evaluation before read the ouput signal
-    sc_start(0);
+//  sc_start(0);
 
-    // In order with file Meta_Predictor_vhdl_testbench_port.cpp
-    // Warning : if a output depend of a subcomponent, take directly the port of subcomponent
-    // (because we have no control on the ordonnancer's policy)
-
-    _vhdl_testbench->add_input (PORT_READ( in_NRESET));
-
-    for (uint32_t i=0; i<_param._nb_prediction; i++)
-      {
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_VAL                          [i]));
-	_vhdl_testbench->add_output(PORT_READ(out_PREDICT_ACK                          [i]));
-	_vhdl_testbench->add_input (PORT_READ( in_PREDICT_ADDRESS                      [i]));
-	_vhdl_testbench->add_output(PORT_READ(out_PREDICT_HISTORY                      [i]));
-	_vhdl_testbench->add_output(PORT_READ(out_PREDICT_DIRECTION                    [i]));
-      }
-
-    for (uint32_t i=0; i<_param._nb_branch_complete; i++)
-      {
-	_vhdl_testbench->add_input (PORT_READ( in_BRANCH_COMPLETE_VAL                  [i]));
-	_vhdl_testbench->add_output(PORT_READ(out_BRANCH_COMPLETE_ACK                  [i]));
-	_vhdl_testbench->add_input (PORT_READ( in_BRANCH_COMPLETE_ADDRESS              [i]));
-	_vhdl_testbench->add_input (PORT_READ( in_BRANCH_COMPLETE_HISTORY              [i]));
-	_vhdl_testbench->add_input (PORT_READ( in_BRANCH_COMPLETE_DIRECTION            [i]));
-      }
-    
-    // add_test :
-    //  - True  : the cycle must be compare with the output of systemC
-    //  - False : no test
-    _vhdl_testbench->add_test(true);
-
-    _vhdl_testbench->new_cycle (); // always at the end
+    _interfaces->testbench();
 
     log_printf(FUNC,Meta_Predictor,"vhdl_testbench_transition","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Component.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Component.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Component.h	(revision 44)
@@ -18,6 +18,6 @@
 //#include "Behavioural/include/Description.h"
 #include "Behavioural/include/Entity.h"
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 using namespace std;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Configuration_Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Configuration_Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Configuration_Parameters.h	(revision 44)
@@ -13,6 +13,6 @@
 #include "Behavioural/include/XML.h"
 #include "Behavioural/include/Environnement.h"
-#include "Include/ErrorMorpheo.h"
-#include "Include/ToString.h"
+#include "Common/include/ErrorMorpheo.h"
+#include "Common/include/ToString.h"
 using namespace std;
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 44)
@@ -2,5 +2,5 @@
 #define DEBUG_COMPONENT_H
 
-#define DEBUG_Behavioural                                   false
+#define DEBUG_Behavioural                                   true 
 #define   DEBUG_Generic                                     false
 #define     DEBUG_Counter                                   false 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Direction.h	(revision 44)
@@ -2,5 +2,5 @@
 #define morpheo_behavioural_Direction_h
 
-#include "Include/ToString.h"
+#include "Common/include/ToString.h"
 
 namespace morpheo              {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Entity.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Entity.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Entity.h	(revision 44)
@@ -15,7 +15,7 @@
 #include "Behavioural/include/Interfaces.h"
 #include "Behavioural/include/Schema.h"
-#include "Include/ErrorMorpheo.h"
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ErrorMorpheo.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 using namespace std;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h	(revision 44)
@@ -22,7 +22,7 @@
 #include "Behavioural/include/Vhdl.h"
 #endif
-#include "Include/ToString.h"
-#include "Include/ErrorMorpheo.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/ErrorMorpheo.h"
+#include "Common/include/Debug.h"
 
 using namespace std;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interfaces.h	(revision 44)
@@ -13,6 +13,6 @@
 #include <list>
 #include "Behavioural/include/Interface_fifo.h"
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 #ifdef VHDL
 #include "Behavioural/include/Vhdl.h"
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Localisation.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Localisation.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Localisation.h	(revision 44)
@@ -3,5 +3,5 @@
 #define morpheo_behavioural_Localisation_h
 
-#include "Include/ToString.h"
+#include "Common/include/ToString.h"
 
 namespace morpheo              {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h	(revision 44)
@@ -14,7 +14,7 @@
 #include "Behavioural/Constant/Constant_OpenRISC.h"
 #include "Behavioural/include/Environnement.h"
-#include "Include/ErrorMorpheo.h"
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ErrorMorpheo.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 using namespace morpheo::behavioural::constant;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Schema.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Schema.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Schema.h	(revision 44)
@@ -4,5 +4,5 @@
 #define morpheo_behavioural_Schema_h
 
-#include "Include/ToString.h"
+#include "Common/include/ToString.h"
 
 namespace morpheo              {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 44)
@@ -22,8 +22,8 @@
 #include "Behavioural/include/Direction.h"
 #include "Behavioural/include/XML.h"
-#include "Include/ErrorMorpheo.h"
-#include "Include/ToBase2.h"
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ErrorMorpheo.h"
+#include "Common/include/ToBase2.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 using namespace std;
@@ -58,9 +58,10 @@
   private   : const presence_port_t _presence_port;
 
-  private   : Signal *              _signal       ;
-  private   : bool                  _is_allocate  ;
-  private   : void *                _sc_signal    ;
-  private   : bool                  _is_map       ;
-  private   : void *                _sc_signal_map;
+  private   : Signal *              _connect_to_signal;   // the actual implementaion, this signal link with one signal (but if signal is an output, it can be connect with many signal ...)
+  private   : Signal *              _connect_from_signal; // producter of signal. If NULL, then producteur is the current entity
+  private   : bool                  _is_allocate  ; // Have allocate a sc_in or sc_out port
+  private   : void *                _sc_signal    ; // sc_in or sc_out associated at this signal
+  private   : bool                  _is_map       ; 
+  private   : void *                _sc_signal_map; // sc_out generated this signal
   private   : type_info_t           _type_info    ;
 
@@ -79,11 +80,15 @@
   public    : string            get_name        (void);
   public    : uint32_t          get_size        (void);
-  public    : Signal *          get_signal_link (void);
+  public    : bool              get_is_map      (void);
+  public    : Signal *          get_connect_to_signal (void);
+  public    : Signal *          get_connect_from_signal (void);
+  public    : direction_t       get_direction   (void);
 
   public    : bool              presence_vhdl      (void);
   public    : bool              presence_testbench (void);
 
-  public    : void              mapping         (Signal * signal);
-  public    : void              link            (Signal * signal);
+//   public    : void              mapping         (Signal * signal);
+  public    : void              link            (Signal * signal  ,
+						 bool     is_port_component);
 
 #ifdef SYSTEMC         
@@ -127,13 +132,19 @@
     }
 
+#undef  FUNCTION
+#define FUNCTION "Signal::alloc"
   public    : template <typename T>
-              void              alloc           (void * port)
-    {
+              void              alloc           (void * sc_signal)
+    {
+      log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
       if (_type_info != UNKNOW)
 	throw (ErrorMorpheo ("Signal \""+_name+"\" : already allocate."));
 
-      _is_allocate = true;
-      _sc_signal      = port;
-      _sc_signal_map  = port;
+      _is_allocate    = true;
+      _sc_signal      = sc_signal;
+      _sc_signal_map  = sc_signal;
+
+      log_printf(TRACE,Behavioural,FUNCTION, "Allocation of %s - %.8x", _name.c_str(), (uint32_t)(_sc_signal_map));
 
       if (typeid(T) == typeid(bool    ))
@@ -153,4 +164,6 @@
       else
 	_type_info = UNKNOW;
+
+      log_printf(FUNC,Behavioural,FUNCTION,"End");
     }
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Statistics.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Statistics.h	(revision 44)
@@ -15,6 +15,6 @@
 #include "Behavioural/include/Environnement.h"
 #include "Behavioural/include/Parameters_Statistics.h"
-#include "Include/Average.h"
-#include "Include/Percent.h"
+#include "Common/include/Average.h"
+#include "Common/include/Percent.h"
 
 using namespace std;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 44)
@@ -16,6 +16,6 @@
 #include "Behavioural/include/Environnement.h"
 #include "Behavioural/include/Direction.h"
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 using namespace std;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h	(revision 44)
@@ -13,6 +13,6 @@
 #include <math.h>
 #include <list>
-#include "Include/ToString.h"
-#include "Include/Debug.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
 
 using namespace std;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_interface_map.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_interface_map.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_interface_map.cpp	(revision 44)
@@ -27,5 +27,5 @@
 
     if (entity_dest == NULL)
-      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with unknow component \""+component_dest+"\"."));
+      throw (ErrorMorpheo ("<Component::interface_map> Component \""+name_entity+"\", port map with unknow component \""+component_dest+"\"."));
 
     bool is_top_level_dest = (name_entity == component_dest);
@@ -34,5 +34,5 @@
     
     if (interface_dest == NULL)
-      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with component \""+component_dest+"\" and a unknow interface \""+port_dest+"\"."));
+      throw (ErrorMorpheo ("<Component::interface_map> Component \""+name_entity+"\", port map with component \""+component_dest+"\" and a unknow interface \""+port_dest+"\"."));
 
     // Second entity
@@ -40,5 +40,5 @@
 
     if (entity_src == NULL)
-      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with unknow component \""+component_src+"\"."));
+      throw (ErrorMorpheo ("<Component::interface_map> Component \""+name_entity+"\", port map with unknow component \""+component_src+"\"."));
 
     bool is_top_level_src = (name_entity == component_src);
@@ -47,5 +47,5 @@
 
     if (interface_src == NULL)
-      throw (ErrorMorpheo ("Component \""+name_entity+"\", port map with component \""+component_src+"\" and a unknow interface \""+port_src+"\"."));
+      throw (ErrorMorpheo ("<Component::interface_map> Component \""+name_entity+"\", port map with component \""+component_src+"\" and a unknow interface \""+port_src+"\"."));
 
     // all is ok - link
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp	(revision 44)
@@ -45,8 +45,11 @@
 
     // If all is ok, mapping
-    
-    //cout << " - " << entity_src->get_name() << "("<< signal_src->get_name() << ")" << "\t-> " << entity_dest->get_name() << "(" << signal_dest->get_name() << ")" << endl;
+    log_printf(TRACE,Behavioural,FUNCTION, "Signal \"%s.%s\"\tlink with \"%s.%s\""
+	       ,entity_src ->get_name().c_str()
+	       ,signal_src ->get_name().c_str()
+	       ,entity_dest->get_name().c_str()
+	       ,signal_dest->get_name().c_str());
 
-    signal_src ->link   (signal_dest);
+    signal_src ->link   (signal_dest, entity_dest == _entity);
     //signal_dest->mapping(signal_src );
     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_vhdl_instance.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_vhdl_instance.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_vhdl_instance.cpp	(revision 44)
@@ -20,4 +20,55 @@
     uint32_t             cpt = 0;
     map<Signal *,string> tab;
+
+    // buffer all output
+    {
+      vhdl->set_body ("------------------------------------------------------");
+      vhdl->set_body ("-- Output's Buffer");
+      vhdl->set_body ("------------------------------------------------------");
+
+      // for each interface
+      list<Interface_fifo *>         * list_interface = (_entity)->get_interfaces_list()->get_interface_list();
+      list<Interface_fifo *>::iterator j              = list_interface->begin();
+      if (not list_interface->empty())
+	{
+	  while (j != list_interface->end())
+	    {
+	      // for each signal
+	      list<Signal *>         * list_signal = (*j)->get_signal_list();
+	      list<Signal *>::iterator k           = list_signal->begin();
+	      if (not list_signal->empty())
+		{
+		  while (k != list_signal->end())
+		    {
+		      Signal * signal = (*k);
+
+		      // test if is connect with external interface or with an another component AND if this port is mapped. 
+		      if ( (signal->get_direction() == OUT) and
+			   (signal->get_connect_from_signal () != NULL) )
+			{
+			  // Create name
+			  string signal_name = "signal_"+toString(cpt++);
+			  
+			  tab [signal                           ] = signal_name;
+			  tab [signal->get_connect_from_signal()] = signal_name;
+			  
+			  // Add a new signal and the affectation
+			  vhdl->set_signal (signal_name, signal->get_size());
+			  vhdl->set_body   (signal->get_name()+" <= "+signal_name+";");
+			}
+		      else
+			{
+			  tab [signal                   ] = signal->get_name();
+			}
+		      ++k;
+		    }
+		}
+	      ++j;
+	    }
+	}
+      vhdl->set_body ("");
+      vhdl->set_body ("------------------------------------------------------");
+      vhdl->set_body ("");
+    }
 
     vhdl->set_library_work (_entity->get_name() + "_Pack");
@@ -50,15 +101,17 @@
 			    // test if is connect with external interface or with an another component.
 			    Signal * signal_src  = (*k);
+
 			    if (signal_src->presence_vhdl () == true)
 			      {
-				Signal * signal_dest = (*k)->get_signal_link();
+				Signal * signal_dest = signal_src->get_connect_to_signal();
 				string   name_src    = signal_src->get_name();
 				string   name_dest;
 				
-				if (_entity->find_signal(signal_dest) == false)
-				  {
+// 				// Test if destination signal is a interface port ?
+// 				if (_entity->find_signal(signal_dest) == false)
+// 				  {
 				    // find if signal is already link
-				    map<Signal *,string>::iterator it = tab.find(signal_src); 
-				    if (tab.find(signal_src) == tab.end())
+				    map<Signal *,string>::iterator it = tab.find(signal_dest); 
+				    if (tab.find(signal_dest) == tab.end())
 				      {
 					// Create name
@@ -72,8 +125,28 @@
 				      }
 				    else
-				      name_dest = (*it).second;
-				  }
-				else
-				  name_dest = signal_dest->get_name();
+				      {
+					// find !!!!
+					name_dest = (*it).second;
+					tab [signal_src ] = name_dest;
+				      }
+// 				  }
+// 				else
+// 				  {
+// 				    cout << "Kane à dit : " << signal_dest->get_name() << endl;
+// 				    // Test if output
+// 				    if (signal_dest->get_direction() == OUT)
+// 				      {
+// 					// Take buffer's signal
+// 					map<Signal *,string>::iterator it = tab.find(signal_dest);
+// 					name_dest        = (*it).second;
+
+// 					cout << " * OUT - name : " << name_dest << endl;
+// 				      }
+// 				    else
+// 				      {
+// 					name_dest = signal_dest->get_name();
+// 					cout << " * IN  - name : " << name_dest << endl;
+// 				      }				    
+// 				  }
 				
 				vhdl->set_body_component_port_map (list_port_map, name_src, name_dest);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_signal_name.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_signal_name.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_signal_name.cpp	(revision 44)
@@ -7,5 +7,5 @@
 
 #include "Behavioural/include/Interface.h"
-#include "Include/ChangeCase.h"
+#include "Common/include/ChangeCase.h"
 
 namespace morpheo              {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench_generate_file.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench_generate_file.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench_generate_file.cpp	(revision 44)
@@ -87,5 +87,5 @@
     vhdl->set_body("\t\t\t"+counter+" <= "+counter+"+1;");
     vhdl->set_body("");
-    vhdl->set_body("\t\t\tassert not ("+counter+" = "+toString(cycle)+") report \"Test OK\" severity FAILURE;");
+    vhdl->set_body("\t\t\tassert not ("+counter+" >= "+toString(cycle)+") report \"Test OK\" severity FAILURE;");
     vhdl->set_body("\t\t\tassert not ("+test_name+" = '0') report \"Test KO\" severity FAILURE;");
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 44)
@@ -23,5 +23,6 @@
     _is_allocate   = false;
     _is_map        = false;
-    _signal        = NULL;
+    _connect_from_signal = NULL;
+    _connect_to_signal   = NULL;
     _sc_signal     = NULL;
     _sc_signal_map = NULL;
@@ -42,4 +43,6 @@
     _is_allocate= signal._is_allocate;
     _is_map     = signal._is_map    ;
+    _connect_from_signal = signal._connect_from_signal;
+    _connect_to_signal   = signal._connect_to_signal;
     _sc_signal     = signal._sc_signal    ;
     _sc_signal_map = signal._sc_signal_map;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_from_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_from_signal.cpp	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_from_signal.cpp	(revision 44)
@@ -0,0 +1,26 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+#undef  FUNCTION
+#define FUNCTION "Signal::get_connect_from_signal"
+  Signal * Signal::get_connect_from_signal (void)
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    Signal * _return = _connect_from_signal;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_to_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_to_signal.cpp	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_to_signal.cpp	(revision 44)
@@ -0,0 +1,26 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+#undef  FUNCTION
+#define FUNCTION "Signal::get_connect_to_signal"
+  Signal * Signal::get_connect_to_signal (void)
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    Signal * _return = _connect_to_signal;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_direction.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_direction.cpp	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_direction.cpp	(revision 44)
@@ -0,0 +1,26 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+#undef  FUNCTION
+#define FUNCTION "Signal::get_direction"
+  direction_t Signal::get_direction (void)
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    direction_t _return = _direction;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_is_map.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_is_map.cpp	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_is_map.cpp	(revision 44)
@@ -0,0 +1,26 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+#undef  FUNCTION
+#define FUNCTION "Signal::get_is_map"
+  bool Signal::get_is_map (void)
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    uint32_t _return = _is_map;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
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 43)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/include/Signal.h"
-
-
-namespace morpheo              {
-namespace behavioural          {
-
-#undef  FUNCTION
-#define FUNCTION "Signal::get_signal_link"
-  Signal * Signal::get_signal_link (void)
-  {
-    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
-    Signal * _return = _signal;
-    log_printf(FUNC,Behavioural,FUNCTION,"End");
-
-    return _return;
-  };
-
-}; // end namespace behavioural          
-}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_link.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_link.cpp	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_link.cpp	(revision 44)
@@ -14,65 +14,109 @@
 #undef  FUNCTION
 #define FUNCTION "Signal::link"
-  void Signal::link (Signal * signal)
+  void Signal::link (Signal * signal,
+		     bool     is_port_component)
   {
     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."));
+      throw (ErrorMorpheo ("<Signal::link> Signal \""+_name+"\", can't map with signal \""+        get_name()+"\", because it's not already allocate."));
     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::link> Signal \""+_name+"\", can't map with signal \""+signal->get_name()+"\", because it's not already allocate."));
+    if (_is_map == true)
+      throw (ErrorMorpheo ("<Signal::mapping> Can't mapping signal \""+_name+"\" with \""+signal->get_name()+"\", because it's already map."));
     
-    _signal = signal;
 
-    if ((_direction == IN ) and (signal->_direction == IN ))
-      switch (_type_info)
-	{
-	case BOOL     : {(*(static_cast<sc_in  <bool    > *>(_sc_signal))) (*(static_cast<sc_in  <bool    > *>(signal->_sc_signal))); break;}
-	case UINT8_T  : {(*(static_cast<sc_in  <uint8_t > *>(_sc_signal))) (*(static_cast<sc_in  <uint8_t > *>(signal->_sc_signal))); break;}
-	case UINT16_T : {(*(static_cast<sc_in  <uint16_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint16_t> *>(signal->_sc_signal))); break;}
-	case UINT32_T : {(*(static_cast<sc_in  <uint32_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint32_t> *>(signal->_sc_signal))); break;}
-	case UINT64_T : {(*(static_cast<sc_in  <uint64_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint64_t> *>(signal->_sc_signal))); break;}
-	default       : {throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow.")); break;}
-	}
-    else
-      if ((_direction == OUT) and (signal->_direction == OUT))
-	{
-	  signal->_sc_signal_map = _sc_signal_map;
+    // List of all case
+    //
+    //       dest        src             dest        src
+    // PORT {IN } ----- {SIG} COMBI
+    // PORT {OUT} ----- {SIG} COMBI
+    //
+    // PORT {IN } --X-- {OUT} COMPONENT {IN } ----- {OUT} COMPONENT
+    // PORT {IN } ----- {IN } COMPONENT {IN } --X-- {IN } COMPONENT
+    // PORT {OUT} ----- {OUT} COMPONENT {OUT} --X-- {OUT} COMPONENT
+    // PORT {OUT} --X-- {IN } COMPONENT {OUT} ----- {IN } COMPONENT
 
-	  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))
-	  switch (_type_info)
-	    {
-	    case BOOL     : {(*(static_cast<sc_in  <bool    > *>(_sc_signal))) (*(static_cast<sc_out <bool    > *>(signal->_sc_signal))); break;}
-	    case UINT8_T  : {(*(static_cast<sc_in  <uint8_t > *>(_sc_signal))) (*(static_cast<sc_out <uint8_t > *>(signal->_sc_signal))); break;}
-	    case UINT16_T : {(*(static_cast<sc_in  <uint16_t> *>(_sc_signal))) (*(static_cast<sc_out <uint16_t> *>(signal->_sc_signal))); break;}
-	    case UINT32_T : {(*(static_cast<sc_in  <uint32_t> *>(_sc_signal))) (*(static_cast<sc_out <uint32_t> *>(signal->_sc_signal))); break;}
-	    case UINT64_T : {(*(static_cast<sc_in  <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 == OUT) and (signal->_direction == IN ))
+//  log_printf(TRACE,Behavioural,FUNCTION, "Signal \"%s\"\tlink with \"%s\"", _name.c_str(), signal->get_name().c_str());
+
+    log_printf(TRACE,Behavioural,FUNCTION, " * sc_signal (before) %.8x - %.8x", (uint32_t)(_sc_signal_map), (uint32_t)(signal->_sc_signal_map));
+
+    _connect_to_signal = signal;
+    signal->_connect_from_signal = this;
+
+    if (is_port_component == true)
+      {
+	if ((_direction == IN ) and (signal->_direction == IN ))
+	  {
 	    switch (_type_info)
 	      {
-	      case BOOL     : {(*(static_cast<sc_out <bool    > *>(_sc_signal))) (*(static_cast<sc_in  <bool    > *>(signal->_sc_signal))); break;}
-	      case UINT8_T  : {(*(static_cast<sc_out <uint8_t > *>(_sc_signal))) (*(static_cast<sc_in  <uint8_t > *>(signal->_sc_signal))); break;}
-	      case UINT16_T : {(*(static_cast<sc_out <uint16_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint16_t> *>(signal->_sc_signal))); break;}
-	      case UINT32_T : {(*(static_cast<sc_out <uint32_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint32_t> *>(signal->_sc_signal))); break;}
-	      case UINT64_T : {(*(static_cast<sc_out <uint64_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint64_t> *>(signal->_sc_signal))); break;}
-	      default       : {throw (ErrorMorpheo ("Signal \""+_name+"\" : type unknow.")); break;}
+	      case BOOL     : {(*(static_cast<sc_in  <bool    > *>(_sc_signal))) (*(static_cast<sc_in  <bool    > *>(signal->_sc_signal))); break;}
+	      case UINT8_T  : {(*(static_cast<sc_in  <uint8_t > *>(_sc_signal))) (*(static_cast<sc_in  <uint8_t > *>(signal->_sc_signal))); break;}
+	      case UINT16_T : {(*(static_cast<sc_in  <uint16_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint16_t> *>(signal->_sc_signal))); break;}
+	      case UINT32_T : {(*(static_cast<sc_in  <uint32_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint32_t> *>(signal->_sc_signal))); break;}
+	      case UINT64_T : {(*(static_cast<sc_in  <uint64_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint64_t> *>(signal->_sc_signal))); break;}
+	      default       : {throw (ErrorMorpheo ("<Signal::link> Signal \""+_name+"\" : type unknow.")); break;}
 	      }
-	  else
-	    throw (ErrorMorpheo ("Signal \""+_name+"\" : unsupported direction to link."));
+	  }
+	else
+	  {
+	    if ((_direction == OUT) and (signal->_direction == OUT))
+	      {
+		_is_map = true;
+		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::link> Signal \""+_name+"\" : type unknow.")); break;}
+		  }
+	      }
+	    else
+	      {
+		throw (ErrorMorpheo ("<Signal::link> Signal \""+_name+"\" can't been linked with signal \""+signal->get_name()+"\" : between two components, illegal direction ("+toString(_direction)+" with "+toString(signal->_direction)+")."));
+	      }
+	  }
+      }
+    else
+      {
+	if ((_direction == IN ) and (signal->_direction == OUT))
+	  {
+	    switch (_type_info)
+	      {
+	      case BOOL     : {(*(static_cast<sc_in  <bool    > *>(_sc_signal))) (*(static_cast<sc_out <bool    > *>(signal->_sc_signal))); break;}
+	      case UINT8_T  : {(*(static_cast<sc_in  <uint8_t > *>(_sc_signal))) (*(static_cast<sc_out <uint8_t > *>(signal->_sc_signal))); break;}
+	      case UINT16_T : {(*(static_cast<sc_in  <uint16_t> *>(_sc_signal))) (*(static_cast<sc_out <uint16_t> *>(signal->_sc_signal))); break;}
+	      case UINT32_T : {(*(static_cast<sc_in  <uint32_t> *>(_sc_signal))) (*(static_cast<sc_out <uint32_t> *>(signal->_sc_signal))); break;}
+	      case UINT64_T : {(*(static_cast<sc_in  <uint64_t> *>(_sc_signal))) (*(static_cast<sc_out <uint64_t> *>(signal->_sc_signal))); break;}
+	      default       : {throw (ErrorMorpheo ("<Signal::link> Signal \""+_name+"\" : type unknow.")); break;}
+	      }
+	  }
+	else
+	  {
+	    if ((_direction == OUT) and (signal->_direction == IN ))
+	      {
+		_is_map = true;
+		switch (_type_info)
+		  {
+		  case BOOL     : {(*(static_cast<sc_out <bool    > *>(_sc_signal))) (*(static_cast<sc_in  <bool    > *>(signal->_sc_signal))); break;}
+		  case UINT8_T  : {(*(static_cast<sc_out <uint8_t > *>(_sc_signal))) (*(static_cast<sc_in  <uint8_t > *>(signal->_sc_signal))); break;}
+		  case UINT16_T : {(*(static_cast<sc_out <uint16_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint16_t> *>(signal->_sc_signal))); break;}
+		  case UINT32_T : {(*(static_cast<sc_out <uint32_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint32_t> *>(signal->_sc_signal))); break;}
+		  case UINT64_T : {(*(static_cast<sc_out <uint64_t> *>(_sc_signal))) (*(static_cast<sc_in  <uint64_t> *>(signal->_sc_signal))); break;}
+		  default       : {throw (ErrorMorpheo ("<Signal::link> Signal \""+_name+"\" : type unknow.")); break;}
+		  }
+	      }
+	    else
+	      {
+		throw (ErrorMorpheo ("<Signal::link> Signal \""+_name+"\" can't been linked with signal \""+signal->get_name()+"\" : between a interface's port and one component, illegal direction ("+toString(_direction)+" with "+toString(signal->_direction)+")."));
+	      }
+	  }
+      }
 
+    log_printf(TRACE,Behavioural,FUNCTION, " * sc_signal (after ) %.8x - %.8x", (uint32_t)(_sc_signal_map), (uint32_t)(signal->_sc_signal_map));
     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 43)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_mapping.cpp	(revision 44)
@@ -12,27 +12,27 @@
 namespace behavioural          {
 
-#undef  FUNCTION
-#define FUNCTION "Signal::mapping"
-  void Signal::mapping (Signal * signal)
-  {
-    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+// #undef  FUNCTION
+// #define FUNCTION "Signal::mapping"
+//   void Signal::mapping (Signal * signal)
+//   {
+//     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
 
-    if (_is_map == true)
-      throw (ErrorMorpheo ("<Signal::mapping> Can't mapping signal \""+_name+"\" with \""+signal->get_name()+"\", because it's already map."));
+//     if (_is_map == true)
+//       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::mapping> Signal \""+_name+"\", can't map with signal \""+signal->get_name()+"\", because it's not already allocate."));
+//     if (signal->_is_allocate == false)
+//       throw (ErrorMorpheo ("<Signal::mapping> Signal \""+_name+"\", can't map with signal \""+signal->get_name()+"\", because it's not already allocate."));
 
-    if (_direction == OUT)
-      {
-	// This output is mapped
-	_is_map     = true;
+//     if (_direction == OUT)
+//       {
+// 	// This output is mapped
+// 	_is_map     = true;
 
-	if (signal->_direction == OUT)
-	  _sc_signal_map = signal->_sc_signal_map;
-      }
+// 	if (signal->_direction == OUT)
+// 	  _sc_signal_map = signal->_sc_signal_map;
+//       }
     
-    log_printf(FUNC,Behavioural,FUNCTION,"End");
-  };
+//     log_printf(FUNC,Behavioural,FUNCTION,"End");
+//   };
 
 }; // end namespace behavioural          
Index: trunk/IPs/systemC/processor/Morpheo/Common/include/Address.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/include/Address.h	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/Address.h	(revision 44)
@@ -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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/Average.h	(revision 44)
@@ -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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/BitManipulation.h	(revision 44)
@@ -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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/ChangeCase.h	(revision 44)
@@ -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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/Debug.h	(revision 44)
@@ -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,"<%s> ",func);                                   \
+        if (DEBUG >= DEBUG_FUNC)                                        \
+        {                                                               \
+          fprintf(stdout,"In file %s, ",__FILE__);                      \
+          fprintf(stdout,"at line %d, ",__LINE__);                      \
+        }                                                               \
+        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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/ErrorMorpheo.h	(revision 44)
@@ -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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/FromString.h	(revision 44)
@@ -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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/Message.h	(revision 44)
@@ -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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/Percent.h	(revision 44)
@@ -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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/Test.h	(revision 44)
@@ -0,0 +1,47 @@
+#ifndef TEST_H
+#define TEST_H
+
+#include <iostream>
+#include <sstream>
+#include <stdint.h>
+#include "Common/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)
+#define TEST_STR(type,exp1,exp2,str...) do { fprintf(stdout,str); 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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/ToBase2.h	(revision 44)
@@ -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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/ToString.h	(revision 44)
@@ -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 44)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/Types.h	(revision 44)
@@ -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/Documentation/Source/Documents/document-cache-specification/fr/root.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/document-cache-specification/fr/root.tex	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/document-cache-specification/fr/root.tex	(revision 44)
@@ -1,44 +1,80 @@
-\Section{Introduction - Motivation}
-Les processeurs haute performance lancent plusieurs instructions, de manières non ordonnées et spéculativement. Un défaut de cache ne doit pas bloquer le processeur. Le cache doit pouvoir accepter des requêtes pendant le traitement d'un MISS. Il s'agit du concept de cache non bloquant.
+\Section{Introduction}
+\subSection{Motivations}
+Les processeurs haute performance lancent plusieurs instructions, de manière non ordonnée et spéculativement. Un défaut de cache ne doit pas bloquer le processeur. Le cache doit être non blouqant, c'est à dire qu'il doit pouvoir accepter des requêtes venant du processeur pendant le traitement d'un MISS.
+
+\subSection{Démarche du document}
+Le document est accès en quatre parties :
+\begin{itemize}
+\item Section \ref{overview_partial} : dans un premier temps, nous allons présenter une architecture qui satisfait des requêtes courantes (lectures / écritures, succès / échec) sur des adresses non conflictuelles. Cette première architecture est utilisable dans la majorité des cas.
+\item Section \ref{problem}          : dans cette section, nous allons analyser des problèmes arrivant lors d'accès à des adresses conflictuelles, et/ou dans un environnement multi contexte. Pour chaque problème, nous proposons des solutions.
+\item Section \ref{overview_full}    : cette section est la synthèse des deux précedentes. Nous allons modifier l'architecture de départ afin d'apporter des solutions aux problèmes énumérés dans la section \ref{problem}.
+\item Section \ref{description}      : cette dernière section énumère les structures internes, ainsi que les automates de la solution retenue dans la section \ref{overview_full}.
+\end{itemize}
 
 \subSection{Paramètres nécessaires}
 \subsubSection{Paramètres interne du cache}
-\begin{itemize}
-\item Taille du mot 
-\item Nombre de lignes par mot 
-\item Nombre de lignes 
-\item Associativité 
-\item Nombre d'interface 
-\item Taille des files internes
-\end{itemize}
+
+\begin{center}
+  \begin{tabular}{|ll|ccc|}
+    \hline
+    Paramètres                &             &                       Min &                            Max & Pas \\
+    \hline
+    Taille du mot             & SIZE\_WORD  &                   32 bits &                        64 bits &  *2 \\
+    Nombre de lignes par mot  & NB\_WORD    &                     1 mot &                        64 mots &  *2 \\
+    Nombre de lignes          & NB\_LINE    &                   1 ligne &                    1024 lignes &  *2 \\
+    Associativité             & ASSOC       & 1 banc de NB\_LINE lignes & NB\_LINE/16 bancs de 16 lignes &  *2 \\
+    Taille des files internes & SIZE\_QUEUE &                    1 case &                       64 cases &  *2 \\
+    \hline
+  \end{tabular}
+\end{center}
 
 \subsubSection{Paramètres de l'interface cache / processeur}
-\begin{itemize}
-\item Nombre de bits composant une donnée 
-\item Nombre de bits composant une adresse 
-\item Nombre de bits composant l'identifiant du propriétaire 
-\item Nombre de bits composant l'identifiant de transaction
-\end{itemize}
+
+\begin{center}
+  \begin{tabular}{|ll|ccc|}
+    \hline
+    Paramètres                              &             &     Min &     Max & Pas \\
+    \hline
+    Taille d'une donnée                     & SIZE\_DATA  & 32 bits & 64 bits &  *2 \\
+    Taille de l'adresse                     & SIZE\_ADDR  & 32 bits & 64 bits &  *2 \\
+    Taille de l'identifiant du propriétaire & SIZE\_TRDID &  0 bits &  4 bits &  +1 \\
+    Taille de l'identifiant de transaction  & SIZE\_PKTID &  0 bits &  4 bits &  +1 \\
+    \hline
+  \end{tabular}
+\end{center}
 
 \subSection{Spécification}
 \begin{itemize}
-\item Write through 
-\item Write no allocate 
-\item Les requêtes envoyé par le processeur ne garantisse pas le stricte ordre séquentielle du programme. 
-\item Associatif : 1, N, Totalement
-\end{itemize}
-
-\Section{Vue d'ensemble - Modèle simplifié}
-
-\printgraphonly{CACHE_overview_save}{.8}
+\item Write through     (Les données sont à la fois écrite dans le bloc du cache et dans le bloc de la mémoire de niveau inférieur).
+\item Write no allocate (Les échecs d'écriture n'affectent pas le cache, le bloc n'est modifié que dans le niveau mémoire inférieur).
+\item Cache associatif  (Le cache est découpé plusieurs banc et une ligne peut être placé dans n'importe quel banc.)
+\item Non bloquant      (Le cache permet d'avoir plusieurs requêtes en cours de résolution)
+\item Le modèle de consistance mémoires du processeur est relachés (Nous permettons aux lectures et aux écritures de se lancer et de se terminer de manière non ordonnées.)
+\end{itemize}
+
+\subSection{Hypothèse de travail}
+
+Nous allons supposer que le cache sera connecté à un processeur superscalaire d'ordre 4. Que le code exécuté contient 20\% de lectures et 10 \% d'écritures. Nous avons donc en moyenne 1 accès mémoire par cycle. 
+Si nous ciblons un cache ayant au minimum 90\% de réussites, nous obtenons alors les ratios suivants :
+\begin{itemize}
+\item 60 \% de lectures qui réussissent.
+\item 30 \% d'écritures qui réussissent.
+\item 6,6\% de lectures qui échouent.
+\item 3,3\% d'écritures qui échouent.
+\end{itemize}
+
+\Section{Vue d'ensemble - Modèle simplifié}\label{overview_partial}
+
+\printgraphonly{CACHE_overview_basic}{.8}
 
 Dans un premier temps, nous allons montrer un modèle qui satisfait les cas de requêtes courantes : read hit, write hit, read miss et write miss, sur des adresses non conflictuelles.
 
-Afin de réaliser un cache non bloquant, nous avons séparé l'interface des requêtes de l'interface des réponses. Pour cela, 4 automates gèrent les interfaces et la gestion des ressources. La micro-architecture du cache ce décompose comme suit :
+
+Afin de réaliser un cache non bloquant, nous avons séparé l'interface des requêtes, de l'interface des réponses. Pour cela, 4 automates gèrent les interfaces et la gestion des ressources. La micro-architecture du cache ce décompose comme suit :
 \begin{itemize}
 \item Quatre automates : 
   \begin{description}
   \item[FSM\_DCACHE\_REQ :] Cet automate gère la consommation des requêtes provenant du cache et, suivant le type d'accès et la réussite de l'accès, l'écriture dans les blocs QUEUE\_REQ et QUEUE\_READ\_HIT 
-  \item[FSM\_DCACHE\_RSP :] L'automate gère la consommation de réponses contenue dans la QUEUE\_RSP et s'occupe d'écrire les lignes chargés dans le cache.
+  \item[FSM\_DCACHE\_RSP :] L'automate gère la consommation de réponses contenues dans la QUEUE\_RSP et s'occupe d'écrire les lignes chargés dans le cache.
   \item[FSM\_VCI\_REQ    :] L'automate s'occupe de consommer une requête contenue dans la QUEUE\_REQ (si la file n'est pas vide) et la lance sur l'interface VCI\_REQ (si l'interface n'est pas occupée). 
   \item[FSM\_VCI\_RSP    :] L'automate s'occupe de consommer des réponses sur l'interface VCI\_RSP (si l'interface n'est pas occupée) et l'écrit dans  la file QUEUE\_RSP (si la file n'est pas pleine). 
@@ -47,11 +83,11 @@
   \begin{description}
   \item[QUEUE\_READ\_HIT :] Cette file d'attente s'occupe de transmettre le plus tôt possible les requêtes de lectures ayant fait un HIT.
-  \item[QUEUE\_REQ       :] Cette file est utilisée comme tampon d'écriture et de requête de lecture ayant fait un miss. Elle attende leur envoie à la mémoire.
+  \item[QUEUE\_REQ       :] Cette file est utilisée comme tampon d'écriture et de requête de lecture ayant fait un miss. Elle attend leur envoi à la mémoire.
   \item[QUEUE\_RSP       :] La file est utilisée comme tampon pour les réponses provenant de la mémoire.
   \end{description}
 \item Trois blocs mémoires : 
   \begin{description}
-  \item[RAM\_TAG  :] Contient les informations pouvant identifier les adresses contenues dans cette ligne de cache.
-  \item[RAM\_DATA :] Contient les données de la ligne de cache.
+  \item[RAM\_TAG  :] Contient les informations pouvant identifier les adresses contenues dans cette ligne de cache. Ce bloc est composé de ASSOC bancs de tailles identiques.
+  \item[RAM\_DATA :] Contient les données de la ligne de cache. Ce bloc est composé de ASSOC bancs de tailles identiques.
   \item[RAM\_INFO :] Contient les informations relative aux requêtes pendantes.
   \end{description}
@@ -62,7 +98,7 @@
 
 \begin{description}
-\item[Read - Hit  :] La requête accède en parralèle aux RAM\_TAG et au RAM\_DATA. La donnée lu est écrite dans la RAM\_INFO, alors que le pointeur vers RAM\_INFO est sauvegardé dans la QUEUE\_READ\_HIT. Ensuite la requête attendra d'être sélectionnée par l'automate FSM\_DCACHE\_RSP, puis va lire les informations à partir de la RAM\_INFO et sera acheminée vers le port de réponse.
+\item[Read - Hit  :] La requête accède en parallèle aux RAM\_TAG et au RAM\_DATA. La donnée lue est écrite dans la RAM\_INFO, alors que le pointeur vers RAM\_INFO est sauvegardé dans le bloc QUEUE\_READ\_HIT. Ensuite la requête attend d'être sélectionnée par l'automate FSM\_DCACHE\_RSP, puis lit les informations à partir de la RAM\_INFO et est acheminée vers le port de réponse.
 \item[Read - Miss :] La requête de lecture réalisant un miss, écrit les informations concernant la requête dans la RAM\_INFO. Le pointeur de RAM\_INFO sera écrit dans la QUEUE\_REQ. L'automate FSM\_VCI\_REQ va envoyer la requête sur le réseau VCI. La réponse reviendra par l'intermédiaire de l'automate FSM\_VCI\_RSP qui enregistre la ligne de cache en cours d'arrivée dans un tampon. Dès la réception de la fin de paquet, le tampon est enregistré dans la QUEUE\_RSP. L'identifiant de requête vci sera un index vers RAM\_INFO, c'est pour cela que lorsque l'automate FSM\_DCACHE\_REQ récupère une réponse dans la QUEUE\_RSP, elle peut retrouver les informations de la requêtes dans RAM\_INFO.
-\item[Write - Hit  :] Un write hit est équivalent à un read-miss : lors de la requête les informations sont stockées dans la RAM\_INFO (ainsi que la donnée à écrire). Lors de la réponse, (à la différence d'un read-miss, il n'y a pas de retour de ligne) la donnée à écrire va l'être dans le bloc RAM\_DATA.
+\item[Write - Hit  :] La gestion d'un write hit est équivalent à celle d'un read-miss : lors de la requête les informations sont stockées dans la RAM\_INFO (ainsi que la donnée à écrire). Lors de la réponse, (à la différence d'un read-miss, il n'y a pas de retour de ligne) la donnée à écrire va l'être dans le bloc RAM\_DATA.
 \item[Write - Miss :] Un échec d'écriture est équivalent à une réussite d'écriture mais sans mise à jour du cache.
 \item[Lock et Prefetch :] Ce cache n'implémentant ces fonctionnalités et étant le dernier niveau de cache avant l'accès à l'interconnect, alors ces requêtes sont traitées comme étant des Read Hit (sans lecture du cache)
@@ -76,5 +112,5 @@
 Nous optons pour la deuxième solution. Ce choix est également motiver pour uniformiser les solutions proposées pour les problèmes de consistances mémoires.
 
-\Section{Quelques problèmes du modèle simplifié}
+\Section{Quelques problèmes du modèle simplifié}\label{problem}
 Dans cette section, nous allons voir quelques problèmes fonctionnelle du modèle de base et nous allons présenter des solutions.
 
@@ -179,5 +215,5 @@
 Le cache est optimisé pour utiliser les propriétés de localité spatiale et temporelle d'un programme. Avec le multi-contexte, le cache va être soumit à plusieurs flot qui ne sont pas dépendant entre eux. Ceci va entraîner des évincements de lignes en faveur d'un contexte, alors que la ligne victime pouvait être utilisée par un autre contexte. De plus, ceci va augmenter le phénomène décrit dans la section "Évincement précoce de ligne" : des écritures non encore finalisées vont voir leur lignes cibles évincées.
 
-\Section{Vue d'ensemble - Modèle complet}
+\Section{Vue d'ensemble - Modèle complet}\label{overview_full}
 Cette section à pour but de montrer les modifications par rapport au modèle de base.
 
@@ -215,7 +251,10 @@
 \end{tabular}
 
-\Section{Description détaillée}
+\Section{Description détaillée}\label{description}
 
 \subSection{Structure interne}
+
+Pour chaque composant interne, les interfaces suivent le protocole fifo (le producteur possède une sortie VAL qui indique s'il a une requête valide et le consommateur possède une sortie ACK qui indique s'il peut accepter une transaction. Il y a une transaction si VAL et ACK sont tous les deux à 1 à la fin d'un cycle). L'avantage est qu'il est très facile de faire du contrôle de flux.
+
 Nous allons maintenant détailler les ressources internes du cache non bloquant : 
 \begin{itemize}
@@ -224,19 +263,22 @@
   \item[QUEUE\_READ\_HIT :] Cette file d'attente s'occupe de transmettre le plus tôt possible les requêtes de lecture ayant fait un HIT. 
     \begin{description}
-    \item {\it Valid : } Indique si l'entrée correspondante contient une donnée valide 
+    %\item {\it Valid : } Indique si l'entrée correspondante contient une donnée valide 
     \item {\it Index : } Index vers une entrée de RAM\_INFO
     \end{description}
+    \printgraphonly{CACHE_bloc_QUEUE_READ_HIT}{.8}
   \item[QUEUE\_REQ :] Cette file est utilisée comme tampon d'écriture et de requête de lecture ayant fait un miss. Elle attende leur envoie à la mémoire.
     \begin{description}
-    \item {\it Valid : } Indique si l'entrée correspondante contient une donnée valide 
+    %\item {\it Valid : } Indique si l'entrée correspondante contient une donnée valide 
     \item {\it Index : } Index vers une entrée de RAM\_INFO
     \end{description}
+    \printgraphonly{CACHE_bloc_QUEUE_REQ}{.8}
   \item[QUEUE\_RSP :] La file est utilisée comme tampon pour les réponses provenant de la mémoire.
     \begin{description}
-    \item {\it Valid :} Indique si l'entrée correspondante contient une donnée valide 
+    %\item {\it Valid :} Indique si l'entrée correspondante contient une donnée valide 
     \item {\it Index :} Index vers une entrée de RAM\_INFO 
     \item {\it Line :} Contient la donnée retournée par l'interface de réponse
     \item {\it Error :} Indique si l'accès effectué à généré une erreur ou pas. 
     \end{description}
+    \printgraphonly{CACHE_bloc_QUEUE_RSP}{.8}
   \end{description}
 \item Trois blocs mémoires : 
@@ -246,8 +288,10 @@
     \item {\it Tag :} Numéro du tag correspondant à la ligne
     \end{description}
+    \printgraphonly{CACHE_bloc_RAM_TAG}{.8}
   \item[RAM\_DATA :] Contient les données de la ligne de cache 
     \begin{description}
     \item {\it Line :} Contient la ligne de cache proprement dite 
     \end{description}
+    \printgraphonly{CACHE_bloc_RAM_DATA}{.8}
   \item[RAM\_LOCK :] Contient les bits de gestions de dépendances
     \begin{description}
@@ -256,4 +300,5 @@
     \item {\it Lock\_by\_write :} Si le bit est positionné, alors il existe une écriture pendante 
     \end{description}
+    \printgraphonly{CACHE_bloc_RAM_LOCK}{.8}
   \item[RAM\_INFO :] Contient les informations relative au requête pendante. Pour plus de détails voir la section \ref{RAM_INFO}
     \begin{description}
@@ -265,4 +310,5 @@
     \item {\it Data :} Donnée (en cas d'écriture : DCACHE.REQ\_WDATA, en cas de lecture avec succès : contenu d'un mot de la ligne de cache) 
     \end{description}
+    \printgraphonly{CACHE_bloc_RAM_INFO}{.8}
   \end{description}
 \item  Quatre automates : 
@@ -289,4 +335,5 @@
 Nous pouvons noter alors que nous pouvons accepter une requête sur le l'interface DCACHE\_REQ si la file de destination n'est pas vide ET s'il y a encore une place de libre dans RAM\_INFO.
 
+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 Dans un premier temps, la taille de RAM\_INFO sera le nombre maximal de requêtes pendantes que le processeur peut admettre soit : \{nombre de contexte\} * \{taille de la load store queue\} (dans ce premier cas, RAM\_INFO n'a pas besoin de contenir le pktid et le trdid de la requête). De plus le nombre de port de lecture sera de 2.
 
@@ -312,2 +359,35 @@
 Dans ce cas ajouter une barrière de pipeline va consommer la requête mais le cache va être dans l'imposibilité de l'accepter et va empêcher d'en choisir une autre.
 
+\subSection{Choix de la victime}
+Pour la sélection des lignes à evincer, nous allons implémenter un algorithme pseudo aléatoire.
+L'avantage de cet algorithme est de ne pas avoir besoin de sauvegarder un historique des accès.
+
+\subSection{RAM mono-port}\label{mono-port}
+
+La mémoire la plus dense est de la mémoire mono-port (soit une lecture, soit une écriture par cycle). 
+
+Comme chaque interface des blocs de RAM ont une interface fifo, elle intègre donc un contrôle de flux. Ceci les rends indépendant du nombre de port intégrer dans chaque bloc mémoire. (Par exemple, un le bloc RAM\_DATA est implémenté avec de la mémoire dual-port, alors les sorties READ\_ACK et WRITE\_ACK seront toujours égals à 1).
+
+Néanmoins, nous devons prendre soin à ce que chaque étage du cache ne commande pas deux interfaces d'un même bloc RAM. Or dans la solution retenue, nous avons les blocs RAM\_TAG et RAM\_LOCK qui ont besoin de deux interfaces durant la partie DCACHE\_REQ. Pour cela nous devons réaliser une barrière de pipeline.
+
+Le premier étages va réaliser les lectures, alors que le second va mettre à jour ces bancs. Il est à noter qu'il va devoir avoir un bypass car comme la RAM\_LOCK ainsi que le bloc RAM\_TAG n'a pas encore été mis à jour, cette requête peut être suivit par une autre requête qui entre en conflit.
+
+Le graphe \ref{CACHE_overview_mono-port} montre les modifications à apporter au cache pour n'avoir qu'un port par étage.
+
+\printgraphonly{CACHE_overview_mono-port}{.8}
+
+\subSection{Structure du pipeline}
+
+Suivant le type d'une requête, le temps de réponse minimal n'est pas le même (On pose N le nombre de cycle aller retour jusqu'a la mémoire et M le temps pour avoir une ligne de cache complète) :
+\begin{itemize}
+\item Read - Hit : 2 cycles.
+\item Read - Miss : 4 + N + M cycles.
+\item Write : 5 + N cycles.
+\item Lock et Prefetch : 2 cycles.
+\item Invalidate et Flush : 2 cycles.
+\end{itemize}
+
+\printgraphonly{CACHE_pipeline}{.8}
+
+%\subSection{Signaux de contrôles}
+%Dans cette section, nous allons voir les fonctions combinatoires permettant de gérer les différents signaux de contrôles 
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile	(revision 44)
@@ -50,7 +50,7 @@
 PS_FILES  		= $(patsubst $(DIR_TEX)/%.tex,%.ps ,$(TEX_FILES))
 PDF_FILES 		= $(patsubst $(DIR_TEX)/%.tex,%.pdf,$(TEX_FILES))
-EPS_FILES		= $(patsubst $(DIR_GRAPH)/%.p,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_GRAPH)/*.p))		\
-			  $(patsubst $(DIR_SCHEMA)/%.fig,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_SCHEMA)/*.fig))	\
-			  $(patsubst $(DIR_SCHEMA)/%.eps,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_SCHEMA)/*.eps))
+PNG_FILES		= $(patsubst $(DIR_GRAPH)/%.p,$(DIR_SCHEMA_PNG)/%.png,$(wildcard $(DIR_GRAPH)/*.p))		\
+			  $(patsubst $(DIR_SCHEMA)/%.fig,$(DIR_SCHEMA_PNG)/%.png,$(wildcard $(DIR_SCHEMA)/*.fig))	\
+			  $(patsubst $(DIR_SCHEMA)/%.eps,$(DIR_SCHEMA_PNG)/%.png,$(wildcard $(DIR_SCHEMA)/*.eps))
 
 #--------------------------------------------------------------------------------
@@ -58,9 +58,10 @@
 #--------------------------------------------------------------------------------
 .PHONY 			: all clean view help doc doc_all new delete
-.SECONDARY 		: $(DVI_FILES) $(PS_FILES) $(PDF_FILES) $(EPS_FILES) $(DIR_SCHEMA_EPS) $(DIR_SCHEMA_PNG)
+.SECONDARY 		: $(DVI_FILES) $(PS_FILES) $(PDF_FILES) $(PNG_FILES) $(DIR_SCHEMA_EPS) $(DIR_SCHEMA_PNG)
+.PRECIOUS		: %.pdf %.ps %.dvi $(DIR_SCHEMA_PNG)/%.png $(DIR_SCHEMA_EPS)/%.eps
 
 all 			: help
 
-doc			: $(DIR_TEX)  $(EPS_FILES) 
+doc			: $(DIR_TEX)  $(PNG_FILES) 
 			@											\
 			for file in $(ALL_FILES); do                                				\
@@ -373,18 +374,19 @@
 			@$(MKDIR) $@
 
+$(DIR_SCHEMA_PNG)/%.png : $(DIR_SCHEMA_EPS)/%.eps $(DIR_SCHEMA_PNG)
+			@$(ECHO) "Generate   files     : $*.png"
+#			@$(EPS2PNG) $< $@
+
 $(DIR_SCHEMA_EPS)/%.eps	: $(DIR_SCHEMA)/%.eps $(DIR_SCHEMA_EPS) $(DIR_SCHEMA_PNG)
 			@$(ECHO) "Generate   files     : $*.eps"
 			@$(CP) $(DIR_SCHEMA)/$*.eps $(DIR_SCHEMA_EPS)
-			@$(EPS2PNG) $@ $(DIR_SCHEMA_PNG)/$*.png
 
 $(DIR_SCHEMA_EPS)/%.eps	: $(DIR_SCHEMA)/%.fig $(DIR_SCHEMA_EPS) $(DIR_SCHEMA_PNG)
 			@$(ECHO) "Generate   files     : $*.eps"
 			@$(FIG2EPS) $< $@
-			@$(EPS2PNG) $@ $(DIR_SCHEMA_PNG)/$*.png
 
 $(DIR_SCHEMA_EPS)/%.eps	: $(DIR_GRAPH)/%.p    $(DIR_SCHEMA_EPS) $(DIR_SCHEMA_PNG)
 			@$(ECHO) "Generate   files     : $*.eps"
 			@$(CD) $(DIR_GRAPH); $(GNUPLOT) $*.p
-			@$(EPS2PNG) $@ $(DIR_SCHEMA_PNG)/$*.png
 
 #--------------------------------------------------------------------------------
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/document-cache-specification.sty
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/document-cache-specification.sty	(revision 43)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/document-cache-specification.sty	(revision 44)
@@ -1,6 +1,6 @@
-\def\review{2007/07/02}
+\def\review{2007/07/11}
 %\def\review{\number\day/\number\month/\number\year\xspace}
 
-\title{Cache - Specification}
+\title{Cache de données associatif et non bloquant\\{\it Spécification}}
  
 \author{}
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_QUEUE_READ_HIT.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_QUEUE_READ_HIT.fig	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_QUEUE_READ_HIT.fig	(revision 44)
@@ -0,0 +1,40 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4650 3600 4950 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4950 3750 4650 3750
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
+	 4950 3450 6150 3450 6150 4650 4950 4650
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 5850 3450 5850 4650
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 5550 4650 5550 3450
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 3600 6450 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6450 3750 6150 3750
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 4650 4275 4725 4275 4950 4275
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 4275 6450 4275
+4 1 0 50 -1 2 8 0.0000 0 105 1185 5550 3375 QUEUE_READ_HIT\001
+4 2 0 50 -1 0 8 6.2832 0 90 630 4500 3750 WRITE_ack\001
+4 2 0 50 -1 0 8 6.2832 0 90 615 4500 3600 WRITE_val\001
+4 2 0 50 -1 0 8 6.2832 0 90 675 4500 4275 WRITE_num\001
+4 0 0 50 -1 0 8 6.2832 0 90 570 6600 3750 READ_ack\001
+4 0 0 50 -1 0 8 6.2832 0 90 555 6600 3600 READ_val\001
+4 0 0 50 -1 0 8 6.2832 0 90 615 6600 4275 READ_num\001
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_QUEUE_REQ.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_QUEUE_REQ.fig	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_QUEUE_REQ.fig	(revision 44)
@@ -0,0 +1,40 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4650 3600 4950 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4950 3750 4650 3750
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
+	 4950 3450 6150 3450 6150 4650 4950 4650
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 5850 3450 5850 4650
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 5550 4650 5550 3450
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 3600 6450 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6450 3750 6150 3750
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 4650 4275 4725 4275 4950 4275
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 4275 6450 4275
+4 2 0 50 -1 0 8 0.0000 0 90 630 4500 3750 WRITE_ack\001
+4 2 0 50 -1 0 8 0.0000 0 90 615 4500 3600 WRITE_val\001
+4 2 0 50 -1 0 8 0.0000 0 90 675 4500 4275 WRITE_num\001
+4 0 0 50 -1 0 8 0.0000 0 90 570 6600 3750 READ_ack\001
+4 0 0 50 -1 0 8 0.0000 0 90 555 6600 3600 READ_val\001
+4 0 0 50 -1 0 8 0.0000 0 90 615 6600 4275 READ_num\001
+4 1 0 50 -1 2 8 0.0000 0 105 780 5550 3375 QUEUE_REQ\001
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_QUEUE_RSP.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_QUEUE_RSP.fig	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_QUEUE_RSP.fig	(revision 44)
@@ -0,0 +1,56 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4650 3600 4950 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4950 3750 4650 3750
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
+	 4950 3450 6150 3450 6150 4650 4950 4650
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 5850 3450 5850 4650
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 5550 4650 5550 3450
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 3600 6450 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6450 3750 6150 3750
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 4275 6450 4275
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4650 4275 4950 4275
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4650 4425 4950 4425
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4650 4125 4950 4125
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 4125 6450 4125
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 4425 6450 4425
+4 2 0 50 -1 0 8 0.0000 0 90 630 4500 3750 WRITE_ack\001
+4 2 0 50 -1 0 8 0.0000 0 90 615 4500 3600 WRITE_val\001
+4 0 0 50 -1 0 8 0.0000 0 90 570 6600 3750 READ_ack\001
+4 0 0 50 -1 0 8 0.0000 0 90 555 6600 3600 READ_val\001
+4 1 0 50 -1 2 8 0.0000 0 105 750 5550 3375 QUEUE_RSP\001
+4 0 0 50 -1 0 8 0.0000 0 90 615 6600 4125 READ_num\001
+4 0 0 50 -1 0 8 0.0000 0 105 600 6600 4275 READ_line\001
+4 0 0 50 -1 0 8 0.0000 0 90 660 6600 4425 READ_error\001
+4 2 0 50 -1 0 8 0.0000 0 90 675 4500 4125 WRITE_num\001
+4 2 0 50 -1 0 8 0.0000 0 105 660 4500 4275 WRITE_line\001
+4 2 0 50 -1 0 8 0.0000 0 90 720 4500 4425 WRITE_error\001
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_DATA.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_DATA.fig	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_DATA.fig	(revision 44)
@@ -0,0 +1,66 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 6150 3525 7200 3825
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6450 3600 6150 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 3750 6450 3750
+4 0 0 50 -1 0 8 0.0000 0 90 615 6525 3600 WRITE_val\001
+4 0 0 50 -1 0 8 0.0000 0 90 630 6525 3750 WRITE_ack\001
+-6
+6 3975 3525 4950 3825
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4650 3600 4950 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4950 3750 4650 3750
+4 2 0 50 -1 0 8 0.0000 0 90 555 4575 3600 READ_val\001
+4 2 0 50 -1 0 8 0.0000 0 90 570 4575 3750 READ_ack\001
+-6
+6 6150 3975 7650 4650
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4425 6375 4425 6300 4425 6225 4425 6150 4425
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4575 6375 4575 6300 4575 6225 4575 6150 4575
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4275 6375 4275 6300 4275 6225 4275 6150 4275
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4125 6375 4125 6300 4125 6225 4125 6150 4125
+4 0 0 50 -1 0 8 0.0000 0 105 660 6525 4575 WRITE_line\001
+4 0 0 50 -1 0 8 0.0000 0 105 750 6525 4125 WRITE_index\001
+4 0 0 50 -1 0 8 0.0000 0 90 690 6525 4275 WRITE_bank\001
+4 0 0 50 -1 0 8 0.0000 0 105 1080 6525 4425 WRITE_byte_enable\001
+-6
+2 4 0 1 0 11 50 -1 20 0.000 0 0 7 0 0 5
+	 6150 4650 6150 3450 4950 3450 4950 4650 6150 4650
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4650 4125 4725 4125 4800 4125 4875 4125 4950 4125
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4650 4275 4725 4275 4800 4275 4875 4275 4950 4275
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4950 4575 4875 4575 4800 4575 4725 4575 4650 4575
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4650 4425 4725 4425 4800 4425 4875 4425 4950 4425
+4 1 0 50 -1 2 8 0.0000 0 105 720 5550 4050 RAM_DATA\001
+4 2 0 50 -1 0 8 0.0000 0 105 690 4575 4125 READ_index\001
+4 2 0 50 -1 0 8 0.0000 0 90 630 4575 4275 READ_bank\001
+4 2 0 50 -1 0 8 0.0000 0 90 600 4575 4575 READ_data\001
+4 2 0 50 -1 0 8 0.0000 0 105 1020 4575 4425 READ_byte_enable\001
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_INFO.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_INFO.fig	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_INFO.fig	(revision 44)
@@ -0,0 +1,104 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+2 4 0 1 0 11 50 -1 20 0.000 0 0 7 0 0 5
+	 6150 4650 6150 3450 4950 3450 4950 4650 6150 4650
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5175 3450 5175 3150
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5025 4950 5025 4650
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5175 4650 5175 4950
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5025 3150 5025 3450
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6450 3525 6150 3525
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 3675 6450 3675
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6150 3825 6225 3825 6300 3825 6375 3825 6450 3825
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 3975 6375 3975 6300 3975 6225 3975 6150 3975
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4125 6375 4125 6300 4125 6225 4125 6150 4125
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4275 6375 4275 6300 4275 6225 4275 6150 4275
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4425 6375 4425 6300 4425 6225 4425 6150 4425
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4575 6375 4575 6300 4575 6225 4575 6150 4575
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 6000 3450 6000 3300 6000 3225 6000 3150
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 5850 3450 5850 3300 5850 3225 5850 3150
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 5700 3450 5700 3300 5700 3225 5700 3150
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 5400 3150 5400 3300 5400 3375 5400 3450
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 5550 3450 5550 3300 5550 3225 5550 3150
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 5475 4650 5475 4725 5475 4800 5475 4875 5475 4950
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 5625 4650 5625 4725 5625 4800 5625 4875 5625 4950
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 5775 4650 5775 4725 5775 4800 5775 4875 5775 4950
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 5925 4650 5925 4725 5925 4800 5925 4875 5925 4950
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6075 4650 6075 4725 6075 4800 6075 4875 6075 4950
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 5325 4650 5325 4725 5325 4800 5325 4875 5325 4950
+4 1 0 50 -1 2 8 0.0000 0 105 690 5550 4050 RAM_INFO\001
+4 0 0 50 -1 0 8 0.0000 0 90 1095 6525 3525 WRITE_ALLOC_val\001
+4 0 0 50 -1 0 8 0.0000 0 90 1110 6525 3675 WRITE_ALLOC_ack\001
+4 0 0 50 -1 0 8 0.0000 0 90 1140 6525 4275 WRITE_ALLOC_data\001
+4 0 0 50 -1 0 8 0.0000 0 90 1155 6525 3825 WRITE_ALLOC_num\001
+4 0 0 50 -1 0 8 0.0000 0 90 1620 6525 3975 WRITE_ALLOC_address , bank\001
+4 0 0 50 -1 0 8 0.0000 0 120 1530 6525 4125 WRITE_ALLOC_trdid , pktid\001
+4 2 0 50 -1 0 8 5.4978 0 105 870 5025 3075 READ_REQ_val\001
+4 2 0 50 -1 0 8 5.4978 0 105 885 5175 3075 READ_REQ_ack\001
+4 2 0 50 -1 0 8 0.7854 0 90 855 5025 5100 READ_RSP_val\001
+4 2 0 50 -1 0 8 0.7854 0 90 870 5175 5100 READ_RSP_ack\001
+4 0 0 50 -1 0 8 0.0000 0 90 1410 6525 4575 WRITE_ALLOC_uncached\001
+4 0 0 50 -1 0 8 0.0000 0 105 1170 6525 4425 WRITE_ALLOC_type\001
+4 2 0 50 -1 0 8 5.4978 0 105 930 5400 3075 READ_REQ_num\001
+4 2 0 50 -1 0 8 5.4978 0 105 1080 5550 3075 READ_REQ_address\001
+4 2 0 50 -1 0 8 5.4978 0 105 915 5700 3075 READ_REQ_data\001
+4 2 0 50 -1 0 8 5.4978 0 105 945 5850 3075 READ_REQ_type\001
+4 2 0 50 -1 0 8 5.4978 0 105 1185 6000 3075 READ_REQ_uncached\001
+4 2 0 50 -1 0 8 0.7854 0 120 1260 5625 5100 READ_RSP_trdid, pktid\001
+4 2 0 50 -1 0 8 0.7854 0 90 915 5325 5100 READ_RSP_num\001
+4 2 0 50 -1 0 8 0.7854 0 90 1350 5475 5100 READ_RSP_address, bank\001
+4 2 0 50 -1 0 8 0.7854 0 90 900 5775 5100 READ_RSP_data\001
+4 2 0 50 -1 0 8 0.7854 0 105 930 5925 5100 READ_RSP_type\001
+4 2 0 50 -1 0 8 0.7854 0 90 1170 6075 5100 READ_RSP_uncached\001
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_LOCK.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_LOCK.fig	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_LOCK.fig	(revision 44)
@@ -0,0 +1,98 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 3975 3525 4950 3825
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4650 3600 4950 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4950 3750 4650 3750
+4 2 0 50 -1 0 8 0.0000 0 90 555 4575 3600 READ_val\001
+4 2 0 50 -1 0 8 0.0000 0 90 570 4575 3750 READ_ack\001
+-6
+2 4 0 1 0 11 50 -1 20 0.000 0 0 7 0 0 5
+	 6150 4650 6150 3450 4950 3450 4950 4650 6150 4650
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4650 3975 4725 3975 4800 3975 4875 3975 4950 3975
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4650 4125 4725 4125 4800 4125 4875 4125 4950 4125
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4950 4425 4875 4425 4800 4425 4725 4425 4650 4425
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4950 4575 4875 4575 4800 4575 4725 4575 4650 4575
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4950 4275 4875 4275 4800 4275 4725 4275 4650 4275
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5025 3150 5025 3450
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5175 3450 5175 3150
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6075 3150 6075 3225 6075 3300 6075 3375 6075 3450
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5025 4950 5025 4650
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5175 4650 5175 4950
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6075 4950 6075 4875 6075 4800 6075 4725 6075 4650
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 5925 4950 5925 4875 5925 4800 5925 4725 5925 4650
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 5775 4950 5775 4875 5775 4800 5775 4725 5775 4650
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 5625 4950 5625 4875 5625 4800 5625 4725 5625 4650
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 5475 4950 5475 4875 5475 4800 5475 4725 5475 4650
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 5475 3150 5475 3300 5475 3375 5475 3450
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 5625 3150 5625 3300 5625 3375 5625 3450
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 5775 3150 5775 3300 5775 3375 5775 3450
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 5925 3150 5925 3300 5925 3375 5925 3450
+4 2 0 50 -1 0 8 0.0000 0 90 630 4575 4125 READ_bank\001
+4 2 0 50 -1 0 8 0.0000 0 105 690 4575 3975 READ_index\001
+4 2 0 50 -1 0 8 0.0000 0 105 645 4575 4275 READ_valid\001
+4 2 0 50 -1 0 8 0.0000 0 105 1080 4575 4425 READ_lock_by_read\001
+4 2 0 50 -1 0 8 0.0000 0 120 1140 4575 4575 READ_lock_by_write\001
+4 1 0 50 -1 2 8 0.0000 0 105 720 5550 4050 RAM_LOCK\001
+4 2 0 50 -1 0 8 -0.7854 0 105 930 5025 3075 WRITE_REQ_val\001
+4 2 0 50 -1 0 8 -0.7854 0 105 945 5175 3075 WRITE_REQ_ack\001
+4 2 0 50 -1 0 8 -0.7854 0 120 1065 5475 3075 WRITE_REQ_index\001
+4 2 0 50 -1 0 8 -0.7854 0 105 1005 5625 3075 WRITE_REQ_bank\001
+4 2 0 50 -1 0 8 -0.7854 0 120 1020 5775 3075 WRITE_REQ_valid\001
+4 2 0 50 -1 0 8 -0.7854 0 105 1455 5925 3075 WRITE_REQ_lock_by_read\001
+4 2 0 50 -1 0 8 -0.7854 0 120 1515 6075 3075 WRITE_REQ_lock_by_write\001
+4 2 0 50 -1 0 8 0.7854 0 90 915 5025 5100 WRITE_RSP_val\001
+4 2 0 50 -1 0 8 0.7854 0 90 930 5175 5100 WRITE_RSP_ack\001
+4 2 0 50 -1 0 8 0.7854 0 105 1050 5475 5100 WRITE_RSP_index\001
+4 2 0 50 -1 0 8 0.7854 0 90 990 5625 5100 WRITE_RSP_bank\001
+4 2 0 50 -1 0 8 0.7854 0 105 1005 5775 5100 WRITE_RSP_valid\001
+4 2 0 50 -1 0 8 0.7854 0 105 1440 5925 5100 WRITE_RSP_lock_by_read\001
+4 2 0 50 -1 0 8 0.7854 0 120 1500 6075 5100 WRITE_RSP_lock_by_write\001
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_TAG.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_TAG.fig	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_TAG.fig	(revision 44)
@@ -0,0 +1,60 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 6150 3525 7200 3825
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6450 3600 6150 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 6150 3750 6450 3750
+4 0 0 50 -1 0 8 0.0000 0 90 615 6525 3600 WRITE_val\001
+4 0 0 50 -1 0 8 0.0000 0 90 630 6525 3750 WRITE_ack\001
+-6
+6 3975 3525 4950 3825
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4650 3600 4950 3600
+2 1 2 1 0 11 50 -1 -1 3.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4950 3750 4650 3750
+4 2 0 50 -1 0 8 0.0000 0 90 555 4575 3600 READ_val\001
+4 2 0 50 -1 0 8 0.0000 0 90 570 4575 3750 READ_ack\001
+-6
+2 4 0 1 0 11 50 -1 20 0.000 0 0 7 0 0 5
+	 6150 4650 6150 3450 4950 3450 4950 4650 6150 4650
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4650 4125 4725 4125 4800 4125 4875 4125 4950 4125
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4950 4575 4875 4575 4800 4575 4725 4575 4650 4575
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4500 6375 4500 6300 4500 6225 4500 6150 4500
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4350 6375 4350 6300 4350 6225 4350 6150 4350
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 6450 4200 6375 4200 6300 4200 6225 4200 6150 4200
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4950 4275 4875 4275 4800 4275 4725 4275 4650 4275
+2 1 0 1 0 11 50 -1 -1 0.000 0 0 -1 1 0 5
+	3 0 1.00 60.00 120.00
+	 4650 4425 4725 4425 4800 4425 4875 4425 4950 4425
+4 1 0 50 -1 2 8 0.0000 0 105 630 5550 4050 RAM_TAG\001
+4 2 0 50 -1 0 8 0.0000 0 105 690 4575 4125 READ_index\001
+4 2 0 50 -1 0 8 0.0000 0 105 540 4575 4575 READ_hit\001
+4 0 0 50 -1 0 8 0.0000 0 90 615 6525 4500 WRITE_tag\001
+4 0 0 50 -1 0 8 0.0000 0 90 690 6525 4350 WRITE_bank\001
+4 0 0 50 -1 0 8 0.0000 0 105 750 6525 4200 WRITE_index\001
+4 2 0 50 -1 0 8 0.0000 0 90 630 4575 4275 READ_bank\001
+4 2 0 50 -1 0 8 0.0000 0 90 555 4575 4425 READ_tag\001
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_overview_basic.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_overview_basic.fig	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_overview_basic.fig	(revision 44)
@@ -0,0 +1,161 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 4050 5700 4350 6300
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
+	 4050 5700 4050 6300 4350 6300 4350 5700
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 4350 6150 4050 6150
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 4350 6000 4050 6000
+-6
+6 8550 5700 8850 6300
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
+	 8550 6300 8550 5700 8850 5700 8850 6300
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 8850 5850 8550 5850
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 8850 6000 8550 6000
+-6
+6 6150 3150 6750 3450
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
+	 6150 3450 6750 3450 6750 3150 6150 3150
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 6600 3150 6600 3450
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 6450 3150 6450 3450
+-6
+6 7500 6750 8550 7725
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8025.000 7462.500 7875 7575 8025 7650 8175 7575
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8193.750 7200.000 8325 7275 8325 7125 8175 7050
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 7856.250 7200.000 7875 7050 7725 7125 7725 7275
+	3 0 1.00 60.00 120.00
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8025 6975 150 150 8025 6975 8175 6975
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8325 7425 150 150 8325 7425 8475 7425
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 7725 7425 150 150 7725 7425 7875 7425
+-6
+6 4350 6750 5400 7725
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 5043.750 7200.000 5175 7275 5175 7125 5025 7050
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4875.000 7462.500 4725 7575 4875 7650 5025 7575
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4706.250 7200.000 4725 7050 4575 7125 4575 7275
+	3 0 1.00 60.00 120.00
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4875 6975 150 150 4875 6975 5025 6975
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 5175 7425 150 150 5175 7425 5325 7425
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4575 7425 150 150 4575 7425 4725 7425
+-6
+6 4350 3450 5400 4425
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4875.000 4162.500 4725 4275 4875 4350 5025 4275
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 5043.750 3900.000 5175 3975 5175 3825 5025 3750
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4706.250 3900.000 4725 3750 4575 3825 4575 3975
+	3 0 1.00 60.00 120.00
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4875 3675 150 150 4875 3675 5025 3675
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 5175 4125 150 150 5175 4125 5325 4125
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4575 4125 150 150 4575 4125 4725 4125
+-6
+6 7500 3450 8550 4425
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8025.000 4162.500 7875 4275 8025 4350 8175 4275
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 7856.250 3900.000 7875 3750 7725 3825 7725 3975
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8193.750 3900.000 8325 3975 8325 3825 8175 3750
+	3 0 1.00 60.00 120.00
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8025 3675 150 150 8025 3675 8175 3675
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8325 4125 150 150 8325 4125 8475 4125
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 7725 4125 150 150 7725 4125 7875 4125
+-6
+1 1 0 1 0 7 50 -1 20 0.000 1 0.0000 4875 4800 375 150 4875 4800 5250 4650
+1 1 0 1 0 7 50 -1 20 0.000 1 0.0000 7875 5250 375 150 7875 5250 8250 5100
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5850 4800 5250 4800
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4200 3300 6150 3300
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4875 4650 4875 4425
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4200 2700 4200 5700
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4200 6300 4200 7800
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4200 5400 5850 5850
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5850 6150 4200 6600
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8700 7800 8700 6300
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 8700 5700 8700 4800 7050 4800
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 7875 5100 7875 4800
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8700 4800 8700 3075
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 6750 3300 8550 3300 8550 3075
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8475 3075 8775 3075 8775 2925 8475 2925 8475 3075
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8625 2925 8625 2700
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
+	 8475 3075 8625 2925 8775 3075
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 7050 5850 8700 5400
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 7350 4800 7350 3900 7050 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 5850 3900 5550 3900 5550 3300
+2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
+	 5850 5100 7050 5100 7050 4500 5850 4500 5850 5100
+2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
+	 5850 4200 7050 4200 7050 3600 5850 3600 5850 4200
+2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
+	 5850 6300 7050 6300 7050 5700 5850 5700 5850 6300
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8700 7650 9450 7350
+2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
+	 8850 7350 10050 7350 10050 7200 8850 7200 8850 7350
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 9450 7200 8700 6900
+4 1 0 50 -1 0 8 0.0000 0 75 285 4875 4800 HIT ?\001
+4 1 0 50 -1 0 8 0.0000 0 105 540 4200 8100 VCI_REQ\001
+4 1 0 50 -1 0 8 0.0000 0 90 525 8700 8100 VCI_RSP\001
+4 1 0 50 -1 0 8 0.0000 0 90 345 7875 5250 Victim\001
+4 1 0 50 -1 0 8 0.0000 0 105 840 4200 2550 DCACHE_REQ\001
+4 1 0 50 -1 0 8 0.0000 0 90 825 8625 2550 DCACHE_RSP\001
+4 1 0 50 -1 0 8 0.0000 0 105 870 4875 6750 FSM_VCI_REQ\001
+4 1 0 50 -1 0 8 0.0000 0 90 855 8025 6750 FSM_VCI_RSP\001
+4 1 0 50 -1 0 8 0.0000 0 105 1170 4875 3450 FSM_DCACHE_REQ\001
+4 1 0 50 -1 0 8 0.0000 0 90 1155 8025 3450 FSM_DCACHE_RSP\001
+4 1 0 50 -1 0 8 0.0000 0 90 615 6450 4800 RAM_TAG\001
+4 1 0 50 -1 0 8 0.0000 0 90 705 6450 3900 RAM_DATA\001
+4 1 0 50 -1 0 8 0.0000 0 105 1095 6450 3075 QUEUE_READ_HIT\001
+4 0 0 50 -1 0 8 0.0000 0 105 735 4425 6000 QUEUE_REQ\001
+4 2 0 50 -1 0 8 0.0000 0 105 720 8475 6000 QUEUE_RSP\001
+4 1 0 50 -1 0 8 0.0000 0 90 660 6450 6000 RAM_INFO\001
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_overview_mono-port.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_overview_mono-port.fig	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_overview_mono-port.fig	(revision 44)
@@ -0,0 +1,184 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 6150 3150 6750 3450
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
+	 6150 3450 6750 3450 6750 3150 6150 3150
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 6600 3150 6600 3450
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 6450 3150 6450 3450
+-6
+6 4350 3450 5400 4425
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4875.000 4162.500 4725 4275 4875 4350 5025 4275
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 5043.750 3900.000 5175 3975 5175 3825 5025 3750
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4706.250 3900.000 4725 3750 4575 3825 4575 3975
+	3 0 1.00 60.00 120.00
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4875 3675 150 150 4875 3675 5025 3675
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 5175 4125 150 150 5175 4125 5325 4125
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4575 4125 150 150 4575 4125 4725 4125
+-6
+6 7500 3450 8550 4425
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8025.000 4162.500 7875 4275 8025 4350 8175 4275
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 7856.250 3900.000 7875 3750 7725 3825 7725 3975
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8193.750 3900.000 8325 3975 8325 3825 8175 3750
+	3 0 1.00 60.00 120.00
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8025 3675 150 150 8025 3675 8175 3675
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8325 4125 150 150 8325 4125 8475 4125
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 7725 4125 150 150 7725 4125 7875 4125
+-6
+6 8550 6300 8850 6900
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
+	 8550 6900 8550 6300 8850 6300 8850 6900
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 8850 6450 8550 6450
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 8850 6600 8550 6600
+-6
+6 7500 7350 8550 8325
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8025.000 8062.500 7875 8175 8025 8250 8175 8175
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8193.750 7800.000 8325 7875 8325 7725 8175 7650
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 7856.250 7800.000 7875 7650 7725 7725 7725 7875
+	3 0 1.00 60.00 120.00
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8025 7575 150 150 8025 7575 8175 7575
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8325 8025 150 150 8325 8025 8475 8025
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 7725 8025 150 150 7725 8025 7875 8025
+-6
+6 4350 7350 5400 8325
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 5043.750 7800.000 5175 7875 5175 7725 5025 7650
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4875.000 8062.500 4725 8175 4875 8250 5025 8175
+	3 0 1.00 60.00 120.00
+5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4706.250 7800.000 4725 7650 4575 7725 4575 7875
+	3 0 1.00 60.00 120.00
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4875 7575 150 150 4875 7575 5025 7575
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 5175 8025 150 150 5175 8025 5325 8025
+1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4575 8025 150 150 4575 8025 4725 8025
+-6
+6 4050 6300 4350 6900
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
+	 4050 6300 4050 6900 4350 6900 4350 6300
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 4350 6750 4050 6750
+2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 4350 6600 4050 6600
+-6
+6 4425 5025 5325 5475
+1 1 0 1 0 7 50 -1 20 0.000 1 0.0000 4875 5250 375 150 4875 5250 5250 5100
+4 1 0 50 -1 0 8 0.0000 0 90 345 4875 5250 Victim\001
+-6
+6 4500 4425 5325 4875
+1 1 0 1 0 7 50 -1 20 0.000 1 0.0000 4885 4650 365 150 4885 4650 5250 4500
+4 1 0 50 -1 0 8 0.0000 0 75 255 4875 4650 HIT?\001
+-6
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4200 3300 6150 3300
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4200 2700 4200 5850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8700 6300 8700 3075
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 6750 3300 8550 3300 8550 3075
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8475 3075 8775 3075 8775 2925 8475 2925 8475 3075
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8625 2925 8625 2700
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
+	 8475 3075 8625 2925 8775 3075
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
+	3 0 1.00 60.00 120.00
+	 5850 3900 5550 3900 5550 3300
+2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
+	 5850 4200 7050 4200 7050 3600 5850 3600 5850 4200
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4875 4500 4875 4350
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 8700 4800 7350 4800 7350 3900 7050 3900
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4200 6900 4200 8400
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5850 6750 4200 7125
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8700 8400 8700 6900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 7050 6450 8700 6075
+2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
+	 5850 6900 7050 6900 7050 6300 5850 6300 5850 6900
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8700 8250 9450 7950
+2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
+	 8850 7950 10050 7950 10050 7800 8850 7800 8850 7950
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 9450 7800 8700 7500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 8700 5700 7050 5700
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4200 6000 4200 6300
+2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
+	 5850 6000 7050 6000 7050 5400 5850 5400 5850 6000
+2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
+	 5850 5100 7050 5100 7050 4500 5850 4500 5850 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 4200 6075 5625 6075 5625 4950 5850 4950
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4
+	3 0 1.00 60.00 120.00
+	 5850 5550 5475 5550 5475 4725 5250 4725
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 1 0 2
+	3 0 1.00 60.00 120.00
+	 5850 4575 5250 4575
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4500 5250 4200 5250
+2 2 0 1 0 27 50 -1 20 0.000 0 0 7 0 0 5
+	 4050 5850 4350 5850 4350 6000 4050 6000 4050 5850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 5625 5850 5850 5850
+2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
+	3 0 1.00 60.00 120.00
+	 4200 5700 5850 6450
+4 1 0 50 -1 0 8 0.0000 0 105 1170 4875 3450 FSM_DCACHE_REQ\001
+4 1 0 50 -1 0 8 0.0000 0 90 1155 8025 3450 FSM_DCACHE_RSP\001
+4 1 0 50 -1 0 8 0.0000 0 90 615 6450 4800 RAM_TAG\001
+4 1 0 50 -1 0 8 0.0000 0 90 705 6450 3900 RAM_DATA\001
+4 1 0 50 -1 0 8 0.0000 0 105 1095 6450 3075 QUEUE_READ_HIT\001
+4 1 0 50 -1 0 8 0.0000 0 90 705 6450 5700 RAM_LOCK\001
+4 1 0 50 -1 0 8 0.0000 0 105 870 4875 7350 FSM_VCI_REQ\001
+4 1 0 50 -1 0 8 0.0000 0 90 855 8025 7350 FSM_VCI_RSP\001
+4 0 0 50 -1 0 8 0.0000 0 105 735 4425 6600 QUEUE_REQ\001
+4 2 0 50 -1 0 8 0.0000 0 105 720 8475 6600 QUEUE_RSP\001
+4 1 0 50 -1 0 8 0.0000 0 90 660 6450 6600 RAM_INFO\001
+4 1 0 50 -1 0 8 0.0000 0 105 540 4200 8625 VCI_REQ\001
+4 1 0 50 -1 0 8 0.0000 0 90 525 8700 8625 VCI_RSP\001
+4 1 0 50 -1 0 8 0.0000 0 105 570 9450 8250 line_buffer\001
+4 1 0 50 -1 0 8 0.0000 0 105 840 4200 2550 DCACHE_REQ\001
+4 1 0 50 -1 0 8 0.0000 0 90 825 8625 2550 DCACHE_RSP\001
+4 2 0 50 -1 0 8 0.0000 0 120 555 3975 5925 barrier_req\001
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_overview_save.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_overview_save.fig	(revision 43)
+++ 	(revision )
@@ -1,161 +1,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 4050 5700 4350 6300
-2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
-	 4050 5700 4050 6300 4350 6300 4350 5700
-2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
-	 4350 6150 4050 6150
-2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
-	 4350 6000 4050 6000
--6
-6 8550 5700 8850 6300
-2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
-	 8550 6300 8550 5700 8850 5700 8850 6300
-2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
-	 8850 5850 8550 5850
-2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
-	 8850 6000 8550 6000
--6
-6 6150 3150 6750 3450
-2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 4
-	 6150 3450 6750 3450 6750 3150 6150 3150
-2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
-	 6600 3150 6600 3450
-2 1 0 1 0 11 50 -1 20 0.000 0 0 -1 0 0 2
-	 6450 3150 6450 3450
--6
-6 7500 6750 8550 7725
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8025.000 7462.500 7875 7575 8025 7650 8175 7575
-	3 0 1.00 60.00 120.00
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8193.750 7200.000 8325 7275 8325 7125 8175 7050
-	3 0 1.00 60.00 120.00
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 7856.250 7200.000 7875 7050 7725 7125 7725 7275
-	3 0 1.00 60.00 120.00
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8025 6975 150 150 8025 6975 8175 6975
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8325 7425 150 150 8325 7425 8475 7425
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 7725 7425 150 150 7725 7425 7875 7425
--6
-6 4350 6750 5400 7725
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 5043.750 7200.000 5175 7275 5175 7125 5025 7050
-	3 0 1.00 60.00 120.00
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4875.000 7462.500 4725 7575 4875 7650 5025 7575
-	3 0 1.00 60.00 120.00
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4706.250 7200.000 4725 7050 4575 7125 4575 7275
-	3 0 1.00 60.00 120.00
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4875 6975 150 150 4875 6975 5025 6975
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 5175 7425 150 150 5175 7425 5325 7425
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4575 7425 150 150 4575 7425 4725 7425
--6
-6 4350 3450 5400 4425
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4875.000 4162.500 4725 4275 4875 4350 5025 4275
-	3 0 1.00 60.00 120.00
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 5043.750 3900.000 5175 3975 5175 3825 5025 3750
-	3 0 1.00 60.00 120.00
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 4706.250 3900.000 4725 3750 4575 3825 4575 3975
-	3 0 1.00 60.00 120.00
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4875 3675 150 150 4875 3675 5025 3675
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 5175 4125 150 150 5175 4125 5325 4125
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 4575 4125 150 150 4575 4125 4725 4125
--6
-6 7500 3450 8550 4425
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8025.000 4162.500 7875 4275 8025 4350 8175 4275
-	3 0 1.00 60.00 120.00
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 7856.250 3900.000 7875 3750 7725 3825 7725 3975
-	3 0 1.00 60.00 120.00
-5 1 0 1 0 14 50 -1 -1 0.000 0 1 1 0 8193.750 3900.000 8325 3975 8325 3825 8175 3750
-	3 0 1.00 60.00 120.00
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8025 3675 150 150 8025 3675 8175 3675
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 8325 4125 150 150 8325 4125 8475 4125
-1 3 0 1 0 14 50 -1 20 0.000 1 0.0000 7725 4125 150 150 7725 4125 7875 4125
--6
-1 1 0 1 0 7 50 -1 20 0.000 1 0.0000 4875 4800 375 150 4875 4800 5250 4650
-1 1 0 1 0 7 50 -1 20 0.000 1 0.0000 7875 5250 375 150 7875 5250 8250 5100
-2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 5850 4800 5250 4800
-2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 4200 3300 6150 3300
-2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 4875 4650 4875 4425
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 4200 2700 4200 5700
-2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 4200 6300 4200 7800
-2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 4200 5400 5850 5850
-2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 5850 6150 4200 6600
-2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 8700 7800 8700 6300
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
-	3 0 1.00 60.00 120.00
-	 8700 5700 8700 4800 7050 4800
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 7875 5100 7875 4800
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 8700 4800 8700 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
-	3 0 1.00 60.00 120.00
-	 6750 3300 8550 3300 8550 3075
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8475 3075 8775 3075 8775 2925 8475 2925 8475 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 8625 2925 8625 2700
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
-	 8475 3075 8625 2925 8775 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 7050 5850 8700 5400
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
-	3 0 1.00 60.00 120.00
-	 7350 4800 7350 3900 7050 3900
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
-	3 0 1.00 60.00 120.00
-	 5850 3900 5550 3900 5550 3300
-2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
-	 5850 5100 7050 5100 7050 4500 5850 4500 5850 5100
-2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
-	 5850 4200 7050 4200 7050 3600 5850 3600 5850 4200
-2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
-	 5850 6300 7050 6300 7050 5700 5850 5700 5850 6300
-2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 8700 7650 9450 7350
-2 2 0 1 0 27 50 -1 20 0.000 0 0 -1 0 0 5
-	 8850 7350 10050 7350 10050 7200 8850 7200 8850 7350
-2 1 0 1 0 7 50 -1 20 0.000 0 0 -1 1 0 2
-	3 0 1.00 60.00 120.00
-	 9450 7200 8700 6900
-4 1 0 50 -1 0 8 0.0000 0 75 285 4875 4800 HIT ?\001
-4 1 0 50 -1 0 8 0.0000 0 105 540 4200 8100 VCI_REQ\001
-4 1 0 50 -1 0 8 0.0000 0 90 525 8700 8100 VCI_RSP\001
-4 1 0 50 -1 0 8 0.0000 0 90 345 7875 5250 Victim\001
-4 1 0 50 -1 0 8 0.0000 0 105 840 4200 2550 DCACHE_REQ\001
-4 1 0 50 -1 0 8 0.0000 0 90 825 8625 2550 DCACHE_RSP\001
-4 1 0 50 -1 0 8 0.0000 0 105 870 4875 6750 FSM_VCI_REQ\001
-4 1 0 50 -1 0 8 0.0000 0 90 855 8025 6750 FSM_VCI_RSP\001
-4 1 0 50 -1 0 8 0.0000 0 105 1170 4875 3450 FSM_DCACHE_REQ\001
-4 1 0 50 -1 0 8 0.0000 0 90 1155 8025 3450 FSM_DCACHE_RSP\001
-4 1 0 50 -1 0 8 0.0000 0 90 615 6450 4800 RAM_TAG\001
-4 1 0 50 -1 0 8 0.0000 0 90 705 6450 3900 RAM_DATA\001
-4 1 0 50 -1 0 8 0.0000 0 105 1095 6450 3075 QUEUE_READ_HIT\001
-4 0 0 50 -1 0 8 0.0000 0 105 735 4425 6000 QUEUE_REQ\001
-4 2 0 50 -1 0 8 0.0000 0 105 720 8475 6000 QUEUE_RSP\001
-4 1 0 50 -1 0 8 0.0000 0 90 660 6450 6000 RAM_INFO\001
Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_pipeline.fig
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_pipeline.fig	(revision 44)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_pipeline.fig	(revision 44)
@@ -0,0 +1,99 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 4500 3600 9300 4050
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 5100 3600 5100 4050 4500 4050 4500 3600 5100 3600
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 5700 3600 5700 4050 5100 4050 5100 3600 5700 3600
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 6300 3600 6300 4050 5700 4050 5700 3600 6300 3600
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 7500 3600 7500 4050 6300 4050 6300 3600 7500 3600
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 8700 3600 8700 4050 7500 4050 7500 3600 8700 3600
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 9300 3600 9300 4050 8700 4050 8700 3600 9300 3600
+4 1 0 50 -1 0 8 0.0000 0 75 345 4800 3750 dcache\001
+4 1 0 50 -1 0 8 0.0000 0 105 375 4800 3975 request\001
+4 1 0 50 -1 0 8 0.0000 0 105 330 5400 3750 update\001
+4 1 0 50 -1 0 8 0.0000 0 75 285 5400 3975 status\001
+4 1 0 50 -1 0 8 0.0000 0 75 225 6000 3750 VCI\001
+4 1 0 50 -1 0 8 0.0000 0 105 375 6000 3975 request\001
+4 1 0 50 -1 0 8 0.0000 0 90 750 6900 3825 memory access\001
+4 1 0 50 -1 0 8 0.0000 0 75 225 8100 3750 VCI\001
+4 1 0 50 -1 0 8 0.0000 0 90 375 8100 3975 respons\001
+4 1 0 50 -1 0 8 0.0000 0 75 345 9000 3750 dcache\001
+4 1 0 50 -1 0 8 0.0000 0 90 375 9000 3975 respons\001
+-6
+6 8100 4200 8700 4650
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 8700 4200 8700 4650 8100 4650 8100 4200 8700 4200
+4 1 0 50 -1 0 8 0.0000 0 75 345 8400 4350 dcache\001
+4 1 0 50 -1 0 8 0.0000 0 90 375 8400 4575 respons\001
+-6
+6 4500 3000 5700 3450
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 5100 3000 5100 3450 4500 3450 4500 3000 5100 3000
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 5700 3000 5700 3450 5100 3450 5100 3000 5700 3000
+4 1 0 50 -1 0 8 0.0000 0 75 345 4800 3150 dcache\001
+4 1 0 50 -1 0 8 0.0000 0 105 375 4800 3375 request\001
+4 1 0 50 -1 0 8 0.0000 0 75 345 5400 3150 dcache\001
+4 1 0 50 -1 0 8 0.0000 0 90 375 5400 3375 respons\001
+-6
+6 4500 5400 5700 5850
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 5100 5400 5100 5850 4500 5850 4500 5400 5100 5400
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 5700 5400 5700 5850 5100 5850 5100 5400 5700 5400
+4 1 0 50 -1 0 8 0.0000 0 75 345 4800 5550 dcache\001
+4 1 0 50 -1 0 8 0.0000 0 105 375 4800 5775 request\001
+4 1 0 50 -1 0 8 0.0000 0 75 345 5400 5550 dcache\001
+4 1 0 50 -1 0 8 0.0000 0 90 375 5400 5775 respons\001
+-6
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 5100 4200 5100 4650 4500 4650 4500 4200 5100 4200
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 5700 4200 5700 4650 5100 4650 5100 4200 5700 4200
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 6300 4200 6300 4650 5700 4650 5700 4200 6300 4200
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 7500 4200 7500 4650 6300 4650 6300 4200 7500 4200
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 8100 4200 8100 4650 7500 4650 7500 4200 8100 4200
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 5100 4800 5100 5250 4500 5250 4500 4800 5100 4800
+2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5
+	 5700 4800 5700 5250 5100 5250 5100 4800 5700 4800
+2 1 0 1 0 29 50 -1 20 0.000 0 0 -1 0 0 2
+	 5100 5025 5700 5025
+4 2 0 50 -1 0 8 0.0000 0 90 525 4200 3300 Read - Hit\001
+4 2 0 50 -1 0 8 0.0000 0 90 600 4200 3900 Read - Miss\001
+4 1 0 50 -1 0 8 0.0000 0 75 345 4800 4350 dcache\001
+4 1 0 50 -1 0 8 0.0000 0 105 375 4800 4575 request\001
+4 1 0 50 -1 0 8 0.0000 0 105 330 5400 4350 update\001
+4 1 0 50 -1 0 8 0.0000 0 75 285 5400 4575 status\001
+4 1 0 50 -1 0 8 0.0000 0 75 225 6000 4350 VCI\001
+4 1 0 50 -1 0 8 0.0000 0 105 375 6000 4575 request\001
+4 1 0 50 -1 0 8 0.0000 0 90 750 6900 4425 memory access\001
+4 1 0 50 -1 0 8 0.0000 0 75 225 7800 4350 VCI\001
+4 1 0 50 -1 0 8 0.0000 0 90 375 7800 4575 respons\001
+4 2 0 50 -1 0 8 0.0000 0 90 570 4200 4350 Write - Hit\001
+4 2 0 50 -1 0 8 0.0000 0 90 645 4200 4575 Write - Miss\001
+4 2 0 50 -1 0 8 0.0000 0 90 495 4200 4950 Invalidate\001
+4 2 0 50 -1 0 8 0.0000 0 75 285 4200 5175 Flush\001
+4 1 0 50 -1 0 8 0.0000 0 75 345 4800 4950 dcache\001
+4 1 0 50 -1 0 8 0.0000 0 105 375 4800 5175 request\001
+4 2 0 50 -1 0 8 0.0000 0 75 255 4200 5550 Lock\001
+4 2 0 50 -1 0 8 0.0000 0 75 450 4200 5775 Prefetch\001
+4 1 0 50 -1 0 8 0.0000 0 105 330 5400 4875 update\001
+4 1 0 50 -1 0 8 0.0000 0 90 375 5400 5250 respons\001
+4 1 0 50 -1 0 8 0.0000 0 75 345 5400 5175 dcache\001
+4 1 0 50 -1 0 8 0.0000 0 75 285 5400 4950 status\001
