Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h	(revision 50)
@@ -12,4 +12,5 @@
 #include <string>
 #include <iostream>
+#include <sys/time.h>
 
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
@@ -24,2 +25,34 @@
 void test   (string name,
 	     morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters param);
+
+class Time 
+{
+private : timeval time_begin;
+// private : timeval time_end;
+  
+public  : Time ()
+  {
+    gettimeofday(&time_begin     ,NULL);
+  };
+
+public  : ~Time ()
+  {
+    cout << *this;
+  };
+
+public  : friend ostream& operator<< (ostream& output_stream,
+				      const Time & x)
+  {
+    timeval time_end;
+    
+    gettimeofday(&time_end       ,NULL);
+    
+    uint32_t nb_cycles = static_cast<uint32_t>(sc_simulation_time());
+
+    double average = static_cast<double>(nb_cycles) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec);
+    
+    output_stream << nb_cycles << "\t(" << average << " cycles / seconds )" << endl;
+
+    return output_stream;
+  }
+};
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 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 50)
@@ -7,4 +7,6 @@
  */
 
+#define NB_ITERATION 32
+
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h"
 #include "Common/include/Test.h"
@@ -31,9 +33,9 @@
     }
 
-  RegisterFile_Monolithic * registerfile = new RegisterFile_Monolithic (name.c_str(),
+  RegisterFile_Monolithic * registerfile = new RegisterFile_Monolithic (name.c_str()
 #ifdef STATISTICS
-									morpheo::behavioural::Parameters_Statistics(5,50),
+									,morpheo::behavioural::Parameters_Statistics(5,1000)
 #endif
-									param);
+									,param);
   
 #ifdef SYSTEMC
@@ -79,9 +81,11 @@
     }
   
+  cout << "<" << name << "> Start Simulation ............" << endl;
+  Time * _time = new Time();
+
   /********************************************************
    * Simulation - Begin
    ********************************************************/
 
-  cout << "<" << name << "> Start Simulation ............" << endl;
   // Initialisation
 
@@ -100,93 +104,106 @@
   NRESET.write(1);
 
