Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Types.h	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Types.h	(revision 67)
@@ -10,5 +10,5 @@
  */
 
-#include "Common/include/Types.h"
+#include "Behavioural/include/Types.h"
 
 namespace morpheo                    {
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp	(revision 67)
@@ -52,5 +52,5 @@
     SC_METHOD (transition);
     dont_initialize ();
-    sensitive_pos << *(in_CLOCK);
+    sensitive << (*(in_CLOCK)).pos();
 #endif
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/Makefile	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/Makefile	(revision 67)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libQueue.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/Generic/Queue/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/Makefile.defs	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/Makefile.defs	(revision 67)
@@ -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/Generic/Queue/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/Makefile.deps	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/Makefile.deps	(revision 67)
@@ -0,0 +1,44 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+Queue	      	   		= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+ifndef Queue_Control
+include                         $(DIR_MORPHEO)/Behavioural/Generic/Queue_Control/Makefile.deps
+endif
+
+#-----[ Library ]------------------------------------------
+Queue_LIBRARY			= 	-lQueue	\
+                                        $(Queue_Control_LIBRARY)\
+					$(Behavioural_LIBRARY)	
+
+Queue_DIR_LIBRARY		=	-L$(DIR_MORPHEO)/Behavioural/Generic/Queue/lib	\
+                                        $(Queue_Control_DIR_LIBRARY)\
+					$(Behavioural_DIR_LIBRARY)
+
+Queue_DEPENDENCIES		=	Queue_Control_library	\
+					Behavioural_library
+
+Queue_CLEAN        		=	Queue_Control_library_clean	\
+					Behavioural_library_clean
+
+#-----[ Rules ]--------------------------------------------
+
+.NOTPARALLEL			: Queue_library Queue_library_clean
+
+Queue_library			: $(Queue_DEPENDENCIES)
+				@\
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Queue --makefile=Makefile;
+
+Queue_library_clean		: $(Queue_CLEAN)
+				@\
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Queue --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/Makefile	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/Makefile	(revision 67)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(Queue_LIBRARY)
+
+DIR_LIBRARY			= $(Queue_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: Queue_library
+
+library_clean			: 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/Generic/Queue/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/configuration.cfg	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/configuration.cfg	(revision 67)
@@ -0,0 +1,3 @@
+Queue
+3	256	*4	#_size_queue	
+32	32	*2	#_size_data 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/include/test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/include/test.h	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/include/test.h	(revision 67)
@@ -0,0 +1,59 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::generic;
+
+using namespace morpheo::behavioural::generic::queue;
+
+void test    (string name,
+	      morpheo::behavioural::generic::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/Generic/Queue/SelfTest/mkf.info
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/mkf.info	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/mkf.info	(revision 67)
@@ -0,0 +1,26 @@
+
+# Queue_0
+target_dep	all	Queue_0.ngc
+target_dep	Queue_0.ngc	Queue_0.prj
+target_dep	Queue_0.prj	Queue_0.vhdl Queue_0_Pack.vhdl
+
+# Queue_1
+target_dep	all	Queue_1.ngc
+target_dep	Queue_1.ngc	Queue_1.prj
+target_dep	Queue_1.prj	Queue_1.vhdl Queue_1_Pack.vhdl
+
+# Queue_2
+target_dep	all	Queue_2.ngc
+target_dep	Queue_2.ngc	Queue_2.prj
+target_dep	Queue_2.prj	Queue_2.vhdl Queue_2_Pack.vhdl
+
+# Queue_3
+target_dep	all	Queue_3.ngc
+target_dep	Queue_3.ngc	Queue_3.prj
+target_dep	Queue_3.prj	Queue_3.vhdl Queue_3_Pack.vhdl
+
+# Queue_4
+target_dep	all	Queue_4.ngc
+target_dep	Queue_4.ngc	Queue_4.prj
+target_dep	Queue_4.prj	Queue_4.vhdl Queue_4_Pack.vhdl
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/main.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/main.cpp	(revision 67)
@@ -0,0 +1,66 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/SelfTest/include/test.h"
+
+#define NB_PARAMS 2
+
+void usage (int argc, char * argv[])
+{
+  cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
+       << "list_params is :" << endl
+       << " - size_queue (uint32_t)" << endl
+       << " - size_data  (uint32_t)" << endl
+       << "" << endl;
+
+  for (int i=0; i<argc; i++)
+    cerr << argv[i] << " ";
+  cerr << endl;
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  if (argc != 2+NB_PARAMS)
+    usage (argc, argv);
+
+  uint32_t       x = 1;
+  
+  const string   name       =      argv[x++];
+  const uint32_t size_queue = atoi(argv[x++]);
+  const uint32_t size_data  = atoi(argv[x++]);
+
+  try 
+    {
+      morpheo::behavioural::generic::queue::Parameters * param = new morpheo::behavioural::generic::queue::Parameters
+	(size_queue,
+	 size_data
+        );
+      
+      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/Generic/Queue/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/test.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/test.cpp	(revision 67)
@@ -0,0 +1,165 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/Generic/Queue/SelfTest/include/test.h"
+#include "Common/include/Test.h"
+
+#define NB_ITERATION  1
+#define CYCLE_MAX     (2048*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::generic::queue::Parameters * _param)
+{
+  cout << "<" << name << "> : Simulation SystemC" << endl;
+
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
+  Queue * _Queue = new Queue (name.c_str(),
+#ifdef STATISTICS
+					     _parameters_statistics,
+#endif
+					     _param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  string rename;
+
+  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);	 
+  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
+  sc_signal<Tcontrol_t> *  in_INSERT_VAL  = new sc_signal<Tcontrol_t> ( "in_INSERT_VAL" );
+  sc_signal<Tcontrol_t> * out_INSERT_ACK  = new sc_signal<Tcontrol_t> ("out_INSERT_ACK" );
+  sc_signal<Tdata_t   > *  in_INSERT_DATA = new sc_signal<Tdata_t   > ( "in_INSERT_DATA");
+  sc_signal<Tcontrol_t> * out_RETIRE_VAL  = new sc_signal<Tcontrol_t> ("out_RETIRE_VAL" );
+  sc_signal<Tcontrol_t> *  in_RETIRE_ACK  = new sc_signal<Tcontrol_t> ( "in_RETIRE_ACK" );
+  sc_signal<Tdata_t   > * out_RETIRE_DATA = new sc_signal<Tdata_t   > ("out_RETIRE_DATA");
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  cout << "<" << name << "> Instanciation of _Queue" << endl;
+  
+  (*(_Queue->in_CLOCK))        (*(in_CLOCK));
+  (*(_Queue->in_NRESET))       (*(in_NRESET));
+
+  (*(_Queue-> in_INSERT_VAL )) (*( in_INSERT_VAL ));
+  (*(_Queue->out_INSERT_ACK )) (*(out_INSERT_ACK ));
+  (*(_Queue-> in_INSERT_DATA)) (*( in_INSERT_DATA));
+  (*(_Queue->out_RETIRE_VAL )) (*(out_RETIRE_VAL ));
+  (*(_Queue-> in_RETIRE_ACK )) (*( in_RETIRE_ACK ));
+  (*(_Queue->out_RETIRE_DATA)) (*(out_RETIRE_DATA));
+
+  cout << "<" << name << "> Start Simulation ............" << endl;
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  // Initialisation
+  const  int32_t percent_insert_transaction = 75;
+  const  int32_t percent_retire_transaction = 75;
+  const uint32_t nb_request = 3*_param->_size_queue;
+
+  const uint32_t seed = 0;
+//const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  SC_START(0);
+  LABEL("Initialisation");
+
+  in_INSERT_VAL -> write(0);
+  in_RETIRE_ACK -> write(0);
+
+  LABEL("Reset");
+  in_NRESET->write(0);
+  SC_START(5);
+  in_NRESET->write(1);  
+
+  LABEL("Loop of Test");
+
+  uint32_t data_in  = 0;
+  uint32_t data_out = 0;
+
+  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
+    {
+      LABEL("Iteration "+toString(iteration));
+
+      while (data_out <= nb_request)
+	{
+	  in_INSERT_VAL  -> write((rand()%100)<percent_insert_transaction);
+	  in_INSERT_DATA -> write(data_in);
+	  in_RETIRE_ACK  -> write((rand()%100)<percent_retire_transaction);
+
+	  SC_START(0); // genMoore
+
+	  if ( in_INSERT_VAL->read() and out_INSERT_ACK->read())
+	    {
+	      LABEL ("Transaction with interface : INSERT");
+	      data_in ++;
+	    }
+	  if (out_RETIRE_VAL->read() and  in_RETIRE_ACK->read())
+	    {
+	      LABEL ("Transaction with interface : RETIRE");
+	      TEST(Tdata_t, out_RETIRE_DATA->read(), data_out);
+	      data_out++;
+	    }
+
+	  SC_START(1);
+	}
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+  cout << "<" << name << "> ............ Stop Simulation" << endl;
+
+  delete in_CLOCK;
+  delete in_NRESET;
+#endif
+
+  delete _Queue;
+#ifdef STATISTICS
+  delete _parameters_statistics;
+#endif
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/VERSION
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/VERSION	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/VERSION	(revision 67)
@@ -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/Generic/Queue/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/Makefile	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/Makefile	(revision 67)
@@ -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/Generic/Queue/doc/Queue.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/Queue.tex	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/Queue.tex	(revision 67)
@@ -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/Generic/Queue/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/sty/header.sty	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/sty/header.sty	(revision 67)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Queue}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/01_introduction.tex	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/01_introduction.tex	(revision 67)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/02_features.tex	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/02_features.tex	(revision 67)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/03_description.tex	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/03_description.tex	(revision 67)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/04_pinout.tex	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/04_pinout.tex	(revision 67)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/05_parameters.tex	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/05_parameters.tex	(revision 67)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/06_performance.tex	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/06_performance.tex	(revision 67)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/07_details.tex	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/07_details.tex	(revision 67)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/08_history.tex	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/08_history.tex	(revision 67)
@@ -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/Generic/Queue/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/root.tex	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/doc/tex/root.tex	(revision 67)
@@ -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/Generic/Queue/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Parameters.h	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Parameters.h	(revision 67)
@@ -0,0 +1,47 @@
+#ifndef morpheo_behavioural_generic_queue_Parameters_h
+#define morpheo_behavioural_generic_queue_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include <math.h>
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t _size_queue;
+  public : const uint32_t _size_data ;
+    
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t size_queue,
+			uint32_t size_data );
+  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::generic::queue::Parameters & x);
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Queue.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Queue.h	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Queue.h	(revision 67)
@@ -0,0 +1,139 @@
+#ifndef morpheo_behavioural_generic_queue_Queue_h
+#define morpheo_behavioural_generic_queue_Queue_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+
+#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
+
+#include "Behavioural/Generic/Queue/include/Types.h"
+#include "Behavioural/Generic/Queue/include/Parameters.h"
+#ifdef STATISTICS
+#include "Behavioural/Generic/Queue/include/Statistics.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#include "Behavioural/include/Usage.h"
+
+using namespace std;
+using namespace morpheo::behavioural::generic::queue_control;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+  class Queue 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const string       _name;
+  protected : const Parameters * _param;
+  private   : const Tusage_t     _usage;
+
+//#ifdef STATISTICS
+//  protected : const morpheo::behavioural::Parameters_Statistics * _param_statistics;
+//#endif
+
+#ifdef STATISTICS
+  private   : Statistics                     * _stat;
+#endif
+
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK        ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
+
+    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t)            *  in_INSERT_VAL;
+  public    : SC_OUT(Tcontrol_t)            * out_INSERT_ACK;
+  public    : SC_IN (Tdata_t   )            *  in_INSERT_DATA;
+
+    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t)            * out_RETIRE_VAL;
+  public    : SC_IN (Tcontrol_t)            *  in_RETIRE_ACK;
+  public    : SC_OUT(Tdata_t   )            * out_RETIRE_DATA;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+  protected : morpheo::behavioural::generic::queue_control::Queue_Control * _queue_control;
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+  protected : Tdata_t                       * _queue_data;
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  protected : Tcontrol_t                      internal_INSERT_ACK;
+  protected : Tcontrol_t                      internal_RETIRE_VAL;
+
+#endif
+
+    // -----[ methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (Queue);
+#endif
+  public  :          Queue              
+  (
+#ifdef SYSTEMC
+   sc_module_name                                name,
+#else					       
+   string                                        name,
+#endif					       
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   Parameters                                  * param,
+   morpheo::behavioural::Tusage_t                usage=USE_ALL
+   );
+  public  :          ~Queue             (void);
+					       
+  private : void     allocation                (void);
+  private : void     deallocation              (void);
+					       
+#ifdef SYSTEMC				       
+  public  : void     transition                (void);
+  public  : void     genMoore                  (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 queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Statistics.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Statistics.h	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Statistics.h	(revision 67)
@@ -0,0 +1,55 @@
+#ifdef STATISTICS
+#ifndef morpheo_behavioural_generic_queue_Statistics_h
+#define morpheo_behavioural_generic_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/Generic/Queue/include/Parameters.h"
+
+//using namespace morpheo::behavioural::generic::group;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace 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  (Statistics & stat);
+  public   : ~Statistics () ;
+    
+  public   : string   print_body (uint32_t depth);
+  public   : string   print      (uint32_t depth);
+  public   : void     add        ();
+
+  public   : friend ostream& operator<< (ostream& output_stream,
+					 const Statistics & x);
+
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo
+
+#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Types.h	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Types.h	(revision 67)
@@ -0,0 +1,28 @@
+#ifdef SYSTEMC
+#ifndef morpheo_behavioural_generic_queue_Type_h
+#define morpheo_behavioural_generic_queue_Type_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+  typedef uint32_t Tdata_t;
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters.cpp	(revision 67)
@@ -0,0 +1,51 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::Parameters"
+  Parameters::Parameters (uint32_t size_queue,
+			  uint32_t size_data ):
+    _size_queue (size_queue),
+    _size_data  (size_data )
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+    test();
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Queue::Parameters (copy)"
+  Parameters::Parameters (Parameters & param):
+    _size_queue (param._size_queue),
+    _size_data  (param._size_data )
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+    test();
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Queue::~Parameters"
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters_msg_error.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters_msg_error.cpp	(revision 67)
@@ -0,0 +1,36 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+#include "Behavioural/Generic/Queue/include/Parameters.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::msg_error"
+  string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    string msg = "";
+
+    return msg;
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters_print.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters_print.cpp	(revision 67)
@@ -0,0 +1,54 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::print"
+  string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    XML xml ("queue");
+
+    xml.balise_open("queue");
+    xml.singleton_begin("size_queue"); xml.attribut("value",toString(_size_queue)); xml.singleton_end();
+    xml.singleton_begin("size_data "); xml.attribut("value",toString(_size_data )); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+    
+    return xml.get_body(depth);
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Queue::operator<<"
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::queue::Parameters & x)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+    
+    log_printf(FUNC,Queue,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue.cpp	(revision 67)
@@ -0,0 +1,109 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::Queue"
+  Queue::Queue 
+  (
+#ifdef SYSTEMC
+   sc_module_name name,
+#else
+   string name,
+#endif
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   morpheo::behavioural::generic::queue::Parameters * param,
+   morpheo::behavioural::Tusage_t usage
+   ):
+    _name              (name)
+    ,_param            (param)
+    ,_usage            (usage)
+// #ifdef STATISTICS
+// 			      ,_param_statistics (param_statistics)
+// #endif
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    log_printf(INFO,Queue,FUNCTION,"Allocation");
+    allocation ();
+
+#ifdef STATISTICS
+    log_printf(INFO,Queue,FUNCTION,"Allocation of statistics");
+
+    // Allocation of statistics
+    _stat = new Statistics (static_cast<string>(_name),
+			    param_statistics          ,
+			    param);
+#endif
+
+#ifdef VHDL
+    // generate the vhdl
+    log_printf(INFO,Queue,FUNCTION,"Generate the vhdl");
+
+    vhdl();
+#endif
+
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    log_printf(INFO,Queue,FUNCTION,"Method - transition");
+
+    SC_METHOD (transition);
+    dont_initialize ();
+    sensitive << (*(in_CLOCK)).pos();
+//#endif
+
+# ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+# endif    
+
+    log_printf(INFO,Queue,FUNCTION,"Method - genMoore");
+
+    SC_METHOD (genMoore);
+    dont_initialize ();
+    sensitive << (*(in_CLOCK)).neg();
+
+# ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+# endif    
+
+#endif
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Queue::~Queue"
+  Queue::~Queue (void)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    log_printf(INFO,Queue,FUNCTION,"Generate Statistics file");
+
+    _stat->generate_file(statistics(0));
+    delete _stat;
+#endif
+
+    log_printf(INFO,Queue,FUNCTION,"Deallocation");
+    deallocation ();
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_allocation.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_allocation.cpp	(revision 67)
@@ -0,0 +1,96 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::allocation"
+  void Queue::allocation (void)
+  {
+    string rename;
+
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name       
+					      ,"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 "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface_fifo * interface = _interfaces->set_interface("insert"
+#ifdef POSITION
+							 ,IN
+							 ,WEST
+							 ,"Insertion of data"
+#endif
+							 );
+      
+       in_INSERT_VAL  = interface->set_signal_valack_in (VAL);
+      out_INSERT_ACK  = interface->set_signal_valack_out(ACK);
+       in_INSERT_DATA = interface->set_signal_in  <Tdata_t> ("data", _param->_size_data);
+    }
+    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface_fifo * interface = _interfaces->set_interface("retire"
+#ifdef POSITION
+							      ,IN
+							      ,EAST
+							      ,"Retire of data"
+#endif
+							      );
+      
+      out_RETIRE_VAL  = interface->set_signal_valack_out(VAL);
+       in_RETIRE_ACK  = interface->set_signal_valack_in (ACK);
+      out_RETIRE_DATA = interface->set_signal_out <Tdata_t> ("data", _param->_size_data);
+    }
+     
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    _queue_control = new morpheo::behavioural::generic::queue_control::Queue_Control::Queue_Control(_param->_size_queue);
+    _queue_data    = new Tdata_t [_param->_size_queue];
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_deallocation.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_deallocation.cpp	(revision 67)
@@ -0,0 +1,45 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::deallocation"
+  void Queue::deallocation (void)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    delete    in_CLOCK ;
+    delete    in_NRESET;
+
+    delete    in_INSERT_VAL ;
+    delete   out_INSERT_ACK ;
+    delete    in_INSERT_DATA;
+
+    delete   out_RETIRE_VAL ;
+    delete    in_RETIRE_ACK ;
+    delete   out_RETIRE_DATA;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    delete _queue_control;
+    delete _queue_data;
+    delete _component;
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_genMoore.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_genMoore.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_genMoore.cpp	(revision 67)
@@ -0,0 +1,37 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+#undef  FUNCTION
+#define FUNCTION "Queue::genMoore"
+  void Queue::genMoore (void)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+    
+    internal_INSERT_ACK = not _queue_control->full();
+    internal_RETIRE_VAL = not _queue_control->empty();
+    
+    PORT_WRITE(out_INSERT_ACK , internal_INSERT_ACK);
+    PORT_WRITE(out_RETIRE_VAL , internal_RETIRE_VAL);
+    PORT_WRITE(out_RETIRE_DATA,_queue_data[(*_queue_control)[0]]);
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_statistics.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_statistics.cpp	(revision 67)
@@ -0,0 +1,35 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::statistics"
+  string Queue::statistics (uint32_t depth)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    string txt = _stat->print(depth);
+    
+    log_printf(FUNC,Queue,FUNCTION,"End");
+
+    return txt;
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_transition.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_transition.cpp	(revision 67)
@@ -0,0 +1,72 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::transition"
+  void Queue::transition (void)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+    
+    if (PORT_READ(in_NRESET) == 0)
+      {
+	_queue_control->clear();
+      }
+    else
+      {
+	// ***** PUSH to queue
+	if ((PORT_READ(in_INSERT_VAL) == 1) and
+	    (    internal_INSERT_ACK  == 1))
+	  {
+	    log_printf(TRACE,Queue,FUNCTION,"PUSH");
+	    
+	    // Write in reservation station
+	    uint32_t index = _queue_control->push();
+	    
+	    log_printf(TRACE,Queue,FUNCTION," * index         : %d",index);
+	    
+  	    _queue_data[index] = PORT_READ(in_INSERT_DATA);
+	  }
+	
+	// ***** POP queue
+	if ((    internal_RETIRE_VAL  == 1) and
+	    (PORT_READ(in_RETIRE_ACK) == 1))
+	  {
+	    log_printf(TRACE,Queue,FUNCTION,"POP");
+	    log_printf(TRACE,Queue,FUNCTION," * index         : %d",(*_queue_control)[0]);
+	    
+	    _queue_control->pop();
+	  }
+      }
+
+#ifdef STATISTICS
+    _stat->add();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    vhdl_testbench_transition ();
+#endif
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl.cpp	(revision 67)
@@ -0,0 +1,44 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::vhdl"
+  void Queue::vhdl (void)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    Vhdl * vhdl = new Vhdl (_name);
+
+    _interfaces->set_port(vhdl);
+    _component->vhdl_instance(vhdl);
+
+    vhdl_declaration (vhdl);
+    vhdl_body        (vhdl);
+
+    vhdl->generate_file();
+
+    delete vhdl;
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_body.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_body.cpp	(revision 67)
@@ -0,0 +1,122 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::vhdl_body"
+  void Queue::vhdl_body (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("-- Output");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("out_INSERT_ACK        <= not reg_FULL;");
+    vhdl->set_body ("out_RETIRE_VAL        <= not reg_EMPTY;");
+	
+    if (_param->_size_queue > 1)
+      vhdl->set_body ("out_RETIRE_DATA       <= reg_DATA(conv_integer(reg_PTR_READ));");
+    else
+      vhdl->set_body ("out_RETIRE_DATA       <= reg_DATA(0);");
+
+    vhdl->set_body ("");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("-- Signal");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("");
+    vhdl->set_body ("signal_PTR_EQUAL      <=");
+    if (_param->_size_queue > 1)
+      {
+	vhdl->set_body ("\t'1' when signal_NEXT_PTR_READ = signal_NEXT_PTR_WRITE else");
+	vhdl->set_body ("\t'0';");
+      }
+    else
+      vhdl->set_body ("\t'1';");
+    vhdl->set_body ("signal_NEXT_FULL      <=");
+    vhdl->set_body ("\t'1' when signal_WRITE='1' and signal_PTR_EQUAL='1' else");
+    vhdl->set_body ("\t'0' when signal_READ ='1'                          else");
+    vhdl->set_body ("\treg_FULL ;");
+    vhdl->set_body ("signal_NEXT_EMPTY     <=");
+    vhdl->set_body ("\t'1' when signal_READ ='1' and signal_PTR_EQUAL='1' else");
+    vhdl->set_body ("\t'0' when signal_WRITE='1'                          else");
+    vhdl->set_body ("\treg_EMPTY;");
+    vhdl->set_body ("");
+    vhdl->set_body ("-- read");
+    vhdl->set_body ("signal_READ           <= (not reg_EMPTY) and in_RETIRE_ACK;");
+
+    if (_param->_size_queue > 1)
+      {  
+	vhdl->set_body ("signal_NEXT_PTR_READ  <= ");
+	vhdl->set_body ("\treg_PTR_READ   when signal_READ='0' else");
+	if (is_log2(_param->_size_queue) == false)
+	  vhdl->set_body ("\tconst_PTR_INIT when reg_PTR_READ  = const_PTR_MAX else");
+	vhdl->set_body ("\treg_PTR_READ +'1';");
+      }
+    vhdl->set_body ("");
+    vhdl->set_body ("-- write");
+    vhdl->set_body ("signal_WRITE          <= (not reg_FULL ) and in_INSERT_VAL;");
+    if (_param->_size_queue > 1)
+      {
+	vhdl->set_body ("signal_NEXT_PTR_WRITE <= ");
+	vhdl->set_body ("\treg_PTR_WRITE  when signal_WRITE='0' else");
+	if (is_log2(_param->_size_queue) == false)
+	  vhdl->set_body ("\tconst_PTR_INIT when reg_PTR_WRITE = const_PTR_MAX else");
+	vhdl->set_body ("\treg_PTR_WRITE+'1';");
+      }
+    vhdl->set_body ("");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("-- Registers");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("");
+    vhdl->set_body ("queue_write: process (in_CLOCK)");
+    vhdl->set_body ("begin  -- process queue_write");
+    vhdl->set_body ("\tif in_CLOCK'event and in_CLOCK = '1' then");
+    vhdl->set_body ("");
+    vhdl->set_body ("\t\tif (in_NRESET = '0') then");    
+    if (_param->_size_queue > 1)
+      {
+	vhdl->set_body ("\t\t\treg_PTR_READ  <= const_PTR_INIT;");
+	vhdl->set_body ("\t\t\treg_PTR_WRITE <= const_PTR_INIT;");
+      }
+    vhdl->set_body ("\t\t\treg_FULL      <= '0';");
+    vhdl->set_body ("\t\t\treg_EMPTY     <= '1';");
+    vhdl->set_body ("\t\telse");
+    if (_param->_size_queue > 1)
+      {
+	vhdl->set_body ("\t\t\treg_PTR_READ  <= signal_NEXT_PTR_READ ;");
+	vhdl->set_body ("\t\t\treg_PTR_WRITE <= signal_NEXT_PTR_WRITE;");
+      }
+    vhdl->set_body ("\t\t\treg_FULL      <= signal_NEXT_FULL ;");
+    vhdl->set_body ("\t\t\treg_EMPTY     <= signal_NEXT_EMPTY;");
+    vhdl->set_body ("");
+    vhdl->set_body ("\t\t\tif (signal_WRITE = '1') then");    
+    if (_param->_size_queue > 1)
+      vhdl->set_body ("\t\t\t\treg_DATA(conv_integer(reg_PTR_WRITE)) <= in_INSERT_DATA;");
+    else
+      vhdl->set_body ("\t\t\t\treg_DATA(0) <= in_INSERT_DATA;");
+    vhdl->set_body ("\t\t\tend if;");
+    vhdl->set_body ("\t\tend if;");
+    vhdl->set_body ("");
+    vhdl->set_body ("\tend if;");
+    vhdl->set_body ("end process queue_write;");
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_declaration.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_declaration.cpp	(revision 67)
@@ -0,0 +1,59 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::vhdl_declaration"
+  void Queue::vhdl_declaration (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    vhdl->set_type    ("Tqueue","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_data));
+    
+    vhdl->set_signal  ("reg_DATA             ", "Tqueue");
+    vhdl->set_signal  ("reg_FULL             ", 1);
+    vhdl->set_signal  ("reg_EMPTY            ", 1);
+    if (_param->_size_queue > 1)
+      {
+	vhdl->set_signal  ("reg_PTR_READ         ", log2(_param->_size_queue));
+	vhdl->set_signal  ("reg_PTR_WRITE        ", log2(_param->_size_queue));
+      }
+    vhdl->set_signal  ("signal_READ          ", 1);
+    vhdl->set_signal  ("signal_WRITE         ", 1);
+    vhdl->set_signal  ("signal_PTR_EQUAL     ", 1);
+
+    if (_param->_size_queue > 1)
+      {
+	vhdl->set_signal  ("signal_NEXT_PTR_READ ", log2(_param->_size_queue));
+	vhdl->set_signal  ("signal_NEXT_PTR_WRITE", log2(_param->_size_queue));
+      }
+
+    vhdl->set_signal  ("signal_NEXT_FULL     ", 1);
+    vhdl->set_signal  ("signal_NEXT_EMPTY    ", 1);
+    
+    if (_param->_size_queue > 1)
+      {
+	vhdl->set_constant("const_PTR_INIT       ", log2(_param->_size_queue), 0);
+	if (is_log2(_param->_size_queue) == false)
+	  vhdl->set_constant("const_PTR_MAX        ", log2(_param->_size_queue), _param->_size_queue-1);
+      }
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_testbench_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_testbench_transition.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_testbench_transition.cpp	(revision 67)
@@ -0,0 +1,36 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Queue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::vhdl_testbench_transition"
+  void Queue::vhdl_testbench_transition ()
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    // Evaluation before read the ouput signal
+//     sc_start(0);
+
+    _interfaces->testbench();
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics.cpp	(revision 67)
@@ -0,0 +1,44 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Statistics.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::Statistics"
+  Statistics::Statistics (string                                        name                       ,
+			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			  Parameters                                  * parameters
+			  ) :
+    morpheo::behavioural::Statistics(name                  ,
+				     parameters_statistics ),
+    _parameters(parameters)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Queue::~Statistics"
+  Statistics::~Statistics () 
+  { 
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics_add.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics_add.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics_add.cpp	(revision 67)
@@ -0,0 +1,33 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::add"
+  void Statistics::add ()
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+    log_printf(FUNC,Queue,FUNCTION,"End");
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics_print.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics_print.cpp	(revision 67)
@@ -0,0 +1,57 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::print"
+  string Statistics::print (uint32_t depth)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "<queue name=\"" << _name << "\" >" << endl
+        << print_body(depth+1) << endl
+	<< tab << "</queue>" << endl;
+    
+    log_printf(FUNC,Queue,FUNCTION,"End");
+
+    return msg.str();
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Queue::operator<<"
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::queue::Statistics & x)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+
+    log_printf(FUNC,Queue,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics_print_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics_print_body.cpp	(revision 67)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Statistics_print_body.cpp	(revision 67)
@@ -0,0 +1,41 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/Queue/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace queue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Queue::print_body"
+  string Statistics::print_body (uint32_t depth)
+  {
+    log_printf(FUNC,Queue,FUNCTION,"Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "";
+    
+    log_printf(FUNC,Queue,FUNCTION,"End");
+
+    return msg.str();
+  };
+
+}; // end namespace queue
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp	(revision 67)
@@ -73,5 +73,5 @@
     SC_METHOD (transition);
     dont_initialize ();
-    sensitive_pos << *(in_CLOCK);
+    sensitive << (*(in_CLOCK)).pos();
 
 #ifdef SYSTEMCASS_SPECIFIC
@@ -83,5 +83,5 @@
     SC_METHOD (genMealy_read);
     dont_initialize ();
-    sensitive_neg << *(in_CLOCK);
+    sensitive << (*(in_CLOCK)).neg();
     for (uint32_t i=0; i<_param->_nb_port_read; i++)
       {
@@ -112,5 +112,5 @@
     SC_METHOD (genMealy_write);
     dont_initialize ();
-    sensitive_neg << *(in_CLOCK);
+    sensitive<< (*(in_CLOCK)).neg();
     for (uint32_t i=0; i<_param->_nb_port_write; i++)
       {
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 67)
@@ -6,6 +6,6 @@
 
 #-----[ Simulator ]----------------------------------------
-#SIMULATOR			= systemcass_deps
-SIMULATOR			= systemc
+SIMULATOR			= systemcass_deps
+#SIMULATOR			= systemc
 
 # 3 simulators :
@@ -15,12 +15,9 @@
 
 #-----[ Flags ]--------------------------------------------
-#MORPHEO_FLAGS			=	-DSYSTEMC		\
-#					-DVHDL			\
-#  					-DVHDL_TESTBENCH	\
-#					-DVHDL_TESTBENCH_ASSERT	\
-#					-DDEBUG=DEBUG_ALL	
-
-MORPHEO_FLAGS			=	-DSYSTEMC		
-
+MORPHEO_FLAGS			=	-DSYSTEMC		\
+					-DVHDL			\
+  					-DVHDL_TESTBENCH	\
+					-DVHDL_TESTBENCH_ASSERT	\
+					-DDEBUG=DEBUG_TRACE
 #
 #					-DSTATISTICS 		\
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf	(revision 67)
@@ -3,5 +3,8 @@
 #
 
-all: _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest _Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest _Generic/Select/Select_Priority_Fixed/SelfTest _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest _Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest _Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest
+all: _Generic/Queue/SelfTest _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest _Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest _Generic/Select/Select_Priority_Fixed/SelfTest _Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest _Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest
+
+_Generic/Queue/SelfTest:
+	make all -C Generic/Queue/SelfTest
 
 _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest:
@@ -21,4 +24,5 @@
 
 clean:
+	make clean -C Generic/Queue/SelfTest
 	make clean -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
 	make clean -C Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
@@ -30,4 +34,5 @@
 
 install:
+	make install -C Generic/Queue/SelfTest
 	make install -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
 	make install -C Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp	(revision 67)
@@ -59,11 +59,8 @@
    * Déclarations des signaux
    *********************************************************************/
-  sc_clock                               * in_CLOCK;
-  sc_signal<Tcontrol_t>                  * in_NRESET;
-
   string rename;
 
-  in_CLOCK                                = new sc_clock ("clock", 1.0, 0.5);
-  in_NRESET                               = new sc_signal<Tcontrol_t> ("NRESET");
+  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);	 
+  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
   
   /********************************************************
@@ -94,4 +91,9 @@
   LABEL("Initialisation");
 
+  LABEL("Reset");
+  in_NRESET->write(0);
+  SC_START(5);
+  in_NRESET->write(1);  
+
   LABEL("Loop of Test");
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 67)
@@ -2,8 +2,9 @@
 #define DEBUG_COMPONENT_H
 
-#define DEBUG_Behavioural                                         true
+#define DEBUG_Behavioural                                         false
 #define   DEBUG_Generic                                           false
 #define     DEBUG_Counter                                         false 
 #define     DEBUG_Group                                           false
+#define     DEBUG_Queue                                           true  
 #define     DEBUG_Queue_Control                                   false 
 #define     DEBUG_Shifter                                         false
@@ -20,10 +21,10 @@
 #define         DEBUG_Multi_Execute_unit                          false
 #define           DEBUG_Execute_unit                              false
-#define             DEBUG_Load_store_unit                         true
+#define             DEBUG_Load_store_unit                         false
 #define         DEBUG_Multi_Read_unit				  false
 #define           DEBUG_Read_unit				  false
-#define             DEBUG_Read_queue                              false
+#define             DEBUG_Read_queue                              true 
 #define             DEBUG_Reservation_station                     false
-#define         DEBUG_Register_unit				  true
+#define         DEBUG_Register_unit				  false
 #define           DEBUG_Register_unit_Glue			  false
 #define     DEBUG_Multi_Front_end                                 false
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 67)
@@ -28,4 +28,5 @@
   string std_logic_conv   (uint32_t size, string   value);
   string std_logic_conv   (uint32_t size, uint32_t value);
+  string std_logic_range  (uint32_t size, uint32_t max , uint32_t min  );
   string std_logic_range  (uint32_t max , uint32_t min  );
   string std_logic_range  (uint32_t size);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info	(revision 67)
@@ -15,8 +15,8 @@
 
 # build src directory content
+target_dep		all		Generic/Queue/SelfTest
 target_dep		all		Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
 target_dep		all		Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
 target_dep		all		Generic/Select/Select_Priority_Fixed/SelfTest
-target_dep		all		Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
 target_dep		all		Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest
 target_dep		all		Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp	(revision 67)
@@ -62,4 +62,22 @@
 #undef  FUNCTION
 #define FUNCTION "Vhdl::std_logic_range"
+  string std_logic_range (uint32_t size, uint32_t max, uint32_t min)
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    string type;
+
+    if (size < 2)
+      type = "";
+    else
+      if (max == min)
+	type = "("+toString(max)+")";
+      else
+	type = "("+toString(max)+" downto "+toString(min)+")";
+
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return type;
+  };
+
   string std_logic_range (uint32_t max, uint32_t min)
   {
@@ -106,4 +124,7 @@
     return _return;
   }
+
+
+
 }; // end namespace behavioural          
 }; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Common/include/Log2.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Common/include/Log2.h	(revision 66)
+++ /trunk/IPs/systemC/processor/Morpheo/Common/include/Log2.h	(revision 67)
@@ -20,4 +20,9 @@
   }
 
+  inline bool is_log2 (uint32_t value)
+  {
+    return (value == static_cast<uint32_t>((1<<(morpheo::log2(value)))));
+  }
+
 }; // end namespace morpheo              
 
