Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters.cpp	(revision 88)
@@ -29,103 +29,111 @@
 			  uint32_t size_special_data  ,
 			  uint32_t nb_special_register,
-			  uint32_t nb_bypass_write    ):
-    _size_write_queue        (size_write_queue   ),
-    _size_execute_queue      (size_execute_queue ),
-    _nb_context              (nb_context         ),
-    _nb_front_end            (nb_front_end       ),
-    _nb_ooo_engine           (nb_ooo_engine      ),
-    _nb_packet               (nb_packet          ),
-    _size_general_data       (size_general_data  ),
-    _nb_general_register     (nb_general_register),
-    _size_special_data       (size_special_data  ),
-    _nb_special_register     (nb_special_register),
-    _nb_bypass_write         (nb_bypass_write    ),
-
-    _nb_gpr_write            (1),
-    _nb_spr_write            (1),
-
-    _size_context_id         (log2(_nb_context         )),
-    _size_front_end_id       (log2(_nb_front_end       )),
-    _size_ooo_engine_id      (log2(_nb_ooo_engine      )),
-    _size_packet_id          (log2(_nb_packet          )),
-    _size_general_register   (log2(_nb_general_register)),
-    _size_special_register   (log2(_nb_special_register)),
-
-    _have_component_execute_queue (_size_execute_queue > 0),
-    _have_port_context_id         (_size_context_id    > 0),
-    _have_port_front_end_id       (_size_front_end_id  > 0),
-    _have_port_ooo_engine_id      (_size_ooo_engine_id > 0),
-    _have_port_packet_id          (_size_packet_id     > 0)
+			  uint32_t nb_bypass_write    ,
+                          bool     is_toplevel        )
   {
     log_printf(FUNC,Write_unit,FUNCTION,"Begin");
 
-    _param_write_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue  ::Parameters(size_write_queue   ,
-																		    nb_context         ,
-																		    nb_front_end       ,
-																		    nb_ooo_engine      ,
-																		    nb_packet          ,
-																		    size_general_data  ,
-																		    nb_general_register,
-																		    size_special_data  ,
-																		    nb_special_register,
-																		    nb_bypass_write    );
+    _size_write_queue             = size_write_queue   ;
+    _size_execute_queue           = size_execute_queue ;
+    _nb_context                   = nb_context         ;
+    _nb_front_end                 = nb_front_end       ;
+    _nb_ooo_engine                = nb_ooo_engine      ;
+    _nb_packet                    = nb_packet          ;
+    _nb_general_register          = nb_general_register;
+    _nb_special_register          = nb_special_register;
+    _nb_bypass_write              = nb_bypass_write    ;
+                                  
+    _nb_gpr_write                 = 1;
+    _nb_spr_write                 = 1;
+
+    _have_component_execute_queue = _size_execute_queue > 0;
+                                  
+    _param_write_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue  ::Parameters(_size_write_queue   ,
+																		    _nb_context         ,
+																		    _nb_front_end       ,
+																		    _nb_ooo_engine      ,
+																		    _nb_packet          ,
+																		     size_general_data  ,
+																		    _nb_general_register,
+																		     size_special_data  ,
+																		    _nb_special_register,
+																		    _nb_bypass_write    );
     
     if (_have_component_execute_queue)
-      _param_execute_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters(size_execute_queue   ,
-																			nb_context         ,
-																			nb_front_end       ,
-																			nb_ooo_engine      ,
-																			nb_packet          ,
-																			size_general_data  ,
-																			size_special_data  );
+      _param_execute_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters(_size_execute_queue   ,
+																			_nb_context         ,
+																			_nb_front_end       ,
+																			_nb_ooo_engine      ,
+																			_nb_packet          ,
+																			 size_general_data  ,
+																			 size_special_data  );
 
     test();
+
+    if (is_toplevel)
+      {
+        _size_context_id              = log2(_nb_context         );
+        _size_front_end_id            = log2(_nb_front_end       );
+        _size_ooo_engine_id           = log2(_nb_ooo_engine      );
+        _size_rob_ptr                 = log2(_nb_packet          );
+        _size_general_register        = log2(_nb_general_register);
+        _size_special_register        = log2(_nb_special_register);
+        _size_general_data            = size_general_data  ;
+        _size_special_data            = size_special_data  ;
+        
+        _have_port_context_id         = _size_context_id    > 0;
+        _have_port_front_end_id       = _size_front_end_id  > 0;
+        _have_port_ooo_engine_id      = _size_ooo_engine_id > 0;
+        _have_port_rob_ptr            = _size_rob_ptr       > 0;
+
+        copy();
+      }
 
     log_printf(FUNC,Write_unit,FUNCTION,"End");
   };
   
