Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/Makefile	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/Makefile	(revision 54)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libRead_queue.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_Read_unit/Read_unit/Read_queue/Makefile.defs
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/Makefile.defs	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/Makefile.defs	(revision 54)
@@ -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_Read_unit/Read_unit/Read_queue/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/Makefile.deps	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/Makefile.deps	(revision 54)
@@ -0,0 +1,33 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+Read_queue			= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+
+#-----[ Library ]------------------------------------------
+Read_queue_LIBRARY		= 	-lRead_queue	\
+					$(Behavioural_LIBRARY)	
+
+Read_queue_DIR_LIBRARY		=	-L$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/lib	\
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+Read_queue_library		: 
+				@\
+				$(MAKE) Behavioural_library; \
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue --makefile=Makefile;
+	
+Read_queue_library_clean	: 
+				@\
+				$(MAKE) Behavioural_library_clean; \
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue --makefile=Makefile clean;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/Makefile	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/Makefile	(revision 54)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(Read_queue_LIBRARY)
+
+DIR_LIBRARY			= $(Read_queue_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: Read_queue_library
+
+library_clean			: Read_queue_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_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg	(revision 54)
@@ -0,0 +1,12 @@
+Read_queue
+2	8	*2	# size_read_queue    
+4	4	*2	# nb_context         
+32	32	*2	# nb_packet          
+16	16	+1	# size_general_data  
+8	8	+1	# size_special_data  
+16	16	*2	# nb_general_register
+2 	2 	+1	# nb_special_register
+40	40	+1	# nb_operation       
+6	6	+1	# nb_type            
+4	4	*2	# nb_gpr_write
+2	2	*2	# nb_spr_write
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg	(revision 54)
@@ -0,0 +1,12 @@
+Read_queue
+4	4	*2	# size_read_queue    
+4	4	*2	# nb_context         
+32	32	*2	# nb_packet          
+16	16	+1	# size_general_data  
+8	8	+1	# size_special_data  
+16	16	*2	# nb_general_register
+2 	2 	+1	# nb_special_register
+40	40	+1	# nb_operation       
+6	6	+1	# nb_type            
+1	4	*2	# nb_gpr_write
+1	4	*2	# nb_spr_write
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/include/test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/include/test.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/include/test.h	(revision 54)
@@ -0,0 +1,62 @@
+/*
+ * $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_Read_unit/Read_unit/Read_queue/include/Read_queue.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_read_unit;
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit;
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue;
+
+void test    (string name,
+	      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::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_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp	(revision 54)
@@ -0,0 +1,91 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/include/test.h"
+
+#define NB_PARAMS 0
+
+void usage (int argc, char * argv[])
+{
+  cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
+       << "list_params is :" << endl
+       << " - size_read_queue     (unsigned int)" << endl
+       << " - nb_context          (unsigned int)" << endl
+       << " - nb_packet           (unsigned int)" << endl
+       << " - size_general_data   (unsigned int)" << endl
+       << " - size_special_data   (unsigned int)" << endl
+       << " - nb_general_register (unsigned int)" << endl
+       << " - nb_special_register (unsigned int)" << endl
+       << " - nb_operation        (unsigned int)" << endl
+       << " - nb_type             (unsigned int)" << endl
+       << " - nb_gpr_write        (unsigned int)" << endl
+       << " - nb_spr_write        (unsigned int)" << 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_read_queue     = atoi(argv[ 2]);
+  const uint32_t nb_context          = atoi(argv[ 3]);
+  const uint32_t nb_packet           = atoi(argv[ 4]);
+  const uint32_t size_general_data   = atoi(argv[ 5]);
+  const uint32_t size_special_data   = atoi(argv[ 6]);
+  const uint32_t nb_general_register = atoi(argv[ 7]);
+  const uint32_t nb_special_register = atoi(argv[ 8]);
+  const uint32_t nb_operation        = atoi(argv[ 9]);
+  const uint32_t nb_type             = atoi(argv[10]);
+  const uint32_t nb_gpr_write        = atoi(argv[11]);
+  const uint32_t nb_spr_write        = atoi(argv[12]);
+
+  try 
+    {
+      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters
+	( size_read_queue    
+	 ,nb_context         
+	 ,nb_packet          
+	 ,size_general_data  
+	 ,size_special_data  
+	 ,nb_general_register
+	 ,nb_special_register
+	 ,nb_operation       
+	 ,nb_type            
+	 ,nb_gpr_write
+	 ,nb_spr_write
+	  );
+      
+      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_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp	(revision 54)
@@ -0,0 +1,597 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/include/test.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h"
+#include "Common/include/Test.h"
+
+#define NB_ITERATION  512
+#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)
+
+void test (string name,
+	   morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters * _param)
+{
+  cout << "<" << name << "> : Simulation SystemC" << endl;
+
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
+  Read_queue * _Read_queue = new Read_queue (name.c_str(),
+#ifdef STATISTICS
+					     _parameters_statistics,
+#endif
+					     _param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  string rename;
+
+  sc_clock                               * CLOCK = new sc_clock ("clock", 1.0, 0.5);
+  sc_signal<Tcontrol_t>                  * NRESET= new sc_signal<Tcontrol_t> ("NRESET");
+
+    // ~~~~~[ Interface "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_VAL          = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_VAL         ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_ACK          = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_ACK         ");
+  sc_signal<Tcontext_t         >         * READ_QUEUE_IN_CONTEXT_ID   = new sc_signal<Tcontext_t         >         ("READ_QUEUE_IN_CONTEXT_ID  ");
+  sc_signal<Tpacket_t          >         * READ_QUEUE_IN_PACKET_ID    = new sc_signal<Tpacket_t          >         ("READ_QUEUE_IN_PACKET_ID   ");
+  sc_signal<uint32_t           >         * READ_QUEUE_IN_OPERATION    = new sc_signal<uint32_t           >         ("READ_QUEUE_IN_OPERATION   ");
+  sc_signal<Ttype_t            >         * READ_QUEUE_IN_TYPE         = new sc_signal<Ttype_t            >         ("READ_QUEUE_IN_TYPE        ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_HAS_IMMEDIAT = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_HAS_IMMEDIAT");
+  sc_signal<Tgeneral_data_t    >         * READ_QUEUE_IN_IMMEDIAT     = new sc_signal<Tgeneral_data_t    >         ("READ_QUEUE_IN_IMMEDIAT    ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_READ_RA      = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_READ_RA     ");
+  sc_signal<Tgeneral_address_t >         * READ_QUEUE_IN_NUM_REG_RA   = new sc_signal<Tgeneral_address_t >         ("READ_QUEUE_IN_NUM_REG_RA  ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_READ_RB      = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_READ_RB     ");
+  sc_signal<Tgeneral_address_t >         * READ_QUEUE_IN_NUM_REG_RB   = new sc_signal<Tgeneral_address_t >         ("READ_QUEUE_IN_NUM_REG_RB  ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_READ_RC      = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_READ_RC     ");
+  sc_signal<Tspecial_address_t >         * READ_QUEUE_IN_NUM_REG_RC   = new sc_signal<Tspecial_address_t >         ("READ_QUEUE_IN_NUM_REG_RC  ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_WRITE_RD     = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_WRITE_RD    ");
+  sc_signal<Tgeneral_address_t >         * READ_QUEUE_IN_NUM_REG_RD   = new sc_signal<Tgeneral_address_t >         ("READ_QUEUE_IN_NUM_REG_RD  ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_WRITE_RE     = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_WRITE_RE    ");
+  sc_signal<Tspecial_address_t >         * READ_QUEUE_IN_NUM_REG_RE   = new sc_signal<Tspecial_address_t >         ("READ_QUEUE_IN_NUM_REG_RE  ");
+
+    // ~~~~~[ Interface "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_VAL         = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_VAL         ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_ACK         = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_ACK         ");
+  sc_signal<Tcontext_t         >         * READ_QUEUE_OUT_CONTEXT_ID  = new sc_signal<Tcontext_t         >         ("READ_QUEUE_OUT_CONTEXT_ID  ");
+  sc_signal<Tpacket_t          >         * READ_QUEUE_OUT_PACKET_ID   = new sc_signal<Tpacket_t          >         ("READ_QUEUE_OUT_PACKET_ID   ");
+  sc_signal<uint32_t           >         * READ_QUEUE_OUT_OPERATION   = new sc_signal<uint32_t           >         ("READ_QUEUE_OUT_OPERATION   ");
+  sc_signal<Ttype_t            >         * READ_QUEUE_OUT_TYPE        = new sc_signal<Ttype_t            >         ("READ_QUEUE_OUT_TYPE        ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_HAS_IMMEDIAT= new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_HAS_IMMEDIAT");
+  sc_signal<Tgeneral_data_t    >         * READ_QUEUE_OUT_IMMEDIAT    = new sc_signal<Tgeneral_data_t    >         ("READ_QUEUE_OUT_IMMEDIAT    ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_READ_RA     = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_READ_RA     ");
+  sc_signal<Tgeneral_address_t >         * READ_QUEUE_OUT_NUM_REG_RA  = new sc_signal<Tgeneral_address_t >         ("READ_QUEUE_OUT_NUM_REG_RA  ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_DATA_RA_VAL = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_DATA_RA_VAL ");
+  sc_signal<Tgeneral_data_t    >         * READ_QUEUE_OUT_DATA_RA     = new sc_signal<Tgeneral_data_t    >         ("READ_QUEUE_OUT_DATA_RA     ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_READ_RB     = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_READ_RB     ");
+  sc_signal<Tgeneral_address_t >         * READ_QUEUE_OUT_NUM_REG_RB  = new sc_signal<Tgeneral_address_t >         ("READ_QUEUE_OUT_NUM_REG_RB  ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_DATA_RB_VAL = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_DATA_RB_VAL ");
+  sc_signal<Tgeneral_data_t    >         * READ_QUEUE_OUT_DATA_RB     = new sc_signal<Tgeneral_data_t    >         ("READ_QUEUE_OUT_DATA_RB     ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_READ_RC     = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_READ_RC     ");
+  sc_signal<Tspecial_address_t >         * READ_QUEUE_OUT_NUM_REG_RC  = new sc_signal<Tspecial_address_t >         ("READ_QUEUE_OUT_NUM_REG_RC  ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_DATA_RC_VAL = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_DATA_RC_VAL ");
+  sc_signal<Tspecial_data_t    >         * READ_QUEUE_OUT_DATA_RC     = new sc_signal<Tspecial_data_t    >         ("READ_QUEUE_OUT_DATA_RC     ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_WRITE_RD    = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_WRITE_RD    ");
+  sc_signal<Tgeneral_address_t >         * READ_QUEUE_OUT_NUM_REG_RD  = new sc_signal<Tgeneral_address_t >         ("READ_QUEUE_OUT_NUM_REG_RD  ");
+  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_WRITE_RE    = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_WRITE_RE    ");
+  sc_signal<Tspecial_address_t >         * READ_QUEUE_OUT_NUM_REG_RE  = new sc_signal<Tspecial_address_t >         ("READ_QUEUE_OUT_NUM_REG_RE  ");
+
+    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  sc_signal<Tcontrol_t         > ** GPR_READ_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_gpr_read];
+  sc_signal<Tcontrol_t         > ** GPR_READ_ACK        = new sc_signal<Tcontrol_t         > * [_param->_nb_gpr_read];
+  sc_signal<Tcontext_t         > ** GPR_READ_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_gpr_read];
+  sc_signal<Tgeneral_address_t > ** GPR_READ_NUM_REG    = new sc_signal<Tgeneral_address_t > * [_param->_nb_gpr_read];
+  sc_signal<Tgeneral_data_t    > ** GPR_READ_DATA       = new sc_signal<Tgeneral_data_t    > * [_param->_nb_gpr_read];
+  sc_signal<Tcontrol_t         > ** GPR_READ_DATA_VAL   = new sc_signal<Tcontrol_t         > * [_param->_nb_gpr_read];
+
+  for (uint32_t i=0; i<_param->_nb_gpr_read; i++)
+    {
+      rename = "GPR_READ_"+toString(i)+"_VAL";   
+      GPR_READ_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
+      rename = "GPR_READ_"+toString(i)+"_ACK";     
+      GPR_READ_ACK        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
+      rename = "GPR_READ_"+toString(i)+"_CONTEXT_ID";
+      GPR_READ_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
+      rename = "GPR_READ_"+toString(i)+"_NUM_REG"; 
+      GPR_READ_NUM_REG    [i] = new sc_signal<Tgeneral_address_t > (rename.c_str());
+      rename = "GPR_READ_"+toString(i)+"_DATA";    
+      GPR_READ_DATA       [i] = new sc_signal<Tgeneral_data_t    > (rename.c_str());
+      rename = "GPR_READ_"+toString(i)+"_DATA_VAL";
+      GPR_READ_DATA_VAL   [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
+    }
+
+    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  sc_signal<Tcontrol_t         > ** SPR_READ_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_spr_read];
+  sc_signal<Tcontrol_t         > ** SPR_READ_ACK        = new sc_signal<Tcontrol_t         > * [_param->_nb_spr_read];
+  sc_signal<Tcontext_t         > ** SPR_READ_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_spr_read];
+  sc_signal<Tspecial_address_t > ** SPR_READ_NUM_REG    = new sc_signal<Tspecial_address_t > * [_param->_nb_spr_read];
+  sc_signal<Tspecial_data_t    > ** SPR_READ_DATA       = new sc_signal<Tspecial_data_t    > * [_param->_nb_spr_read];
+  sc_signal<Tcontrol_t         > ** SPR_READ_DATA_VAL   = new sc_signal<Tcontrol_t         > * [_param->_nb_spr_read];
+
+  for (uint32_t i=0; i<_param->_nb_spr_read; i++)
+    {
+      rename = "SPR_READ_"+toString(i)+"_VAL";   
+      SPR_READ_VAL         [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
+      rename = "SPR_READ_"+toString(i)+"_ACK";     
+      SPR_READ_ACK         [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
+      rename = "SPR_READ_"+toString(i)+"_CONTEXT_ID"; 
+      SPR_READ_CONTEXT_ID  [i] = new sc_signal<Tcontext_t         > (rename.c_str());
+      rename = "SPR_READ_"+toString(i)+"_NUM_REG"; 
+      SPR_READ_NUM_REG     [i] = new sc_signal<Tspecial_address_t > (rename.c_str());
+      rename = "SPR_READ_"+toString(i)+"_DATA";    
+      SPR_READ_DATA        [i] = new sc_signal<Tspecial_data_t    > (rename.c_str());
+      rename = "SPR_READ_"+toString(i)+"_DATA_VAL";
+      SPR_READ_DATA_VAL    [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
+    }
+
+    // ~~~~~[ Interface "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  sc_signal<Tcontrol_t         > ** BYPASS_GPR_WRITE_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_gpr_write];
+  sc_signal<Tcontext_t         > ** BYPASS_GPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_gpr_write];
+  sc_signal<Tgeneral_address_t > ** BYPASS_GPR_WRITE_NUM_REG    = new sc_signal<Tgeneral_address_t > * [_param->_nb_gpr_write];
+  sc_signal<Tgeneral_data_t    > ** BYPASS_GPR_WRITE_DATA       = new sc_signal<Tgeneral_data_t    > * [_param->_nb_gpr_write];
+
+  for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+    {
+      rename = "BYPASS_GPR_WRITE_"+toString(i)+"_VAL"       ;
+      BYPASS_GPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
+      rename = "BYPASS_GPR_WRITE_"+toString(i)+"_CONTEXT_ID";
+      BYPASS_GPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
+      rename = "BYPASS_GPR_WRITE_"+toString(i)+"_NUM_REG"   ;
+      BYPASS_GPR_WRITE_NUM_REG    [i] = new sc_signal<Tgeneral_address_t > (rename.c_str());
+      rename = "BYPASS_GPR_WRITE_"+toString(i)+"_DATA"      ;
+      BYPASS_GPR_WRITE_DATA       [i] = new sc_signal<Tgeneral_data_t    > (rename.c_str());
+    }
+
+    // ~~~~~[ Interface "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  sc_signal<Tcontrol_t         > ** BYPASS_SPR_WRITE_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_spr_write];
+  sc_signal<Tcontext_t         > ** BYPASS_SPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_spr_write];
+  sc_signal<Tspecial_address_t > ** BYPASS_SPR_WRITE_NUM_REG    = new sc_signal<Tspecial_address_t > * [_param->_nb_spr_write];
+  sc_signal<Tspecial_data_t    > ** BYPASS_SPR_WRITE_DATA       = new sc_signal<Tspecial_data_t    > * [_param->_nb_spr_write];
+
+  for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+    {
+      rename = "BYPASS_SPR_WRITE_"+toString(i)+"_VAL"       ;
+      BYPASS_SPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
+      rename = "BYPASS_SPR_WRITE_"+toString(i)+"_CONTEXT_ID";
+      BYPASS_SPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
+      rename = "BYPASS_SPR_WRITE_"+toString(i)+"_NUM_REG"   ;
+      BYPASS_SPR_WRITE_NUM_REG    [i] = new sc_signal<Tspecial_address_t > (rename.c_str());
+      rename = "BYPASS_SPR_WRITE_"+toString(i)+"_DATA"      ;
+      BYPASS_SPR_WRITE_DATA       [i] = new sc_signal<Tspecial_data_t    > (rename.c_str());
+    }
+
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  cout << "<" << name << "> Instanciation of _Read_queue" << endl;
+  
+  (*(_Read_queue->in_CLOCK ))        (*(CLOCK));
+  (*(_Read_queue->in_NRESET))        (*(NRESET));
+
+  
+  (*(_Read_queue-> in_READ_QUEUE_IN_VAL            )) (*(READ_QUEUE_IN_VAL            ));
+  (*(_Read_queue->out_READ_QUEUE_IN_ACK            )) (*(READ_QUEUE_IN_ACK            ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_CONTEXT_ID     )) (*(READ_QUEUE_IN_CONTEXT_ID     ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_PACKET_ID      )) (*(READ_QUEUE_IN_PACKET_ID      ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_OPERATION      )) (*(READ_QUEUE_IN_OPERATION      ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_TYPE           )) (*(READ_QUEUE_IN_TYPE           ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_HAS_IMMEDIAT   )) (*(READ_QUEUE_IN_HAS_IMMEDIAT   ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_IMMEDIAT       )) (*(READ_QUEUE_IN_IMMEDIAT       ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_READ_RA        )) (*(READ_QUEUE_IN_READ_RA        ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_NUM_REG_RA     )) (*(READ_QUEUE_IN_NUM_REG_RA     ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_READ_RB        )) (*(READ_QUEUE_IN_READ_RB        ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_NUM_REG_RB     )) (*(READ_QUEUE_IN_NUM_REG_RB     ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_READ_RC        )) (*(READ_QUEUE_IN_READ_RC        ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_NUM_REG_RC     )) (*(READ_QUEUE_IN_NUM_REG_RC     ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_WRITE_RD       )) (*(READ_QUEUE_IN_WRITE_RD       ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_NUM_REG_RD     )) (*(READ_QUEUE_IN_NUM_REG_RD     ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_WRITE_RE       )) (*(READ_QUEUE_IN_WRITE_RE       ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_NUM_REG_RE     )) (*(READ_QUEUE_IN_NUM_REG_RE     ));
+
+  (*(_Read_queue->out_READ_QUEUE_OUT_VAL           )) (*(READ_QUEUE_OUT_VAL           )); 
+  (*(_Read_queue-> in_READ_QUEUE_OUT_ACK           )) (*(READ_QUEUE_OUT_ACK           )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_CONTEXT_ID    )) (*(READ_QUEUE_OUT_CONTEXT_ID    )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_PACKET_ID     )) (*(READ_QUEUE_OUT_PACKET_ID     )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_OPERATION     )) (*(READ_QUEUE_OUT_OPERATION     )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_TYPE          )) (*(READ_QUEUE_OUT_TYPE          )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_HAS_IMMEDIAT  )) (*(READ_QUEUE_OUT_HAS_IMMEDIAT  )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_IMMEDIAT      )) (*(READ_QUEUE_OUT_IMMEDIAT      )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_READ_RA       )) (*(READ_QUEUE_OUT_READ_RA       )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_NUM_REG_RA    )) (*(READ_QUEUE_OUT_NUM_REG_RA    )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RA_VAL   )) (*(READ_QUEUE_OUT_DATA_RA_VAL   )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RA       )) (*(READ_QUEUE_OUT_DATA_RA       )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_READ_RB       )) (*(READ_QUEUE_OUT_READ_RB       )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_NUM_REG_RB    )) (*(READ_QUEUE_OUT_NUM_REG_RB    )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RB_VAL   )) (*(READ_QUEUE_OUT_DATA_RB_VAL   )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RB       )) (*(READ_QUEUE_OUT_DATA_RB       )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_READ_RC       )) (*(READ_QUEUE_OUT_READ_RC       )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_NUM_REG_RC    )) (*(READ_QUEUE_OUT_NUM_REG_RC    )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RC_VAL   )) (*(READ_QUEUE_OUT_DATA_RC_VAL   )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RC       )) (*(READ_QUEUE_OUT_DATA_RC       )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_WRITE_RD      )) (*(READ_QUEUE_OUT_WRITE_RD      )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_NUM_REG_RD    )) (*(READ_QUEUE_OUT_NUM_REG_RD    )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_WRITE_RE      )) (*(READ_QUEUE_OUT_WRITE_RE      )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_NUM_REG_RE    )) (*(READ_QUEUE_OUT_NUM_REG_RE    )); 
+
+  for (uint32_t i=0; i<_param->_nb_gpr_read; i++)
+    {
+      (*(_Read_queue->out_GPR_READ_VAL         [i])) (*(GPR_READ_VAL         [i]));
+      (*(_Read_queue-> in_GPR_READ_ACK         [i])) (*(GPR_READ_ACK         [i]));
+      (*(_Read_queue->out_GPR_READ_CONTEXT_ID  [i])) (*(GPR_READ_CONTEXT_ID  [i]));
+      (*(_Read_queue->out_GPR_READ_NUM_REG     [i])) (*(GPR_READ_NUM_REG     [i]));
+      (*(_Read_queue-> in_GPR_READ_DATA        [i])) (*(GPR_READ_DATA        [i]));
+      (*(_Read_queue-> in_GPR_READ_DATA_VAL    [i])) (*(GPR_READ_DATA_VAL    [i]));
+    }
+  
+  for (uint32_t i=0; i<_param->_nb_spr_read; i++)
+    {
+      (*(_Read_queue->out_SPR_READ_VAL         [i])) (*(SPR_READ_VAL         [i]));
+      (*(_Read_queue-> in_SPR_READ_ACK         [i])) (*(SPR_READ_ACK         [i]));
+      (*(_Read_queue->out_SPR_READ_CONTEXT_ID  [i])) (*(SPR_READ_CONTEXT_ID  [i]));
+      (*(_Read_queue->out_SPR_READ_NUM_REG     [i])) (*(SPR_READ_NUM_REG     [i]));
+      (*(_Read_queue-> in_SPR_READ_DATA        [i])) (*(SPR_READ_DATA        [i]));
+      (*(_Read_queue-> in_SPR_READ_DATA_VAL    [i])) (*(SPR_READ_DATA_VAL    [i]));
+    }
+  
+  for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+    {
+      (*(_Read_queue-> in_BYPASS_GPR_WRITE_VAL        [i])) (*(BYPASS_GPR_WRITE_VAL        [i]));
+      (*(_Read_queue-> in_BYPASS_GPR_WRITE_CONTEXT_ID [i])) (*(BYPASS_GPR_WRITE_CONTEXT_ID [i]));
+      (*(_Read_queue-> in_BYPASS_GPR_WRITE_NUM_REG    [i])) (*(BYPASS_GPR_WRITE_NUM_REG    [i]));
+      (*(_Read_queue-> in_BYPASS_GPR_WRITE_DATA       [i])) (*(BYPASS_GPR_WRITE_DATA       [i]));
+    }
+  
+  for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+    {
+      (*(_Read_queue-> in_BYPASS_SPR_WRITE_VAL        [i])) (*(BYPASS_SPR_WRITE_VAL        [i]));
+      (*(_Read_queue-> in_BYPASS_SPR_WRITE_CONTEXT_ID [i])) (*(BYPASS_SPR_WRITE_CONTEXT_ID [i]));
+      (*(_Read_queue-> in_BYPASS_SPR_WRITE_NUM_REG    [i])) (*(BYPASS_SPR_WRITE_NUM_REG    [i]));
+      (*(_Read_queue-> in_BYPASS_SPR_WRITE_DATA       [i])) (*(BYPASS_SPR_WRITE_DATA       [i]));
+    }
+
+  cout << "<" << name << "> Start Simulation ............" << endl;
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  // Initialisation
+  const uint32_t nb_request = _param->_nb_packet;
+//const uint32_t seed       = 0;
+  const uint32_t seed       = static_cast<uint32_t>(time(NULL));
+  srand(seed);
+
+  Tcontext_t         _context_id [nb_request];
+  Tcontrol_t         _read_ra    [nb_request];
+  Tgeneral_address_t _num_reg_ra [nb_request];
+  Tcontrol_t         _read_rb    [nb_request];
+  Tgeneral_address_t _num_reg_rb [nb_request];
+  Tcontrol_t         _read_rc    [nb_request];
+  Tspecial_address_t _num_reg_rc [nb_request];
+
+  // emulation of registerFile
+  Tcontrol_t         _gpr_val    [_param->_nb_general_register][_param->_nb_context];
+  Tgeneral_data_t    _gpr        [_param->_nb_general_register][_param->_nb_context];
+  Tcontrol_t         _spr_val    [_param->_nb_special_register][_param->_nb_context];
+  Tspecial_data_t    _spr        [_param->_nb_special_register][_param->_nb_context];
+
+  SC_START(0);
+
+//   for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+//     BYPASS_GPR_WRITE_VAL    [i]->write (0);
+//   for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+//     BYPASS_SPR_WRITE_VAL    [i]->write (0);
+
+  NRESET->write(0);
+  SC_START(5);
+  NRESET->write(1);
+
+  LABEL("Loop of Test");
+
+  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
+    {
+      LABEL("Iteration "+toString(iteration));
+      int32_t percent_transaction_queue_in     = (rand()%50)+25;
+      int32_t percent_transaction_queue_out    = (rand()%50)+25;
+      int32_t percent_registerfile_valid       = (rand()%50)+25;
+      int32_t percent_transaction_registerfile = (rand()%50)+25;
+      int32_t percent_transaction_bypass       = (rand()%50)+25;
+      
+      LABEL("Initialisation");
+
+      for (uint32_t i=0; i<nb_request; i++)
+	{
+	  _context_id   [i] = rand()% _param->_nb_context            ;
+	  _read_ra      [i] = rand()% 2                              ;
+	  _num_reg_ra   [i] = rand()% _param->_nb_general_register   ;
+	  _read_rb      [i] = rand()% 2                              ;
+	  _num_reg_rb   [i] = rand()% _param->_nb_general_register   ;
+	  _read_rc      [i] = rand()% 2                              ;
+	  _num_reg_rc   [i] = rand()% _param->_nb_special_register   ;
+	}
+      
+      // emulation of registerFile
+      for (uint32_t j=0; j<_param->_nb_context; j++)
+	{
+	  for (uint32_t i=0; i<_param->_nb_general_register; i++)
+	    {
+	      _gpr_val      [i][j] = ((rand()%100) < percent_registerfile_valid);
+	      _gpr          [i][j] = rand()%(1<<_param->_size_general_data);
+	    }
+	  for (uint32_t i=0; i<_param->_nb_special_register; i++)
+	    {
+	      _spr_val      [i][j] = ((rand()%100) < percent_registerfile_valid);
+	      _spr          [i][j] = rand()%(1<<_param->_size_special_data);
+	    }
+	}
+      // End initialisation .......
+
+      uint32_t request_in  = 0;
+      uint32_t request_out = 0;
+
+      while (request_out < nb_request)
+	{
+	  if ((request_in < nb_request) and
+	      ((rand()%100) < percent_transaction_queue_in))
+	    {
+	      READ_QUEUE_IN_VAL         ->write(1);
+	      READ_QUEUE_IN_CONTEXT_ID  ->write(_context_id [request_in]);
+	      READ_QUEUE_IN_PACKET_ID   ->write(request_in);
+	      READ_QUEUE_IN_OPERATION   ->write(0);
+	      READ_QUEUE_IN_TYPE        ->write(0);
+	      READ_QUEUE_IN_HAS_IMMEDIAT->write(0);
+	      READ_QUEUE_IN_IMMEDIAT    ->write(0);
+	      READ_QUEUE_IN_READ_RA     ->write(_read_ra    [request_in]);
+	      READ_QUEUE_IN_NUM_REG_RA  ->write(_num_reg_ra [request_in]);
+	      READ_QUEUE_IN_READ_RB     ->write(_read_rb    [request_in]);
+	      READ_QUEUE_IN_NUM_REG_RB  ->write(_num_reg_rb [request_in]);
+	      READ_QUEUE_IN_READ_RC     ->write(_read_rc    [request_in]);
+	      READ_QUEUE_IN_NUM_REG_RC  ->write(_num_reg_rc [request_in]);
+	      READ_QUEUE_IN_WRITE_RD    ->write(0);
+	      READ_QUEUE_IN_NUM_REG_RD  ->write(0);
+	      READ_QUEUE_IN_WRITE_RE    ->write(0);
+	      READ_QUEUE_IN_NUM_REG_RE  ->write(0);
+	    }
+	  else
+	    {
+	      READ_QUEUE_IN_VAL         ->write(0);
+	    }
+
+	  READ_QUEUE_OUT_ACK         ->write((rand()%100) < percent_transaction_queue_out);
+	    	  
+	  // RegisterFile access
+	  for (uint32_t i=0; i<_param->_nb_gpr_read ; i++)
+	    {
+	      GPR_READ_ACK      [i]->write((rand()%100) < percent_transaction_registerfile);
+	      if (GPR_READ_VAL [i]->read())
+		{
+		  Tgeneral_address_t num_reg = GPR_READ_NUM_REG    [i]->read();
+		  Tcontext_t         context = GPR_READ_CONTEXT_ID [i]->read();
+
+		  GPR_READ_DATA     [i]->write(_gpr    [num_reg][context]);
+		  GPR_READ_DATA_VAL [i]->write(_gpr_val[num_reg][context]);
+		}
+	    }
+	  for (uint32_t i=0; i<_param->_nb_spr_read ; i++)
+	    {
+	      SPR_READ_ACK      [i]->write((rand()%100) < percent_transaction_registerfile);
+
+	      if (SPR_READ_VAL [i]->read())
+		{
+		  Tspecial_address_t num_reg = SPR_READ_NUM_REG    [i]->read();
+		  Tcontext_t         context = SPR_READ_CONTEXT_ID [i]->read();
+
+		  SPR_READ_DATA     [i]->write(_spr    [num_reg][context]);
+		  SPR_READ_DATA_VAL [i]->write(_spr_val[num_reg][context]);
+		}
+	    }
+
+	  // BYPASS 
+	  for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+	    {
+	      Tcontrol_t         val     = (rand()%100) < percent_transaction_bypass;
+	      Tcontext_t         context = rand()% _param->_nb_context;
+	      Tgeneral_address_t num_reg = rand()% _param->_nb_general_register;
+	      Tgeneral_data_t    data    = rand()%(1<<_param->_size_general_data);
+	      
+	      BYPASS_GPR_WRITE_VAL        [i]->write(val);	      
+	      BYPASS_GPR_WRITE_CONTEXT_ID [i]->write(context);
+	      BYPASS_GPR_WRITE_NUM_REG    [i]->write(num_reg);
+	      BYPASS_GPR_WRITE_DATA       [i]->write(data);
+
+	      if (val)
+		{
+		  _gpr     [num_reg][context] = data;
+		  _gpr_val [num_reg][context] = 1;
+		}
+	    }
+	  for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+	    {
+	      Tcontrol_t         val     = (rand()%100) < percent_transaction_bypass;
+	      Tcontext_t         context = rand()% _param->_nb_context;
+	      Tspecial_address_t num_reg = rand()% _param->_nb_special_register;
+	      Tspecial_data_t    data    = rand()%(1<<_param->_size_special_data);
+	      
+	      BYPASS_SPR_WRITE_VAL        [i]->write(val);	      
+	      BYPASS_SPR_WRITE_CONTEXT_ID [i]->write(context);
+	      BYPASS_SPR_WRITE_NUM_REG    [i]->write(num_reg);
+	      BYPASS_SPR_WRITE_DATA       [i]->write(data);
+
+	      if (val)
+		{
+		  _spr     [num_reg][context] = data;
+		  _spr_val [num_reg][context] = 1;
+		}
+	    }
+
+	  SC_START(0);
+	  
+	  LABEL("Test     READ_QUEUE_IN  : "+toString(READ_QUEUE_IN_VAL->read())+","+toString(READ_QUEUE_IN_ACK->read()));
+	  if ((READ_QUEUE_IN_VAL->read() == 1) and
+	      (READ_QUEUE_IN_ACK->read() == 1))
+	    {
+	      LABEL("Accepted READ_QUEUE_IN  ["+toString(request_in)+"]");
+	      request_in  ++;
+	    }
+	  LABEL("Test     READ_QUEUE_OUT : "+toString(READ_QUEUE_OUT_VAL->read())+","+toString(READ_QUEUE_OUT_ACK->read()));
+	  if ((READ_QUEUE_OUT_VAL->read() == 1) and
+	      (READ_QUEUE_OUT_ACK->read() == 1))
+	    {
+	      Tpacket_t packet_id = READ_QUEUE_OUT_PACKET_ID->read();
+
+	      LABEL("Accepted READ_QUEUE_OUT ["+toString(packet_id)+"]");
+
+	      TEST(uint32_t          , packet_id ,request_out);
+	      
+	      request_out ++;
+
+	      TEST(Tcontext_t        ,READ_QUEUE_OUT_CONTEXT_ID ->read(),_context_id   [packet_id]);
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RA    ->read(),_read_ra      [packet_id]);
+	      TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RA ->read(),_num_reg_ra   [packet_id]);
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RA_VAL->read(),not READ_QUEUE_OUT_READ_RA->read() or _gpr_val [_num_reg_ra[packet_id]][_context_id [packet_id]]);
+	      if (READ_QUEUE_OUT_READ_RA    ->read() and
+		  READ_QUEUE_OUT_DATA_RA_VAL->read())
+	      TEST(Tgeneral_data_t   ,READ_QUEUE_OUT_DATA_RA    ->read(),_gpr          [_num_reg_ra[packet_id]][_context_id [packet_id]]);
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RB    ->read(),_read_rb      [packet_id]);
+	      TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RB ->read(),_num_reg_rb   [packet_id]);
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RB_VAL->read(),not READ_QUEUE_OUT_READ_RB->read() or _gpr_val [_num_reg_rb[packet_id]][_context_id [packet_id]]);
+	      if (READ_QUEUE_OUT_READ_RB    ->read() and
+		  READ_QUEUE_OUT_DATA_RB_VAL->read())
+	      TEST(Tgeneral_data_t   ,READ_QUEUE_OUT_DATA_RB    ->read(),_gpr          [_num_reg_rb[packet_id]][_context_id [packet_id]]);
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RC    ->read(),_read_rc      [packet_id]);
+	      TEST(Tspecial_address_t,READ_QUEUE_OUT_NUM_REG_RC ->read(),_num_reg_rc   [packet_id]);
+      	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RC_VAL->read(),not READ_QUEUE_OUT_READ_RC->read() or _spr_val [_num_reg_rc[packet_id]][_context_id [packet_id]]);
+	      if (READ_QUEUE_OUT_READ_RC    ->read() and
+		  READ_QUEUE_OUT_DATA_RC_VAL->read())
+	      TEST(Tspecial_data_t   ,READ_QUEUE_OUT_DATA_RC    ->read(),_spr     [_num_reg_rc[packet_id]][_context_id [packet_id]]);
+	    }
+	  SC_START(1);
+	}
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+  cout << "<" << name << "> ............ Stop Simulation" << endl;
+
+  delete    CLOCK;
+  delete    NRESET;
+
+  delete    READ_QUEUE_IN_VAL          ;
+  delete    READ_QUEUE_IN_ACK          ;
+  delete    READ_QUEUE_IN_CONTEXT_ID   ;
+  delete    READ_QUEUE_IN_PACKET_ID    ;
+  delete    READ_QUEUE_IN_OPERATION    ;
+  delete    READ_QUEUE_IN_TYPE         ;
+  delete    READ_QUEUE_IN_HAS_IMMEDIAT ;
+  delete    READ_QUEUE_IN_IMMEDIAT     ;
+  delete    READ_QUEUE_IN_READ_RA      ;
+  delete    READ_QUEUE_IN_NUM_REG_RA   ;
+  delete    READ_QUEUE_IN_READ_RB      ;
+  delete    READ_QUEUE_IN_NUM_REG_RB   ;
+  delete    READ_QUEUE_IN_READ_RC      ;
+  delete    READ_QUEUE_IN_NUM_REG_RC   ;
+  delete    READ_QUEUE_IN_WRITE_RD     ;
+  delete    READ_QUEUE_IN_NUM_REG_RD   ;
+  delete    READ_QUEUE_IN_WRITE_RE     ;
+  delete    READ_QUEUE_IN_NUM_REG_RE   ;
+
+  delete    READ_QUEUE_OUT_VAL         ;
+  delete    READ_QUEUE_OUT_ACK         ;
+  delete    READ_QUEUE_OUT_CONTEXT_ID  ;
+  delete    READ_QUEUE_OUT_PACKET_ID   ;
+  delete    READ_QUEUE_OUT_OPERATION   ;
+  delete    READ_QUEUE_OUT_TYPE        ;
+  delete    READ_QUEUE_OUT_HAS_IMMEDIAT;
+  delete    READ_QUEUE_OUT_IMMEDIAT    ;
+  delete    READ_QUEUE_OUT_READ_RA     ;
+  delete    READ_QUEUE_OUT_NUM_REG_RA  ;
+  delete    READ_QUEUE_OUT_DATA_RA_VAL ;
+  delete    READ_QUEUE_OUT_DATA_RA     ;
+  delete    READ_QUEUE_OUT_READ_RB     ;
+  delete    READ_QUEUE_OUT_NUM_REG_RB  ;
+  delete    READ_QUEUE_OUT_DATA_RB_VAL ;
+  delete    READ_QUEUE_OUT_DATA_RB     ;
+  delete    READ_QUEUE_OUT_READ_RC     ;
+  delete    READ_QUEUE_OUT_NUM_REG_RC  ;
+  delete    READ_QUEUE_OUT_DATA_RC_VAL ;
+  delete    READ_QUEUE_OUT_DATA_RC     ;
+  delete    READ_QUEUE_OUT_WRITE_RD    ;
+  delete    READ_QUEUE_OUT_NUM_REG_RD  ;
+  delete    READ_QUEUE_OUT_WRITE_RE    ;
+  delete    READ_QUEUE_OUT_NUM_REG_RE  ;
+
+  delete [] GPR_READ_VAL     ;
+  delete [] GPR_READ_ACK     ;
+  delete [] GPR_READ_NUM_REG ;
+  delete [] GPR_READ_DATA    ;
+  delete [] GPR_READ_DATA_VAL;
+
+  delete [] SPR_READ_VAL     ;
+  delete [] SPR_READ_ACK     ;
+  delete [] SPR_READ_NUM_REG ;
+  delete [] SPR_READ_DATA    ;
+  delete [] SPR_READ_DATA_VAL;
+
+  delete [] BYPASS_GPR_WRITE_VAL        ;
+  delete [] BYPASS_GPR_WRITE_CONTEXT_ID ;
+  delete [] BYPASS_GPR_WRITE_NUM_REG    ;
+  delete [] BYPASS_GPR_WRITE_DATA       ;
+
+  delete [] BYPASS_SPR_WRITE_VAL        ;
+  delete [] BYPASS_SPR_WRITE_CONTEXT_ID ;
+  delete [] BYPASS_SPR_WRITE_NUM_REG    ;
+  delete [] BYPASS_SPR_WRITE_DATA       ;
+#endif
+
+  delete _Read_queue;
+
+#ifdef STATISTICS
+  delete _parameters_statistics;
+#endif
+}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/VERSION
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/VERSION	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/VERSION	(revision 54)
@@ -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_Read_unit/Read_unit/Read_queue/doc/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/Makefile	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/Makefile	(revision 54)
@@ -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_Read_unit/Read_unit/Read_queue/doc/Read_queue.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/Read_queue.tex	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/Read_queue.tex	(revision 54)
@@ -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_Read_unit/Read_unit/Read_queue/doc/sty/header.sty
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/sty/header.sty	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/sty/header.sty	(revision 54)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Read_queue}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/01_introduction.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/01_introduction.tex	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/01_introduction.tex	(revision 54)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/02_features.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/02_features.tex	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/02_features.tex	(revision 54)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/03_description.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/03_description.tex	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/03_description.tex	(revision 54)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/04_pinout.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/04_pinout.tex	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/04_pinout.tex	(revision 54)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/05_parameters.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/05_parameters.tex	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/05_parameters.tex	(revision 54)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/06_performance.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/06_performance.tex	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/06_performance.tex	(revision 54)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/07_details.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/07_details.tex	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/07_details.tex	(revision 54)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/08_history.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/08_history.tex	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/08_history.tex	(revision 54)
@@ -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_Read_unit/Read_unit/Read_queue/doc/tex/root.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/root.tex	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/doc/tex/root.tex	(revision 54)
@@ -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_Read_unit/Read_unit/Read_queue/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h	(revision 54)
@@ -0,0 +1,81 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_read_queue_Parameters_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_read_queue_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#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_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t    _size_read_queue      ;
+  public : const uint32_t    _nb_context           ;
+  public : const uint32_t    _nb_packet            ;
+  public : const uint32_t    _size_general_data    ;
+  public : const uint32_t    _size_special_data    ;
+  public : const uint32_t    _nb_general_register  ;
+  public : const uint32_t    _nb_special_register  ;
+  public : const uint32_t    _nb_operation         ;
+  public : const uint32_t    _nb_type              ;
+  public : const uint32_t    _nb_gpr_write         ;
+  public : const uint32_t    _nb_spr_write         ;
+
+  public : const uint32_t    _nb_gpr_read          ;
+  public : const uint32_t    _nb_spr_read          ;    
+  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_special_register;
+  public : const uint32_t    _size_operation       ;
+  public : const uint32_t    _size_type            ;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (  uint32_t size_read_queue    ,
+			  uint32_t nb_context         ,
+			  uint32_t nb_packet          ,
+			  uint32_t size_general_data  ,
+			  uint32_t size_special_data  ,
+			  uint32_t nb_general_register,
+			  uint32_t nb_special_register,
+			  uint32_t nb_operation       ,
+			  uint32_t nb_type            ,
+			  uint32_t nb_gpr_write       ,
+			  uint32_t nb_spr_write       );
+  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_read_unit::read_unit::read_queue::Parameters & x);
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/include/Read_queue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h	(revision 54)
@@ -0,0 +1,361 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_read_queue_Read_queue_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_read_queue_Read_queue_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include <queue>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h"
+#ifdef STATISTICS
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Statistics.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+  
+  class Tread_queue_entry_t
+  {
+  public    : Tcontext_t         _context_id   ;
+  public    : Tpacket_t          _packet_id    ;
+  public    : Toperation_t       _operation    ;
+  public    : Ttype_t            _type         ;
+  public    : Tcontrol_t         _has_immediat ;
+  public    : Tgeneral_data_t    _immediat     ;
+  public    : Tcontrol_t         _read_ra      ;
+  public    : Tgeneral_address_t _num_reg_ra   ;
+  public    : Tcontrol_t         _read_rb      ;
+  public    : Tgeneral_address_t _num_reg_rb   ;
+  public    : Tcontrol_t         _read_rc      ;
+  public    : Tspecial_address_t _num_reg_rc   ;
+  public    : Tcontrol_t         _write_rd     ;
+  public    : Tgeneral_address_t _num_reg_rd   ;
+  public    : Tcontrol_t         _write_re     ;
+  public    : Tspecial_address_t _num_reg_re   ;
+
+    friend ostream& operator<< (ostream& output_stream,
+				morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Tread_queue_entry_t & x)
+    {
+      output_stream << " * _context_id  : " << toString(x._context_id  ) << endl
+		    << " * _packet_id   : " << toString(x._packet_id   ) << endl
+		    << " * _operation   : " << toString(x._operation   ) << endl
+		    << " * _type        : " << toString(x._type        ) << endl
+		    << " * _has_immediat: " << toString(x._has_immediat) << endl
+		    << " * _immediat    : " << toString(x._immediat    ) << endl
+		    << " * _read_ra     : " << toString(x._read_ra     ) << endl
+		    << " * _num_reg_ra  : " << toString(x._num_reg_ra  ) << endl
+		    << " * _read_rb     : " << toString(x._read_rb     ) << endl
+		    << " * _num_reg_rb  : " << toString(x._num_reg_rb  ) << endl
+		    << " * _read_rc     : " << toString(x._read_rc     ) << endl
+		    << " * _num_reg_rc  : " << toString(x._num_reg_rc  ) << endl
+		    << " * _write_rd    : " << toString(x._write_rd    ) << endl
+		    << " * _num_reg_rd  : " << toString(x._num_reg_rd  ) << endl
+		    << " * _write_re    : " << toString(x._write_re    ) << endl
+		    << " * _num_reg_re  : " << toString(x._num_reg_re  ) << endl;
+
+      return output_stream;
+    }
+
+  };
+
+  class Tread_queue_head_entry_t
+  {
+  public    : Tcontext_t         _context_id   ;
+  public    : Tpacket_t          _packet_id    ;
+  public    : Toperation_t       _operation    ;
+  public    : Ttype_t            _type         ;
+  public    : Tcontrol_t         _has_immediat ;
+  public    : Tgeneral_data_t    _immediat     ;
+  public    : Tcontrol_t         _read_ra      ;
+  public    : Tcontrol_t         _read_ra_val  ; // 1 : must access at the registerFile (after access, is set at 0)
+  public    : Tgeneral_address_t _num_reg_ra   ;
+  public    : Tcontrol_t         _data_ra_val  ; // 1 : the read of registerFile is valid
+  public    : Tgeneral_data_t    _data_ra      ;
+  public    : Tcontrol_t         _read_rb      ;
+  public    : Tcontrol_t         _read_rb_val  ;
+  public    : Tgeneral_address_t _num_reg_rb   ;
+  public    : Tcontrol_t         _data_rb_val  ;
+  public    : Tgeneral_data_t    _data_rb      ;
+  public    : Tcontrol_t         _read_rc      ;
+  public    : Tcontrol_t         _read_rc_val  ;
+  public    : Tspecial_address_t _num_reg_rc   ;
+  public    : Tcontrol_t         _data_rc_val  ;
+  public    : Tspecial_data_t    _data_rc      ;
+  public    : Tcontrol_t         _write_rd     ;
+  public    : Tgeneral_address_t _num_reg_rd   ;
+  public    : Tcontrol_t         _write_re     ;
+  public    : Tspecial_address_t _num_reg_re   ;
+
+#undef  FUNCTION 
+#define FUNCTION "Tread_queue_head_entry_t::operator="
+  public    : Tread_queue_head_entry_t& operator=(Tread_queue_entry_t x)
+    {
+      log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+	  
+      _context_id   = x._context_id   ;
+      _packet_id    = x._packet_id    ;
+      _operation    = x._operation    ;
+      _type         = x._type         ;
+      _has_immediat = x._has_immediat ;
+      _immediat     = x._immediat     ;
+      _read_ra      = x._read_ra      ;
+      _read_ra_val  = x._read_ra == 1 ; //if not must read, the registerFile is already access
+      _num_reg_ra   = x._num_reg_ra   ;
+      _data_ra_val  = x._read_ra == 0 ; //if not must read, the data is already valid
+      _data_ra      = 0               ;
+      _read_rb      = x._read_rb      ;
+      _read_rb_val  = x._read_rb == 1 ;
+      _num_reg_rb   = x._num_reg_rb   ;
+      _data_rb_val  = x._read_rb == 0 ;
+      _data_rb      = 0               ;
+      _read_rc      = x._read_rc      ;
+      _read_rc_val  = x._read_rc == 1 ;
+      _num_reg_rc   = x._num_reg_rc   ;
+      _data_rc_val  = x._read_rc == 0 ;
+      _data_rc      = 0               ;
+      _write_rd     = x._write_rd     ;
+      _num_reg_rd   = x._num_reg_rd   ;
+      _write_re     = x._write_re     ;
+      _num_reg_re   = x._num_reg_re   ;
+
+      log_printf(FUNC,Read_queue,FUNCTION,"End");
+
+      return *this;
+    }
+
+    friend ostream& operator<< (ostream& output_stream,
+				morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Tread_queue_head_entry_t & x)
+    {
+      output_stream << " * _context_id  : " << x._context_id   << endl
+		    << " * _packet_id   : " << x._packet_id    << endl
+		    << " * _operation   : " << x._operation    << endl
+		    << " * _type        : " << x._type         << endl
+		    << " * _has_immediat: " << x._has_immediat << endl
+		    << " * _immediat    : " << x._immediat     << endl
+		    << " * _read_ra     : " << x._read_ra      << endl
+		    << " * _read_ra_val : " << x._read_ra_val  << endl 
+		    << " * _num_reg_ra  : " << x._num_reg_ra   << endl
+		    << " * _data_ra_val : " << x._data_ra_val  << endl
+		    << " * _data_ra     : " << x._data_ra      << endl
+		    << " * _read_rb     : " << x._read_rb      << endl
+		    << " * _read_rb_val : " << x._read_rb_val  << endl
+		    << " * _num_reg_rb  : " << x._num_reg_rb   << endl
+		    << " * _data_rb_val : " << x._data_rb_val  << endl
+		    << " * _data_rb     : " << x._data_rb      << endl
+		    << " * _read_rc     : " << x._read_rc      << endl
+		    << " * _read_rc_val : " << x._read_rc_val  << endl
+		    << " * _num_reg_rc  : " << x._num_reg_rc   << endl
+		    << " * _data_rc_val : " << x._data_rc_val  << endl
+		    << " * _data_rc     : " << x._data_rc      << endl
+		    << " * _write_rd    : " << x._write_rd     << endl
+		    << " * _num_reg_rd  : " << x._num_reg_rd   << endl
+		    << " * _write_re    : " << x._write_re     << endl
+		    << " * _num_reg_re  : " << x._num_reg_re   << endl;
+
+      return output_stream;
+    }
+  };
+
+  class Read_queue 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const string                     _name;
+  protected : const Parameters               * _param;
+
+#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 "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_VAL          ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_IN_ACK          ;
+  public    : SC_IN (Tcontext_t        )    *  in_READ_QUEUE_IN_CONTEXT_ID   ;
+  public    : SC_IN (Tpacket_t         )    *  in_READ_QUEUE_IN_PACKET_ID    ;
+  public    : SC_IN (Toperation_t      )    *  in_READ_QUEUE_IN_OPERATION    ;
+  public    : SC_IN (Ttype_t           )    *  in_READ_QUEUE_IN_TYPE         ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_HAS_IMMEDIAT ;
+  public    : SC_IN (Tgeneral_data_t   )    *  in_READ_QUEUE_IN_IMMEDIAT     ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_READ_RA      ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RA   ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_READ_RB      ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RB   ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_READ_RC      ;
+  public    : SC_IN (Tspecial_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RC   ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_WRITE_RD     ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RD   ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_WRITE_RE     ;
+  public    : SC_IN (Tspecial_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RE   ;
+
+    // ~~~~~[ Interface "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_VAL         ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_OUT_ACK         ;
+  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_CONTEXT_ID  ;
+  public    : SC_OUT(Tpacket_t         )    * out_READ_QUEUE_OUT_PACKET_ID   ;
+  public    : SC_OUT(Toperation_t      )    * out_READ_QUEUE_OUT_OPERATION   ;
+  public    : SC_OUT(Ttype_t           )    * out_READ_QUEUE_OUT_TYPE        ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_HAS_IMMEDIAT;
+  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_IMMEDIAT    ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RA     ;
+  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RA  ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RA_VAL ;
+  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_DATA_RA     ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RB     ;
+  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RB  ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RB_VAL ;
+  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_DATA_RB     ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RC     ;
+  public    : SC_OUT(Tspecial_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RC  ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RC_VAL ;
+  public    : SC_OUT(Tspecial_data_t   )    * out_READ_QUEUE_OUT_DATA_RC     ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_WRITE_RD    ;
+  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RD  ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_WRITE_RE    ;
+  public    : SC_OUT(Tspecial_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RE  ;
+
+    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_OUT(Tcontrol_t        )   ** out_GPR_READ_VAL       ;
+  public    : SC_IN (Tcontrol_t        )   **  in_GPR_READ_ACK       ;
+  public    : SC_OUT(Tcontext_t        )   ** out_GPR_READ_CONTEXT_ID;
+  public    : SC_OUT(Tgeneral_address_t)   ** out_GPR_READ_NUM_REG   ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_READ_DATA      ;
+  public    : SC_IN (Tcontrol_t        )   **  in_GPR_READ_DATA_VAL  ;
+
+    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_OUT(Tcontrol_t        )   ** out_SPR_READ_VAL       ;
+  public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_ACK       ;
+  public    : SC_OUT(Tcontext_t        )   ** out_SPR_READ_CONTEXT_ID;
+  public    : SC_OUT(Tspecial_address_t)   ** out_SPR_READ_NUM_REG   ;
+  public    : SC_IN (Tspecial_data_t   )   **  in_SPR_READ_DATA      ;
+  public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_DATA_VAL  ;
+
+    // ~~~~~[ Interface "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_GPR_WRITE_VAL       ;
+  public    : SC_IN (Tcontext_t        )   **  in_BYPASS_GPR_WRITE_CONTEXT_ID;
+  public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_GPR_WRITE_NUM_REG   ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_GPR_WRITE_DATA      ;
+
+    // ~~~~~[ Interface "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_SPR_WRITE_VAL       ;
+  public    : SC_IN (Tcontext_t        )   **  in_BYPASS_SPR_WRITE_CONTEXT_ID;
+  public    : SC_IN (Tspecial_address_t)   **  in_BYPASS_SPR_WRITE_NUM_REG   ;
+  public    : SC_IN (Tspecial_data_t   )   **  in_BYPASS_SPR_WRITE_DATA      ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+  protected : Tread_queue_head_entry_t       * _queue_head;
+  protected : queue<Tread_queue_entry_t *>   * _queue;
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  
+  protected  :Tcontrol_t                       internal_READ_QUEUE_OUT_VAL         ;
+  protected  :Tcontrol_t                       internal_READ_QUEUE_OUT_READ_RA_VAL ;
+  protected  :Tcontrol_t                       internal_READ_QUEUE_OUT_READ_RB_VAL ;
+  protected  :Tcontrol_t                       internal_READ_QUEUE_OUT_READ_RC_VAL ;
+
+  protected  :Tcontrol_t                       internal_READ_QUEUE_OUT_DATA_RA_VAL ;
+  protected  :Tcontrol_t                       internal_READ_QUEUE_OUT_DATA_RB_VAL ;
+  protected  :Tgeneral_data_t                  internal_READ_QUEUE_OUT_DATA_RA     ;
+  protected  :Tgeneral_data_t                  internal_READ_QUEUE_OUT_DATA_RB     ;
+  protected  :Tcontrol_t                       internal_READ_QUEUE_OUT_DATA_RC_VAL ;
+  protected  :Tspecial_data_t                  internal_READ_QUEUE_OUT_DATA_RC     ;
+#endif
+
+    // -----[ methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (Read_queue);
+#endif
+  public  :          Read_queue              (
+#ifdef SYSTEMC
+					      sc_module_name                              name,
+#else					       
+					      string                                      name,
+#endif					       
+#ifdef STATISTICS
+					      morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+					      Parameters                                  * param );
+					       
+  public  :          Read_queue              (Parameters * param );
+  public  :          ~Read_queue             (void);
+					       
+#ifdef SYSTEMC				       
+  private : void     allocation                  (void);
+  private : void     deallocation                (void);
+					       
+  public  : void     transition                  (void);
+  public  : void     genMoore                    (void);
+  public  : void     genMealy_read_queue_out_val (void); 
+  public  : void     genMealy_read_queue_out_gpr (void);
+  public  : void     genMealy_read_queue_out_spr (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 read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Statistics.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Statistics.h	(revision 54)
@@ -0,0 +1,62 @@
+#ifdef STATISTICS
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_read_queue_Statistics_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_read_queue_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_Read_unit/Read_unit/Read_queue/include/Parameters.h"
+
+//using namespace morpheo::behavioural::generic::group;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  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 () ;
+    
+  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 read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h	(revision 54)
@@ -0,0 +1,41 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_read_queue_Type_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_read_queue_Type_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Types.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+  typedef uint32_t Tgeneral_data_t   ;
+  typedef uint32_t Tspecial_data_t   ;
+  typedef uint32_t Tgeneral_address_t;
+  typedef uint32_t Tspecial_address_t;
+  typedef uint32_t Tcontext_t        ;
+  typedef uint32_t Tpacket_t         ;
+  typedef uint32_t Toperation_t      ;
+  typedef uint32_t Ttype_t           ;
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp	(revision 54)
@@ -0,0 +1,98 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  Parameters::Parameters (uint32_t size_read_queue    ,
+			  uint32_t nb_context         ,
+			  uint32_t nb_packet          ,
+			  uint32_t size_general_data  ,
+			  uint32_t size_special_data  ,
+			  uint32_t nb_general_register,
+			  uint32_t nb_special_register,
+			  uint32_t nb_operation       ,
+			  uint32_t nb_type            ,
+			  uint32_t nb_gpr_write       ,
+			  uint32_t nb_spr_write       ):
+    _size_read_queue       (size_read_queue      ),
+    _nb_context            (nb_context           ),
+    _nb_packet             (nb_packet            ),
+    _size_general_data     (size_general_data    ),
+    _size_special_data     (size_special_data    ),
+    _nb_general_register   (nb_general_register  ),
+    _nb_special_register   (nb_special_register  ),
+    _nb_operation          (nb_operation         ),
+    _nb_type               (nb_type              ),
+    _nb_gpr_write          (nb_gpr_write         ),
+    _nb_spr_write          (nb_spr_write         ),
+
+    _nb_gpr_read           (2                    ),
+    _nb_spr_read           (1                    ),
+    _size_context_id       (static_cast<uint32_t>(log2(_nb_context         ))),
+    _size_packet_id        (static_cast<uint32_t>(log2(_nb_packet          ))),
+    _size_general_register (static_cast<uint32_t>(log2(_nb_general_register))),
+    _size_special_register (static_cast<uint32_t>(log2(_nb_special_register))),
+    _size_operation        (static_cast<uint32_t>(log2(_nb_operation       ))),
+    _size_type             (static_cast<uint32_t>(log2(_nb_type            )))
+  {
+    log_printf(FUNC,Read_queue,"Parameters","Begin");
+    test();
+    log_printf(FUNC,Read_queue,"Parameters","End");
+  };
+  
+  Parameters::Parameters (Parameters & param):
+    _size_read_queue       (param._size_read_queue       ),
+    _nb_context            (param._nb_context            ),
+    _nb_packet             (param._nb_packet             ),
+    _size_general_data     (param._size_general_data     ),
+    _size_special_data     (param._size_special_data     ),
+    _nb_general_register   (param._nb_general_register   ),
+    _nb_special_register   (param._nb_special_register   ),
+    _nb_operation          (param._nb_operation          ),
+    _nb_type               (param._nb_type               ),
+    _nb_gpr_write          (param._nb_gpr_write          ),
+    _nb_spr_write          (param._nb_spr_write          ),
+
+    _nb_gpr_read           (param._nb_gpr_read           ),
+    _nb_spr_read           (param._nb_spr_read           ),
+    _size_context_id       (param._size_context_id       ),
+    _size_packet_id        (param._size_packet_id        ),
+    _size_general_register (param._size_general_register ),
+    _size_special_register (param._size_special_register ),
+    _size_operation        (param._size_operation        ),
+    _size_type             (param._size_type             )
+  {
+    log_printf(FUNC,Read_queue,"Parameters (copy)","Begin");
+    test();
+    log_printf(FUNC,Read_queue,"Parameters (copy)","End");
+  };
+
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,Read_queue,"~Parameters","Begin");
+    log_printf(FUNC,Read_queue,"~Parameters","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_msg_error.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_msg_error.cpp	(revision 54)
@@ -0,0 +1,49 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,Read_queue,"msg_error","Begin");
+
+    string msg = "";
+
+    if (_size_read_queue < 2)
+      {
+        msg += "  - The read_queue must be have less a depth of 2";
+        msg += "    * size_read_queue                 : " + toString(_size_read_queue)    + "\n";
+      }
+    
+
+    return msg;
+
+    log_printf(FUNC,Read_queue,"msg_error","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp	(revision 54)
@@ -0,0 +1,63 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/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_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,Read_queue,"print","Begin");
+
+    XML xml ("read_queue");
+
+    xml.balise_open("read_queue");
+    xml.singleton_begin("size_read_queue    "); xml.attribut("value",toString(_size_read_queue    )); 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("size_special_data  "); xml.attribut("value",toString(_size_special_data  )); xml.singleton_end();
+    xml.singleton_begin("nb_general_register"); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end();
+    xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_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.singleton_begin("nb_gpr_write       "); xml.attribut("value",toString(_nb_gpr_write       )); xml.singleton_end();    
+    xml.singleton_begin("nb_spr_write       "); xml.attribut("value",toString(_nb_spr_write       )); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,Read_queue,"print","End");
+    
+    return xml.get_body(depth);
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters & x)
+  {
+    output_stream << x.print(0);
+    
+    return output_stream;
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp	(revision 54)
@@ -0,0 +1,222 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+#ifdef SYSTEMC
+  Read_queue::Read_queue (sc_module_name name,
+#else
+  Read_queue::Read_queue (string name,
+#endif
+#ifdef STATISTICS
+			      morpheo::behavioural::Parameters_Statistics            * param_statistics,
+#endif
+			      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters * param ):
+			      _name              (name)
+			      ,_param            (param)
+  {
+    log_printf(FUNC,Read_queue,"Read_queue","Begin");
+
+#ifdef SYSTEMC
+    log_printf(INFO,Read_queue,"Read_queue","Allocation");
+
+    allocation ();
+#endif
+
+#ifdef STATISTICS
+    log_printf(INFO,Read_queue,"Read_queue","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,Read_queue,"Read_queue","Generate the vhdl");
+
+    vhdl();
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,Read_queue,"Read_queue","Method - transition");
+
+    SC_METHOD (transition);
+    dont_initialize ();
+    sensitive_pos << *(in_CLOCK);
+
+    log_printf(INFO,Read_queue,"Read_queue","Method - genMoore");
+
+    SC_METHOD (genMoore);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+
+    log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_val");
+
+    SC_METHOD (genMealy_read_queue_out_val);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+    for (uint32_t i=0; i<_param->_nb_gpr_read ; i++)
+      sensitive << *(in_GPR_READ_ACK      [i]);
+    for (uint32_t i=0; i<_param->_nb_spr_read ; i++)
+      sensitive << *(in_SPR_READ_ACK      [i]);
+    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+      sensitive << *(in_BYPASS_GPR_WRITE_VAL        [i])
+		<< *(in_BYPASS_GPR_WRITE_CONTEXT_ID [i])
+		<< *(in_BYPASS_GPR_WRITE_NUM_REG    [i]);
+    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+      sensitive << *(in_BYPASS_SPR_WRITE_VAL        [i])
+		<< *(in_BYPASS_SPR_WRITE_CONTEXT_ID [i])
+		<< *(in_BYPASS_SPR_WRITE_NUM_REG    [i]);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+
+    (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_READ_ACK                [0]));
+    (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_READ_ACK                [0]));
+    
+    for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
+      {
+	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
+	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
+      }
+    for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
+      {
+	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_SPR_WRITE_VAL        [i]));
+	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_SPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_SPR_WRITE_NUM_REG    [i]));
+      }
+#endif    
+    
+    log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_gpr");
+
+    SC_METHOD (genMealy_read_queue_out_gpr);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+    for (uint32_t i=0; i<_param->_nb_gpr_read ; i++)
+      sensitive << *(in_GPR_READ_ACK      [i])
+		<< *(in_GPR_READ_DATA     [i])
+		<< *(in_GPR_READ_DATA_VAL [i]);
+    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+      sensitive << *(in_BYPASS_GPR_WRITE_VAL        [i])
+		<< *(in_BYPASS_GPR_WRITE_CONTEXT_ID [i])
+		<< *(in_BYPASS_GPR_WRITE_NUM_REG    [i])
+		<< *(in_BYPASS_GPR_WRITE_DATA       [i]);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+
+    (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_READ_ACK                [0]));
+    (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_READ_DATA_VAL           [0]));
+    (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_READ_ACK                [1]));
+    (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_READ_DATA_VAL           [1]));
+    
+    (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_READ_DATA               [0]));
+    (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_READ_DATA               [1]));
+    
+    for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
+      {
+	(*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
+
+	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_DATA       [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_DATA       [i]));
+      }
+#endif    
+
+    log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_spr");
+
+    SC_METHOD (genMealy_read_queue_out_spr);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+    for (uint32_t i=0; i<_param->_nb_spr_read ; i++)
+      sensitive << *(in_SPR_READ_ACK      [i])
+		<< *(in_SPR_READ_DATA     [i])
+		<< *(in_SPR_READ_DATA_VAL [i]);
+    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+      sensitive << *(in_BYPASS_SPR_WRITE_VAL        [i])
+		<< *(in_BYPASS_SPR_WRITE_CONTEXT_ID [i])
+		<< *(in_BYPASS_SPR_WRITE_NUM_REG    [i])
+		<< *(in_BYPASS_SPR_WRITE_DATA       [i]);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+
+    (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_READ_ACK                [0]));
+    (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_READ_DATA_VAL           [0]));
+    
+    (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_READ_DATA               [0]));
+    
+    for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
+      {
+	(*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_BYPASS_SPR_WRITE_VAL        [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_BYPASS_SPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_BYPASS_SPR_WRITE_NUM_REG    [i]));
+
+	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_VAL        [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_NUM_REG    [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_DATA       [i]));
+      }
+#endif    
+
+#endif
+    log_printf(FUNC,Read_queue,"Read_queue","End");
+  };
+  
+  Read_queue::~Read_queue (void)
+  {
+    log_printf(FUNC,Read_queue,"~Read_queue","Begin");
+
+#ifdef STATISTICS
+    log_printf(INFO,Read_queue,"~Read_queue","Generate Statistics file");
+
+    _stat->generate_file(statistics(0));
+    
+    delete _stat;
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,Read_queue,"~Read_queue","Deallocation");
+
+    deallocation ();
+#endif
+
+    log_printf(FUNC,Read_queue,"~Read_queue","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp	(revision 54)
@@ -0,0 +1,238 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  void Read_queue::allocation (void)
+  {
+    string rename;
+
+    log_printf(FUNC,Read_queue,"allocation","Begin");
+
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name       
+					      ,"Read_queue"
+#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 : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface_fifo * interface = _interfaces->set_interface("read_queue_in"
+#ifdef POSITION
+							      ,IN
+							      ,EAST
+							      ,"Input of read_queue"
+#endif
+							      );
+      
+       in_READ_QUEUE_IN_VAL            = interface->set_signal_valack_in        ("val"    , VAL);
+      out_READ_QUEUE_IN_ACK            = interface->set_signal_valack_out       ("ack"    , ACK);
+       in_READ_QUEUE_IN_CONTEXT_ID     = interface->set_signal_in  <Tcontext_t        > ("context_id"  ,_param->_size_context_id       );
+       in_READ_QUEUE_IN_PACKET_ID      = interface->set_signal_in  <Tpacket_t         > ("packet_id"   ,_param->_size_packet_id        );
+       in_READ_QUEUE_IN_OPERATION      = interface->set_signal_in  <Toperation_t      > ("operation"   ,_param->_size_operation        );
+       in_READ_QUEUE_IN_TYPE           = interface->set_signal_in  <Ttype_t           > ("type"        ,_param->_size_type             );
+       in_READ_QUEUE_IN_HAS_IMMEDIAT   = interface->set_signal_in  <Tcontrol_t        > ("has_immediat",1                             );
+       in_READ_QUEUE_IN_IMMEDIAT       = interface->set_signal_in  <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
+       in_READ_QUEUE_IN_READ_RA        = interface->set_signal_in  <Tcontrol_t        > ("read_ra"     ,1                             );
+       in_READ_QUEUE_IN_NUM_REG_RA     = interface->set_signal_in  <Tgeneral_address_t> ("num_reg_ra"  ,_param->_size_general_register );
+       in_READ_QUEUE_IN_READ_RB        = interface->set_signal_in  <Tcontrol_t        > ("read_rb"     ,1                             );
+       in_READ_QUEUE_IN_NUM_REG_RB     = interface->set_signal_in  <Tgeneral_address_t> ("num_reg_rb"  ,_param->_size_general_register );
+       in_READ_QUEUE_IN_READ_RC        = interface->set_signal_in  <Tcontrol_t        > ("read_rc"     ,1                             );
+       in_READ_QUEUE_IN_NUM_REG_RC     = interface->set_signal_in  <Tspecial_address_t> ("num_reg_rc"  ,_param->_size_special_register );
+       in_READ_QUEUE_IN_WRITE_RD       = interface->set_signal_in  <Tcontrol_t        > ("write_rd"    ,1                             );
+       in_READ_QUEUE_IN_NUM_REG_RD     = interface->set_signal_in  <Tgeneral_address_t> ("num_reg_rd"  ,_param->_size_general_register );
+       in_READ_QUEUE_IN_WRITE_RE       = interface->set_signal_in  <Tcontrol_t        > ("write_re"    ,1                             );
+       in_READ_QUEUE_IN_NUM_REG_RE     = interface->set_signal_in  <Tspecial_address_t> ("num_reg_re"  ,_param->_size_special_register );      
+     }
+
+    // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface_fifo * interface = _interfaces->set_interface("read_queue_out"
+#ifdef POSITION
+							       ,OUT
+							       ,EAST
+							       ,"Input of read_queue"
+#endif
+							       );
+      
+      out_READ_QUEUE_OUT_VAL            = interface->set_signal_valack_out       ("val"    , VAL);
+       in_READ_QUEUE_OUT_ACK            = interface->set_signal_valack_in        ("ack"    , ACK);
+      out_READ_QUEUE_OUT_CONTEXT_ID     = interface->set_signal_out <Tcontext_t        > ("context_id"  ,_param->_size_context_id       );
+      out_READ_QUEUE_OUT_PACKET_ID      = interface->set_signal_out <Tpacket_t         > ("packet_id"   ,_param->_size_packet_id        );
+      out_READ_QUEUE_OUT_OPERATION      = interface->set_signal_out <Toperation_t      > ("operation"   ,_param->_size_operation        );
+      out_READ_QUEUE_OUT_TYPE           = interface->set_signal_out <Ttype_t           > ("type"        ,_param->_size_type             );
+      out_READ_QUEUE_OUT_HAS_IMMEDIAT   = interface->set_signal_out <Tcontrol_t        > ("has_immediat",1                             );
+      out_READ_QUEUE_OUT_IMMEDIAT       = interface->set_signal_out <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
+      out_READ_QUEUE_OUT_READ_RA        = interface->set_signal_out <Tcontrol_t        > ("read_ra"     ,1                             );
+      out_READ_QUEUE_OUT_NUM_REG_RA     = interface->set_signal_out <Tgeneral_address_t> ("num_reg_ra"  ,_param->_size_general_register );
+      out_READ_QUEUE_OUT_DATA_RA_VAL    = interface->set_signal_out <Tcontrol_t        > ("data_ra_val" ,1                             );
+      out_READ_QUEUE_OUT_DATA_RA        = interface->set_signal_out <Tgeneral_data_t   > ("data_ra"     ,_param->_size_general_data     );
+      out_READ_QUEUE_OUT_READ_RB        = interface->set_signal_out <Tcontrol_t        > ("read_rb"     ,1                             );
+      out_READ_QUEUE_OUT_NUM_REG_RB     = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rb"  ,_param->_size_general_register );
+      out_READ_QUEUE_OUT_DATA_RB_VAL    = interface->set_signal_out <Tcontrol_t        > ("data_rb_val" ,1                             );
+      out_READ_QUEUE_OUT_DATA_RB        = interface->set_signal_out <Tgeneral_data_t   > ("data_rb"     ,_param->_size_general_data     );
+      out_READ_QUEUE_OUT_READ_RC        = interface->set_signal_out <Tcontrol_t        > ("read_rc"     ,1                             );
+      out_READ_QUEUE_OUT_NUM_REG_RC     = interface->set_signal_out <Tspecial_address_t> ("num_reg_rc"  ,_param->_size_special_register );
+      out_READ_QUEUE_OUT_DATA_RC_VAL    = interface->set_signal_out <Tcontrol_t        > ("data_rc_val" ,1                             );
+      out_READ_QUEUE_OUT_DATA_RC        = interface->set_signal_out <Tspecial_data_t   > ("data_rc"     ,_param->_size_special_data     );
+      out_READ_QUEUE_OUT_WRITE_RD       = interface->set_signal_out <Tcontrol_t        > ("write_rd"    ,1                             );
+      out_READ_QUEUE_OUT_NUM_REG_RD     = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rd"  ,_param->_size_general_register );
+      out_READ_QUEUE_OUT_WRITE_RE       = interface->set_signal_out <Tcontrol_t        > ("write_re"    ,1                             );
+      out_READ_QUEUE_OUT_NUM_REG_RE     = interface->set_signal_out <Tspecial_address_t> ("num_reg_re"  ,_param->_size_special_register );      
+     }
+
+    // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    
+    out_GPR_READ_VAL       = new SC_OUT(Tcontrol_t        ) * [_param->_nb_gpr_read];
+     in_GPR_READ_ACK       = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_read];
+    out_GPR_READ_CONTEXT_ID= new SC_OUT(Tcontext_t        ) * [_param->_nb_gpr_read];
+    out_GPR_READ_NUM_REG   = new SC_OUT(Tgeneral_address_t) * [_param->_nb_gpr_read];
+     in_GPR_READ_DATA      = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_read];
+     in_GPR_READ_DATA_VAL  = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_read];
+
+    for (uint32_t i=0; i<_param->_nb_gpr_read; i++)
+      {
+        Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(i)
+#ifdef POSITION
+                                                                , IN  
+                                                                ,SOUTH
+                                                                , "Interface with the General RegisterFile."
+#endif
+                                                                );
+
+	out_GPR_READ_VAL        [i] = interface->set_signal_valack_out       ("val"    , VAL);
+	 in_GPR_READ_ACK        [i] = interface->set_signal_valack_in        ("ack"    , ACK);
+	out_GPR_READ_CONTEXT_ID [i] = interface->set_signal_out <Tcontext_t        > ("context_id",_param->_size_context_id);
+	out_GPR_READ_NUM_REG    [i] = interface->set_signal_out <Tgeneral_address_t> ("num_reg"  ,_param->_size_general_register);
+	 in_GPR_READ_DATA       [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"     ,_param->_size_general_data);
+	 in_GPR_READ_DATA_VAL   [i] = interface->set_signal_in  <Tcontrol_t        > ("data_val" ,1);
+      }
+     
+    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    
+    out_SPR_READ_VAL       = new SC_OUT(Tcontrol_t        ) * [_param->_nb_spr_read];
+     in_SPR_READ_ACK       = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_read];
+    out_SPR_READ_CONTEXT_ID= new SC_OUT(Tcontext_t        ) * [_param->_nb_spr_read];
+    out_SPR_READ_NUM_REG   = new SC_OUT(Tspecial_address_t) * [_param->_nb_spr_read];
+     in_SPR_READ_DATA      = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_read];
+     in_SPR_READ_DATA_VAL  = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_read];
+
+    for (uint32_t i=0; i<_param->_nb_spr_read; i++)
+      {
+        Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(i)
+#ifdef POSITION
+                                                                , IN  
+                                                                ,SOUTH
+                                                                , "Interface with the Special RegisterFile."
+#endif
+                                                                );
+
+	out_SPR_READ_VAL        [i] = interface->set_signal_valack_out       ("val"    , VAL);
+	 in_SPR_READ_ACK        [i] = interface->set_signal_valack_in        ("ack"    , ACK);
+	out_SPR_READ_CONTEXT_ID [i] = interface->set_signal_out <Tcontext_t        > ("context_id",_param->_size_context_id);
+	out_SPR_READ_NUM_REG    [i] = interface->set_signal_out <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
+	 in_SPR_READ_DATA       [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"      ,_param->_size_special_data);
+	 in_SPR_READ_DATA_VAL   [i] = interface->set_signal_in  <Tcontrol_t        > ("data_val"  ,1);
+      }
+
+    // ~~~~~[ Interface : "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    
+     in_BYPASS_GPR_WRITE_VAL       = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
+     in_BYPASS_GPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_gpr_write];
+     in_BYPASS_GPR_WRITE_NUM_REG   = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write];
+     in_BYPASS_GPR_WRITE_DATA      = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_write];
+
+    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+      {
+        Interface_fifo * interface = _interfaces->set_interface("bypass_gpr_write_"+toString(i)
+#ifdef POSITION
+                                                                , IN  
+                                                                ,SOUTH
+                                                                , "Interface with write queue to bypass the write in the RegisterFile."
+#endif
+                                                                );
+
+	 in_BYPASS_GPR_WRITE_VAL        [i] = interface->set_signal_valack_in        ("val"    , VAL);
+	 in_BYPASS_GPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id",_param->_size_context_id);
+	 in_BYPASS_GPR_WRITE_NUM_REG    [i] = interface->set_signal_in  <Tgeneral_address_t> ("num_reg"   ,_param->_size_general_register);
+	 in_BYPASS_GPR_WRITE_DATA       [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"      ,_param->_size_general_data);
+      }
+
+    // ~~~~~[ Interface : "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    
+     in_BYPASS_SPR_WRITE_VAL       = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
+     in_BYPASS_SPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_spr_write];
+     in_BYPASS_SPR_WRITE_NUM_REG   = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write];
+     in_BYPASS_SPR_WRITE_DATA      = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_write];
+
+    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+      {
+        Interface_fifo * interface = _interfaces->set_interface("bypass_spr_write_"+toString(i)
+#ifdef POSITION
+                                                                , IN  
+                                                                ,SOUTH
+                                                                , "Interface with write queue to bypass the write in the RegisterFile."
+#endif
+                                                                );
+
+	 in_BYPASS_SPR_WRITE_VAL        [i] = interface->set_signal_valack_in        ("val"    , VAL);
+	 in_BYPASS_SPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id",_param->_size_context_id);
+	 in_BYPASS_SPR_WRITE_NUM_REG    [i] = interface->set_signal_in  <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
+	 in_BYPASS_SPR_WRITE_DATA       [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"      ,_param->_size_special_data);
+      }
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    _queue      = new queue<Tread_queue_entry_t *>;
+    _queue_head = new Tread_queue_head_entry_t;
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
+
+    log_printf(FUNC,Read_queue,"allocation","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp	(revision 54)
@@ -0,0 +1,131 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  void Read_queue::deallocation (void)
+  {
+    log_printf(FUNC,Read_queue,"deallocation","Begin");
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    delete     in_CLOCK ;
+    delete     in_NRESET;
+
+    // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    delete     in_READ_QUEUE_IN_VAL            ;
+    delete    out_READ_QUEUE_IN_ACK            ;
+    delete     in_READ_QUEUE_IN_CONTEXT_ID     ;
+    delete     in_READ_QUEUE_IN_PACKET_ID      ;
+    delete     in_READ_QUEUE_IN_OPERATION      ;
+    delete     in_READ_QUEUE_IN_TYPE           ;
+    delete     in_READ_QUEUE_IN_HAS_IMMEDIAT   ;
+    delete     in_READ_QUEUE_IN_IMMEDIAT       ;
+    delete     in_READ_QUEUE_IN_READ_RA        ;
+    delete     in_READ_QUEUE_IN_NUM_REG_RA     ;
+    delete     in_READ_QUEUE_IN_READ_RB        ;
+    delete     in_READ_QUEUE_IN_NUM_REG_RB     ;
+    delete     in_READ_QUEUE_IN_READ_RC        ;
+    delete     in_READ_QUEUE_IN_NUM_REG_RC     ;
+    delete     in_READ_QUEUE_IN_WRITE_RD       ;
+    delete     in_READ_QUEUE_IN_NUM_REG_RD     ;
+    delete     in_READ_QUEUE_IN_WRITE_RE       ;
+    delete     in_READ_QUEUE_IN_NUM_REG_RE     ;
+
+    // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    delete    out_READ_QUEUE_OUT_VAL            ;
+    delete     in_READ_QUEUE_OUT_ACK            ;
+    delete    out_READ_QUEUE_OUT_CONTEXT_ID     ;
+    delete    out_READ_QUEUE_OUT_PACKET_ID      ;
+    delete    out_READ_QUEUE_OUT_OPERATION      ;
+    delete    out_READ_QUEUE_OUT_TYPE           ;
+    delete    out_READ_QUEUE_OUT_HAS_IMMEDIAT   ;
+    delete    out_READ_QUEUE_OUT_IMMEDIAT       ;
+    delete    out_READ_QUEUE_OUT_READ_RA        ;
+    delete    out_READ_QUEUE_OUT_NUM_REG_RA     ;
+    delete    out_READ_QUEUE_OUT_DATA_RA_VAL    ;
+    delete    out_READ_QUEUE_OUT_DATA_RA        ;
+    delete    out_READ_QUEUE_OUT_READ_RB        ;
+    delete    out_READ_QUEUE_OUT_NUM_REG_RB     ;
+    delete    out_READ_QUEUE_OUT_DATA_RB_VAL    ;
+    delete    out_READ_QUEUE_OUT_DATA_RB        ;
+    delete    out_READ_QUEUE_OUT_READ_RC        ;
+    delete    out_READ_QUEUE_OUT_NUM_REG_RC     ;
+    delete    out_READ_QUEUE_OUT_DATA_RC_VAL    ;
+    delete    out_READ_QUEUE_OUT_DATA_RC        ;
+    delete    out_READ_QUEUE_OUT_WRITE_RD       ;
+    delete    out_READ_QUEUE_OUT_NUM_REG_RD     ;
+    delete    out_READ_QUEUE_OUT_WRITE_RE       ;
+    delete    out_READ_QUEUE_OUT_NUM_REG_RE     ;
+
+    // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    
+    delete [] out_GPR_READ_VAL       ;
+    delete []  in_GPR_READ_ACK       ;
+    delete [] out_GPR_READ_CONTEXT_ID;
+    delete [] out_GPR_READ_NUM_REG   ;
+    delete []  in_GPR_READ_DATA      ;
+    delete []  in_GPR_READ_DATA_VAL  ;
+
+    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    
+    delete [] out_SPR_READ_VAL       ;
+    delete []  in_SPR_READ_ACK       ;
+    delete [] out_SPR_READ_CONTEXT_ID;
+    delete [] out_SPR_READ_NUM_REG   ;
+    delete []  in_SPR_READ_DATA      ;
+    delete []  in_SPR_READ_DATA_VAL  ;
+
+    // ~~~~~[ Interface : "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    
+    delete []  in_BYPASS_GPR_WRITE_VAL       ;
+    delete []  in_BYPASS_GPR_WRITE_CONTEXT_ID;
+    delete []  in_BYPASS_GPR_WRITE_NUM_REG   ;
+    delete []  in_BYPASS_GPR_WRITE_DATA      ;
+
+    // ~~~~~[ Interface : "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    
+    delete []  in_BYPASS_SPR_WRITE_VAL       ;
+    delete []  in_BYPASS_SPR_WRITE_CONTEXT_ID;
+    delete []  in_BYPASS_SPR_WRITE_NUM_REG   ;
+    delete []  in_BYPASS_SPR_WRITE_DATA      ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    while (_queue->empty() == false)
+      {
+	delete _queue->front();
+	_queue->pop();
+      }
+    
+    delete _queue;
+    delete _queue_head;
+
+    delete _component;
+
+    log_printf(FUNC,Read_queue,"deallocation","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_gpr.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_gpr.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_gpr.cpp	(revision 54)
@@ -0,0 +1,108 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+#undef  FUNCTION
+#define FUNCTION "Read_queue::genMealy_read_queue_out_gpr"
+  void Read_queue::genMealy_read_queue_out_gpr (void)
+  {
+    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+
+    internal_READ_QUEUE_OUT_DATA_RA_VAL = (// Previous value
+					   _queue_head->_data_ra_val or
+					   // Test if have already access at the registerfile
+					   (_queue_head->_read_ra_val           and
+					    PORT_READ(in_GPR_READ_ACK      [0]) and
+					    PORT_READ(in_GPR_READ_DATA_VAL [0]))
+					   );
+
+    log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RA_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_data_ra_val           : %d",_queue_head->_data_ra_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_read_ra_val           : %d",_queue_head->_read_ra_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_ACK      [0]            : %d",PORT_READ(in_GPR_READ_ACK      [0]));
+    log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_DATA_VAL [0]            : %d",PORT_READ(in_GPR_READ_DATA_VAL [0]));
+
+    internal_READ_QUEUE_OUT_DATA_RB_VAL = (_queue_head->_data_rb_val or
+					   (_queue_head->_read_rb_val           and
+					    PORT_READ(in_GPR_READ_ACK      [1]) and
+					    PORT_READ(in_GPR_READ_DATA_VAL [1]))
+					   );
+
+    log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RB_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_data_rb_val           : %d",_queue_head->_data_rb_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_read_rb_val           : %d",_queue_head->_read_rb_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_ACK      [1]            : %d",PORT_READ(in_GPR_READ_ACK      [1]));
+    log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_DATA_VAL [1]            : %d",PORT_READ(in_GPR_READ_DATA_VAL [1]));
+	       
+    
+    internal_READ_QUEUE_OUT_DATA_RA     = (// Test if have an previous access
+					   (_queue_head->_data_ra_val)?
+					   // if precious access, take previous data
+					   _queue_head->_data_ra:
+					   // else, take the read_data (don't test the validity of data)
+					   PORT_READ(in_GPR_READ_DATA [0]));
+    
+    internal_READ_QUEUE_OUT_DATA_RB     = ((_queue_head->_data_rb_val)?
+					   _queue_head->_data_rb:
+					   PORT_READ(in_GPR_READ_DATA [1]));
+    
+    // Test all bypass
+    for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
+      {
+	// Test if this bypass is valid
+	if ( (PORT_READ (in_BYPASS_GPR_WRITE_VAL        [i]) == 1) and
+	     (PORT_READ (in_BYPASS_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	     )
+	  {
+	    Tgeneral_address_t bypass_gpr_write_num_reg = PORT_READ(in_BYPASS_GPR_WRITE_NUM_REG [i]);
+	    Tgeneral_data_t    bypass_gpr_write_data    = PORT_READ(in_BYPASS_GPR_WRITE_DATA    [i]);
+	    
+	    if (_queue_head->_num_reg_ra == bypass_gpr_write_num_reg)
+	      {
+		log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL   - bypass hit (%d)",i);
+
+		internal_READ_QUEUE_OUT_DATA_RA_VAL = 1;
+		internal_READ_QUEUE_OUT_DATA_RA     = bypass_gpr_write_data;
+	      }
+	    if (_queue_head->_num_reg_rb == bypass_gpr_write_num_reg)
+	      {
+		log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL   - bypass hit (%d)",i);
+		internal_READ_QUEUE_OUT_DATA_RB_VAL = 1;
+		internal_READ_QUEUE_OUT_DATA_RB     = bypass_gpr_write_data;
+	      }
+	  }
+      }
+
+    // Affectation out port
+    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RA_VAL,internal_READ_QUEUE_OUT_DATA_RA_VAL);
+    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB_VAL,internal_READ_QUEUE_OUT_DATA_RB_VAL);
+    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RA    ,internal_READ_QUEUE_OUT_DATA_RA    );
+    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB    ,internal_READ_QUEUE_OUT_DATA_RB    );
+
+    log_printf(FUNC,Read_queue,FUNCTION,"End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_spr.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_spr.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_spr.cpp	(revision 54)
@@ -0,0 +1,84 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+#undef  FUNCTION
+#define FUNCTION "Read_queue::genMealy_read_queue_out_spr"
+  void Read_queue::genMealy_read_queue_out_spr (void)
+  {
+    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+
+    internal_READ_QUEUE_OUT_DATA_RC_VAL = (// Previous value
+					   _queue_head->_data_rc_val or
+					   // Test if have already access at the registerfile
+					   (_queue_head->_read_rc_val           and
+					    PORT_READ(in_SPR_READ_ACK      [0]) and
+					    PORT_READ(in_SPR_READ_DATA_VAL [0]))
+					   );
+
+    log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RC_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_data_rc_val           : %d",_queue_head->_data_rc_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_read_rc_val           : %d",_queue_head->_read_rc_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"   * in_SPR_READ_ACK      [0]            : %d",PORT_READ(in_SPR_READ_ACK      [0]));
+    log_printf(TRACE,Read_queue,FUNCTION,"   * in_SPR_READ_DATA_VAL [0]            : %d",PORT_READ(in_SPR_READ_DATA_VAL [0]));
+
+    internal_READ_QUEUE_OUT_DATA_RC     = (// Test if have an previous access
+					   (_queue_head->_data_rc_val)?
+					   // if precious access, take previous data
+					   _queue_head->_data_rc:
+					   // else, take the read_data (don't test the validity of data)
+					   PORT_READ(in_SPR_READ_DATA [0]));
+
+//     cout << "yo1 : " << internal_READ_QUEUE_OUT_DATA_RC << endl;
+
+    // Test all bypass
+    for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
+      {
+	// Test if this bypass is valid
+	if ( (PORT_READ (in_BYPASS_SPR_WRITE_VAL        [i]) == 1) and
+	     (PORT_READ (in_BYPASS_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	     )
+	  {
+	    if (_queue_head->_num_reg_rc == PORT_READ(in_BYPASS_SPR_WRITE_NUM_REG [i]))
+	      {
+		log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL   - bypass hit (%d)",i);
+		internal_READ_QUEUE_OUT_DATA_RC_VAL = 1;
+		internal_READ_QUEUE_OUT_DATA_RC     = PORT_READ(in_BYPASS_SPR_WRITE_DATA [i]);
+	      }
+	  }
+      }
+
+//     cout << "yo2 : " << internal_READ_QUEUE_OUT_DATA_RC << endl;
+
+    // Affectation out port
+    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC_VAL,internal_READ_QUEUE_OUT_DATA_RC_VAL);
+    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC    ,internal_READ_QUEUE_OUT_DATA_RC    );
+
+    log_printf(FUNC,Read_queue,FUNCTION,"End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_val.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_val.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_val.cpp	(revision 54)
@@ -0,0 +1,115 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+#undef  FUNCTION
+#define FUNCTION "Read_queue::genMealy_read_queue_out_val"
+  void Read_queue::genMealy_read_queue_out_val (void)
+  {
+    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+
+    internal_READ_QUEUE_OUT_READ_RA_VAL = (// Previous value
+					   _queue_head->_read_ra_val  and
+					   // Test if have already access at the registerfile
+					   not PORT_READ(in_GPR_READ_ACK      [0])
+					   );
+
+    internal_READ_QUEUE_OUT_READ_RB_VAL = (_queue_head->_read_rb_val  and
+					   not PORT_READ(in_GPR_READ_ACK      [1])
+					   );
+    
+    internal_READ_QUEUE_OUT_READ_RC_VAL = (_queue_head->_read_rc_val  and
+					   not PORT_READ(in_SPR_READ_ACK      [0])
+					   );
+
+    // Test all bypass
+    for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
+      {
+	// Test if this bypass is valid
+	if ( (PORT_READ (in_BYPASS_GPR_WRITE_VAL        [i]) == 1) and
+	     (PORT_READ (in_BYPASS_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	     )
+	  {
+	    Tgeneral_address_t bypass_gpr_write_num_reg = PORT_READ(in_BYPASS_GPR_WRITE_NUM_REG [i]);
+	    
+	    if (_queue_head->_num_reg_ra == bypass_gpr_write_num_reg)
+	      internal_READ_QUEUE_OUT_READ_RA_VAL = 0;
+
+	    if (_queue_head->_num_reg_rb == bypass_gpr_write_num_reg)
+	      internal_READ_QUEUE_OUT_READ_RB_VAL = 0;
+	  }
+      }
+
+    for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
+      {
+	// Test if this bypass is valid
+	if ( (PORT_READ (in_BYPASS_SPR_WRITE_VAL        [i]) == 1) and
+	     (PORT_READ (in_BYPASS_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	     )
+	  {
+	    Tspecial_address_t bypass_spr_write_num_reg = PORT_READ(in_BYPASS_SPR_WRITE_NUM_REG [i]);
+	    
+	    if (_queue_head->_num_reg_rc == bypass_spr_write_num_reg)
+	      internal_READ_QUEUE_OUT_READ_RC_VAL = 0;
+	  }
+      }
+
+    // Affectation out port
+
+    // READ_QUEUE_OUT_VAL : mealy
+    internal_READ_QUEUE_OUT_VAL = (not _queue->empty()                     and
+				   not internal_READ_QUEUE_OUT_READ_RA_VAL and
+				   not internal_READ_QUEUE_OUT_READ_RB_VAL and
+				   not internal_READ_QUEUE_OUT_READ_RC_VAL
+				   );
+
+    // READ_QUEUE_OUT_VAL : moore
+//     internal_READ_QUEUE_OUT_VAL = (not _queue->empty()           and
+// 				   not _queue_head->_read_ra_val and
+// 				   not _queue_head->_read_rb_val and
+// 				   not _queue_head->_read_rc_val
+// 				   );
+
+
+    PORT_WRITE(out_READ_QUEUE_OUT_VAL, internal_READ_QUEUE_OUT_VAL);
+
+    log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_VAL           : %d",internal_READ_QUEUE_OUT_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue->empty()                     : %d",_queue->empty());
+    log_printf(TRACE,Read_queue,FUNCTION,"   * internal_READ_QUEUE_OUT_READ_RA_VAL : %d",internal_READ_QUEUE_OUT_READ_RA_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"     * _queue_head->_read_ra_val         : %d",_queue_head->_read_ra_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"     * in_GPR_READ_ACK      [0]          : %d",PORT_READ(in_GPR_READ_ACK      [0]));
+    log_printf(TRACE,Read_queue,FUNCTION,"   * internal_READ_QUEUE_OUT_READ_RB_VAL : %d",internal_READ_QUEUE_OUT_READ_RB_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"     * _queue_head->_read_rb_val         : %d",_queue_head->_read_rb_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"     * in_GPR_READ_ACK      [1]          : %d",PORT_READ(in_GPR_READ_ACK      [1]));
+    log_printf(TRACE,Read_queue,FUNCTION,"   * internal_READ_QUEUE_OUT_READ_RC_VAL : %d",internal_READ_QUEUE_OUT_READ_RC_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"     * _queue_head->_read_rc_val         : %d",_queue_head->_read_rc_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"     * in_SPR_READ_ACK      [0]          : %d",PORT_READ(in_SPR_READ_ACK      [0]));
+
+    log_printf(FUNC,Read_queue,FUNCTION,"End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp	(revision 54)
@@ -0,0 +1,83 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+#undef  FUNCTION
+#define FUNCTION "Read_queue::genMoore"
+  void Read_queue::genMoore (void)
+  {
+    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+
+    bool not_full  = not (_queue->size() == _param->_size_read_queue);
+    bool not_empty = not _queue->empty();
+
+    // ~~~~~[ Interface "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    PORT_WRITE (out_READ_QUEUE_IN_ACK , not_full );
+
+    // ~~~~~[ Interface "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//  PORT_WRITE (out_READ_QUEUE_OUT_VAL         , not_empty    );              // in genMealy_val
+
+    PORT_WRITE (out_READ_QUEUE_OUT_CONTEXT_ID  , _queue_head->_context_id  );
+    PORT_WRITE (out_READ_QUEUE_OUT_PACKET_ID   , _queue_head->_packet_id   );
+    PORT_WRITE (out_READ_QUEUE_OUT_OPERATION   , _queue_head->_operation   );
+    PORT_WRITE (out_READ_QUEUE_OUT_TYPE        , _queue_head->_type        );
+    PORT_WRITE (out_READ_QUEUE_OUT_HAS_IMMEDIAT, _queue_head->_has_immediat);
+    PORT_WRITE (out_READ_QUEUE_OUT_IMMEDIAT    , _queue_head->_immediat    );
+    PORT_WRITE (out_READ_QUEUE_OUT_READ_RA     , _queue_head->_read_ra     );
+    PORT_WRITE (out_READ_QUEUE_OUT_NUM_REG_RA  , _queue_head->_num_reg_ra  );
+//  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RA_VAL , _queue_head->_data_ra_val ); // in genMealy_gpr
+//  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RA     , _queue_head->_data_ra     ); // in genMealy_gpr
+    PORT_WRITE (out_READ_QUEUE_OUT_READ_RB     , _queue_head->_read_rb     );
+    PORT_WRITE (out_READ_QUEUE_OUT_NUM_REG_RB  , _queue_head->_num_reg_rb  );
+//  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RB_VAL , _queue_head->_data_rb_val ); // in genMealy_gpr
+//  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RB     , _queue_head->_data_rb     ); // in genMealy_gpr
+    PORT_WRITE (out_READ_QUEUE_OUT_READ_RC     , _queue_head->_read_rc     );
+    PORT_WRITE (out_READ_QUEUE_OUT_NUM_REG_RC  , _queue_head->_num_reg_rc  );
+//  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RC_VAL , _queue_head->_data_rc_val ); // in genMealy_spr
+//  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RC     , _queue_head->_data_rc     ); // in genMealy_spr
+    PORT_WRITE (out_READ_QUEUE_OUT_WRITE_RD    , _queue_head->_write_rd    );
+    PORT_WRITE (out_READ_QUEUE_OUT_NUM_REG_RD  , _queue_head->_num_reg_rd  );
+    PORT_WRITE (out_READ_QUEUE_OUT_WRITE_RE    , _queue_head->_write_re    );
+    PORT_WRITE (out_READ_QUEUE_OUT_NUM_REG_RE  , _queue_head->_num_reg_re  );
+
+    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    PORT_WRITE (out_GPR_READ_VAL        [0], not_empty and _queue_head->_read_ra_val);
+    PORT_WRITE (out_GPR_READ_VAL        [1], not_empty and _queue_head->_read_rb_val);
+    PORT_WRITE (out_GPR_READ_CONTEXT_ID [0],               _queue_head->_context_id);
+    PORT_WRITE (out_GPR_READ_CONTEXT_ID [1],               _queue_head->_context_id);
+    PORT_WRITE (out_GPR_READ_NUM_REG    [0],               _queue_head->_num_reg_ra);
+    PORT_WRITE (out_GPR_READ_NUM_REG    [1],               _queue_head->_num_reg_rb);
+
+    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    PORT_WRITE (out_SPR_READ_VAL        [0], not_empty and _queue_head->_read_rc_val);
+    PORT_WRITE (out_SPR_READ_CONTEXT_ID [0],               _queue_head->_context_id);
+    PORT_WRITE (out_SPR_READ_NUM_REG    [0],               _queue_head->_num_reg_rc);
+		    
+    log_printf(FUNC,Read_queue,FUNCTION,"End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_statistics.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_statistics.cpp	(revision 54)
@@ -0,0 +1,41 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  string Read_queue::statistics (uint32_t depth)
+  {
+    log_printf(FUNC,Read_queue,"statistics","Begin");
+
+    string txt = _stat->print(depth);
+    
+    log_printf(FUNC,Read_queue,"statistics","End");
+
+    return txt;
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp	(revision 54)
@@ -0,0 +1,155 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_queue::transition"
+  void Read_queue::transition (void)
+  {
+    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+
+    if (PORT_READ(in_NRESET) == 0)
+      {
+	// Flush queue
+	// FIXME "queue reset"
+	// > 1) flush one slot by cycle
+	// > 2) flush all slot in one cycle
+
+	while (_queue->empty() == false)
+	  _queue->pop();
+      }
+    else
+      {
+// 	cout << "Transition Begin  : Print queue_head" << endl;
+// 	if (_queue->empty ())
+// 	  cout << "queue is empty !!!" << endl;
+// 	else
+// 	  cout << (*_queue_head) << endl;
+
+	log_printf(TRACE,Read_queue,FUNCTION,"Read_queue size (begin) : %d",_queue->size());
+	// Write to read_queue
+
+	bool not_full      = not (_queue->size() == _param->_size_read_queue);
+	bool     empty     =     _queue->empty();
+	bool nead_new_head = false;
+	
+	log_printf(TRACE,Read_queue,FUNCTION," * test transaction READ_QUEUE_IN  : %d,%d",PORT_READ(in_READ_QUEUE_IN_VAL), not_full);
+	if ((PORT_READ(in_READ_QUEUE_IN_VAL) == 1) and not_full)
+	  {
+	    Tread_queue_entry_t * entry = new Tread_queue_entry_t;
+
+	    entry->_context_id   = PORT_READ(in_READ_QUEUE_IN_CONTEXT_ID  );
+	    entry->_packet_id    = PORT_READ(in_READ_QUEUE_IN_PACKET_ID   );
+	    entry->_operation    = PORT_READ(in_READ_QUEUE_IN_OPERATION   );
+	    entry->_type         = PORT_READ(in_READ_QUEUE_IN_TYPE        );
+	    entry->_has_immediat = PORT_READ(in_READ_QUEUE_IN_HAS_IMMEDIAT);
+	    entry->_immediat     = PORT_READ(in_READ_QUEUE_IN_IMMEDIAT    );
+	    entry->_read_ra      = PORT_READ(in_READ_QUEUE_IN_READ_RA     );
+	    entry->_num_reg_ra   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RA  );
+	    entry->_read_rb      = PORT_READ(in_READ_QUEUE_IN_READ_RB     );
+	    entry->_num_reg_rb   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RB  );
+	    entry->_read_rc      = PORT_READ(in_READ_QUEUE_IN_READ_RC     );
+	    entry->_num_reg_rc   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RC  );
+	    entry->_write_rd     = PORT_READ(in_READ_QUEUE_IN_WRITE_RD    );
+	    entry->_num_reg_rd   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RD  );
+	    entry->_write_re     = PORT_READ(in_READ_QUEUE_IN_WRITE_RE    );
+	    entry->_num_reg_re   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RE  );
+
+	    log_printf(TRACE,Read_queue,FUNCTION,"   * push (id : %d-%d)",entry->_context_id, entry->_packet_id);
+	    _queue->push(entry);
+
+
+	    // read next new head
+	    if (empty)
+	      {
+		log_printf(TRACE,Read_queue,FUNCTION,"     * queue was    empty");
+		nead_new_head = true;
+	      }
+	  }
+
+	// Read from read_queue
+	log_printf(TRACE,Read_queue,FUNCTION," * test transaction READ_QUEUE_OUT : %d,%d",internal_READ_QUEUE_OUT_VAL, PORT_READ(in_READ_QUEUE_OUT_ACK));
+	if ((    internal_READ_QUEUE_OUT_VAL  == 1) and 
+	    (PORT_READ(in_READ_QUEUE_OUT_ACK) == 1))
+	  {
+	    // Pop the entry
+	    log_printf(TRACE,Read_queue,FUNCTION,"   * pop  (id : %d-%d)",_queue->front()->_context_id, _queue->front()->_packet_id);
+	    _queue->pop();
+
+	    // read next new head
+	    if (_queue->empty() == false)
+	      {
+		log_printf(TRACE,Read_queue,FUNCTION,"     * queue was not empty");
+		nead_new_head = true;
+	      }
+	  }
+	else
+	  {
+	    // no transaction, update queue_head
+	    _queue_head->_read_ra_val = internal_READ_QUEUE_OUT_READ_RA_VAL ;
+	    _queue_head->_data_ra_val = internal_READ_QUEUE_OUT_DATA_RA_VAL ;
+	    _queue_head->_data_ra     = internal_READ_QUEUE_OUT_DATA_RA     ;
+
+	    _queue_head->_read_rb_val = internal_READ_QUEUE_OUT_READ_RB_VAL ;
+	    _queue_head->_data_rb_val = internal_READ_QUEUE_OUT_DATA_RB_VAL ;
+	    _queue_head->_data_rb     = internal_READ_QUEUE_OUT_DATA_RB     ;
+
+	    _queue_head->_read_rc_val = internal_READ_QUEUE_OUT_READ_RC_VAL ;
+	    _queue_head->_data_rc_val = internal_READ_QUEUE_OUT_DATA_RC_VAL ;
+	    _queue_head->_data_rc     = internal_READ_QUEUE_OUT_DATA_RC     ;
+	  }
+
+	if (nead_new_head == true)
+	  {
+	    log_printf(TRACE,Read_queue,FUNCTION," * new head");
+	    (*_queue_head) = (*_queue->front());
+	  }
+	
+// 	cout << "Transition End    : Print queue_head" << endl;
+// 	if (_queue->empty ())
+// 	  cout << "queue is empty !!!" << endl;
+// 	else
+// 	  cout << (*_queue_head) << endl;
+
+	log_printf(TRACE,Read_queue,FUNCTION,"Read_queue size (end  ) : %d",_queue->size());
+      }
+
+#ifdef STATISTICS
+    _stat->add();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    vhdl_testbench_transition ();
+#endif
+
+    log_printf(FUNC,Read_queue,FUNCTION,"End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl.cpp	(revision 54)
@@ -0,0 +1,50 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  void Read_queue::vhdl (void)
+  {
+    log_printf(FUNC,Read_queue,"vhdl","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,Read_queue,"vhdl","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_body.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_body.cpp	(revision 54)
@@ -0,0 +1,37 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  void Read_queue::vhdl_body (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Read_queue,"vhdl_body","Begin");
+    vhdl->set_body ("");
+    log_printf(FUNC,Read_queue,"vhdl_body","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_declaration.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_declaration.cpp	(revision 54)
@@ -0,0 +1,36 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  void Read_queue::vhdl_declaration (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Read_queue,"vhdl_declaration","Begin");
+    log_printf(FUNC,Read_queue,"vhdl_declaration","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_testbench_transition.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_testbench_transition.cpp	(revision 54)
@@ -0,0 +1,42 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  void Read_queue::vhdl_testbench_transition ()
+  {
+    log_printf(FUNC,Read_queue,"vhdl_testbench_transition","Begin");
+
+    // Evaluation before read the ouput signal
+//     sc_start(0);
+
+    _interfaces->testbench();
+
+    log_printf(FUNC,Read_queue,"vhdl_testbench_transition","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Statistics.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Statistics.cpp	(revision 54)
@@ -0,0 +1,48 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Statistics.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  Statistics::Statistics (string                                        name                       ,
+			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			  Parameters                                  * parameters
+			  ) :
+    morpheo::behavioural::Statistics(name                  ,
+				     parameters_statistics ),
+    _parameters(parameters)
+  {
+    log_printf(FUNC,Read_queue,"Statistics","Begin");
+    log_printf(FUNC,Read_queue,"Statistics","End");
+  };
+  
+  Statistics::~Statistics () 
+  { 
+    log_printf(FUNC,Read_queue,"~Statistics","Begin");
+    log_printf(FUNC,Read_queue,"~Statistics","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Statistics_add.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Statistics_add.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Statistics_add.cpp	(revision 54)
@@ -0,0 +1,39 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  void Statistics::add ()
+  {
+    log_printf(FUNC,Read_queue,"add","Begin");
+    log_printf(FUNC,Read_queue,"add","End");
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Statistics_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Statistics_print.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Statistics_print.cpp	(revision 54)
@@ -0,0 +1,57 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  string Statistics::print (uint32_t depth)
+  {
+    log_printf(FUNC,Read_queue,"print","Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "<read_queue name=\"" << _name << "\" >" << endl
+        << print_body(depth+1) << endl
+	<< tab << "</read_queue>" << endl;
+    
+    log_printf(FUNC,Read_queue,"print","End");
+
+    return msg.str();
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Statistics & x)
+  {
+    output_stream << x.print(0);
+
+    return output_stream;
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_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_Read_unit/Read_unit/Read_queue/src/Statistics_print_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Statistics_print_body.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Statistics_print_body.cpp	(revision 54)
@@ -0,0 +1,47 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace read_queue {
+
+
+  string Statistics::print_body (uint32_t depth)
+  {
+    log_printf(FUNC,Read_queue,"print_body","Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "";
+    
+    log_printf(FUNC,Read_queue,"print_body","End");
+
+    return msg.str();
+  };
+
+}; // end namespace read_queue
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
