#ifdef SYSTEMC
/*
 * $Id$
 *
 * [ Description ]
 * 
 */

#include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h"

namespace morpheo {
namespace behavioural {
namespace generic {
namespace victim {
namespace victim_pseudo_lru {

  void Victim_Pseudo_LRU::transition (void)
  {
    for (uint32_t i=0; i<_param->_nb_access; i++)
      {
	if (PORT_READ (in_ACCESS_VAL[i]) and internal_ACCESS_ACK)
	  {
	    Taddress_t address = (_param->_size_table>1)?PORT_READ(in_ACCESS_ADDRESS[i]):0;
	    Tentity_t  entity;

	    if (PORT_READ(in_ACCESS_HIT [i]))
	      {
		// Hit  : don't need a victim
// #ifdef STATISTICS
// 		_stat_nb_update ++;
// #endif
		entity = PORT_READ(in_ACCESS_ENTITY[i]);
	      }
	    else
	      {
		// Miss : need victim
// #ifdef STATISTICS
// 		_stat_nb_access ++;
// #endif
		entity = internal_ACCESS_VICTIM[i];
	      }

	    reg_TABLE[address]->update(entity);
	  }
      }//end for i
    
#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    end_cycle ();
#endif
  };

}; // end namespace victim_pseudo_lru
}; // end namespace victim
}; // end namespace generic

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