-#undef  FUNCTION
-#define FUNCTION "Write_unit::Parameters (copy)"
-  Parameters::Parameters (Parameters & param):
-    _size_write_queue        (param._size_write_queue       ),
-    _size_execute_queue      (param._size_execute_queue     ),
-    _nb_context              (param._nb_context             ),
-    _nb_front_end            (param._nb_front_end           ),
-    _nb_ooo_engine           (param._nb_ooo_engine          ),
-    _nb_packet               (param._nb_packet              ),
-    _size_general_data       (param._size_general_data      ),
-    _nb_general_register     (param._nb_general_register    ),
-    _size_special_data       (param._size_special_data      ),
-    _nb_special_register     (param._nb_special_register    ),
-    _nb_bypass_write         (param._nb_bypass_write        ),
+// #undef  FUNCTION
+// #define FUNCTION "Write_unit::Parameters (copy)"
+//   Parameters::Parameters (Parameters & param):
+//     _size_write_queue        (param._size_write_queue       ),
+//     _size_execute_queue      (param._size_execute_queue     ),
+//     _nb_context              (param._nb_context             ),
+//     _nb_front_end            (param._nb_front_end           ),
+//     _nb_ooo_engine           (param._nb_ooo_engine          ),
+//     _nb_packet               (param._nb_packet              ),
+//     _size_general_data       (param._size_general_data      ),
+//     _nb_general_register     (param._nb_general_register    ),
+//     _size_special_data       (param._size_special_data      ),
+//     _nb_special_register     (param._nb_special_register    ),
+//     _nb_bypass_write         (param._nb_bypass_write        ),
 
-    _nb_gpr_write            (param._nb_gpr_write           ),
-    _nb_spr_write            (param._nb_spr_write           ),
+//     _nb_gpr_write            (param._nb_gpr_write           ),
+//     _nb_spr_write            (param._nb_spr_write           ),
 
-    _size_context_id         (param._size_context_id        ),
-    _size_front_end_id       (param._size_front_end_id      ),
-    _size_ooo_engine_id      (param._size_ooo_engine_id     ),
-    _size_packet_id          (param._size_packet_id         ),
-    _size_general_register   (param._size_general_register  ),
-    _size_special_register   (param._size_special_register  ),
+//     _size_context_id         (param._size_context_id        ),
+//     _size_front_end_id       (param._size_front_end_id      ),
+//     _size_ooo_engine_id      (param._size_ooo_engine_id     ),
+//     _size_packet_id          (param._size_packet_id         ),
+//     _size_general_register   (param._size_general_register  ),
+//     _size_special_register   (param._size_special_register  ),
 
-    _have_component_execute_queue (param._have_component_execute_queue),
-    _have_port_context_id         (param._have_port_context_id        ),
-    _have_port_front_end_id       (param._have_port_front_end_id      ),
-    _have_port_ooo_engine_id      (param._have_port_ooo_engine_id     ),
-    _have_port_packet_id          (param._have_port_packet_id         )
-  {
-    log_printf(FUNC,Write_unit,FUNCTION,"Begin");
+//     _have_component_execute_queue (param._have_component_execute_queue),
+//     _have_port_context_id         (param._have_port_context_id        ),
+//     _have_port_front_end_id       (param._have_port_front_end_id      ),
+//     _have_port_ooo_engine_id      (param._have_port_ooo_engine_id     ),
+//     _have_port_packet_id          (param._have_port_packet_id         )
+//   {
+//     log_printf(FUNC,Write_unit,FUNCTION,"Begin");
     
-    _param_write_queue   = param._param_write_queue  ;
-    _param_execute_queue = param._param_execute_queue;
+//     _param_write_queue   = param._param_write_queue  ;
+//     _param_execute_queue = param._param_execute_queue;
 
-    test();
-    log_printf(FUNC,Write_unit,FUNCTION,"End");
-  };
+//     test();
+//     log_printf(FUNC,Write_unit,FUNCTION,"End");
+//   };
 
 #undef  FUNCTION
 #define FUNCTION "Write_unit::~Parameters"
-  Parameters::~Parameters () 
+  Parameters::~Parameters (void)
   {
     log_printf(FUNC,Write_unit,FUNCTION,"Begin");
@@ -139,4 +147,17 @@
   };
 
