#ifdef SYSTEMC /* * $Id: Victim_Pseudo_LRU_transition.cpp 128 2009-06-26 08:43:23Z rosiere $ * * [ 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) { if (PORT_READ(in_NRESET) == 0) { for (uint32_t i=0; i<_param->_size_table; ++i) reg_TABLE[i]->reset(); } else { 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 = 0; 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]; } #ifdef DEBUG_TEST if (address >= _param->_size_table) throw ERRORMORPHEO(FUNCTION,toString(_("Address (%d) is invalid (size : %d).\n"),address, _param->_size_table)); #endif 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