-  cout << "<" << name << "> Write the RegisterFile (no read)" << endl;
-
-  uint32_t grain = 0;
-  //uint32_t grain = static_cast<uint32_t>(time(NULL));
-  
-  srand(grain);
-  
-  Tdata_t    data, data_wait;
-  Taddress_t address = 0;
-
-  while (address < param._nb_word)
-    {
-      uint32_t num_port = 0;
-      
-      cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
-
-      while (num_port<param._nb_port_write)
+
+  for (uint32_t nb_iteration=0; nb_iteration < NB_ITERATION; nb_iteration ++)
+    {
+      cout << "<" << name << "> 1) Write the RegisterFile (no read)" << endl;
+
+      // random init
+      uint32_t grain = 0;
+      //uint32_t grain = static_cast<uint32_t>(time(NULL));
+      
+      srand(grain);
+
+      Tdata_t tab [param._nb_word];
+      
+      for (uint32_t i=0; i<param._nb_word; i++)
+	tab[i]= rand()%(1<<(param._size_word-1));
+      
+      Taddress_t address_next = 0;
+      Taddress_t nb_ack = 0;
+      
+      while (nb_ack < param._nb_word)
 	{
-	  data = rand()%(1<<(param._size_word-1));
-
-	  cout << "(" << num_port << ") [" << address << "] <= " << data << endl;
-	  WRITE_VAL  [num_port] .write(1);
-	  WRITE_DATA    [num_port] .write(data);
-	  WRITE_ADDRESS [num_port] .write(address);
-
-	  address  ++;
-	  num_port ++;
-	  // Address can be not a multiple of nb_port_write
-	  if (address >= param._nb_word)
-	    break;
+	  cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
+
+	  for (uint32_t num_port=0; num_port < param._nb_port_write; num_port ++)
+	    {
+	      if ((address_next < param._nb_word) and
+		  (WRITE_VAL [num_port].read() == 0))
+		{
+		  cout << "(" << num_port << ") [" << address_next << "] <= " << tab[address_next] << endl;
+		  
+		  WRITE_VAL     [num_port] .write(1);
+		  WRITE_DATA    [num_port] .write(tab[address_next]);
+		  WRITE_ADDRESS [num_port] .write(address_next++);
+		  
+		  // Address can be not a multiple of nb_port_write
+		  if (address_next >= param._nb_word)
+		    break;
+		}
+	    }
+	  
+	  sc_start(1);
+
+	  // reset write_val port
+	  for (uint32_t num_port=0; num_port < param._nb_port_write; num_port ++)
+	    {
+	      if ((WRITE_ACK [num_port].read() == 1) and
+		  (WRITE_VAL [num_port].read() == 1))
+		{
+		  WRITE_VAL  [num_port] .write(0);
+		  nb_ack ++;
+		}
+	    }
+
+	  sc_start(0);
 	}
-
-      while (num_port<param._nb_port_write)
+      
+      address_next = 0;
+      nb_ack       = 0;
+
+      cout << "<" << name << "> 2) Read the RegisterFile (no write)" << endl;
+      
+      Tdata_t read_address [param._nb_port_read];
+
+      while (nb_ack < param._nb_word)
 	{
-	  WRITE_VAL  [num_port] .write(0);
-	  num_port ++;
+	  cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
+	  
+	  for (uint32_t num_port=0; num_port < param._nb_port_read; num_port ++)
+	    {
+	      if ((address_next < param._nb_word) and
+		  (READ_VAL [num_port].read() == 0))
+		{
+		  read_address [num_port] = address_next++;
+
+		  READ_VAL     [num_port].write(1);
+		  READ_ADDRESS [num_port].write(read_address [num_port]);
+
+		  if (address_next >= param._nb_word)
+		    break;
+		}
+	    }
+
+	  sc_start(1);
+
+	  // reset write_val port
+	  for (uint32_t num_port=0; num_port < param._nb_port_read; num_port ++)
+	    {
+	      if ((READ_ACK [num_port].read() == 1) and
+		  (READ_VAL [num_port].read() == 1))
+		{
+		  READ_VAL  [num_port] .write(0);
+
+		  cout << "(" << num_port << ") [" << read_address [num_port] << "] => " << READ_DATA [num_port].read() << endl;
+
+		  TEST(Tdata_t,READ_DATA [num_port].read(), tab[read_address [num_port]]);
+		  nb_ack ++;
+		}
+	    }
+
+	  sc_start(0);
 	}
-
-      sc_start(1);
-    }
-  cout << "<" << name << "> Read the RegisterFile (no write)" << endl;
-
-  srand(grain);
-
-  for (uint32_t i=0; i<param._nb_port_write; i++)
-    WRITE_VAL [i] .write (0);
-
-  sc_start(1);
-
-  address  = 0;
-  while (address < param._nb_word)
-    {
-      uint32_t num_port = 0;
-
-      cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
-      
-      while (num_port<param._nb_port_read)
-	{
-	  READ_VAL  [num_port] .write(1);
-	  READ_ADDRESS [num_port] .write(address);
-
-	  sc_start(0); // evaluation
-
-	  data_wait = rand()%(1<<(param._size_word-1));
-	  data      = READ_DATA    [num_port] .read();
-
-	  cout << "(" << num_port << ") [" << address << "] => " << data << endl;
-
-	  TEST(Tdata_t,data,data_wait);
-
-	  address  ++;
-	  num_port ++;
-	  if (address >= param._nb_word)
-	    break;
-	}
-
-      while (num_port<param._nb_port_read)
-	{
-	  READ_VAL  [num_port] .write(0);
-	  num_port ++;
-	}
-
-      sc_start(1);
-    }
-
-  for (uint32_t i=0; i<param._nb_port_read; i++)
-    READ_VAL  [i] .write (0);
-
-  sc_start(1);
+    }
 
   /********************************************************
@@ -194,4 +211,6 @@
    ********************************************************/
 
+  TEST_STR(bool,true,true, "End of Simulation");
+  delete _time;
   cout << "<" << name << "> ............ Stop Simulation" << endl;
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 50)
@@ -6,5 +6,5 @@
 
 #-----[ Simulator ]----------------------------------------
-SIMULATOR			= systemcass
+SIMULATOR			= systemcass_deps
 
 # 3 simulators :
@@ -16,10 +16,10 @@
 FLAGS				=	-DSYSTEMC		\
 					-DVHDL			\
- 					-DVHDL_TESTBENCH	\
- 					-DVHDL_TESTBENCH_ASSERT	\
 					-DDEBUG=DEBUG_NONE
 
+#  					-DVHDL_TESTBENCH	\
+#					-DSTATISTICS 		\
+#					-DVHDL_TESTBENCH_ASSERT	\
 #					-DCONFIGURATION  	\