+#undef  FUNCTION
+#define FUNCTION "Write_unit::copy"
+  void Parameters::copy (void)
+  {
+    log_printf(FUNC,Write_unit,FUNCTION,"Begin");
+
+    COPY(_param_write_queue);
+    if (_have_component_execute_queue)
+    COPY(_param_execute_queue);
+
+    log_printf(FUNC,Write_unit,FUNCTION,"End");
+  };
+
 }; // end namespace write_unit
 }; // end namespace multi_write_unit
@@ -144,5 +165,4 @@
 }; // 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_Write_unit/Write_unit/src/Write_unit.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit.cpp	(revision 88)
@@ -38,4 +38,10 @@
     log_printf(FUNC,Write_unit,FUNCTION,"Begin");
 
+#if DEBUG_Write_unit == true
+    log_printf(INFO,Write_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
     log_printf(INFO,Write_unit,FUNCTION,"Allocation");
 
@@ -47,5 +53,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {	
 	log_printf(INFO,Write_unit,FUNCTION,"Allocation of statistics");
@@ -56,5 +62,5 @@
 
 #ifdef VHDL
-    if (_usage & USE_VHDL)
+    if (usage_is_set(_usage,USE_VHDL))
       {
 	// generate the vhdl
@@ -66,5 +72,5 @@
 
 #ifdef SYSTEMC
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	log_printf(INFO,Write_unit,FUNCTION,"Method - transition");
@@ -90,5 +96,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {
 	log_printf(INFO,Write_unit,FUNCTION,"Generate Statistics file");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp	(revision 88)
@@ -23,9 +23,9 @@
   void Write_unit::allocation (
 #ifdef STATISTICS
-			       morpheo::behavioural::Parameters_Statistics * param_statistics
+                               morpheo::behavioural::Parameters_Statistics * param_statistics
 #else
-			       void
-#endif
-			       )
+                               void
+#endif
+                               )
   {
     log_printf(FUNC,Write_unit,FUNCTION,"Begin");
@@ -34,9 +34,9 @@
 
     Entity * entity = _component->set_entity (_name       
-					      ,"Write_unit"
-#ifdef POSITION
-					      ,COMBINATORY 
-#endif
-					      );
+                                              ,"Write_unit"
+#ifdef POSITION
+                                              ,COMBINATORY 
+#endif
+                                              );
 
     _interfaces = entity->set_interfaces();
@@ -46,9 +46,9 @@
       Interface * interface = _interfaces->set_interface(""
 #ifdef POSITION
-							 ,IN
-							 ,SOUTH,
-							 "Generalist interface"
-#endif
-							 );
+                                                         ,IN
+                                                         ,SOUTH,
+                                                         "Generalist interface"
+#endif
+                                                         );
 
      in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
@@ -64,5 +64,5 @@
        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id     );
        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id    );
-       ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_packet_id        );
+       ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr          );
 //     ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
@@ -87,5 +87,5 @@
        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t     ,_param->_size_front_end_id );
        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t     ,_param->_size_ooo_engine_id);
-       ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_packet_id    );
+       ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_rob_ptr      );
 //     ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_OPERATION    ,"operation"    ,Toperation_t   ,_param->_size_operation    );
 //     ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_TYPE         ,"type"         ,Ttype_t        ,_param->_size_type         );
@@ -94,4 +94,5 @@
        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1                          );
        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_general_data );
+       ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data );
      }
 
@@ -138,18 +139,19 @@
      {
        name = _name+"_write_queue";
-       
+       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());     
+
        component_write_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Write_queue 
-	 (name.c_str()
+         (name.c_str()
 #ifdef STATISTICS
-	  ,param_statistics
-#endif
-	  ,_param->_param_write_queue
-	  ,_usage);
+          ,param_statistics
+#endif
+          ,_param->_param_write_queue
+          ,_usage);
        
        _component->set_component (component_write_queue->_component
 #ifdef POSITION
-				  , 50, 50, 10, 10
-#endif
-				  );
+                                  , 50, 50, 10, 10
+#endif
+                                  );
      }
 
@@ -157,18 +159,19 @@
      {
        name = _name+"_execute_queue";
+       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());     
        
        component_execute_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Execute_queue 
-	 (name.c_str()
+         (name.c_str()
 #ifdef STATISTICS
-	  ,param_statistics
-#endif
-	  ,_param->_param_execute_queue
-	  ,_usage);
+          ,param_statistics
+#endif
+          ,_param->_param_execute_queue
+          ,_usage);
        
        _component->set_component (component_execute_queue->_component
 #ifdef POSITION
-				  , 50, 50, 10, 10
-#endif
-				  );
+                                  , 50, 50, 10, 10
+#endif
+                                  );
      }
 
