/*
 * $Id: Rename_unit_Glue_deallocation.cpp 122 2009-06-03 08:15:51Z rosiere $
 *
 * [ Description ]
 * 
 */

#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/include/Rename_unit_Glue.h"
#include "Behavioural/include/Allocation.h"

namespace morpheo                    {
namespace behavioural {
namespace core {
namespace multi_ooo_engine {
namespace ooo_engine {
namespace rename_unit {
namespace rename_unit_glue {


#undef  FUNCTION
#define FUNCTION "Rename_unit_Glue::deallocation"
  void Rename_unit_Glue::deallocation (void)
  {
    log_begin(Rename_unit_Glue,FUNCTION);

    if (usage_is_set(_usage,USE_SYSTEMC))
      {
	delete    in_CLOCK ;
	delete    in_NRESET;

//      DELETE1_SIGNAL(out_INSERT_VAL                                    ,_param->_nb_inst_insert,1);
//      DELETE1_SIGNAL( in_INSERT_ACK                                    ,_param->_nb_inst_insert,1);
        DELETE1_SIGNAL(out_INSERT_FRONT_END_ID                           ,_param->_nb_inst_insert,_param->_size_front_end_id);
        DELETE1_SIGNAL(out_INSERT_CONTEXT_ID                             ,_param->_nb_inst_insert,_param->_size_context_id);
        DELETE1_SIGNAL(out_INSERT_TYPE                                   ,_param->_nb_inst_insert,_param->_size_type);
        DELETE1_SIGNAL(out_INSERT_OPERATION                              ,_param->_nb_inst_insert,_param->_size_operation);
        DELETE1_SIGNAL(out_INSERT_IMMEDIAT                               ,_param->_nb_inst_insert,_param->_size_general_data); 
// 	DELETE1_SIGNAL(out_INSERT_EXCEPTION_USE                          ,_param->_nb_inst_insert,_param->_size_exception_use);
        DELETE1_SIGNAL(out_INSERT_EXCEPTION                              ,_param->_nb_inst_insert,_param->_size_exception);
        DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW                     ,_param->_nb_inst_insert,_param->_size_special_register);
        DELETE1_SIGNAL(out_INSERT_NO_EXECUTE                             ,_param->_nb_inst_insert,1);

        DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_VAL                      ,_param->_nb_inst_insert,1);
        DELETE1_SIGNAL(out_INSERT_RENAME_SELECT_ACK                      ,_param->_nb_inst_insert,1);
        DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_FRONT_END_ID             ,_param->_nb_inst_insert,_param->_size_front_end_id);
        DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_CONTEXT_ID               ,_param->_nb_inst_insert,_param->_size_context_id);
        DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_TYPE                     ,_param->_nb_inst_insert,_param->_size_type);
        DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_OPERATION                ,_param->_nb_inst_insert,_param->_size_operation);
        DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_IMMEDIAT                 ,_param->_nb_inst_insert,_param->_size_general_data);
//      DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,_param->_nb_inst_insert,_param->_size_exception_use);
        DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_EXCEPTION                ,_param->_nb_inst_insert,_param->_size_exception);
        DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_NO_EXECUTE               ,_param->_nb_inst_insert,1);

        DELETE1_SIGNAL(out_INSERT_REGISTER_TRANSLATION_VAL               ,_param->_nb_inst_insert,1);
        DELETE1_SIGNAL( in_INSERT_REGISTER_TRANSLATION_ACK               ,_param->_nb_inst_insert,1);
        DELETE1_SIGNAL(out_INSERT_REGISTER_TRANSLATION_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id);
        DELETE1_SIGNAL(out_INSERT_REGISTER_TRANSLATION_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id);
        DELETE1_SIGNAL( in_INSERT_REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register);
        DELETE1_SIGNAL(out_INSERT_LOAD_STORE_QUEUE_POINTER_VAL           ,_param->_nb_inst_insert,1);
        DELETE1_SIGNAL( in_INSERT_LOAD_STORE_QUEUE_POINTER_ACK           ,_param->_nb_inst_insert,1);
        DELETE1_SIGNAL(out_INSERT_LOAD_STORE_QUEUE_POINTER_FRONT_END_ID  ,_param->_nb_inst_insert,_param->_size_front_end_id);
        DELETE1_SIGNAL(out_INSERT_LOAD_STORE_QUEUE_POINTER_CONTEXT_ID    ,_param->_nb_inst_insert,_param->_size_context_id);
        DELETE1_SIGNAL(out_INSERT_LOAD_STORE_QUEUE_POINTER_TYPE          ,_param->_nb_inst_insert,_param->_size_type);
        DELETE1_SIGNAL(out_INSERT_LOAD_STORE_QUEUE_POINTER_OPERATION     ,_param->_nb_inst_insert,_param->_size_operation);
									 
        DELETE1_SIGNAL( in_RETIRE_VAL                                    ,_param->_nb_inst_retire,1);
        DELETE1_SIGNAL(out_RETIRE_ACK                                    ,_param->_nb_inst_retire,1);
        DELETE1_SIGNAL(out_RETIRE_LOAD_STORE_QUEUE_POINTER_VAL           ,_param->_nb_inst_retire,1);
        DELETE1_SIGNAL( in_RETIRE_LOAD_STORE_QUEUE_POINTER_ACK           ,_param->_nb_inst_retire,1);
//      DELETE1_SIGNAL(out_RETIRE_LOAD_STORE_QUEUE_POINTER_TYPE          ,_param->_nb_inst_retire,_param->_size_type);
//      DELETE1_SIGNAL(out_RETIRE_LOAD_STORE_QUEUE_POINTER_OPERATION     ,_param->_nb_inst_retire,_param->_size_operation);
        DELETE1_SIGNAL(out_RETIRE_REGISTER_TRANSLATION_VAL               ,_param->_nb_inst_retire,1);
        DELETE1_SIGNAL( in_RETIRE_REGISTER_TRANSLATION_ACK               ,_param->_nb_inst_retire,1);

        DELETE2_SIGNAL( in_RETIRE_EVENT_VAL                              ,_param->_nb_front_end,_param->_nb_context[it1],1);
        DELETE2_SIGNAL(out_RETIRE_EVENT_ACK                              ,_param->_nb_front_end,_param->_nb_context[it1],1);
        DELETE2_SIGNAL(out_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_VAL     ,_param->_nb_front_end,_param->_nb_context[it1],1);
        DELETE2_SIGNAL( in_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_ACK     ,_param->_nb_front_end,_param->_nb_context[it1],1);
        DELETE2_SIGNAL(out_RETIRE_EVENT_REGISTER_TRANSLATION_VAL         ,_param->_nb_front_end,_param->_nb_context[it1],1);
        DELETE2_SIGNAL( in_RETIRE_EVENT_REGISTER_TRANSLATION_ACK         ,_param->_nb_front_end,_param->_nb_context[it1],1);
									 
        DELETE2_SIGNAL( in_SPR_READ_SR                                   ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_spr);
      }
    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    

    delete _component;

    log_end(Rename_unit_Glue,FUNCTION);
  };

}; // end namespace rename_unit_glue
}; // end namespace rename_unit
}; // end namespace ooo_engine
}; // end namespace multi_ooo_engine
}; // end namespace core

}; // end namespace behavioural
}; // end namespace morpheo              