-#					-DSTATISTICS 		\
 #					-DPOSITION       	\
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/include/test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/include/test.h	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/include/test.h	(revision 50)
@@ -13,4 +13,5 @@
 #include <string>
 #include <iostream>
+#include <sys/time.h>
 
 #include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
@@ -23,3 +24,35 @@
 
 void test    (string name,
-	      morpheo::behavioural::@NAMESPACE_USE::Parameters param);
+	      morpheo::behavioural::@NAMESPACE_USE::Parameters * param);
+
+class Time 
+{
+private : timeval time_begin;
+// private : timeval time_end;
+  
+public  : Time ()
+  {
+    gettimeofday(&time_begin     ,NULL);
+  };
+
+public  : ~Time ()
+  {
+    cout << *this;
+  };
+
+public  : friend ostream& operator<< (ostream& output_stream,
+				      const Time & x)
+  {
+    timeval time_end;
+    
+    gettimeofday(&time_end       ,NULL);
+    
+    uint32_t nb_cycles = static_cast<uint32_t>(sc_simulation_time());
+
+    double average = static_cast<double>(nb_cycles) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec);
+    
+    output_stream << nb_cycles << "\t(" << average << " cycles / seconds )" << endl;
+
+    return output_stream;
+  }
+};
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/main.cpp	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/main.cpp	(revision 50)
@@ -40,9 +40,10 @@
   try 
     {
-      morpheo::behavioural::@NAMESPACE_USE::Parameters param (//size_data,
-							      //nb_port  
-							     );
+      morpheo::behavioural::@NAMESPACE_USE::Parameters * param = new morpheo::behavioural::@NAMESPACE_USE::Parameters
+	(//size_data,
+	 //nb_port  
+        );
       
-      cout << param.print(1);
+      cout << param->print(1);
       
       test (name,param);
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 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp	(revision 50)
@@ -7,13 +7,27 @@
  */
 
-#define NB_ITERATION 1
-
-#define LABEL(str) do {cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; _@COMPONENT->vhdl_testbench_label(str);} while (0)
-
 #include "Behavioural/@DIRECTORY/SelfTest/include/test.h"
 #include "Common/include/Test.h"
 
+#define NB_ITERATION  1
+#define CYCLE_MAX     (128*NB_ITERATION)
+
+#define LABEL(str)                                                                       \
+{                                                                                        \
+  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; \
+} while(0)
+
+#define SC_START(cycle)                                        \
+do                                                             \
+{                                                              \
+  if (static_cast<uint32_t>(sc_simulation_time()) > CYCLE_MAX) \
+    {                                                          \
+      TEST_KO("Maximal cycles Reached");                       \
+    }                                                          \
+  sc_start(cycle);                                             \
+} while(0)
+
 void test (string name,
-	   morpheo::behavioural::@NAMESPACE_USE::Parameters _param)
+	   morpheo::behavioural::@NAMESPACE_USE::Parameters * _param)
 {
   cout << "<" << name << "> : Simulation SystemC" << endl;
@@ -23,5 +37,5 @@
 					     morpheo::behavioural::Parameters_Statistics(5,50),
 #endif
-					     _param);
+					     *_param);
   
 #ifdef SYSTEMC
@@ -48,4 +62,5 @@
 
   cout << "<" << name << "> Start Simulation ............" << endl;
+  Time * _time = new Time();
 
   /********************************************************
@@ -60,5 +75,5 @@
   srand(seed);
 
-  sc_start(0);
+  SC_START(0);
   LABEL("Initialisation");
 
@@ -69,5 +84,5 @@
       LABEL("Iteration "+toString(iteration));
 
-      sc_start(1);
+      SC_START(1);
     }
 
@@ -76,4 +91,6 @@
    ********************************************************/
 
+  TEST_OK ("End of Simulation");
+  delete _time;
   cout << "<" << name << "> ............ Stop Simulation" << endl;
 
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 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/New_Component.h	(revision 50)
@@ -100,6 +100,6 @@
 #if VHDL				       
   public  : void     vhdl                      (void);
-  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					       
 					       
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_allocation.cpp	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_allocation.cpp	(revision 50)
@@ -22,6 +22,6 @@
 
     Entity * entity = _component->set_entity (_name       
+					      ,"@COMPONENT"
 #ifdef POSITION
-					      ,"@COMPONENT"
 					      ,COMBINATORY 
 #endif
@@ -40,7 +40,6 @@
 							 );
 