@@ -176,9 +179,9 @@
      {
        name = _name+"_write_queue";
-       std::cout << "Instance : " << name << std::endl;
-	
+       log_printf(INFO,Core,FUNCTION,_("Instance : %s"),name.c_str());
+        
 #ifdef POSITION
        _component->interface_map (name ,"",
-				  _name,"");
+                                  _name,"");
 #endif
 
@@ -189,5 +192,5 @@
 #ifdef POSITION
        _component->interface_map (name ,"write_queue_in",
-				  _name,"write_unit_in");
+                                  _name,"write_unit_in");
 #endif
 
@@ -200,5 +203,5 @@
        if (_param->_have_port_ooo_engine_id)
        _component->port_map(name, "in_WRITE_QUEUE_IN_OOO_ENGINE_ID", _name, "in_WRITE_UNIT_IN_OOO_ENGINE_ID");
-       if (_param->_have_port_packet_id)
+       if (_param->_have_port_rob_ptr)
        _component->port_map(name, "in_WRITE_QUEUE_IN_PACKET_ID"    , _name, "in_WRITE_UNIT_IN_PACKET_ID"    );
      //_component->port_map(name, "in_WRITE_QUEUE_IN_OPERATION"    , _name, "in_WRITE_UNIT_IN_OPERATION"    );
@@ -216,118 +219,120 @@
 
        if (_param->_have_component_execute_queue)
-	 {
-#ifdef POSITION
-	   _component->interface_map (name ,"write_queue_out",
-				      _name+"_execute_queue", "execute_queue_in");
-#endif
-
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_VAL"          , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_VAL"          );
-	   _component->port_map(name, "in_WRITE_QUEUE_OUT_ACK"          , _name+"_execute_queue","out_EXECUTE_QUEUE_IN_ACK"          );
-	   if (_param->_have_port_context_id)
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_CONTEXT_ID"   , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_CONTEXT_ID"   );
-	   if (_param->_have_port_front_end_id)
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_FRONT_END_ID" , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_FRONT_END_ID" );
-	   if (_param->_have_port_ooo_engine_id)
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_OOO_ENGINE_ID", _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID");
-	   if (_param->_have_port_packet_id)
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_PACKET_ID"    , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_PACKET_ID"    );
-	 //_component->port_map(name,"out_WRITE_QUEUE_OUT_OPERATION"    , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_OPERATION"    );
-	 //_component->port_map(name,"out_WRITE_QUEUE_OUT_TYPE"         , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_TYPE"         );
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_FLAGS"        , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_FLAGS"        );
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_EXCEPTION"    , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_EXCEPTION"    );
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_NO_SEQUENCE"  , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_NO_SEQUENCE"  );
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_ADDRESS"      , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_ADDRESS"      );
-	 }
+         {
+#ifdef POSITION
+           _component->interface_map (name ,"write_queue_out",
+                                      _name+"_execute_queue", "execute_queue_in");
+#endif
+
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_VAL"          , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_VAL"          );
+           _component->port_map(name, "in_WRITE_QUEUE_OUT_ACK"          , _name+"_execute_queue","out_EXECUTE_QUEUE_IN_ACK"          );
+           if (_param->_have_port_context_id)
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_CONTEXT_ID"   , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_CONTEXT_ID"   );
+           if (_param->_have_port_front_end_id)
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_FRONT_END_ID" , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_FRONT_END_ID" );
+           if (_param->_have_port_ooo_engine_id)
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_OOO_ENGINE_ID", _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID");
+           if (_param->_have_port_rob_ptr)
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_PACKET_ID"    , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_PACKET_ID"    );
+         //_component->port_map(name,"out_WRITE_QUEUE_OUT_OPERATION"    , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_OPERATION"    );
+         //_component->port_map(name,"out_WRITE_QUEUE_OUT_TYPE"         , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_TYPE"         );
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_FLAGS"        , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_FLAGS"        );
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_EXCEPTION"    , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_EXCEPTION"    );
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_NO_SEQUENCE"  , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_NO_SEQUENCE"  );
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_ADDRESS"      , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_ADDRESS"      );
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_DATA"         , _name+"_execute_queue", "in_EXECUTE_QUEUE_IN_DATA"         );
+         }
        else
