Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Ifetch_queue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Ifetch_queue.h	(revision 135)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Ifetch_queue.h	(revision 136)
@@ -84,9 +84,13 @@
   public    : SC_IN (Tcontrol_t         )  **  in_DECOD_ACK                           ;//[nb_instruction]
   public    : SC_OUT(Tinstruction_t     )  ** out_DECOD_INSTRUCTION                   ;//[nb_instruction]
-  public    : SC_OUT(Tgeneral_address_t )   * out_DECOD_ADDRESS                       ;
-  public    : SC_OUT(Tinst_ifetch_ptr_t )   * out_DECOD_INST_IFETCH_PTR               ;
-  public    : SC_OUT(Tbranch_state_t    )   * out_DECOD_BRANCH_STATE                  ;
-  public    : SC_OUT(Tprediction_ptr_t  )   * out_DECOD_BRANCH_UPDATE_PREDICTION_ID   ;
-  public    : SC_OUT(Texception_t       )   * out_DECOD_EXCEPTION                     ;
+  public    : SC_OUT(Tgeneral_address_t )  ** out_DECOD_ADDRESS                       ;
+  public    : SC_OUT(Tbranch_state_t    )  ** out_DECOD_BRANCH_STATE                  ;
+  public    : SC_OUT(Tprediction_ptr_t  )  ** out_DECOD_BRANCH_UPDATE_PREDICTION_ID   ;
+  public    : SC_OUT(Texception_t       )  ** out_DECOD_EXCEPTION                     ;
+//public    : SC_OUT(Tgeneral_address_t )   * out_DECOD_ADDRESS                       ;
+//public    : SC_OUT(Tinst_ifetch_ptr_t )   * out_DECOD_INST_IFETCH_PTR               ;
+//public    : SC_OUT(Tbranch_state_t    )   * out_DECOD_BRANCH_STATE                  ;
+//public    : SC_OUT(Tprediction_ptr_t  )   * out_DECOD_BRANCH_UPDATE_PREDICTION_ID   ;
+//public    : SC_OUT(Texception_t       )   * out_DECOD_EXCEPTION                     ;
 
     // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -110,7 +114,15 @@
     // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   private   : Tcontrol_t                      internal_ADDRESS_ACK    ;
-  private   : Tcontrol_t                    * internal_DECOD_VAL      ;
+  private   : Tcontrol_t                    * internal_DECOD_VAL      ;//[nb_instruction]
+  private   : uint32_t                      * internal_DECOD_PTR      ;//[nb_instruction] Only queue_scheme == full_assoc
+  private   : uint32_t                      * internal_DECOD_SLOT     ;//[nb_instruction] Only queue_scheme == full_assoc
   private   : Tcontrol_t                      internal_ICACHE_RSP_ACK ;
   private   : Tcontrol_t                      internal_EVENT_RESET_ACK;
+
+    
+
+    // function pointer
+  public    : void (morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Ifetch_queue::*function_transition        ) (void);
+  public    : void (morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Ifetch_queue::*function_genMoore          ) (void);
 #endif
 
@@ -146,6 +158,13 @@
 #ifdef SYSTEMC				       
   public  : void        constant                  (void);
-  public  : void        transition                (void);
-  public  : void        genMoore                  (void);
+
+  public  : void        transition                     (void);
+  public  : void        genMoore                       (void);
+
+  public  : void        function_no_assoc_transition   (void);
+  public  : void        function_no_assoc_genMoore     (void);
+
+  public  : void        function_full_assoc_transition (void);
+  public  : void        function_full_assoc_genMoore   (void);
 #endif					       
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Parameters.h	(revision 135)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Parameters.h	(revision 136)
@@ -11,4 +11,5 @@
 #include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
+#include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Types.h"
 
 namespace morpheo {
@@ -24,23 +25,25 @@
   {
     //-----[ fields ]------------------------------------------------------------
-  public : uint32_t _size_queue                           ;
-  public : uint32_t _nb_instruction                       ;
-//public : uint32_t _size_branch_update_prediction        ;
-//public : uint32_t _size_general_data                    ;
-  public : uint32_t _nb_instruction_in_queue              ;
-
-//public : uint32_t _size_queue_ptr                       ;
-//public : uint32_t _size_instruction_ptr                 ;
-
-//public : bool     _have_port_queue_ptr                  ;
-//public : bool     _have_port_instruction_ptr            ;
-//public : bool     _have_port_branch_update_prediction_id;
+  public : uint32_t               _size_queue                           ;
+  public : Tifetch_queue_scheme_t _queue_scheme                         ;
+  public : uint32_t               _nb_instruction                       ;
+//public : uint32_t               _size_branch_update_prediction        ;
+//public : uint32_t               _size_general_data                    ;
+  public : uint32_t               _nb_instruction_in_queue              ;
+		                  
+//public : uint32_t               _size_queue_ptr                       ;
+//public : uint32_t               _size_instruction_ptr                 ;
+		                  
+//public : bool                   _have_port_queue_ptr                  ;
+//public : bool                   _have_port_instruction_ptr            ;
+//public : bool                   _have_port_branch_update_prediction_id;
 
     //-----[ methods ]-----------------------------------------------------------
-  public : Parameters  (uint32_t size_queue                   ,
-			uint32_t nb_instruction               ,
-			uint32_t size_branch_update_prediction,
-			uint32_t size_general_data            ,
-                        bool     is_toplevel=false);
+  public : Parameters  (uint32_t               size_queue                   ,
+			Tifetch_queue_scheme_t queue_scheme                 ,
+			uint32_t               nb_instruction               ,
+			uint32_t               size_branch_update_prediction,
+			uint32_t               size_general_data            ,
+                        bool                   is_toplevel=false);
 //   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Types.h	(revision 135)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Types.h	(revision 136)
@@ -18,4 +18,10 @@
 namespace ifetch_unit {
 namespace ifetch_queue {
+
+  typedef enum 
+    {
+       IFETCH_QUEUE_SCHEME_NO_ASSOC   // Read only head
+      ,IFETCH_QUEUE_SCHEME_FULL_ASSOC // Scan all slot
+    } Tifetch_queue_scheme_t;
 
   typedef enum
@@ -60,4 +66,26 @@
 }; // end namespace core
 }; // end namespace behavioural
+
+  template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t>(const morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t& x)
+  {
+    switch (x)
+      {
+      case morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_NO_ASSOC   : return "no_assoc"  ; break;
+      case morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_FULL_ASSOC : return "full_assoc"; break;
+      default : return ""; break;
+      }
+  };
+
+  template<> inline morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t fromString<morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t>(const std::string& x)
+  {
+    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_NO_ASSOC  ))) == 0) or
+         (x.compare("no_assoc")   == 0))
+      return morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_NO_ASSOC;
+    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_FULL_ASSOC))) == 0) or
+         (x.compare("full_assoc") == 0))
+      return morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_FULL_ASSOC;
+    
+    throw (ErrorMorpheo ("<fromString> : Unknow string : \""+x+"\""));
+  };
   
   template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::ifetch_queue_state_t>(const morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::ifetch_queue_state_t& x)