-     in_CLOCK        = interface->set_signal_clk              ("clock" ,1, PORT_VHDL_YES_TESTBENCH_NO);
-     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1);
-
+     in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
+     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
@@ -50,5 +49,5 @@
 #endif
 
-    Log_printf(FUNC,@COMPONENT,"allocation","End");
+    log_printf(FUNC,@COMPONENT,"allocation","End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl.cpp	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl.cpp	(revision 50)
@@ -18,5 +18,5 @@
     log_printf(FUNC,@COMPONENT,"vhdl","Begin");
 
-    Vhdl vhdl (_name);
+    Vhdl * vhdl = new Vhdl (_name);
 
     _interfaces->set_port(vhdl);
@@ -26,5 +26,5 @@
     vhdl_body        (vhdl);
 
-    vhdl.generate_file();
+    vhdl->generate_file();
 
     delete vhdl;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_body.cpp	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_body.cpp	(revision 50)
@@ -13,8 +13,8 @@
 @NAMESPACE_BEGIN
 
-  void @COMPONENT::vhdl_body (Vhdl & vhdl)
+  void @COMPONENT::vhdl_body (Vhdl * & vhdl)
   {
     log_printf(FUNC,@COMPONENT,"vhdl_body","Begin");
-    vhdl.set_body ("");
+    vhdl->set_body ("");
     log_printf(FUNC,@COMPONENT,"vhdl_body","End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_declaration.cpp	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_declaration.cpp	(revision 50)
@@ -13,5 +13,5 @@
 @NAMESPACE_BEGIN
 
-  void @COMPONENT::vhdl_declaration (Vhdl & vhdl)
+  void @COMPONENT::vhdl_declaration (Vhdl * & vhdl)
   {
     log_printf(FUNC,@COMPONENT,"vhdl_declaration","Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 50)
@@ -2,29 +2,27 @@
 #define DEBUG_COMPONENT_H
 
-#define DEBUG_Behavioural                                   true 
-#define   DEBUG_Generic                                     false
-#define     DEBUG_Counter                                   false 
-#define     DEBUG_Group                                     false
-#define     DEBUG_Shifter                                   false
-#define     DEBUG_Register_File                             false
-#define       DEBUG_RegisterFile_Monolithic                 false 
-#define       DEBUG_RegisterFile_Multi_Banked               false
-#define         DEBUG_RegisterFile_Multi_Banked_Glue        false
-#define     DEBUG_Select                                    false
-#define       DEBUG_Select_Priority_Fixed                   false 
-#define     DEBUG_Victim                                    false
-#define       DEBUG_Victim_Pseudo_LRU                       false
-#define   DEBUG_Stage_1_Ifetch                              false
-#define     DEBUG_Predictor                                 false
-#define       DEBUG_Meta_Predictor                          false
-#define         DEBUG_Meta_Predictor_Glue                   false
-#define           DEBUG_Two_Level_Branch_Predictor          false
-#define             DEBUG_Two_Level_Branch_Predictor_Glue   false 
-#define             DEBUG_Branch_History_Table              false
-#define             DEBUG_Pattern_History_Table             false
-#define   DEBUG_Stage_5_Execute                             false
-#define     DEBUG_Execution_cluster                         false
-#define       DEBUG_Execution_group                         false
-#define         DEBUG_Execution_unit                        false
+#define DEBUG_Behavioural                                         false
+#define   DEBUG_Generic                                           false
+#define     DEBUG_Counter                                         false 
+#define     DEBUG_Group                                           false
+#define     DEBUG_Shifter                                         false
+#define     DEBUG_Register_File                                   false
+#define       DEBUG_RegisterFile_Monolithic                       false 
+#define       DEBUG_RegisterFile_Multi_Banked                     true 
+#define     DEBUG_Select                                          false
+#define       DEBUG_Select_Priority_Fixed                         false 
+#define     DEBUG_Victim                                          false
+#define       DEBUG_Victim_Pseudo_LRU                             false
+#define   DEBUG_Core                                              false
+#define     DEBUG_Multi_Front_end                                 false
+#define       DEBUG_Front_end                                     false
+#define         DEBUG_Prediction_unit                             false
+#define           DEBUG_Direction                                 false
+#define             DEBUG_Meta_Predictor                          false
+#define               DEBUG_Meta_Predictor_Glue                   false
+#define                 DEBUG_Two_Level_Branch_Predictor          false
+#define                   DEBUG_Two_Level_Branch_Predictor_Glue   false 
+#define                   DEBUG_Branch_History_Table              false
+#define                   DEBUG_Pattern_History_Table             false
 
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters_Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters_Statistics.h	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters_Statistics.h	(revision 50)
@@ -10,4 +10,5 @@
  */
 
+#include "Common/include/Debug.h"
 #include <stdint.h>
 using namespace std;
Index: trunk/IPs/systemC/processor/Morpheo/Common/include/Test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/include/Test.h	(revision 49)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/Test.h	(revision 50)
@@ -26,4 +26,14 @@
 };
 
+void test_ko (char * file, uint32_t line)
+{
+  string msg = ("<"+toString(num_test)+"> : Test KO\n" +
+		" * Localisation\n"                    +
+		"   - File : "+file+"\n"               +
+		"   - Line : "+toString(line)+"\n");
+  
+  throw (ErrorMorpheo (msg));
+};
+
 void test_ok ()
 {
@@ -42,6 +52,9 @@
 };
 
-#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)
+#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); fprintf(stdout,"\n"); test<type> (exp1,exp2,__FILE__,__LINE__);} while(0)
+#define TEST_OK(str...)                 do {fprintf(stdout,str); fprintf(stdout,"\n"); test_ok();} while(0)
+#define TEST_KO(str...)                 do {fprintf(stdout,str); fprintf(stdout,"\n"); test_ko(__FILE__,__LINE__);} while(0)
+
 
 #endif
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 49)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/CACHE_bloc_RAM_DATA.fig	(revision 50)
@@ -10,7 +10,4 @@
 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 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 1 2
 	3 0 1.00 60.00 120.00
@@ -23,10 +20,4 @@
 	3 0 1.00 60.00 120.00
 	 4950 3675 4650 3675
-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 4350 4950 4350
-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 3900 4950 3900
 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
@@ -44,14 +35,23 @@
 	3 0 1.00 60.00 120.00
 	 6450 3975 6150 3975
+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 3825 4950 3825
+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 3975 4950 3975
+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 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
+	 4650 4425 4950 4425
 4 2 0 50 -1 0 8 0.0000 0 105 510 4575 4575 REQ_data\001
 4 0 0 50 -1 0 8 0.0000 0 105 495 6525 4575 RSP_line\001
 4 2 0 50 -1 0 8 0.0000 0 105 465 4575 3525 REQ_val\001
 4 2 0 50 -1 0 8 0.0000 0 105 480 4575 3675 REQ_ack\001
-4 2 0 50 -1 0 8 0.0000 0 120 600 4575 3900 REQ_index\001
-4 2 0 50 -1 0 8 0.0000 0 105 540 4575 4125 REQ_bank\001
-4 2 0 50 -1 0 8 0.0000 0 105 930 4575 4350 REQ_byte_enable\001
-4 2 0 50 -1 0 8 0.0000 0 105 420 4800 4275 [0:4] bits\001
-4 2 0 50 -1 0 8 0.0000 0 105 480 4800 4050 [0:10] bits\001
-4 2 0 50 -1 0 8 0.0000 0 105 480 4800 4500 [4:14] bits\001
 4 2 0 50 -1 0 8 0.0000 0 105 570 4800 4725 {32;64} bits\001
 4 0 0 50 -1 0 8 0.0000 0 90 450 6525 3525 RSP_val\001
@@ -61,2 +61,11 @@
 4 0 0 50 -1 0 8 0.0000 0 105 660 6300 4725 [32:4096] bits\001
 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 120 600 4575 3825 REQ_index\001
+4 2 0 50 -1 0 8 0.0000 0 105 480 4800 3900 [0:10] bits\001
+4 2 0 50 -1 0 8 0.0000 0 105 540 4575 3975 REQ_bank\001
+4 2 0 50 -1 0 8 0.0000 0 105 420 4800 4050 [0:4] bits\001
+4 2 0 50 -1 0 8 0.0000 0 105 930 4575 4275 REQ_byte_enable\001
+4 2 0 50 -1 0 8 0.0000 0 105 615 4575 4125 REQ_offset\001
+4 2 0 50 -1 0 8 0.0000 0 105 420 4800 4200 [0:4] bits\001
+4 2 0 50 -1 0 8 0.0000 0 105 450 4575 4425 REQ_rw\001
+4 2 0 50 -1 0 8 0.0000 0 105 450 4800 4350 {4;8} bits\001