-	 {
-#ifdef POSITION
-	   _component->interface_map (name ,"write_queue_out",
-				      _name,"write_unit_out");
-#endif
-
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_VAL"          , _name,"out_WRITE_UNIT_OUT_VAL"          );
-	   _component->port_map(name, "in_WRITE_QUEUE_OUT_ACK"          , _name, "in_WRITE_UNIT_OUT_ACK"          );
-	   if (_param->_have_port_context_id)
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_CONTEXT_ID"   , _name,"out_WRITE_UNIT_OUT_CONTEXT_ID"   );
-	   if (_param->_have_port_front_end_id)
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_FRONT_END_ID" , _name,"out_WRITE_UNIT_OUT_FRONT_END_ID" );
-	   if (_param->_have_port_ooo_engine_id)
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_OOO_ENGINE_ID", _name,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID");
-	   if (_param->_have_port_packet_id)
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_PACKET_ID"    , _name,"out_WRITE_UNIT_OUT_PACKET_ID"    );
-	 //_component->port_map(name,"out_WRITE_QUEUE_OUT_OPERATION"    , _name,"out_WRITE_UNIT_OUT_OPERATION"    );
-	 //_component->port_map(name,"out_WRITE_QUEUE_OUT_TYPE"         , _name,"out_WRITE_UNIT_OUT_TYPE"         );
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_FLAGS"        , _name,"out_WRITE_UNIT_OUT_FLAGS"        );
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_EXCEPTION"    , _name,"out_WRITE_UNIT_OUT_EXCEPTION"    );
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_NO_SEQUENCE"  , _name,"out_WRITE_UNIT_OUT_NO_SEQUENCE"  );
-	   _component->port_map(name,"out_WRITE_QUEUE_OUT_ADDRESS"      , _name,"out_WRITE_UNIT_OUT_ADDRESS"      );
-	 }	 
+         {
+#ifdef POSITION
+           _component->interface_map (name ,"write_queue_out",
+                                      _name,"write_unit_out");
+#endif
+
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_VAL"          , _name,"out_WRITE_UNIT_OUT_VAL"          );
+           _component->port_map(name, "in_WRITE_QUEUE_OUT_ACK"          , _name, "in_WRITE_UNIT_OUT_ACK"          );
+           if (_param->_have_port_context_id)
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_CONTEXT_ID"   , _name,"out_WRITE_UNIT_OUT_CONTEXT_ID"   );
+           if (_param->_have_port_front_end_id)
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_FRONT_END_ID" , _name,"out_WRITE_UNIT_OUT_FRONT_END_ID" );
+           if (_param->_have_port_ooo_engine_id)
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_OOO_ENGINE_ID", _name,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID");
+           if (_param->_have_port_rob_ptr)
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_PACKET_ID"    , _name,"out_WRITE_UNIT_OUT_PACKET_ID"    );
+         //_component->port_map(name,"out_WRITE_QUEUE_OUT_OPERATION"    , _name,"out_WRITE_UNIT_OUT_OPERATION"    );
+         //_component->port_map(name,"out_WRITE_QUEUE_OUT_TYPE"         , _name,"out_WRITE_UNIT_OUT_TYPE"         );
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_FLAGS"        , _name,"out_WRITE_UNIT_OUT_FLAGS"        );
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_EXCEPTION"    , _name,"out_WRITE_UNIT_OUT_EXCEPTION"    );
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_NO_SEQUENCE"  , _name,"out_WRITE_UNIT_OUT_NO_SEQUENCE"  );
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_ADDRESS"      , _name,"out_WRITE_UNIT_OUT_ADDRESS"      );
+           _component->port_map(name,"out_WRITE_QUEUE_OUT_DATA"         , _name,"out_WRITE_UNIT_OUT_DATA"         );
+         }       
 
        for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
