Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/Makefile	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/Makefile	(revision 59)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libLoad_store_unit.a
+
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/Makefile.defs
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/Makefile.defs	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/Makefile.defs	(revision 59)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/Makefile.deps	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/Makefile.deps	(revision 59)
@@ -0,0 +1,40 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+Load_store_unit			= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+ifndef Queue_Control
+include 			$(DIR_MORPHEO)/Behavioural/Generic/Queue_Control/Makefile.deps
+endif
+
+#-----[ Library ]------------------------------------------
+Load_store_unit_LIBRARY		= 	-lLoad_store_unit	\
+					$(Queue_Control_LIBRARY)\
+					$(Behavioural_LIBRARY)	
+
+Load_store_unit_DIR_LIBRARY	=	-L$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/lib	\
+					$(Queue_Control_DIR_LIBRARY)\
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+Load_store_unit_library		: 
+				@\
+				$(MAKE) Queue_Control_library; \
+				$(MAKE) Behavioural_library; \
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit --makefile=Makefile;
+	
+Load_store_unit_library_clean	: 
+				@\
+				$(MAKE) Queue_Control_library_clean; \
+				$(MAKE) Behavioural_library_clean; \
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit --makefile=Makefile clean;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/Makefile	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/Makefile	(revision 59)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(Load_store_unit_LIBRARY)
+
+DIR_LIBRARY			= $(Load_store_unit_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: Load_store_unit_library
+
+library_clean			: Load_store_unit_library_clean
+
+include                         ../Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.Synthesis
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/configuration.cfg	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/configuration.cfg	(revision 59)
@@ -0,0 +1,12 @@
+Load_store_unit
+2	2	*2	# store_size_queue       
+2	2	*2	# load_size_queue        
+2	2	*2	# size_speculative_access_queue
+2	2	+1	# nb_port_check
+2	2	+1	# speculative_load       {none,access,commit,bypass}
+2	2	*2	# nb_context             
+16	16	*2	# nb_packet              
+32	32	*2	# size_general_data      
+32	32	*2	# nb_general_register    
+4	4	*2	# nb_operation           
+4	4	*2	# nb_type                
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/include/test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/include/test.h	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/include/test.h	(revision 59)
@@ -0,0 +1,63 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::core;
+using namespace morpheo::behavioural::core::multi_execute_loop;
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop;
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit;
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit;
+
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit;
+
+void test    (string name,
+	      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::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/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/main.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/main.cpp	(revision 59)
@@ -0,0 +1,92 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/include/test.h"
+
+#define NB_PARAMS 11
+
+void usage (int argc, char * argv[])
+{
+  cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
+       << "list_params is :" << endl
+       << " - size_store_queue        (uint32_t)" << endl
+       << " - size_load_queue         (uint32_t)" << endl
+       << " - size_speculative_access_queue (uint32_t)" << endl
+       << " - nb_port_check           (uint32_t)" << endl
+       << " - speculative_load        (uint32_t)" << endl
+       << " - nb_context              (uint32_t)" << endl
+       << " - nb_packet               (uint32_t)" << endl
+       << " - size_general_data       (uint32_t)" << endl
+       << " - nb_general_register     (uint32_t)" << endl
+       << " - nb_operation            (uint32_t)" << endl
+       << " - nb_type                 (uint32_t)" << endl
+       << "" << endl;
+
+  for (int i=0; i<argc; i++)
+    cerr << argv[i] << " ";
+  cerr << endl;
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  if (argc != 2+NB_PARAMS)
+    usage (argc, argv);
+
+  const string              name                     = argv[1];
+  const uint32_t            _size_store_queue        = atoi(argv[ 2]);
+  const uint32_t            _size_load_queue         = atoi(argv[ 3]);
+  const uint32_t            _size_speculative_access_queue = atoi(argv[ 4]);
+  const uint32_t            _nb_port_check           = atoi(argv[ 5]);
+  const Tspeculative_load_t _speculative_load        = fromString<Tspeculative_load_t>(argv[ 6]);
+  const uint32_t            _nb_context              = atoi(argv[ 7]);
+  const uint32_t            _nb_packet               = atoi(argv[ 8]);
+  const uint32_t            _size_general_data       = atoi(argv[ 9]);
+  const uint32_t            _nb_general_register     = atoi(argv[10]);
+  const uint32_t            _nb_operation            = atoi(argv[11]);
+  const uint32_t            _nb_type                 = atoi(argv[12]);
+
+  try 
+    {
+      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Parameters
+	(
+	 _size_store_queue       ,
+	 _size_load_queue        ,
+	 _size_speculative_access_queue,
+	 _nb_port_check          ,
+	 _speculative_load       ,
+	 _nb_context             ,
+	 _nb_packet              ,
+	 _size_general_data      ,
+	 _nb_general_register    ,
+	 _nb_operation           ,
+	 _nb_type                
+        );
+      
+      cout << param->print(1);
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      cout << "<" << name << "> : " <<  error.what ();
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      cerr << "<" << name << "> : This test must generate a error" << endl;
+      exit (EXIT_FAILURE);
+    }
+
+  return (EXIT_SUCCESS);
+}
+
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/test.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/test.cpp	(revision 59)
@@ -0,0 +1,646 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include <queue>
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/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)
+
+static uint32_t cycle = 0;
+
+#define SC_START(cycle_offset)                                          \
+do                                                                      \
+{                                                                       \
+/*cout << "SC_START (begin)" << endl;*/                                 \
+                                                                        \
+  uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time()); \
+  if (cycle_current != cycle)                                           \
+    {                                                                   \
+      cycle = cycle_current;                                            \
+      cout << "##########[ cycle "<< cycle << " ]" << endl;             \
+    }                                                                   \
+                                                                        \
+  if (cycle_current > CYCLE_MAX)                                        \
+    {                                                                   \
+      TEST_KO("Maximal cycles Reached");                                \
+    }                                                                   \
+  sc_start(cycle_offset);                                               \
+/*cout << "SC_START (end  )" << endl;*/                                 \
+} while(0)
+
+
+
+class MemoryRequest_t
+{
+public : double             _cycle                ;
+public : Tcontext_t         _context_id           ;
+public : Tpacket_t          _packet_id            ;
+public : Toperation_t       _operation            ;
+public : Ttype_t            _type                 ;
+public : Tlsq_ptr_t         _store_queue_ptr_write;
+public : Tlsq_ptr_t         _load_queue_ptr_write ;
+public : Tgeneral_data_t    _immediat             ;
+public : Tgeneral_data_t    _data_ra              ;
+public : Tgeneral_data_t    _data_rb              ;
+public : Tcontrol_t         _write_rd             ;
+public : Tgeneral_address_t _num_reg_rd           ;
+public : bool               _write_spec_ko        ;
+
+  MemoryRequest_t (void) 
+  {
+    _cycle                 = 0;
+    _context_id            = 0;
+    _packet_id             = 0;
+    _operation             = 0;
+    _type                  = 0;
+    _store_queue_ptr_write = 0;
+    _load_queue_ptr_write  = 0;
+    _immediat              = 0;
+    _data_ra               = 0;
+    _data_rb               = 0;
+    _write_rd              = 0;
+    _num_reg_rd            = 0;
+    _write_spec_ko         = 0;
+  };
+
+  MemoryRequest_t (double             cycle                ,
+		   Tcontext_t         context_id           ,
+		   Tpacket_t          packet_id            ,
+		   Toperation_t       operation            ,
+		   Ttype_t            type                 ,
+		   Tlsq_ptr_t         store_queue_ptr_write,
+		   Tlsq_ptr_t         load_queue_ptr_write ,
+		   Tgeneral_data_t    immediat             ,
+		   Tgeneral_data_t    data_ra              ,
+		   Tgeneral_data_t    data_rb              ,
+		   Tcontrol_t         write_rd             ,
+		   Tgeneral_address_t num_reg_rd           ,
+		   bool               write_spec_ko        )
+  {
+    _cycle                 = cycle                ;
+    _context_id            = context_id           ;
+    _packet_id             = packet_id            ;
+    _operation             = operation            ;
+    _type                  = type                 ;
+    _store_queue_ptr_write = store_queue_ptr_write;
+    _load_queue_ptr_write  = load_queue_ptr_write ;
+    _immediat              = immediat             ;
+    _data_ra               = data_ra              ;
+    _data_rb               = data_rb              ;
+    _write_rd              = write_rd             ;
+    _num_reg_rd            = num_reg_rd           ;
+    _write_spec_ko         = write_spec_ko        ;
+  }
+
+  void modif (double             cycle                ,
+	      Tcontext_t         context_id           ,
+	      Tpacket_t          packet_id            ,
+	      Toperation_t       operation            ,
+	      Ttype_t            type                 ,
+	      Tlsq_ptr_t         store_queue_ptr_write,
+	      Tlsq_ptr_t         load_queue_ptr_write ,
+	      Tgeneral_data_t    immediat             ,
+	      Tgeneral_data_t    data_ra              ,
+	      Tgeneral_data_t    data_rb              ,
+	      Tcontrol_t         write_rd             ,
+	      Tgeneral_address_t num_reg_rd           ,
+	      bool               write_spec_ko        )
+  {
+    _cycle                 = cycle                ;
+    _context_id            = context_id           ;
+    _packet_id             = packet_id            ;
+    _operation             = operation            ;
+    _type                  = type                 ;
+    _store_queue_ptr_write = store_queue_ptr_write;
+    _load_queue_ptr_write  = load_queue_ptr_write ;
+    _immediat              = immediat             ;
+    _data_ra               = data_ra              ;
+    _data_rb               = data_rb              ;
+    _write_rd              = write_rd             ;
+    _num_reg_rd            = num_reg_rd           ;
+    _write_spec_ko         = write_spec_ko        ;
+  }
+
+  bool operator< (const MemoryRequest_t & right) const 
+  {
+    return _cycle > right._cycle; 
+  }
+
+  friend ostream& operator<<(ostream &, const MemoryRequest_t &);
+};
+
+ostream & operator << (ostream& os, const MemoryRequest_t & x) 
+{
+  return os << "<" << toString(x._cycle) << "> : "
+	    << "{" << toString(static_cast<uint32_t>(x._packet_id)) << "}" << endl
+	    << "\t * " << toString(static_cast<uint32_t>(x._context_id)) << endl
+	    << "\t * " << toString(static_cast<uint32_t>(x._operation)) << " " << toString(static_cast<uint32_t>(x._type)) << " " << toString(static_cast<uint32_t>(x._write_spec_ko)) << endl
+	    << "\t * " << toString(static_cast<uint32_t>(x._store_queue_ptr_write)) << " " << toString(static_cast<uint32_t>(x._load_queue_ptr_write)) << endl
+	    << "\t * " << toString(static_cast<uint32_t>(x._immediat)) << " - " << toString(static_cast<uint32_t>(x._data_ra)) << " - " << toString(static_cast<uint32_t>(x._data_rb)) << endl
+	    << "\t * " << toString(static_cast<uint32_t>(x._write_rd)) << " " << toString(static_cast<uint32_t>(x._num_reg_rd)) << endl;
+}
+
+void test (string name,
+	   morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Parameters * _param)
+{
+  cout << "<" << name << "> : Simulation SystemC" << endl;
+
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
+  Load_store_unit * _Load_store_unit = new Load_store_unit (name.c_str(),
+#ifdef STATISTICS
+					     _parameters_statistics,
+#endif
+					     _param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  string rename = "";
+
+  sc_clock                               * in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);
+  sc_signal<Tcontrol_t>                  * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
+
+  sc_signal<Tcontrol_t        > *   in_MEMORY_IN_VAL                   = new sc_signal<Tcontrol_t        > (rename.c_str());
+  sc_signal<Tcontrol_t        > *  out_MEMORY_IN_ACK                   = new sc_signal<Tcontrol_t        > (rename.c_str());
+  sc_signal<Tcontext_t        > *   in_MEMORY_IN_CONTEXT_ID            = new sc_signal<Tcontext_t        > (rename.c_str());
+  sc_signal<Tpacket_t         > *   in_MEMORY_IN_PACKET_ID             = new sc_signal<Tpacket_t         > (rename.c_str());
+  sc_signal<Toperation_t      > *   in_MEMORY_IN_OPERATION             = new sc_signal<Toperation_t      > (rename.c_str());
+  sc_signal<Ttype_t           > *   in_MEMORY_IN_TYPE                  = new sc_signal<Ttype_t           > (rename.c_str());
+  sc_signal<Tlsq_ptr_t        > *   in_MEMORY_IN_STORE_QUEUE_PTR_WRITE = new sc_signal<Tlsq_ptr_t        > (rename.c_str());
+  sc_signal<Tlsq_ptr_t        > *   in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE  = new sc_signal<Tlsq_ptr_t        > (rename.c_str());
+//sc_signal<Tcontrol_t        > *   in_MEMORY_IN_HAS_IMMEDIAT          = new sc_signal<Tcontrol_t        > (rename.c_str());
+  sc_signal<Tgeneral_data_t   > *   in_MEMORY_IN_IMMEDIAT              = new sc_signal<Tgeneral_data_t   > (rename.c_str());
+  sc_signal<Tgeneral_data_t   > *   in_MEMORY_IN_DATA_RA               = new sc_signal<Tgeneral_data_t   > (rename.c_str());
+  sc_signal<Tgeneral_data_t   > *   in_MEMORY_IN_DATA_RB               = new sc_signal<Tgeneral_data_t   > (rename.c_str());
+//sc_signal<Tspecial_data_t   > *   in_MEMORY_IN_DATA_RC               = new sc_signal<Tspecial_data_t   > (rename.c_str());
+  sc_signal<Tcontrol_t        > *   in_MEMORY_IN_WRITE_RD              = new sc_signal<Tcontrol_t        > (rename.c_str());
+  sc_signal<Tgeneral_address_t> *   in_MEMORY_IN_NUM_REG_RD            = new sc_signal<Tgeneral_address_t> (rename.c_str());
+//sc_signal<Tcontrol_t        > *   in_MEMORY_IN_WRITE_RE              = new sc_signal<Tcontrol_t        > (rename.c_str());
+//sc_signal<Tspecial_address_t> *   in_MEMORY_IN_NUM_REG_RE            = new sc_signal<Tspecial_address_t> (rename.c_str());
+
+  sc_signal<Tcontrol_t	      > *  out_MEMORY_OUT_VAL        = new sc_signal<Tcontrol_t	 >(rename.c_str());
+  sc_signal<Tcontrol_t	      > *   in_MEMORY_OUT_ACK        = new sc_signal<Tcontrol_t	 >(rename.c_str());
+  sc_signal<Tcontext_t        > *  out_MEMORY_OUT_CONTEXT_ID = new sc_signal<Tcontext_t        >(rename.c_str());
+  sc_signal<Tpacket_t         > *  out_MEMORY_OUT_PACKET_ID  = new sc_signal<Tpacket_t         >(rename.c_str());
+  sc_signal<Toperation_t      > *  out_MEMORY_OUT_OPERATION  = new sc_signal<Toperation_t      >(rename.c_str());
+  sc_signal<Ttype_t           > *  out_MEMORY_OUT_TYPE       = new sc_signal<Ttype_t           >(rename.c_str());
+  sc_signal<Tcontrol_t        > *  out_MEMORY_OUT_WRITE_RD   = new sc_signal<Tcontrol_t        >(rename.c_str());
+  sc_signal<Tgeneral_address_t> *  out_MEMORY_OUT_NUM_REG_RD = new sc_signal<Tgeneral_address_t>(rename.c_str());
+  sc_signal<Tgeneral_data_t   > *  out_MEMORY_OUT_DATA_RD    = new sc_signal<Tgeneral_data_t   >(rename.c_str());
+//sc_signal<Tcontrol_t        > *  out_MEMORY_OUT_WRITE_RE   = new sc_signal<Tcontrol_t        >(rename.c_str());
+//sc_signal<Tspecial_address_t> *  out_MEMORY_OUT_NUM_REG_RE = new sc_signal<Tspecial_address_t>(rename.c_str());
+//sc_signal<Tspecial_data_t   > *  out_MEMORY_OUT_DATA_RE    = new sc_signal<Tspecial_data_t   >(rename.c_str());
+  sc_signal<Texception_t      > *  out_MEMORY_OUT_EXCEPTION  = new sc_signal<Texception_t      >(rename.c_str());
+
+  sc_signal<Tcontrol_t        > * out_DCACHE_REQ_VAL        = new sc_signal<Tcontrol_t        >(rename.c_str());
+  sc_signal<Tcontrol_t        > *  in_DCACHE_REQ_ACK        = new sc_signal<Tcontrol_t        >(rename.c_str());
+  sc_signal<Tcontext_t        > * out_DCACHE_REQ_CONTEXT_ID = new sc_signal<Tcontext_t        >(rename.c_str());
+  sc_signal<Tpacket_t         > * out_DCACHE_REQ_PACKET_ID  = new sc_signal<Tpacket_t         >(rename.c_str());
+  sc_signal<Tdcache_address_t > * out_DCACHE_REQ_ADDRESS    = new sc_signal<Tdcache_address_t >(rename.c_str());
+  sc_signal<Tdcache_type_t    > * out_DCACHE_REQ_TYPE       = new sc_signal<Tdcache_type_t    >(rename.c_str());
+  sc_signal<Tcontrol_t        > * out_DCACHE_REQ_UNCACHED   = new sc_signal<Tcontrol_t        >(rename.c_str());
+  sc_signal<Tdcache_data_t    > * out_DCACHE_REQ_WDATA      = new sc_signal<Tdcache_data_t    >(rename.c_str());
+  
+  sc_signal<Tcontrol_t        > *  in_DCACHE_RSP_VAL        = new sc_signal<Tcontrol_t        >(rename.c_str());
+  sc_signal<Tcontrol_t        > * out_DCACHE_RSP_ACK        = new sc_signal<Tcontrol_t        >(rename.c_str());
+  sc_signal<Tcontext_t        > *  in_DCACHE_RSP_CONTEXT_ID = new sc_signal<Tcontext_t        >(rename.c_str());
+  sc_signal<Tpacket_t         > *  in_DCACHE_RSP_PACKET_ID  = new sc_signal<Tpacket_t         >(rename.c_str());
+  sc_signal<Tdcache_data_t    > *  in_DCACHE_RSP_RDATA      = new sc_signal<Tdcache_data_t    >(rename.c_str());
+  sc_signal<Tdcache_error_t   > *  in_DCACHE_RSP_ERROR      = new sc_signal<Tdcache_error_t   >(rename.c_str());
+  
+  sc_signal<Tcontrol_t        > ** out_BYPASS_MEMORY_VAL        = new sc_signal<Tcontrol_t        > * [_param->_size_load_queue];
+  sc_signal<Tcontext_t        > ** out_BYPASS_MEMORY_CONTEXT_ID = new sc_signal<Tcontext_t        > * [_param->_size_load_queue];
+  sc_signal<Tgeneral_address_t> ** out_BYPASS_MEMORY_NUM_REG    = new sc_signal<Tgeneral_address_t> * [_param->_size_load_queue];
+  sc_signal<Tgeneral_data_t   > ** out_BYPASS_MEMORY_DATA       = new sc_signal<Tgeneral_data_t   > * [_param->_size_load_queue];
+    
+    for (uint32_t i=0; i<_param->_size_load_queue; i++)
+      {
+	out_BYPASS_MEMORY_VAL        [i] = new sc_signal<Tcontrol_t        >;
+	out_BYPASS_MEMORY_CONTEXT_ID [i] = new sc_signal<Tcontext_t        >;
+	out_BYPASS_MEMORY_NUM_REG    [i] = new sc_signal<Tgeneral_address_t>;
+	out_BYPASS_MEMORY_DATA       [i] = new sc_signal<Tgeneral_data_t   >;
+      }
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  cout << "<" << name << "> Instanciation of _Load_store_unit" << endl;
+  
+  (*(_Load_store_unit->in_CLOCK))        (*(in_CLOCK));
+  (*(_Load_store_unit->in_NRESET))       (*(in_NRESET));
+
+  (*(_Load_store_unit-> in_MEMORY_IN_VAL                  ))(*( in_MEMORY_IN_VAL                  ));
+  (*(_Load_store_unit->out_MEMORY_IN_ACK                  ))(*(out_MEMORY_IN_ACK                  ));
+  (*(_Load_store_unit-> in_MEMORY_IN_CONTEXT_ID           ))(*( in_MEMORY_IN_CONTEXT_ID           ));
+  (*(_Load_store_unit-> in_MEMORY_IN_PACKET_ID            ))(*( in_MEMORY_IN_PACKET_ID            ));
+  (*(_Load_store_unit-> in_MEMORY_IN_OPERATION            ))(*( in_MEMORY_IN_OPERATION            ));
+  (*(_Load_store_unit-> in_MEMORY_IN_TYPE                 ))(*( in_MEMORY_IN_TYPE                 ));
+  (*(_Load_store_unit-> in_MEMORY_IN_STORE_QUEUE_PTR_WRITE))(*( in_MEMORY_IN_STORE_QUEUE_PTR_WRITE));
+  (*(_Load_store_unit-> in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE ))(*( in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE ));
+//(*(_Load_store_unit-> in_MEMORY_IN_HAS_IMMEDIAT         ))(*( in_MEMORY_IN_HAS_IMMEDIAT         ));
+  (*(_Load_store_unit-> in_MEMORY_IN_IMMEDIAT             ))(*( in_MEMORY_IN_IMMEDIAT             ));
+  (*(_Load_store_unit-> in_MEMORY_IN_DATA_RA              ))(*( in_MEMORY_IN_DATA_RA              ));
+  (*(_Load_store_unit-> in_MEMORY_IN_DATA_RB              ))(*( in_MEMORY_IN_DATA_RB              ));
+//(*(_Load_store_unit-> in_MEMORY_IN_DATA_RC              ))(*( in_MEMORY_IN_DATA_RC              ));
+  (*(_Load_store_unit-> in_MEMORY_IN_WRITE_RD             ))(*( in_MEMORY_IN_WRITE_RD             ));
+  (*(_Load_store_unit-> in_MEMORY_IN_NUM_REG_RD           ))(*( in_MEMORY_IN_NUM_REG_RD           ));
+//(*(_Load_store_unit-> in_MEMORY_IN_WRITE_RE             ))(*( in_MEMORY_IN_WRITE_RE             ));
+//(*(_Load_store_unit-> in_MEMORY_IN_NUM_REG_RE           ))(*( in_MEMORY_IN_NUM_REG_RE           ));
+  
+  (*(_Load_store_unit->out_MEMORY_OUT_VAL        ))(*(out_MEMORY_OUT_VAL        ));
+  (*(_Load_store_unit-> in_MEMORY_OUT_ACK        ))(*( in_MEMORY_OUT_ACK        ));
+  (*(_Load_store_unit->out_MEMORY_OUT_CONTEXT_ID ))(*(out_MEMORY_OUT_CONTEXT_ID ));
+  (*(_Load_store_unit->out_MEMORY_OUT_PACKET_ID  ))(*(out_MEMORY_OUT_PACKET_ID  ));
+  (*(_Load_store_unit->out_MEMORY_OUT_OPERATION  ))(*(out_MEMORY_OUT_OPERATION  ));
+  (*(_Load_store_unit->out_MEMORY_OUT_TYPE       ))(*(out_MEMORY_OUT_TYPE       ));
+  (*(_Load_store_unit->out_MEMORY_OUT_WRITE_RD   ))(*(out_MEMORY_OUT_WRITE_RD   ));
+  (*(_Load_store_unit->out_MEMORY_OUT_NUM_REG_RD ))(*(out_MEMORY_OUT_NUM_REG_RD ));
+  (*(_Load_store_unit->out_MEMORY_OUT_DATA_RD    ))(*(out_MEMORY_OUT_DATA_RD    ));
+//(*(_Load_store_unit->out_MEMORY_OUT_WRITE_RE   ))(*(out_MEMORY_OUT_WRITE_RE   ));
+//(*(_Load_store_unit->out_MEMORY_OUT_NUM_REG_RE ))(*(out_MEMORY_OUT_NUM_REG_RE ));
+//(*(_Load_store_unit->out_MEMORY_OUT_DATA_RE    ))(*(out_MEMORY_OUT_DATA_RE    ));
+  (*(_Load_store_unit->out_MEMORY_OUT_EXCEPTION  ))(*(out_MEMORY_OUT_EXCEPTION  ));
+
+  (*(_Load_store_unit->out_DCACHE_REQ_VAL       ))(*(out_DCACHE_REQ_VAL       ));
+  (*(_Load_store_unit-> in_DCACHE_REQ_ACK       ))(*( in_DCACHE_REQ_ACK       ));
+  (*(_Load_store_unit->out_DCACHE_REQ_CONTEXT_ID))(*(out_DCACHE_REQ_CONTEXT_ID));
+  (*(_Load_store_unit->out_DCACHE_REQ_PACKET_ID ))(*(out_DCACHE_REQ_PACKET_ID ));
+  (*(_Load_store_unit->out_DCACHE_REQ_ADDRESS   ))(*(out_DCACHE_REQ_ADDRESS   ));
+  (*(_Load_store_unit->out_DCACHE_REQ_TYPE      ))(*(out_DCACHE_REQ_TYPE      ));
+  (*(_Load_store_unit->out_DCACHE_REQ_UNCACHED  ))(*(out_DCACHE_REQ_UNCACHED  ));
+  (*(_Load_store_unit->out_DCACHE_REQ_WDATA     ))(*(out_DCACHE_REQ_WDATA     ));
+
+  (*(_Load_store_unit-> in_DCACHE_RSP_VAL       ))(*( in_DCACHE_RSP_VAL       ));
+  (*(_Load_store_unit->out_DCACHE_RSP_ACK       ))(*(out_DCACHE_RSP_ACK       ));
+  (*(_Load_store_unit-> in_DCACHE_RSP_CONTEXT_ID))(*( in_DCACHE_RSP_CONTEXT_ID));
+  (*(_Load_store_unit-> in_DCACHE_RSP_PACKET_ID ))(*( in_DCACHE_RSP_PACKET_ID ));
+  (*(_Load_store_unit-> in_DCACHE_RSP_RDATA     ))(*( in_DCACHE_RSP_RDATA     ));
+  (*(_Load_store_unit-> in_DCACHE_RSP_ERROR     ))(*( in_DCACHE_RSP_ERROR     ));
+
+  if (_param->_speculative_load == SPECULATIVE_LOAD_BYPASS)
+    {
+      for (uint32_t i=0; i<_param->_size_load_queue; i++)
+	{
+	  (*(_Load_store_unit->out_BYPASS_MEMORY_VAL        [i]))(*(out_BYPASS_MEMORY_VAL        [i]));
+	  (*(_Load_store_unit->out_BYPASS_MEMORY_CONTEXT_ID [i]))(*(out_BYPASS_MEMORY_CONTEXT_ID [i]));
+	  (*(_Load_store_unit->out_BYPASS_MEMORY_NUM_REG    [i]))(*(out_BYPASS_MEMORY_NUM_REG    [i]));
+	  (*(_Load_store_unit->out_BYPASS_MEMORY_DATA       [i]))(*(out_BYPASS_MEMORY_DATA       [i]));
+	}
+    }
+  cout << "<" << name << "> Start Simulation ............" << endl;
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  // Initialisation
+
+  const uint32_t seed = 0;
+//const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  const uint32_t     nb_request   = _param->_nb_packet;
+  const uint32_t     nb_word      = nb_request;
+
+  const uint32_t     cst_max_cycle                  =   2;
+
+  const int32_t      percent_transaction_memory_in  = 100;
+  const int32_t      percent_transaction_memory_out = 100;
+  const int32_t      percent_transaction_dcache     = 100;
+
+  const int32_t      percent_exception              =   5;
+  const int32_t      percent_type_load              =   0;
+  const int32_t      percent_type_store             = 100;
+  const int32_t      percent_miss_spec              = 100;
+
+  if ((percent_type_load  +
+       percent_type_store ) > 100)
+    TEST_KO("sum of percent_type > 100");
+
+  const int32_t      seuil_type_load    = seuil_type_load;
+  const int32_t      seuil_type_store   = seuil_type_store+percent_type_load;
+
+  uint32_t           nb_request_memory_in ;
+  uint32_t           nb_request_memory_out;
+  uint32_t           nb_request_dcache    ;
+
+  MemoryRequest_t                 tab_request  [nb_request];
+  priority_queue<MemoryRequest_t> fifo_request;
+
+  Tdcache_data_t     cache_data                [_param->_nb_context][nb_word];
+
+  SC_START(0);
+
+  LABEL("Initialisation");
+
+  // emulate a memory
+  for (uint32_t i=0; i<_param->_nb_context; i++)
+    for (uint32_t j=0; j<nb_word; j++)
+      cache_data [i][j] = rand()%(1<<_param->_size_general_data);
+
+  in_MEMORY_IN_VAL ->write(0);
+  in_MEMORY_OUT_ACK->write(0);
+  in_DCACHE_REQ_ACK->write(0);
+  in_DCACHE_RSP_VAL->write(0);
+
+  in_NRESET        ->write(0);
+  SC_START(5);
+  in_NRESET        ->write(5);
+
+  LABEL("Loop of Test");
+
+  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
+    {
+      nb_request_memory_in  = 0;
+      nb_request_memory_out = 0;
+      nb_request_dcache     = 0;
+      
+      LABEL("Iteration "+toString(iteration));
+
+      // Fill the request_queue
+      
+      Tlsq_ptr_t         store_queue_ptr_write = 0;
+      Tlsq_ptr_t         load_queue_ptr_write  = 0;
+
+      bool               store_queue_use [_param->_size_store_queue];
+      bool               load_queue_use  [_param->_size_load_queue ];
+
+      for (uint32_t i=0; i<_param->_size_store_queue; i++)
+	store_queue_use [i] = false;
+      for (uint32_t i=0; i<_param->_size_load_queue ; i++)
+	load_queue_use  [i] = false;
+
+      double             store_queue_cycle [_param->_size_store_queue];
+      double             load_queue_cycle  [_param->_size_load_queue ];
+      double             current_cycle = sc_simulation_time();
+
+      for (uint32_t i=0; i<_param->_size_store_queue; i++)
+	store_queue_cycle [i] = current_cycle;
+      for (uint32_t i=0; i<_param->_size_load_queue ; i++)
+	load_queue_cycle  [i] = current_cycle;
+
+      // Init fifo_request
+      for (uint32_t i=0; i<nb_request; i++)
+	{
+	  double             cycle                     = current_cycle+(rand()%(cst_max_cycle*nb_request));
+	  Tcontext_t         context_id                = rand () % _param->_nb_context;
+	  Tpacket_t          packet_id                 = i;
+	  Tlsq_ptr_t         store_queue_ptr_write_old = store_queue_ptr_write;
+	  Tlsq_ptr_t         load_queue_ptr_write_old  = load_queue_ptr_write ;
+	  Toperation_t       operation;
+	  
+	  int32_t            percent = rand()%100;
+
+	  if (percent < seuil_type_load)
+	    {
+	      operation = OPERATION_MEMORY_LOAD_16_S;
+	      load_queue_ptr_write = (load_queue_ptr_write+1) % (_param->_size_load_queue);
+	    }
+	  else
+	    if (percent < seuil_type_store)
+	      {
+		operation = OPERATION_MEMORY_STORE_16;
+		store_queue_ptr_write = (store_queue_ptr_write+1) % (_param->_size_store_queue);
+	      }
+	    else
+	      {
+		operation = OPERATION_MEMORY_PREFETCH;
+		load_queue_ptr_write = (load_queue_ptr_write+1) % (_param->_size_load_queue);
+	      }
+
+	  // Valid nb cycle ?
+	  if (is_operation_memory_store(operation))
+	    {
+	      if (cycle <= store_queue_cycle[packet_id])
+		cycle = store_queue_cycle[packet_id]+1;
+	    }
+	  else
+	    {
+	      if (cycle <= load_queue_cycle[packet_id])
+		cycle = load_queue_cycle[packet_id]+1;
+	    }
+
+	  Ttype_t            type                  = TYPE_MEMORY;
+
+	  Tgeneral_data_t    address               = rand()%(1<<_param->_size_general_data);
+	  Tgeneral_data_t    offset                = rand()%(1<<_param->_size_general_data);
+
+	  percent = rand()%100;
+	  if (percent > percent_exception) 
+	    address = address & (not mask_memory_access(operation));
+
+	  if (offset > address) // max
+	    offset  = address;
+
+	  Tgeneral_data_t    immediat              = offset;
+	  Tgeneral_data_t    data_ra               = address - offset;
+	  Tgeneral_data_t    data_rb               = rand()%(1<<_param->_size_general_data);
+	  Tcontrol_t         write_rd              = 0;
+	  Tgeneral_address_t num_reg_rd            = 0;
+	  bool               write_spec_ko         = ((rand()%100)<percent_miss_spec);
+
+	  tab_request [i].modif(cycle                ,
+				context_id           ,
+				packet_id            ,
+				operation            ,
+				type                 ,
+				store_queue_ptr_write_old,
+				load_queue_ptr_write_old ,
+				immediat             ,
+				data_ra              ,
+				data_rb              ,
+				write_rd             ,
+				num_reg_rd           ,
+				write_spec_ko
+				);
+
+	  fifo_request.push(tab_request [i]);
+	  
+	  if (is_operation_memory_store(operation))
+	    {
+	      cycle = cycle+((rand()%(10))-4);
+
+	      if (cycle <= store_queue_cycle[packet_id])
+		cycle = store_queue_cycle[packet_id]+1;
+			
+	      fifo_request.push(MemoryRequest_t(cycle,
+						context_id,
+						packet_id,
+						(write_spec_ko==true)?OPERATION_MEMORY_STORE_HEAD_KO:OPERATION_MEMORY_STORE_HEAD_OK,
+						type,
+						store_queue_ptr_write_old,
+						0,
+						0,
+						0,
+						0,
+						0,
+						0,
+						write_spec_ko));
+	    }
+
+	  // update nb cycle ?
+	  if (is_operation_memory_store(operation))
+	    {
+	      store_queue_cycle[packet_id] = cycle;
+	    }
+	  else
+	    {
+	      load_queue_cycle [packet_id] = cycle;
+	    }
+	}
+            
+      while (nb_request_memory_out < nb_request)
+	{
+	  bool can_execute = false;
+
+	  if (is_operation_memory_store(fifo_request.top()._operation))
+	    can_execute = (not store_queue_use [fifo_request.top()._store_queue_ptr_write]) or is_operation_memory_store_head(fifo_request.top()._operation);
+	  else
+	    can_execute = not load_queue_use  [fifo_request.top()._load_queue_ptr_write];
+	  
+	  in_MEMORY_IN_VAL ->write((not fifo_request.empty()) and 
+				   can_execute                and 
+				   (sc_simulation_time() >= fifo_request.top()._cycle));
+
+	  in_MEMORY_IN_CONTEXT_ID           ->write (fifo_request.top()._context_id           );
+	  in_MEMORY_IN_PACKET_ID            ->write (fifo_request.top()._packet_id            );
+	  in_MEMORY_IN_OPERATION            ->write (fifo_request.top()._operation            );
+	  in_MEMORY_IN_TYPE                 ->write (fifo_request.top()._type                 );
+	  in_MEMORY_IN_STORE_QUEUE_PTR_WRITE->write (fifo_request.top()._store_queue_ptr_write);
+   	  in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE ->write (fifo_request.top()._load_queue_ptr_write );
+	  in_MEMORY_IN_IMMEDIAT             ->write (fifo_request.top()._immediat             );
+	  in_MEMORY_IN_DATA_RA              ->write (fifo_request.top()._data_ra              );
+	  in_MEMORY_IN_DATA_RB              ->write (fifo_request.top()._data_rb              );
+	  in_MEMORY_IN_WRITE_RD             ->write (fifo_request.top()._write_rd             );
+	  in_MEMORY_IN_NUM_REG_RD           ->write (fifo_request.top()._num_reg_rd           );
+
+	  in_MEMORY_OUT_ACK->write((rand()%100)<percent_transaction_memory_out);
+	  
+	  SC_START(0);
+  
+	  SC_START(1);
+
+	  LABEL("MEMORY_IN  : "+toString(in_MEMORY_IN_VAL ->read())+" - "+toString(out_MEMORY_IN_ACK ->read()));
+	  if ( in_MEMORY_IN_VAL ->read() and out_MEMORY_IN_ACK ->read())
+	    {
+	      LABEL(" * Accepted MEMORY_IN  : " + toString(nb_request_memory_in));
+	      cout << fifo_request.top();
+
+	      if (is_operation_memory_store(fifo_request.top()._operation))
+		{
+		  if (not is_operation_memory_store_head(fifo_request.top()._operation))
+		    store_queue_use [fifo_request.top()._store_queue_ptr_write] = true;
+		}
+	      else
+		load_queue_use [fifo_request.top()._load_queue_ptr_write] = true;
+
+	      fifo_request.pop();
+	      
+	      nb_request_memory_in ++;
+	    }
+
+	  LABEL("MEMORY_OUT : "+toString(out_MEMORY_OUT_VAL->read())+" - "+toString(in_MEMORY_OUT_ACK ->read()));
+	  if (out_MEMORY_OUT_VAL->read() and  in_MEMORY_OUT_ACK->read())
+	    {
+	      LABEL(" * Accepted MEMORY_OUT : " + toString(out_MEMORY_OUT_PACKET_ID->read()));
+
+	      if (is_operation_memory_store(tab_request[out_MEMORY_OUT_PACKET_ID->read()]._operation))
+		store_queue_use [tab_request[out_MEMORY_OUT_PACKET_ID->read()]._store_queue_ptr_write] = false;
+	      else
+		load_queue_use  [tab_request[out_MEMORY_OUT_PACKET_ID->read()]._load_queue_ptr_write] = false;
+
+	      nb_request_memory_out ++;
+	    }
+	}
+    }
+  
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+  cout << "<" << name << "> ............ Stop Simulation" << endl;
+
+  delete     in_CLOCK;
+  delete     in_NRESET;
+
+  delete     in_MEMORY_IN_VAL                  ;
+  delete    out_MEMORY_IN_ACK                  ;
+  delete     in_MEMORY_IN_CONTEXT_ID           ;
+  delete     in_MEMORY_IN_PACKET_ID            ;
+  delete     in_MEMORY_IN_OPERATION            ;
+  delete     in_MEMORY_IN_TYPE                 ;
+  delete     in_MEMORY_IN_STORE_QUEUE_PTR_WRITE;
+  delete     in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE ;
+//delete     in_MEMORY_IN_HAS_IMMEDIAT         ;
+  delete     in_MEMORY_IN_IMMEDIAT             ;
+  delete     in_MEMORY_IN_DATA_RA              ;
+  delete     in_MEMORY_IN_DATA_RB              ;
+//delete     in_MEMORY_IN_DATA_RC              ;
+  delete     in_MEMORY_IN_WRITE_RD             ;
+  delete     in_MEMORY_IN_NUM_REG_RD           ;
+//delete     in_MEMORY_IN_WRITE_RE             ;
+//delete     in_MEMORY_IN_NUM_REG_RE           ;
+
+  delete    out_MEMORY_OUT_VAL       ;
+  delete     in_MEMORY_OUT_ACK       ;
+  delete    out_MEMORY_OUT_CONTEXT_ID;
+  delete    out_MEMORY_OUT_PACKET_ID ;
+  delete    out_MEMORY_OUT_OPERATION ;
+  delete    out_MEMORY_OUT_TYPE      ;
+  delete    out_MEMORY_OUT_WRITE_RD  ;
+  delete    out_MEMORY_OUT_NUM_REG_RD;
+  delete    out_MEMORY_OUT_DATA_RD   ;
+//delete    out_MEMORY_OUT_WRITE_RE  ;
+//delete    out_MEMORY_OUT_NUM_REG_RE;
+//delete    out_MEMORY_OUT_DATA_RE   ;
+  delete    out_MEMORY_OUT_EXCEPTION ;
+
+  delete    out_DCACHE_REQ_VAL       ;
+  delete     in_DCACHE_REQ_ACK       ;
+  delete    out_DCACHE_REQ_CONTEXT_ID;
+  delete    out_DCACHE_REQ_PACKET_ID ;
+  delete    out_DCACHE_REQ_ADDRESS   ;
+  delete    out_DCACHE_REQ_TYPE      ;
+  delete    out_DCACHE_REQ_UNCACHED  ;
+  delete    out_DCACHE_REQ_WDATA     ;
+
+  delete     in_DCACHE_RSP_VAL       ;
+  delete    out_DCACHE_RSP_ACK       ;
+  delete     in_DCACHE_RSP_CONTEXT_ID;
+  delete     in_DCACHE_RSP_PACKET_ID ;
+  delete     in_DCACHE_RSP_RDATA     ;
+  delete     in_DCACHE_RSP_ERROR     ;
+
+  delete [] out_BYPASS_MEMORY_VAL       ;
+  delete [] out_BYPASS_MEMORY_CONTEXT_ID;
+  delete [] out_BYPASS_MEMORY_NUM_REG   ;
+  delete [] out_BYPASS_MEMORY_DATA      ;
+
+#endif
+
+  delete _Load_store_unit;
+#ifdef STATISTICS
+  delete _parameters_statistics;
+#endif
+}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/VERSION
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/VERSION	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/VERSION	(revision 59)
@@ -0,0 +1,4 @@
+v0.6
+
+0.5 modif vhdl_port et vhdl_testbench_port -> ajout d'une macro
+0.6 ajout de la documentation
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/Load_store_unit.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/Load_store_unit.tex	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/Load_store_unit.tex	(revision 59)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/Makefile	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/Makefile	(revision 59)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/sty/header.sty
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/sty/header.sty	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/sty/header.sty	(revision 59)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Load\_store\_unit}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/01_introduction.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/01_introduction.tex	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/01_introduction.tex	(revision 59)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/02_features.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/02_features.tex	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/02_features.tex	(revision 59)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/03_description.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/03_description.tex	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/03_description.tex	(revision 59)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/04_pinout.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/04_pinout.tex	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/04_pinout.tex	(revision 59)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/05_parameters.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/05_parameters.tex	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/05_parameters.tex	(revision 59)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/06_performance.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/06_performance.tex	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/06_performance.tex	(revision 59)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/07_details.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/07_details.tex	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/07_details.tex	(revision 59)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/08_history.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/08_history.tex	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/08_history.tex	(revision 59)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/root.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/root.tex	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/doc/tex/root.tex	(revision 59)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h	(revision 59)
@@ -0,0 +1,223 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_execute_unit_execute_unit_load_store_unit_Load_store_unit_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_execute_unit_execute_unit_load_store_unit_Load_store_unit_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#define HAVE_MEMORY_OUT_OPERATION
+#define HAVE_MEMORY_OUT_TYPE
+
+#include <iostream>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+
+#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h"
+#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h"
+#ifdef STATISTICS
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Statistics.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+
+using namespace std;
+using namespace morpheo::behavioural::generic::queue_control;
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+  class Load_store_unit 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const string       _name;
+
+  protected : const Parameters * _param;
+//#ifdef STATISTICS
+//  protected : const morpheo::behavioural::Parameters_Statistics * _param_statistics;
+//#endif
+
+#ifdef STATISTICS
+  private   : Statistics                     * _stat;
+#endif
+
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK        ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
+
+    // ~~~~~[ Interface "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t        )    *  in_MEMORY_IN_VAL         ;
+  public    : SC_OUT(Tcontrol_t        )    * out_MEMORY_IN_ACK         ;
+  public    : SC_IN (Tcontext_t        )    *  in_MEMORY_IN_CONTEXT_ID  ;
+  public    : SC_IN (Tpacket_t         )    *  in_MEMORY_IN_PACKET_ID   ;
+  public    : SC_IN (Toperation_t      )    *  in_MEMORY_IN_OPERATION   ;
+#ifdef HAVE_MEMORY_OUT_TYPE
+  public    : SC_IN (Ttype_t           )    *  in_MEMORY_IN_TYPE        ;
+#endif
+  public    : SC_IN (Tlsq_ptr_t        )    *  in_MEMORY_IN_STORE_QUEUE_PTR_WRITE;
+  public    : SC_IN (Tlsq_ptr_t        )    *  in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE;
+//public    : SC_IN (Tcontrol_t        )    *  in_MEMORY_IN_HAS_IMMEDIAT;
+  public    : SC_IN (Tgeneral_data_t   )    *  in_MEMORY_IN_IMMEDIAT    ; // memory address
+  public    : SC_IN (Tgeneral_data_t   )    *  in_MEMORY_IN_DATA_RA     ; // memory address
+  public    : SC_IN (Tgeneral_data_t   )    *  in_MEMORY_IN_DATA_RB     ; // data        (store)
+//public    : SC_IN (Tspecial_data_t   )    *  in_MEMORY_IN_DATA_RC     ;
+  public    : SC_IN (Tcontrol_t        )    *  in_MEMORY_IN_WRITE_RD    ; // = (operation==load)
+  public    : SC_IN (Tgeneral_address_t)    *  in_MEMORY_IN_NUM_REG_RD  ; // destination (load)
+//public    : SC_IN (Tcontrol_t        )    *  in_MEMORY_IN_WRITE_RE    ;
+//public    : SC_IN (Tspecial_address_t)    *  in_MEMORY_IN_NUM_REG_RE  ;
+
+    // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t        )    * out_MEMORY_OUT_VAL       ;
+  public    : SC_IN (Tcontrol_t        )    *  in_MEMORY_OUT_ACK       ;
+  public    : SC_OUT(Tcontext_t        )    * out_MEMORY_OUT_CONTEXT_ID;
+  public    : SC_OUT(Tpacket_t         )    * out_MEMORY_OUT_PACKET_ID ;
+#ifdef HAVE_MEMORY_OUT_OPERATION
+  public    : SC_OUT(Toperation_t      )    * out_MEMORY_OUT_OPERATION ;
+#endif
+#ifdef HAVE_MEMORY_OUT_TYPE
+  public    : SC_OUT(Ttype_t           )    * out_MEMORY_OUT_TYPE      ;
+#endif
+  public    : SC_OUT(Tcontrol_t        )    * out_MEMORY_OUT_WRITE_RD  ; // = (operation==load)
+  public    : SC_OUT(Tgeneral_address_t)    * out_MEMORY_OUT_NUM_REG_RD; // destination (load)
+  public    : SC_OUT(Tgeneral_data_t   )    * out_MEMORY_OUT_DATA_RD   ; // data        (load)
+//public    : SC_OUT(Tcontrol_t        )    * out_MEMORY_OUT_WRITE_RE  ;
+//public    : SC_OUT(Tspecial_address_t)    * out_MEMORY_OUT_NUM_REG_RE;
+//public    : SC_OUT(Tspecial_data_t   )    * out_MEMORY_OUT_DATA_RE   ;
+  public    : SC_OUT(Texception_t      )    * out_MEMORY_OUT_EXCEPTION ;
+
+    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t        )    * out_DCACHE_REQ_VAL       ;
+  public    : SC_IN (Tcontrol_t        )    *  in_DCACHE_REQ_ACK       ;
+  public    : SC_OUT(Tcontext_t        )    * out_DCACHE_REQ_CONTEXT_ID;
+  public    : SC_OUT(Tpacket_t         )    * out_DCACHE_REQ_PACKET_ID ;
+  public    : SC_OUT(Tdcache_address_t )    * out_DCACHE_REQ_ADDRESS   ;
+  public    : SC_OUT(Tdcache_type_t    )    * out_DCACHE_REQ_TYPE      ;
+  public    : SC_OUT(Tcontrol_t        )    * out_DCACHE_REQ_UNCACHED  ;
+  public    : SC_OUT(Tdcache_data_t    )    * out_DCACHE_REQ_WDATA     ;
+
+    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t        )    *  in_DCACHE_RSP_VAL       ;
+  public    : SC_OUT(Tcontrol_t        )    * out_DCACHE_RSP_ACK       ;
+  public    : SC_IN (Tcontext_t        )    *  in_DCACHE_RSP_CONTEXT_ID;
+  public    : SC_IN (Tpacket_t         )    *  in_DCACHE_RSP_PACKET_ID ;
+  public    : SC_IN (Tdcache_data_t    )    *  in_DCACHE_RSP_RDATA     ;
+  public    : SC_IN (Tdcache_error_t   )    *  in_DCACHE_RSP_ERROR     ;
+
+    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t        )   ** out_BYPASS_MEMORY_VAL       ;
+  public    : SC_OUT(Tcontext_t        )   ** out_BYPASS_MEMORY_CONTEXT_ID;
+  public    : SC_OUT(Tgeneral_address_t)   ** out_BYPASS_MEMORY_NUM_REG   ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_BYPASS_MEMORY_DATA      ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+  protected : Tstore_queue_entry_t                                        * _store_queue;
+  protected : Tload_queue_entry_t                                         * _load_queue;
+  protected : Tspeculative_access_queue_entry_t                           * _speculative_access_queue;
+  protected : morpheo::behavioural::generic::queue_control::Queue_Control * _speculative_access_queue_control;
+
+    // function pointer
+  public    : void (morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit::*function_transition     ) (void);
+  public    : void (morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit::*function_genMoore       ) (void);
+  public    : void (morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit::*function_genMealy_dcache) (void);
+  public    : void (morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit::*function_genMealy_insert) (void);
+  public    : void (morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit::*function_genMealy_retire) (void);
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : Tlsq_ptr_t                      internal_MEMORY_STORE_QUEUE_PTR_READ;
+  public    : Tlsq_ptr_t                      internal_MEMORY_LOAD_QUEUE_PTR_READ;
+
+  private   : Tcontrol_t                      internal_MEMORY_IN_ACK;
+  private   : Tcontrol_t                      internal_MEMORY_OUT_VAL;
+  private   : Tselect_queue_t                 internal_MEMORY_OUT_SELECT_QUEUE;
+#endif
+
+    // -----[ methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (Load_store_unit);
+#endif
+  public  :          Load_store_unit              
+  (
+#ifdef SYSTEMC
+   sc_module_name                                name,
+#else					       
+   string                                        name,
+#endif					       
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   Parameters                                  * param );
+  public  :          ~Load_store_unit             (void);
+					       
+#ifdef SYSTEMC				       
+  private : void     allocation                (void);
+  private : void     deallocation              (void);
+
+  public  : void     transition                (void);
+  public  : void     genMoore                  (void);
+  public  : void     genMealy_dcache           (void);
+  public  : void     genMealy_insert           (void);
+  public  : void     genMealy_retire           (void);
+   
+  public  : void     function_speculative_load_commit_transition      (void);
+  public  : void     function_speculative_load_commit_genMoore        (void);
+  public  : void     function_speculative_load_commit_genMealy_dcache (void);
+  public  : void     function_speculative_load_commit_genMealy_insert (void);
+  public  : void     function_speculative_load_commit_genMealy_retire (void);
+#endif					       
+#ifdef STATISTICS
+  public  : string   statistics                (uint32_t depth);
+#endif
+					       
+#if VHDL				       
+  public  : void     vhdl                      (void);
+  private : void     vhdl_declaration          (Vhdl * & vhdl);
+  private : void     vhdl_body                 (Vhdl * & vhdl);
+#endif					       
+					       
+#ifdef VHDL_TESTBENCH			       
+  private : void     vhdl_testbench_transition (void);
+#endif
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h	(revision 59)
@@ -0,0 +1,81 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_execute_unit_execute_unit_load_store_unit_Parameters_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_execute_unit_execute_unit_load_store_unit_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h"
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include <math.h>
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t            _size_store_queue       ;
+  public : const uint32_t            _size_load_queue        ;
+  public : const uint32_t            _size_speculative_access_queue;
+  public : const uint32_t            _nb_port_check          ;
+  public : const Tspeculative_load_t _speculative_load       ;
+  public : const uint32_t            _nb_context             ;
+  public : const uint32_t            _nb_packet              ;
+  public : const uint32_t            _size_general_data      ;
+  public : const uint32_t            _nb_general_register    ;
+  public : const uint32_t            _nb_operation           ;
+  public : const uint32_t            _nb_type                ;
+
+  public : const uint32_t            _size_address_store_queue             ;
+  public : const uint32_t            _size_address_load_queue              ;
+  public : const uint32_t            _size_address_speculative_access_queue;
+  public : const uint32_t            _size_context_id        ;
+  public : const uint32_t            _size_packet_id         ;
+  public : const uint32_t            _size_general_register  ;
+  public : const uint32_t            _size_operation         ;
+  public : const uint32_t            _size_type              ;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t            size_store_queue       ,
+			uint32_t            size_load_queue        ,
+			uint32_t            size_speculative_access_queue,
+			uint32_t            nb_port_check          ,
+			Tspeculative_load_t speculative_load       ,
+			uint32_t            nb_context             ,
+			uint32_t            nb_packet              ,
+			uint32_t            size_general_data      ,
+			uint32_t            nb_general_register    ,
+			uint32_t            nb_operation           ,
+			uint32_t            nb_type                
+			);
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public : string msg_error (void);
+
+  public :        string   print      (uint32_t depth);
+  public : friend ostream& operator<< (ostream& output_stream,
+				       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Parameters & x);
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Statistics.h	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Statistics.h	(revision 59)
@@ -0,0 +1,63 @@
+#ifdef STATISTICS
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_execute_unit_execute_unit_load_store_unit_Statistics_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_execute_unit_execute_unit_load_store_unit_Statistics_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Statistics.h"
+#include "Behavioural/include/Parameters_Statistics.h"
+//#include "Behavioural/Generic/Group/include/Statistics.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h"
+
+//using namespace morpheo::behavioural::generic::group;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+  class Statistics : public morpheo::behavioural::Statistics
+  {
+    // -----[ fields ]----------------------------------------------------
+  private  : const Parameters                                 * _parameters;
+
+    // -----[ methods ]---------------------------------------------------
+  public   : Statistics  (string                                        name                       ,
+			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			  Parameters                                  * parameters
+			  );
+//public   : Statistics  (Statistics & stat);
+  public   : ~Statistics () ;
+    
+  public   : string   print_body (uint32_t depth);
+  public   : string   print      (uint32_t depth);
+  public   : void     add        ();
+
+  public   : friend ostream& operator<< (ostream& output_stream,
+					 const Statistics & x);
+
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo
+
+#endif
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h	(revision 59)
@@ -0,0 +1,184 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_execute_unit_execute_unit_load_store_unit_Types_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_execute_unit_execute_unit_load_store_unit_Types_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+#include "Common/include/ToString.h"
+#include "Common/include/FromString.h"
+#include "Common/include/ErrorMorpheo.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+  typedef enum 
+    {
+      NO_SPECULATIVE_LOAD    , //each load wait all previous store before the data cache access
+      SPECULATIVE_LOAD_ACCESS, //each load wait all previous store before the commiting
+      SPECULATIVE_LOAD_COMMIT, //each load commit the result before the end of dependence's check
+      SPECULATIVE_LOAD_BYPASS  //each load bypass the result before the end of dependence's check
+    } Tspeculative_load_t; 
+  
+  typedef enum
+    {
+      SELECT_STORE_QUEUE,
+      SELECT_LOAD_QUEUE ,
+      SELECT_LOAD_QUEUE_SPECULATIVE
+    } Tselect_queue_t;
+  
+  // ----------------------------------------------------------
+  // Store Queue
+  // ----------------------------------------------------------
+
+  typedef enum
+    {
+      STORE_QUEUE_EMPTY                    //entry is empty
+      ,STORE_QUEUE_NO_VALID_NO_SPECULATIVE //entry is the top of rob, and operation isn't arrive
+      ,STORE_QUEUE_VALID_SPECULATIVE       //entry is arrive and wait the top of rob
+      ,STORE_QUEUE_VALID_NO_SPECULATIVE    //entry is ok, can be access at a dcache port.
+      ,STORE_QUEUE_COMMIT                  //entry have access at dcache
+    } Tstore_queue_state_t;
+
+  class Tstore_queue_entry_t
+  {
+  public    : Tstore_queue_state_t _state               ;
+  public    : Tcontext_t           _context_id          ;
+  public    : Tpacket_t            _packet_id           ;
+  public    : Taccess_t            _access              ;
+  public    : Tcontrol_t           _uncached            ;
+#ifdef HAVE_MEMORY_OUT_OPERATION
+  public    : Toperation_t         _operation           ;
+#endif				   
+#ifdef HAVE_MEMORY_OUT_TYPE	   	              
+  public    : Ttype_t              _type                ;
+#endif				   
+  public    : Tlsq_ptr_t           _load_queue_ptr_write;
+  public    : Tdcache_data_t       _address             ;
+  public    : Tgeneral_data_t      _wdata               ;
+//public    : Tcontrol_t           _write_rd            ;
+//public    : Tgeneral_address_t   _num_reg_rd          ;
+  public    : Texception_t         _exception           ;
+  };
+
+  // ----------------------------------------------------------
+  // Speculative_Access  Queue
+  // ----------------------------------------------------------
+
+  typedef enum
+    {
+      SPECULATIVE_ACCESS_QUEUE_EMPTY            //entry is empty
+      ,SPECULATIVE_ACCESS_QUEUE_WAIT_CACHE      //entry is valid and can access at the dcache
+      ,SPECULATIVE_ACCESS_QUEUE_WAIT_LOAD_QUEUE //entry wait an empty slot in load queue
+    } Tspeculative_access_queue_state_t;
+
+  class Tspeculative_access_queue_entry_t
+  {
+  public    : Tspeculative_access_queue_state_t  _state                ;
+  public    : Tcontext_t                         _context_id           ;
+  public    : Tpacket_t                          _packet_id            ;
+  public    : Taccess_t                          _access               ;
+  public    : Tcontrol_t                         _uncached             ;
+  public    : Tcontrol_t                         _sign_extension       ;
+#ifdef HAVE_MEMORY_OUT_OPERATION                 		       
+  public    : Toperation_t                       _operation            ;
+#endif				                 		       
+#ifdef HAVE_MEMORY_OUT_TYPE	                 	               
+  public    : Ttype_t                            _type                 ;
+#endif				                 		       
+  public    : Tlsq_ptr_t                         _load_queue_ptr_write ;
+  public    : Tlsq_ptr_t                         _store_queue_ptr_write;
+  public    : Tdcache_address_t                  _address              ;
+  public    : Tgeneral_data_t                    _rdata                ;
+  public    : Tcontrol_t                         _write_rd             ;
+  public    : Tgeneral_address_t                 _num_reg_rd           ;
+  public    : Texception_t                       _exception            ;
+  };
+
+  // ----------------------------------------------------------
+  // Load  Queue
+  // ----------------------------------------------------------
+
+  typedef enum
+    {
+      LOAD_QUEUE_EMPTY         //entry is empty
+      ,LOAD_QUEUE_WAIT_CHECK   //entry must wait the respons and check dependence with store
+      ,LOAD_QUEUE_WAIT         //entry must wait the respons
+      ,LOAD_QUEUE_COMMIT_CHECK //entry must check dependence and can commit speculative
+      ,LOAD_QUEUE_CHECK        //entry must check dependence with store
+      ,LOAD_QUEUE_COMMIT       //entry must commit the instruction
+    } Tload_queue_state_t;
+
+  class Tload_queue_entry_t
+  {
+  public    : Tload_queue_state_t  _state               ;
+  public    : Tcontext_t           _context_id          ;
+  public    : Tpacket_t            _packet_id           ;
+  public    : Taccess_t            _access              ;
+  public    : Tcontrol_t           _uncached            ;
+  public    : Tcontrol_t           _sign_extension      ;
+#ifdef HAVE_MEMORY_OUT_OPERATION
+  public    : Toperation_t         _operation           ;
+#endif				   
+#ifdef HAVE_MEMORY_OUT_TYPE	   	              
+  public    : Ttype_t              _type                ;
+#endif				   
+  public    : Tlsq_ptr_t           _store_queue_ptr_write;
+  public    : Tdcache_address_t    _address             ;
+  public    : Tgeneral_data_t      _rdata               ;
+  public    : Tcontrol_t           _write_rd            ;
+  public    : Tgeneral_address_t   _num_reg_rd          ;
+  public    : Texception_t         _exception           ;
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+}; // end namespace behavioural
+
+  template<> inline std::string toString<morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tspeculative_load_t>(const morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tspeculative_load_t& x)
+  {
+    switch (x)
+      {
+      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD     : return "no_speculative_load"    ; break;
+      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS : return "speculative_load_access"; break;
+      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT : return "speculative_load_commit"; break;
+      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS : return "speculative_load_bypass"; break;
+      default    : return ""      ; break;
+      }
+  };
+
+  template<> inline morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tspeculative_load_t fromString<morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tspeculative_load_t>(const std::string& x)
+  {
+    if ( (x.compare("0")                       == 0) or
+         (x.compare("no_speculative_load")     == 0))
+      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD;
+    if ( (x.compare("1")                       == 0) or
+         (x.compare("speculative_load_access") == 0))
+      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS;
+    if ( (x.compare("2")                       == 0) or
+         (x.compare("speculative_load_commit") == 0))
+      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT;
+    if ( (x.compare("3")                       == 0) or
+         (x.compare("speculative_load_bypass") == 0))
+      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS;
+    
+    throw (ErrorMorpheo ("<fromString> : Unknow string : \""+x+"\""));
+  };
+
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit.cpp	(revision 59)
@@ -0,0 +1,171 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::Load_store_unit"
+#ifdef SYSTEMC
+  Load_store_unit::Load_store_unit (sc_module_name name,
+#else
+  Load_store_unit::Load_store_unit (string name,
+#endif
+#ifdef STATISTICS
+			  morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+			  morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Parameters * param ):
+			      _name              (name)
+			      ,_param            (param)
+// #ifdef STATISTICS
+// 			      ,_param_statistics (param_statistics)
+// #endif
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+#ifdef SYSTEMC
+    log_printf(INFO,Load_store_unit,FUNCTION,"Allocation");
+
+    allocation ();
+#endif
+
+#ifdef STATISTICS
+    log_printf(INFO,Load_store_unit,FUNCTION,"Allocation of statistics");
+
+    // Allocation of statistics
+    _stat = new Statistics (static_cast<string>(_name),
+			    param_statistics          ,
+			    param);
+#endif
+
+#ifdef VHDL
+    // generate the vhdl
+    log_printf(INFO,Load_store_unit,FUNCTION,"Generate the vhdl");
+
+    vhdl();
+#endif
+
+#ifdef SYSTEMC
+    // Function pointer
+
+    switch (_param->_speculative_load)
+      {
+      case SPECULATIVE_LOAD_COMMIT :
+	{
+	  function_transition      = &morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit::function_speculative_load_commit_transition     ;
+	  function_genMoore        = &morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit::function_speculative_load_commit_genMoore       ;
+	  function_genMealy_dcache = &morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit::function_speculative_load_commit_genMealy_dcache;
+	  function_genMealy_insert = &morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit::function_speculative_load_commit_genMealy_insert;
+	  function_genMealy_retire = &morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit::function_speculative_load_commit_genMealy_retire;
+	  break;
+	}
+      case NO_SPECULATIVE_LOAD     :
+      case SPECULATIVE_LOAD_ACCESS :
+      case SPECULATIVE_LOAD_BYPASS :
+      default                      :
+	{
+	  break;
+	}
+      }
+
+    log_printf(INFO,Load_store_unit,FUNCTION,"Method - transition");
+
+    SC_METHOD (transition);
+    dont_initialize ();
+    sensitive_pos << *(in_CLOCK);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+#endif    
+
+    log_printf(INFO,Load_store_unit,FUNCTION,"Method - genMoore");
+
+    SC_METHOD (genMoore);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+#endif    
+
+    log_printf(INFO,Load_store_unit,FUNCTION,"Method - genMealy_insert");
+
+    SC_METHOD (genMealy_insert);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+    sensitive     << *(in_MEMORY_IN_OPERATION);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    (*(out_MEMORY_IN_ACK)) (*(in_MEMORY_IN_OPERATION));
+#endif    
+
+    log_printf(INFO,Load_store_unit,FUNCTION,"Method - genMealy_retire");
+
+    SC_METHOD (genMealy_retire);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+#endif    
+
+    log_printf(INFO,Load_store_unit,FUNCTION,"Method - genMealy_dcache");
+
+    SC_METHOD (genMealy_dcache);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+#endif    
+
+#endif
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::~Load_store_unit"
+  Load_store_unit::~Load_store_unit (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    log_printf(INFO,Load_store_unit,FUNCTION,"Generate Statistics file");
+
+    _stat->generate_file(statistics(0));
+    
+    delete _stat;
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,Load_store_unit,FUNCTION,"Deallocation");
+
+    deallocation ();
+#endif
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp	(revision 59)
@@ -0,0 +1,199 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::allocation"
+  void Load_store_unit::allocation (void)
+  {
+    string rename;
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name       
+					      ,"Load_store_unit"
+#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_YES);
+      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
+    }
+    // ~~~~~[ Interface "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface_fifo * interface = _interfaces->set_interface("memory_in"
+#ifdef POSITION
+							      ,IN
+							      ,WEST
+							      ,"Instruction from Reservations station"
+#endif
+							      );
+
+   in_MEMORY_IN_VAL                   = interface->set_signal_valack_in        (VAL);
+  out_MEMORY_IN_ACK                   = interface->set_signal_valack_out       (ACK);
+   in_MEMORY_IN_CONTEXT_ID            = interface->set_signal_in  <Tcontext_t        > ("context_id"  ,_param->_size_context_id       );
+   in_MEMORY_IN_PACKET_ID             = interface->set_signal_in  <Tpacket_t         > ("packet_id"   ,_param->_size_packet_id       );
+   in_MEMORY_IN_OPERATION             = interface->set_signal_in  <Toperation_t      > ("operation"   ,_param->_size_operation        );
+#ifdef HAVE_MEMORY_OUT_TYPE
+   in_MEMORY_IN_TYPE                  = interface->set_signal_in  <Ttype_t           > ("type"        ,_param->_size_type             );
+#endif
+   in_MEMORY_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in  <Tlsq_ptr_t        > ("store_queue_ptr_write" ,_param->_size_address_store_queue);
+   in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in  <Tlsq_ptr_t        > ("load_queue_ptr_write"  ,_param->_size_address_load_queue );
+// in_MEMORY_IN_HAS_IMMEDIAT          = interface->set_signal_in  <Tcontrol_t        > ("has_immediat",1                              );
+   in_MEMORY_IN_IMMEDIAT              = interface->set_signal_in  <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
+   in_MEMORY_IN_DATA_RA               = interface->set_signal_in  <Tgeneral_data_t   > ("data_ra"     ,_param->_size_general_data     );
+   in_MEMORY_IN_DATA_RB               = interface->set_signal_in  <Tgeneral_data_t   > ("data_rb"     ,_param->_size_general_data     );
+// in_MEMORY_IN_DATA_RC               = interface->set_signal_in  <Tspecial_data_t   > ("data_rc"     ,_param->_size_special_data     );
+   in_MEMORY_IN_WRITE_RD              = interface->set_signal_in  <Tcontrol_t        > ("write_rd"    ,1                              );
+   in_MEMORY_IN_NUM_REG_RD            = interface->set_signal_in  <Tgeneral_address_t> ("num_reg_rd"  ,1                              );
+// in_MEMORY_IN_WRITE_RE              = interface->set_signal_in  <Tcontrol_t        > ("write_re"    ,1                              );
+// in_MEMORY_IN_NUM_REG_RE            = interface->set_signal_in  <Tspecial_address_t> ("num_reg_re"  ,1                              );
+    }
+
+    // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface_fifo * interface = _interfaces->set_interface("memory_out"
+#ifdef POSITION
+							      ,OUT
+							      ,EAST
+							      ,"Instruction to write queue"
+#endif
+							      );
+
+      out_MEMORY_OUT_VAL         = interface->set_signal_valack_out(VAL);
+       in_MEMORY_OUT_ACK         = interface->set_signal_valack_in (ACK);
+      out_MEMORY_OUT_CONTEXT_ID  = interface->set_signal_out <Tcontext_t        > ("context_id"  ,_param->_size_context_id       );
+      out_MEMORY_OUT_PACKET_ID   = interface->set_signal_out <Tpacket_t         > ("packet_id"   ,_param->_size_packet_id        );
+#ifdef HAVE_MEMORY_OUT_OPERATION
+      out_MEMORY_OUT_OPERATION   = interface->set_signal_out <Toperation_t      > ("operation"   ,_param->_size_operation        );
+#endif
+#ifdef HAVE_MEMORY_OUT_TYPE
+      out_MEMORY_OUT_TYPE        = interface->set_signal_out <Ttype_t           > ("type"        ,_param->_size_type             );
+#endif
+      out_MEMORY_OUT_WRITE_RD    = interface->set_signal_out <Tcontrol_t        > ("write_rd"    ,1                              );
+      out_MEMORY_OUT_NUM_REG_RD  = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rd"  ,_param->_size_general_register );
+      out_MEMORY_OUT_DATA_RD     = interface->set_signal_out <Tgeneral_data_t   > ("data_rd"     ,_param->_size_general_data     );
+//    out_MEMORY_OUT_WRITE_RE    = interface->set_signal_out <Tcontrol_t        > ("write_rd"    ,1                              );
+//    out_MEMORY_OUT_NUM_REG_RE  = interface->set_signal_out <Tspecial_address_t> ("num_reg_re"  ,_param->_size_general_register );
+//    out_MEMORY_OUT_DATA_RE     = interface->set_signal_out <Tspecial_data_t   > ("data_re"     ,_param->_size_general_data     );
+      out_MEMORY_OUT_EXCEPTION   = interface->set_signal_out <Texception_t      > ("exception"   ,_param->_size_exception        );
+
+    }
+
+    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface_fifo * interface = _interfaces->set_interface("dcache_req"
+#ifdef POSITION
+							      ,OUT
+							      ,NORTH
+							      ,"Request port to dcache"
+#endif
+							      );
+
+      out_DCACHE_REQ_VAL        = interface->set_signal_valack_out(VAL);
+       in_DCACHE_REQ_ACK        = interface->set_signal_valack_in (ACK);
+      out_DCACHE_REQ_CONTEXT_ID = interface->set_signal_out <Tcontext_t        > ("context_id",_param->_size_context_id  );
+      out_DCACHE_REQ_PACKET_ID  = interface->set_signal_out <Tpacket_t         > ("packet_id" ,_param->_size_packet_id   );
+      out_DCACHE_REQ_ADDRESS    = interface->set_signal_out <Tdcache_address_t > ("address"   ,_param->_size_dcache_address);
+      out_DCACHE_REQ_TYPE       = interface->set_signal_out <Tdcache_type_t    > ("type"      ,_param->_size_dcache_type );
+      out_DCACHE_REQ_UNCACHED   = interface->set_signal_out <Tcontrol_t        > ("uncached"  ,1);
+      out_DCACHE_REQ_WDATA      = interface->set_signal_out <Tdcache_data_t    > ("wdata"     ,_param->_size_general_data);
+    }
+    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface_fifo * interface = _interfaces->set_interface("dcache_rsp"
+#ifdef POSITION
+							      ,IN
+							      ,NORTH
+							      ,"Respons port from dcache"
+#endif
+							      );
+
+       in_DCACHE_RSP_VAL        = interface->set_signal_valack_in (VAL);
+      out_DCACHE_RSP_ACK        = interface->set_signal_valack_out(ACK);
+       in_DCACHE_RSP_CONTEXT_ID = interface->set_signal_in  <Tcontext_t     > ("context_id",_param->_size_context_id  );
+       in_DCACHE_RSP_PACKET_ID  = interface->set_signal_in  <Tpacket_t      > ("packet_id" ,_param->_size_packet_id   );
+       in_DCACHE_RSP_RDATA      = interface->set_signal_in  <Tdcache_data_t > ("rdata"     ,_param->_size_general_data);
+       in_DCACHE_RSP_ERROR      = interface->set_signal_in  <Tdcache_error_t> ("error"     ,_param->_size_dcache_error);
+    }
+    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    if (_param->_speculative_load == SPECULATIVE_LOAD_BYPASS)
+      {
+	out_BYPASS_MEMORY_VAL        = new SC_OUT(Tcontrol_t        ) * [_param->_size_load_queue];
+	out_BYPASS_MEMORY_CONTEXT_ID = new SC_OUT(Tcontext_t        ) * [_param->_size_load_queue];
+	out_BYPASS_MEMORY_NUM_REG    = new SC_OUT(Tgeneral_address_t) * [_param->_size_load_queue];
+	out_BYPASS_MEMORY_DATA       = new SC_OUT(Tgeneral_data_t   ) * [_param->_size_load_queue];
+	
+	for (uint32_t i=0; i<_param->_size_load_queue; i++)
+	  {
+	    Interface_fifo * interface = _interfaces->set_interface("memory_out"
+#ifdef POSITION
+								    ,OUT
+								    ,NORTH
+								    ,"Bypass between the load queue and the reservation station"
+#endif
+								    );
+	    
+	    out_BYPASS_MEMORY_VAL        [i] = interface->set_signal_valack_out(VAL);
+	    out_BYPASS_MEMORY_CONTEXT_ID [i] = interface->set_signal_out <Tcontext_t        > ("context_id", _param->_size_context_id);
+	    out_BYPASS_MEMORY_NUM_REG    [i] = interface->set_signal_out <Tgeneral_address_t> ("num_reg"   , _param->_size_general_register);
+	    out_BYPASS_MEMORY_DATA       [i] = interface->set_signal_out <Tgeneral_data_t   > ("data"      , _param->_size_general_data);
+	  }
+      }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
+
+    _store_queue                      = new Tstore_queue_entry_t              [_param->_size_store_queue];
+    _load_queue	                      = new Tload_queue_entry_t               [_param->_size_load_queue];
+    _speculative_access_queue         = new Tspeculative_access_queue_entry_t [_param->_size_speculative_access_queue];
+    _speculative_access_queue_control = new morpheo::behavioural::generic::queue_control::Queue_Control (_param->_size_speculative_access_queue);
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp	(revision 59)
@@ -0,0 +1,117 @@
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::"
+
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::deallocation"
+  void Load_store_unit::deallocation (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    delete    in_CLOCK ;
+//#endif
+    delete    in_NRESET;
+
+    delete     in_MEMORY_IN_VAL         ;
+    delete    out_MEMORY_IN_ACK         ;
+    delete     in_MEMORY_IN_CONTEXT_ID  ;
+    delete     in_MEMORY_IN_PACKET_ID   ;
+    delete     in_MEMORY_IN_OPERATION   ;
+#ifdef HAVE_MEMORY_OUT_TYPE
+    delete     in_MEMORY_IN_TYPE        ;
+#endif
+    delete     in_MEMORY_IN_STORE_QUEUE_PTR_WRITE;
+    delete     in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE ;
+//  delete     in_MEMORY_IN_HAS_IMMEDIAT;
+    delete     in_MEMORY_IN_IMMEDIAT    ;
+    delete     in_MEMORY_IN_DATA_RA     ;
+    delete     in_MEMORY_IN_DATA_RB     ;
+//  delete     in_MEMORY_IN_DATA_RC     ;
+    delete     in_MEMORY_IN_WRITE_RD    ;
+    delete     in_MEMORY_IN_NUM_REG_RD  ;
+//  delete     in_MEMORY_IN_WRITE_RE    ;
+//  delete     in_MEMORY_IN_NUM_REG_RE  ;
+    
+    delete    out_MEMORY_OUT_VAL       ;
+    delete     in_MEMORY_OUT_ACK       ;
+    delete    out_MEMORY_OUT_CONTEXT_ID;
+    delete    out_MEMORY_OUT_PACKET_ID ;
+#ifdef HAVE_MEMORY_OUT_OPERATION
+    delete    out_MEMORY_OUT_OPERATION ;
+#endif
+#ifdef HAVE_MEMORY_OUT_TYPE
+    delete    out_MEMORY_OUT_TYPE      ;
+#endif
+    delete    out_MEMORY_OUT_WRITE_RD  ;
+    delete    out_MEMORY_OUT_NUM_REG_RD;
+    delete    out_MEMORY_OUT_DATA_RD   ;
+//  delete    out_MEMORY_OUT_WRITE_RE  ;
+//  delete    out_MEMORY_OUT_NUM_REG_RE;
+//  delete    out_MEMORY_OUT_DATA_RE   ;
+    delete    out_MEMORY_OUT_EXCEPTION ;
+    
+    delete    out_DCACHE_REQ_VAL       ;
+    delete     in_DCACHE_REQ_ACK       ;
+    delete    out_DCACHE_REQ_CONTEXT_ID;
+    delete    out_DCACHE_REQ_PACKET_ID ;
+    delete    out_DCACHE_REQ_ADDRESS   ;
+    delete    out_DCACHE_REQ_TYPE      ;
+    delete    out_DCACHE_REQ_UNCACHED  ;
+    delete    out_DCACHE_REQ_WDATA     ;
+    
+    delete     in_DCACHE_RSP_VAL       ;
+    delete    out_DCACHE_RSP_ACK       ;
+    delete     in_DCACHE_RSP_CONTEXT_ID;
+    delete     in_DCACHE_RSP_PACKET_ID ;
+    delete     in_DCACHE_RSP_RDATA     ;
+    delete     in_DCACHE_RSP_ERROR     ;
+    
+    if (_param->_speculative_load == SPECULATIVE_LOAD_BYPASS)
+      {
+	delete [] out_BYPASS_MEMORY_VAL       ;
+	delete [] out_BYPASS_MEMORY_CONTEXT_ID;
+	delete [] out_BYPASS_MEMORY_NUM_REG   ;
+	delete [] out_BYPASS_MEMORY_DATA      ;
+      }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    delete    _component;
+
+    delete [] _store_queue                      ;
+    delete [] _load_queue	                ;
+    delete    _speculative_access_queue_control ;
+    delete [] _speculative_access_queue         ;
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMealy_dcache.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMealy_dcache.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMealy_dcache.cpp	(revision 59)
@@ -0,0 +1,40 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::function_speculative_load_commit_genMealy_dcache"
+  void Load_store_unit::function_speculative_load_commit_genMealy_dcache (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMealy_insert.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMealy_insert.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMealy_insert.cpp	(revision 59)
@@ -0,0 +1,53 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::function_speculative_load_commit_genMealy_insert"
+  void Load_store_unit::function_speculative_load_commit_genMealy_insert (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    // ~~~~~[ Output "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    if (is_operation_memory_store(PORT_READ(in_MEMORY_IN_OPERATION)) == true)
+      {
+	internal_MEMORY_IN_ACK = 1;
+      }
+    else
+      {
+	internal_MEMORY_IN_ACK = not _speculative_access_queue_control->full();
+      }
+
+    PORT_WRITE(out_MEMORY_IN_ACK, internal_MEMORY_IN_ACK);
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMealy_retire.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMealy_retire.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMealy_retire.cpp	(revision 59)
@@ -0,0 +1,40 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::function_speculative_load_commit_genMealy_retire"
+  void Load_store_unit::function_speculative_load_commit_genMealy_retire (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMoore.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMoore.cpp	(revision 59)
@@ -0,0 +1,105 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::function_speculative_load_commit_genMoore"
+  void Load_store_unit::function_speculative_load_commit_genMoore (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // Test store and load queue
+    Tcontext_t         memory_out_context_id = 0;
+    Tpacket_t          memory_out_packet_id  = 0;
+#ifdef HAVE_MEMORY_OUT_OPERATION
+    Toperation_t       memory_out_operation  = 0;
+#endif
+#ifdef HAVE_MEMORY_OUT_TYPE
+    Ttype_t            memory_out_type       = 0;
+#endif
+    Tcontrol_t         memory_out_write_rd   = 0;
+    Tgeneral_address_t memory_out_num_reg_rd = 0;
+    Tgeneral_data_t    memory_out_data_rd    = 0;
+//  Tcontrol_t         memory_out_write_re   = 0;
+//  Tspecial_address_t memory_out_num_reg_re = 0;
+//  Tspecial_data_t    memory_out_data_re    = 0;
+    Texception_t       memory_out_exception  = 0;
+
+    internal_MEMORY_OUT_VAL          = 0;
+
+    // TODO : now only store queue
+
+    // Test an store must be commited.
+
+    
+    if (_store_queue [internal_MEMORY_STORE_QUEUE_PTR_READ]._state == STORE_QUEUE_COMMIT)
+      {
+	internal_MEMORY_OUT_VAL          = 1;
+	internal_MEMORY_OUT_SELECT_QUEUE = SELECT_STORE_QUEUE;
+	
+	memory_out_context_id= _store_queue [internal_MEMORY_STORE_QUEUE_PTR_READ]._context_id;
+	memory_out_packet_id = _store_queue [internal_MEMORY_STORE_QUEUE_PTR_READ]._packet_id ;
+#ifdef HAVE_MEMORY_OUT_OPERATION
+	memory_out_operation = _store_queue [internal_MEMORY_STORE_QUEUE_PTR_READ]._operation;
+#endif
+#ifdef HAVE_MEMORY_OUT_TYPE
+  	memory_out_type      = _store_queue [internal_MEMORY_STORE_QUEUE_PTR_READ]._type;
+#endif
+//	memory_out_write_rd  
+//	memory_out_num_reg_rd
+//	memory_out_data_rd   
+	memory_out_exception = _store_queue [internal_MEMORY_STORE_QUEUE_PTR_READ]._exception;
+      }
+
+    PORT_WRITE(out_MEMORY_OUT_VAL       , internal_MEMORY_OUT_VAL);
+
+    PORT_WRITE(out_MEMORY_OUT_CONTEXT_ID, memory_out_context_id);
+    PORT_WRITE(out_MEMORY_OUT_PACKET_ID , memory_out_packet_id );
+#ifdef HAVE_MEMORY_OUT_OPERATION
+    PORT_WRITE(out_MEMORY_OUT_OPERATION , memory_out_operation );
+#endif
+#ifdef HAVE_MEMORY_OUT_TYPE
+    PORT_WRITE(out_MEMORY_OUT_TYPE      , memory_out_type      );
+#endif
+    PORT_WRITE(out_MEMORY_OUT_WRITE_RD  , memory_out_write_rd  );
+    PORT_WRITE(out_MEMORY_OUT_NUM_REG_RD, memory_out_num_reg_rd);
+    PORT_WRITE(out_MEMORY_OUT_DATA_RD   , memory_out_data_rd   );
+//  PORT_WRITE(out_MEMORY_OUT_WRITE_RE  , memory_out_write_re  );
+//  PORT_WRITE(out_MEMORY_OUT_NUM_REG_RE, memory_out_num_reg_re);
+//  PORT_WRITE(out_MEMORY_OUT_DATA_RE   , memory_out_data_re   );
+    PORT_WRITE(out_MEMORY_OUT_EXCEPTION , memory_out_exception );
+
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp	(revision 59)
@@ -0,0 +1,234 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::function_speculative_load_commit_transition"
+  void Load_store_unit::function_speculative_load_commit_transition (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    if (PORT_READ(in_NRESET) == 0)
+      {
+	// Reset : clear all queue
+	_speculative_access_queue_control->clear();
+	internal_MEMORY_STORE_QUEUE_PTR_READ = 0;
+	internal_MEMORY_LOAD_QUEUE_PTR_READ  = 0;
+
+	for (uint32_t i=0; i< _param->_size_store_queue             ; i++)
+	  _store_queue              [i]._state = STORE_QUEUE_EMPTY;
+
+	for (uint32_t i=0; i< _param->_size_load_queue              ; i++)
+	  _load_queue               [i]._state = LOAD_QUEUE_EMPTY;
+
+	for (uint32_t i=0; i< _param->_size_speculative_access_queue; i++)
+	  _speculative_access_queue [i]._state = SPECULATIVE_ACCESS_QUEUE_EMPTY;
+      }
+    else
+      {
+	//================================================================
+	// Interface "MEMORY_IN"
+	//================================================================
+
+        if ((PORT_READ(in_MEMORY_IN_VAL) == 1) and
+            (    internal_MEMORY_IN_ACK  == 1))
+          {
+	    // Test operation :
+	    //~~~~~~~~~~~~~~~~~
+	    //  store  in store_queue
+	    //  load   in speculation_access_queue
+	    //  others in speculation_access_queue
+
+	    Toperation_t    operation           = PORT_READ(in_MEMORY_IN_OPERATION);
+	    Tgeneral_data_t address             = (PORT_READ(in_MEMORY_IN_IMMEDIAT) +
+						   PORT_READ(in_MEMORY_IN_DATA_RA ));
+	    
+	    bool            exception_alignement= (mask_memory_access(operation) & address) != 0;
+						    
+	    if (is_operation_memory_store(operation) == true)
+	      {
+		// =======================
+		// ===== STORE_QUEUE =====
+		// =======================
+		// There a two store request type :
+		//   - first is operation with address and data
+		//   - second is the information of re order buffer : the store become not speculative and can access at the data cache
+
+		log_printf(TRACE,Load_store_unit,FUNCTION,"store_queue");
+		log_printf(TRACE,Load_store_unit,FUNCTION," * PUSH");
+		
+		// Write pointer is define in rename stage :
+		Tlsq_ptr_t           index         = PORT_READ(in_MEMORY_IN_STORE_QUEUE_PTR_WRITE);
+		log_printf(TRACE,Load_store_unit,FUNCTION,"   * index         : %d",index);
+		
+		// Need read : state and exception.
+		Tstore_queue_state_t old_state     = _store_queue [index]._state;
+		Tstore_queue_state_t new_state     = old_state;
+		bool                 update_info   = false;
+
+		Texception_t         old_exception = _store_queue [index]._exception;
+		Texception_t         new_exception = old_exception;
+
+		// Compute next state
+		switch (old_state)
+		  {
+		  case STORE_QUEUE_EMPTY                   :
+		    {
+		      if (is_operation_memory_store_head(operation) == true)
+			{
+			  new_state = STORE_QUEUE_NO_VALID_NO_SPECULATIVE;
+
+			  // test if is a speculation
+			  if (operation == OPERATION_MEMORY_STORE_HEAD_KO)
+			    new_exception = EXCEPTION_MEMORY_MISS_SPECULATION;
+			  else
+			    new_exception = EXCEPTION_MEMORY_NONE;
+			}
+		      else
+			{
+			  new_state = STORE_QUEUE_VALID_SPECULATIVE;
+
+			  // Test if have an exception
+			  if (exception_alignement == true)
+			    new_exception = EXCEPTION_MEMORY_ALIGNMENT;
+			  else
+			    new_exception = EXCEPTION_MEMORY_NONE;
+
+			  update_info = true;
+			}
+		      break;
+		    }
+		  case STORE_QUEUE_NO_VALID_NO_SPECULATIVE :
+		    {
+// 		      if (is_operation_memory_store_head(operation) == false)
+// 			{
+			  new_state = STORE_QUEUE_VALID_NO_SPECULATIVE;
+
+			  // Test if have a new exception (priority : miss_speculation)
+			  if ((old_exception == EXCEPTION_MEMORY_NONE) and
+			      (exception_alignement == true))
+			    new_exception = EXCEPTION_MEMORY_ALIGNMENT;
+
+			  update_info = true;
+			  break;
+// 			}
+		    }
+		  case STORE_QUEUE_VALID_SPECULATIVE       :
+		    {
+// 		      if (is_operation_memory_store_head(operation) == true)
+// 			{
+			  new_state = STORE_QUEUE_VALID_NO_SPECULATIVE;
+
+			  if (operation == OPERATION_MEMORY_STORE_HEAD_KO)
+			    new_exception = EXCEPTION_MEMORY_MISS_SPECULATION;
+
+			  break;
+// 			}
+		    }
+		  case STORE_QUEUE_VALID_NO_SPECULATIVE    :
+		  case STORE_QUEUE_COMMIT                  :
+		    {
+		      ErrorMorpheo("<Load_store_unit::function_speculative_load_commit_transition> Invalid state and operation");
+		    }
+		  }
+
+		_store_queue [index]._state     = new_state;
+		_store_queue [index]._exception = new_exception;
+		
+		if (update_info == true)
+		  {
+		    log_printf(TRACE,Load_store_unit,FUNCTION,"   * Update information");
+
+		    _store_queue [index]._context_id           = PORT_READ(in_MEMORY_IN_CONTEXT_ID  );
+		    _store_queue [index]._packet_id            = PORT_READ(in_MEMORY_IN_PACKET_ID   );
+#ifdef HAVE_MEMORY_OUT_OPERATION
+		    _store_queue [index]._operation            = operation;
+#endif
+#ifdef HAVE_MEMORY_OUT_TYPE
+		    _store_queue [index]._type                 = PORT_READ(in_MEMORY_IN_TYPE        );
+#endif
+		    _store_queue [index]._load_queue_ptr_write = PORT_READ(in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE);
+		    _store_queue [index]._address              = address;
+		    _store_queue [index]._wdata                = PORT_READ(in_MEMORY_IN_DATA_RB     );
+//                  _store_queue [index]._write_rd             = PORT_READ(in_MEMORY_IN_WRITE_RD    );
+//                  _store_queue [index]._num_reg_rd           = PORT_READ(in_MEMORY_IN_NUM_REG_RD  );
+		  }
+	      }
+	    else
+	      {
+// 		// ====================================
+// 		// ===== SPECULATIVE_ACCESS_QUEUE =====
+// 		// ====================================
+
+// 		// In speculative access queue, they are many type's request
+// 		log_printf(TRACE,Load_store_unit,FUNCTION,"speculative_access_queue");
+// 		log_printf(TRACE,Load_store_unit,FUNCTION," * PUSH");
+		
+// 		// Write in reservation station
+// 		uint32_t index = _speculative_access_queue_control->push();
+		
+// 		log_printf(TRACE,Load_store_unit,FUNCTION,"   * index         : %d",index);
+	      }
+	  }
+
+	//================================================================
+	// Interface "MEMORY_OUT"
+	//================================================================
+
+        if ((    internal_MEMORY_OUT_VAL  == 1) and
+            (PORT_READ(in_MEMORY_OUT_ACK) == 1))
+          {
+	    switch (internal_MEMORY_OUT_SELECT_QUEUE)
+	      {
+	      case SELECT_STORE_QUEUE :
+		{
+		  // =======================
+		  // ===== STORE_QUEUE =====
+		  // =======================
+		  
+		  // Entry flush and increase the read pointer
+		  
+		  _store_queue [internal_MEMORY_STORE_QUEUE_PTR_READ]._state = STORE_QUEUE_EMPTY;
+		  
+		  internal_MEMORY_STORE_QUEUE_PTR_READ = (internal_MEMORY_STORE_QUEUE_PTR_READ+1)%_param->_size_store_queue;
+
+		  break;
+		}
+	      case SELECT_LOAD_QUEUE :
+	      case SELECT_LOAD_QUEUE_SPECULATIVE :
+		break;
+	      }
+	  }
+      }
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMealy_dcache.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMealy_dcache.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMealy_dcache.cpp	(revision 59)
@@ -0,0 +1,43 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::genMealy_dcache"
+  void Load_store_unit::genMealy_dcache (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    (this->*function_genMealy_dcache) ();
+    
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMealy_insert.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMealy_insert.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMealy_insert.cpp	(revision 59)
@@ -0,0 +1,43 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::genMealy_insert"
+  void Load_store_unit::genMealy_insert (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    (this->*function_genMealy_insert) ();
+    
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMealy_retire.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMealy_retire.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMealy_retire.cpp	(revision 59)
@@ -0,0 +1,43 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::genMealy_retire"
+  void Load_store_unit::genMealy_retire (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    (this->*function_genMealy_retire) ();
+    
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMoore.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMoore.cpp	(revision 59)
@@ -0,0 +1,43 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::genMoore"
+  void Load_store_unit::genMoore (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    (this->*function_genMoore) ();
+    
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_statistics.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_statistics.cpp	(revision 59)
@@ -0,0 +1,43 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::statistics"
+  string Load_store_unit::statistics (uint32_t depth)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    string txt = _stat->print(depth);
+    
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+
+    return txt;
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_transition.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_transition.cpp	(revision 59)
@@ -0,0 +1,51 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::transition"
+  void Load_store_unit::transition (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    (this->*function_transition) ();
+
+#ifdef STATISTICS
+    _stat->add();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    vhdl_testbench_transition ();
+#endif
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl.cpp	(revision 59)
@@ -0,0 +1,52 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::vhdl"
+  void Load_store_unit::vhdl (void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    Vhdl * vhdl = new Vhdl (_name);
+
+    _interfaces->set_port(vhdl);
+    _component->vhdl_instance(vhdl);
+
+    vhdl_declaration (vhdl);
+    vhdl_body        (vhdl);
+
+    vhdl->generate_file();
+
+    delete vhdl;
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl_body.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl_body.cpp	(revision 59)
@@ -0,0 +1,39 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::vhdl_body"
+  void Load_store_unit::vhdl_body (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    vhdl->set_body ("");
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl_declaration.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl_declaration.cpp	(revision 59)
@@ -0,0 +1,38 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::vhdl_declaration"
+  void Load_store_unit::vhdl_declaration (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl_testbench_transition.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_vhdl_testbench_transition.cpp	(revision 59)
@@ -0,0 +1,44 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::vhdl_testbench_transition"
+  void Load_store_unit::vhdl_testbench_transition ()
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    // Evaluation before read the ouput signal
+//     sc_start(0);
+
+    _interfaces->testbench();
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp	(revision 59)
@@ -0,0 +1,107 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::Parameters"
+  Parameters::Parameters (uint32_t            size_store_queue       ,
+			  uint32_t            size_load_queue        ,
+			  uint32_t            nb_port_check          ,
+			  uint32_t            size_speculative_access_queue,
+			  Tspeculative_load_t speculative_load       ,
+			  uint32_t            nb_context             ,
+			  uint32_t            nb_packet              ,
+			  uint32_t            size_general_data      ,
+			  uint32_t            nb_general_register    ,
+			  uint32_t            nb_operation           ,
+			  uint32_t            nb_type                			  
+			  ):
+    _size_store_queue        (size_store_queue       ),
+    _size_load_queue         (size_load_queue        ),
+    _size_speculative_access_queue (size_speculative_access_queue),
+    _nb_port_check           (nb_port_check          ),
+    _speculative_load        (speculative_load       ),
+    _nb_context              (nb_context             ),
+    _nb_packet               (nb_packet              ),
+    _size_general_data       (size_general_data      ),
+    _nb_general_register     (nb_general_register    ),
+    _nb_operation            (nb_operation           ),
+    _nb_type                 (nb_type                ),
+    
+    _size_address_store_queue              (static_cast<uint32_t>(ceil(log2(size_store_queue             )))),
+    _size_address_load_queue               (static_cast<uint32_t>(ceil(log2(size_load_queue              )))),
+    _size_address_speculative_access_queue (static_cast<uint32_t>(ceil(log2(size_speculative_access_queue)))),
+
+    _size_context_id         (static_cast<uint32_t>(ceil(log2(nb_context         )))),
+    _size_packet_id          (static_cast<uint32_t>(ceil(log2(nb_packet          )))),
+    _size_general_register   (static_cast<uint32_t>(ceil(log2(nb_general_register)))),
+    _size_operation          (static_cast<uint32_t>(ceil(log2(nb_operation       )))),
+    _size_type               (static_cast<uint32_t>(ceil(log2(nb_type            ))))  
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    test();
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::Parameters (copy)"
+  Parameters::Parameters (Parameters & param):
+    _size_store_queue        (param._size_store_queue       ),
+    _size_load_queue         (param._size_load_queue        ),
+    _size_speculative_access_queue (param._size_speculative_access_queue),
+    _nb_port_check           (param._nb_port_check          ),
+    _speculative_load        (param._speculative_load       ),
+    _nb_context              (param._nb_context             ),
+    _nb_packet               (param._nb_packet              ),
+    _size_general_data       (param._size_general_data      ),
+    _nb_general_register     (param._nb_general_register    ),
+    _nb_operation            (param._nb_operation           ),
+    _nb_type                 (param._nb_type                ),
+
+    _size_address_store_queue              (param._size_address_store_queue             ),
+    _size_address_load_queue               (param._size_address_load_queue              ),
+    _size_address_speculative_access_queue (param._size_address_speculative_access_queue),
+
+    _size_context_id         (param._nb_context             ),
+    _size_packet_id          (param._nb_packet              ),
+    _size_general_register   (param._nb_general_register    ),
+    _size_operation          (param._nb_operation           ),
+    _size_type               (param._nb_type                )
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    test();
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::~Parameters"
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters_msg_error.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters_msg_error.cpp	(revision 59)
@@ -0,0 +1,59 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::msg_error"
+  string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    
+    string msg = "";
+
+    switch (_speculative_load)
+      {
+      case SPECULATIVE_LOAD_COMMIT :
+	{
+	  break;
+	}
+      case NO_SPECULATIVE_LOAD     :
+      case SPECULATIVE_LOAD_ACCESS :
+      case SPECULATIVE_LOAD_BYPASS :
+      default                      :
+	{
+	  msg += "  - Speculative load scheme is not supported : " +toString(_speculative_load);
+	  break;
+	}
+      }
+
+    return msg;
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters_print.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters_print.cpp	(revision 59)
@@ -0,0 +1,71 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::print"
+  string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    XML xml ("load_store_unit");
+
+    xml.balise_open("load_store_unit");
+    xml.singleton_begin("size_store_queue       "); xml.attribut("value",toString(_size_store_queue       )); xml.singleton_end();
+    xml.singleton_begin("size_load_queue        "); xml.attribut("value",toString(_size_load_queue        )); xml.singleton_end();
+    xml.singleton_begin("size_speculative_access_queue"); xml.attribut("value",toString(_size_speculative_access_queue)); xml.singleton_end();
+    xml.singleton_begin("nb_port_check          "); xml.attribut("value",toString(_nb_port_check          )); xml.singleton_end();
+    xml.singleton_begin("speculative_load       "); xml.attribut("value",toString(_speculative_load       )); xml.singleton_end();
+    xml.singleton_begin("nb_context             "); xml.attribut("value",toString(_nb_context             )); xml.singleton_end();
+    xml.singleton_begin("nb_packet              "); xml.attribut("value",toString(_nb_packet              )); xml.singleton_end();
+    xml.singleton_begin("size_general_data      "); xml.attribut("value",toString(_size_general_data      )); xml.singleton_end();
+    xml.singleton_begin("nb_general_register    "); xml.attribut("value",toString(_nb_general_register    )); xml.singleton_end();
+    xml.singleton_begin("nb_operation           "); xml.attribut("value",toString(_nb_operation           )); xml.singleton_end();
+    xml.singleton_begin("nb_type                "); xml.attribut("value",toString(_nb_type                )); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+    
+    return xml.get_body(depth);
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::operator<<"
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Parameters & x)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+    
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics.cpp	(revision 59)
@@ -0,0 +1,52 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Statistics.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::Statistics"
+  Statistics::Statistics (string                                        name                       ,
+			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			  Parameters                                  * parameters
+			  ) :
+    morpheo::behavioural::Statistics(name                  ,
+				     parameters_statistics ),
+    _parameters(parameters)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::~Statistics"
+  Statistics::~Statistics () 
+  { 
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics_add.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics_add.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics_add.cpp	(revision 59)
@@ -0,0 +1,41 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::add"
+  void Statistics::add ()
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics_print.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics_print.cpp	(revision 59)
@@ -0,0 +1,65 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::print"
+  string Statistics::print (uint32_t depth)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "<load_store_unit name=\"" << _name << "\" >" << endl
+        << print_body(depth+1) << endl
+	<< tab << "</load_store_unit>" << endl;
+    
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+
+    return msg.str();
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::operator<<"
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Statistics & x)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics_print_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics_print_body.cpp	(revision 59)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Statistics_print_body.cpp	(revision 59)
@@ -0,0 +1,49 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_execute_unit {
+namespace execute_unit {
+namespace load_store_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Load_store_unit::print_body"
+  string Statistics::print_body (uint32_t depth)
+  {
+    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "";
+    
+    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
+
+    return msg.str();
+  };
+
+}; // end namespace load_store_unit
+}; // end namespace execute_unit
+}; // end namespace multi_execute_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
