#ifdef SYSTEMC
/*
 * $Id: Register_translation_unit_Glue_genMealy_retire.cpp 88 2008-12-10 18:31:39Z rosiere $
 *
 * [ Description ]
 * 
 */

#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h"

namespace morpheo                    {
namespace behavioural {
namespace core {
namespace multi_ooo_engine {
namespace ooo_engine {
namespace rename_unit {
namespace register_translation_unit {
namespace register_translation_unit_glue {


#undef  FUNCTION
#define FUNCTION "Register_translation_unit_Glue::genMealy_retire"
  void Register_translation_unit_Glue::genMealy_retire (void)
  {
    log_begin(Register_translation_unit_Glue,FUNCTION);
    log_function(Register_translation_unit_Glue,FUNCTION,_name.c_str());

    for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
      {
	Tcontrol_t val           = PORT_READ(in_RETIRE_VAL           [i]);
	Tcontrol_t rat_ack       = PORT_READ(in_RETIRE_RAT_ACK       [i]);
	Tcontrol_t stat_list_ack = PORT_READ(in_RETIRE_STAT_LIST_ACK [i]);

	PORT_WRITE(out_RETIRE_ACK           [i], rat_ack and stat_list_ack);
	PORT_WRITE(out_RETIRE_RAT_VAL       [i], val and stat_list_ack);
	PORT_WRITE(out_RETIRE_STAT_LIST_VAL [i], val and rat_ack);
      }

    log_end(Register_translation_unit_Glue,FUNCTION);
  };

}; // end namespace register_translation_unit_glue
}; // end namespace register_translation_unit
}; // end namespace rename_unit
}; // end namespace ooo_engine
}; // end namespace multi_ooo_engine
}; // end namespace core

}; // end namespace behavioural
}; // end namespace morpheo              
#endif