-	 {
-#ifdef POSITION
-	   _component->interface_map (name ,"gpr_write_"+toString(i),
-				      _name,"gpr_write_"+toString(i));
-#endif	   
-	   
-	   _component->port_map(name,"out_GPR_WRITE_"+toString(i)+"_VAL"          ,_name,"out_GPR_WRITE_"+toString(i)+"_VAL"          );
-	   _component->port_map(name, "in_GPR_WRITE_"+toString(i)+"_ACK"          ,_name, "in_GPR_WRITE_"+toString(i)+"_ACK"          );
-	   if (_param->_have_port_ooo_engine_id)
-	   _component->port_map(name,"out_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",_name,"out_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
-	   _component->port_map(name,"out_GPR_WRITE_"+toString(i)+"_NUM_REG"      ,_name,"out_GPR_WRITE_"+toString(i)+"_NUM_REG"      );
-	   _component->port_map(name,"out_GPR_WRITE_"+toString(i)+"_DATA"         ,_name,"out_GPR_WRITE_"+toString(i)+"_DATA"         );
-	 }
+         {
+#ifdef POSITION
+           _component->interface_map (name ,"gpr_write_"+toString(i),
+                                      _name,"gpr_write_"+toString(i));
+#endif     
+           
+           _component->port_map(name,"out_GPR_WRITE_"+toString(i)+"_VAL"          ,_name,"out_GPR_WRITE_"+toString(i)+"_VAL"          );
+           _component->port_map(name, "in_GPR_WRITE_"+toString(i)+"_ACK"          ,_name, "in_GPR_WRITE_"+toString(i)+"_ACK"          );
+           if (_param->_have_port_ooo_engine_id)
+           _component->port_map(name,"out_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",_name,"out_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
+           _component->port_map(name,"out_GPR_WRITE_"+toString(i)+"_NUM_REG"      ,_name,"out_GPR_WRITE_"+toString(i)+"_NUM_REG"      );
+           _component->port_map(name,"out_GPR_WRITE_"+toString(i)+"_DATA"         ,_name,"out_GPR_WRITE_"+toString(i)+"_DATA"         );
+         }
 
        for (uint32_t i=0; i<_param->_nb_spr_write; i++)
-	 {
-#ifdef POSITION
-	   _component->interface_map (name ,"spr_write_"+toString(i),
-				      _name,"spr_write_"+toString(i));
-#endif	   
-	   
-	   _component->port_map(name,"out_SPR_WRITE_"+toString(i)+"_VAL"          ,_name,"out_SPR_WRITE_"+toString(i)+"_VAL"          );
-	   _component->port_map(name, "in_SPR_WRITE_"+toString(i)+"_ACK"          ,_name, "in_SPR_WRITE_"+toString(i)+"_ACK"          );
-	   if (_param->_have_port_ooo_engine_id)
-	   _component->port_map(name,"out_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",_name,"out_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
-	   _component->port_map(name,"out_SPR_WRITE_"+toString(i)+"_NUM_REG"      ,_name,"out_SPR_WRITE_"+toString(i)+"_NUM_REG"      );
-	   _component->port_map(name,"out_SPR_WRITE_"+toString(i)+"_DATA"         ,_name,"out_SPR_WRITE_"+toString(i)+"_DATA"         );
-	 }
+         {
+#ifdef POSITION
+           _component->interface_map (name ,"spr_write_"+toString(i),
+                                      _name,"spr_write_"+toString(i));
+#endif     
+           
+           _component->port_map(name,"out_SPR_WRITE_"+toString(i)+"_VAL"          ,_name,"out_SPR_WRITE_"+toString(i)+"_VAL"          );
+           _component->port_map(name, "in_SPR_WRITE_"+toString(i)+"_ACK"          ,_name, "in_SPR_WRITE_"+toString(i)+"_ACK"          );
+           if (_param->_have_port_ooo_engine_id)
+           _component->port_map(name,"out_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",_name,"out_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
+           _component->port_map(name,"out_SPR_WRITE_"+toString(i)+"_NUM_REG"      ,_name,"out_SPR_WRITE_"+toString(i)+"_NUM_REG"      );
+           _component->port_map(name,"out_SPR_WRITE_"+toString(i)+"_DATA"         ,_name,"out_SPR_WRITE_"+toString(i)+"_DATA"         );
+         }
 
 
        for (uint32_t i=0; i<_param->_nb_bypass_write; i++)
-	 {
-#ifdef POSITION
-	   _component->interface_map (name ,"bypass_write_"+toString(i),
-				      _name,"bypass_write_"+toString(i));
-#endif	   
-
-	   if (_param->_have_port_ooo_engine_id)
-	   _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_OOO_ENGINE_ID",_name,"out_BYPASS_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
-	   _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_VAL"      ,_name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_VAL"      );
-	   _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_NUM_REG"  ,_name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_NUM_REG"  );
-	   _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_DATA"     ,_name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_DATA"     );
-	   _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_VAL"      ,_name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_VAL"      );
-	   _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_NUM_REG"  ,_name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_NUM_REG"  );
-	   _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_DATA"     ,_name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_DATA"     );
-	 }
+         {
+#ifdef POSITION
+           _component->interface_map (name ,"bypass_write_"+toString(i),
+                                      _name,"bypass_write_"+toString(i));
+#endif     
+
+           if (_param->_have_port_ooo_engine_id)
+           _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_OOO_ENGINE_ID",_name,"out_BYPASS_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
+           _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_VAL"      ,_name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_VAL"      );
+           _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_NUM_REG"  ,_name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_NUM_REG"  );
+           _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_DATA"     ,_name,"out_BYPASS_WRITE_"+toString(i)+"_GPR_DATA"     );
+           _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_VAL"      ,_name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_VAL"      );
+           _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_NUM_REG"  ,_name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_NUM_REG"  );
+           _component->port_map(name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_DATA"     ,_name,"out_BYPASS_WRITE_"+toString(i)+"_SPR_DATA"     );
+         }
      }
 
      if (_param->_have_component_execute_queue)
        {
-	 name = _name+"_execute_queue";
-	 std::cout << "Instance : " << name << std::endl;
-	 
-#ifdef POSITION
-	 _component->interface_map (name ,"",
-				    _name,"");
-#endif
-	 
-	 _component->port_map(name,"in_CLOCK" , _name, "in_CLOCK");
-	 _component->port_map(name,"in_NRESET", _name, "in_NRESET");
-	 
-
-#ifdef POSITION
-	 _component->interface_map (name ,"execute_queue_in",
-				    _name+"_write_queue","write_queue_in");
+         name = _name+"_execute_queue";
+         log_printf(INFO,Core,FUNCTION,_("Instance : %s"),name.c_str());
+         
+#ifdef POSITION
+         _component->interface_map (name ,"",
+                                    _name,"");
+#endif
+         
+         _component->port_map(name,"in_CLOCK" , _name, "in_CLOCK");
+         _component->port_map(name,"in_NRESET", _name, "in_NRESET");
+         
+
+#ifdef POSITION
+         _component->interface_map (name ,"execute_queue_in",
+                                    _name+"_write_queue","write_queue_in");
 #endif
 
@@ -340,5 +345,5 @@
          if (_param->_have_port_ooo_engine_id)
          _component->port_map(name, "in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID", _name+"_write_queue","out_WRITE_QUEUE_OUT_OOO_ENGINE_ID");
-         if (_param->_have_port_packet_id)
+         if (_param->_have_port_rob_ptr)
          _component->port_map(name, "in_EXECUTE_QUEUE_IN_PACKET_ID"    , _name+"_write_queue","out_WRITE_QUEUE_OUT_PACKET_ID"    );
        //_component->port_map(name, "in_EXECUTE_QUEUE_IN_OPERATION"    , _name+"_write_queue","out_WRITE_QUEUE_OUT_OPERATION"    );
@@ -348,30 +353,33 @@
          _component->port_map(name, "in_EXECUTE_QUEUE_IN_NO_SEQUENCE"  , _name+"_write_queue","out_WRITE_QUEUE_OUT_NO_SEQUENCE"  );
          _component->port_map(name, "in_EXECUTE_QUEUE_IN_ADDRESS"      , _name+"_write_queue","out_WRITE_QUEUE_OUT_ADDRESS"      );
-
-#ifdef POSITION
-	   _component->interface_map (name ,"execute_queue_out",
-				      _name,"write_unit_out");
-#endif
-
-	   _component->port_map(name,"out_EXECUTE_QUEUE_OUT_VAL"          , _name,"out_WRITE_UNIT_OUT_VAL"          );
-	   _component->port_map(name, "in_EXECUTE_QUEUE_OUT_ACK"          , _name, "in_WRITE_UNIT_OUT_ACK"          );
-	   if (_param->_have_port_context_id)
-	   _component->port_map(name,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID"   , _name,"out_WRITE_UNIT_OUT_CONTEXT_ID"   );
-	   if (_param->_have_port_front_end_id)
-	   _component->port_map(name,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" , _name,"out_WRITE_UNIT_OUT_FRONT_END_ID" );
-	   if (_param->_have_port_ooo_engine_id)
-	   _component->port_map(name,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID", _name,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID");
-	   if (_param->_have_port_packet_id)
-	   _component->port_map(name,"out_EXECUTE_QUEUE_OUT_PACKET_ID"    , _name,"out_WRITE_UNIT_OUT_PACKET_ID"    );
-	 //_component->port_map(name,"out_EXECUTE_QUEUE_OUT_OPERATION"    , _name,"out_WRITE_UNIT_OUT_OPERATION"    );
-	 //_component->port_map(name,"out_EXECUTE_QUEUE_OUT_TYPE"         , _name,"out_WRITE_UNIT_OUT_TYPE"         );
-	   _component->port_map(name,"out_EXECUTE_QUEUE_OUT_FLAGS"        , _name,"out_WRITE_UNIT_OUT_FLAGS"        );
-	   _component->port_map(name,"out_EXECUTE_QUEUE_OUT_EXCEPTION"    , _name,"out_WRITE_UNIT_OUT_EXCEPTION"    );
-	   _component->port_map(name,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE"  , _name,"out_WRITE_UNIT_OUT_NO_SEQUENCE"  );
-	   _component->port_map(name,"out_EXECUTE_QUEUE_OUT_ADDRESS"      , _name,"out_WRITE_UNIT_OUT_ADDRESS"      );
+         _component->port_map(name, "in_EXECUTE_QUEUE_IN_DATA"         , _name+"_write_queue","out_WRITE_QUEUE_OUT_DATA"         );
+
+#ifdef POSITION
+         _component->interface_map (name ,"execute_queue_out",
+                                    _name,"write_unit_out");
+#endif
+
+         _component->port_map(name,"out_EXECUTE_QUEUE_OUT_VAL"          , _name,"out_WRITE_UNIT_OUT_VAL"          );
+         _component->port_map(name, "in_EXECUTE_QUEUE_OUT_ACK"          , _name, "in_WRITE_UNIT_OUT_ACK"          );
+         if (_param->_have_port_context_id)
+         _component->port_map(name,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID"   , _name,"out_WRITE_UNIT_OUT_CONTEXT_ID"   );
+         if (_param->_have_port_front_end_id)
+         _component->port_map(name,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" , _name,"out_WRITE_UNIT_OUT_FRONT_END_ID" );
+         if (_param->_have_port_ooo_engine_id)
+         _component->port_map(name,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID", _name,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID");
+         if (_param->_have_port_rob_ptr)
+         _component->port_map(name,"out_EXECUTE_QUEUE_OUT_PACKET_ID"    , _name,"out_WRITE_UNIT_OUT_PACKET_ID"    );
+       //_component->port_map(name,"out_EXECUTE_QUEUE_OUT_OPERATION"    , _name,"out_WRITE_UNIT_OUT_OPERATION"    );
+       //_component->port_map(name,"out_EXECUTE_QUEUE_OUT_TYPE"         , _name,"out_WRITE_UNIT_OUT_TYPE"         );
+         _component->port_map(name,"out_EXECUTE_QUEUE_OUT_FLAGS"        , _name,"out_WRITE_UNIT_OUT_FLAGS"        );
+         _component->port_map(name,"out_EXECUTE_QUEUE_OUT_EXCEPTION"    , _name,"out_WRITE_UNIT_OUT_EXCEPTION"    );
+         _component->port_map(name,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE"  , _name,"out_WRITE_UNIT_OUT_NO_SEQUENCE"  );
+         _component->port_map(name,"out_EXECUTE_QUEUE_OUT_ADDRESS"      , _name,"out_WRITE_UNIT_OUT_ADDRESS"      );
+         _component->port_map(name,"out_EXECUTE_QUEUE_OUT_DATA"         , _name,"out_WRITE_UNIT_OUT_DATA"         );
        }
 
 #ifdef POSITION
-    _component->generate_file();
+    if (usage_is_set(_usage,USE_POSITION))
+      _component->generate_file();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_deallocation.cpp	(revision 88)
@@ -23,5 +23,5 @@
     log_printf(FUNC,Write_unit,FUNCTION,"Begin");
 
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	delete    in_CLOCK ;
@@ -37,5 +37,5 @@
 	if (_param->_have_port_ooo_engine_id)
 	delete      in_WRITE_UNIT_IN_OOO_ENGINE_ID;
-        if (_param->_have_port_packet_id)
+        if (_param->_have_port_rob_ptr)
 	delete      in_WRITE_UNIT_IN_PACKET_ID    ;
 //      delete      in_WRITE_UNIT_IN_OPERATION    ;
@@ -60,5 +60,5 @@
         if (_param->_have_port_ooo_engine_id)
 	delete     out_WRITE_UNIT_OUT_OOO_ENGINE_ID;
-        if (_param->_have_port_packet_id)
+        if (_param->_have_port_rob_ptr)
 	delete     out_WRITE_UNIT_OUT_PACKET_ID    ;
 //      delete     out_WRITE_UNIT_OUT_OPERATION    ;
@@ -68,4 +68,5 @@
         delete     out_WRITE_UNIT_OUT_NO_SEQUENCE  ;
         delete     out_WRITE_UNIT_OUT_ADDRESS      ;
+        delete     out_WRITE_UNIT_OUT_DATA         ;
 
 	// -----[ Interface "gpr_write" ]-------------------------------------
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_end_cycle.cpp	(revision 88)
@@ -25,5 +25,6 @@
 
 #ifdef STATISTICS
-    _stat->end_cycle();
+    if (usage_is_set(_usage,USE_STATISTICS))
+      _stat->end_cycle();
 #endif    
 
@@ -31,5 +32,6 @@
     // Evaluation before read the ouput signal
 //  sc_start(0);
-    _interfaces->testbench();
+    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
+      _interfaces->testbench();
 #endif
 
