Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src
- Timestamp:
- Dec 10, 2008, 7:31:39 PM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp
r81 r88 39 39 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); 40 40 41 #if DEBUG_Free_List_unit == true 42 log_printf(INFO,Free_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 std::cout << *param << std::endl; 45 #endif 46 41 47 log_printf(INFO,Free_List_unit,FUNCTION,"Allocation"); 42 48 … … 48 54 49 55 #ifdef STATISTICS 50 if ( _usage & USE_STATISTICS)56 if (usage_is_set(_usage,USE_STATISTICS)) 51 57 { 52 58 log_printf(INFO,Free_List_unit,FUNCTION,"Allocation of statistics"); … … 57 63 58 64 #ifdef VHDL 59 if ( _usage & USE_VHDL)65 if (usage_is_set(_usage,USE_VHDL)) 60 66 { 61 67 // generate the vhdl … … 67 73 68 74 #ifdef SYSTEMC 69 if ( _usage & USE_SYSTEMC)75 if (usage_is_set(_usage,USE_SYSTEMC)) 70 76 { 71 77 log_printf(INFO,Free_List_unit,FUNCTION,"Method - transition"); … … 83 89 SC_METHOD (genMealy_pop); 84 90 dont_initialize (); 85 sensitive << (*(in_CLOCK)).neg(); 91 sensitive << (*(in_CLOCK)).neg(); // need internal register 86 92 for (uint32_t i=0; i<_param->_nb_pop; i++) 87 93 sensitive << (*(in_POP_GPR_VAL[i])) … … 104 110 SC_METHOD (genMealy_push_gpr); 105 111 dont_initialize (); 106 sensitive << (*(in_CLOCK)).neg(); 112 sensitive << (*(in_CLOCK)).neg(); // need internal register 107 113 for (uint32_t i=0; i<_param->_nb_push; i++) 108 114 sensitive << (*(in_PUSH_GPR_VAL [i])) … … 123 129 SC_METHOD (genMealy_push_spr); 124 130 dont_initialize (); 125 sensitive << (*(in_CLOCK)).neg(); 131 sensitive << (*(in_CLOCK)).neg(); // need internal register 126 132 for (uint32_t i=0; i<_param->_nb_push; i++) 127 133 sensitive << (*(in_PUSH_SPR_VAL [i])) … … 150 156 151 157 #ifdef STATISTICS 152 if ( _usage & USE_STATISTICS)158 if (usage_is_set(_usage,USE_STATISTICS)) 153 159 { 154 160 log_printf(INFO,Free_List_unit,FUNCTION,"Generate Statistics file"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_allocation.cpp
r81 r88 86 86 } 87 87 88 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 88 if (usage_is_set(_usage,USE_SYSTEMC)) 89 { 89 90 _gpr_list = new std::list<uint32_t> [_param->_nb_bank]; 90 91 _spr_list = new std::list<uint32_t> [_param->_nb_bank]; … … 98 99 internal_PUSH_GPR_BANK = new uint32_t [_param->_nb_push]; 99 100 internal_PUSH_SPR_BANK = new uint32_t [_param->_nb_push]; 101 } 102 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 103 101 104 #ifdef POSITION 102 _component->generate_file(); 105 if (usage_is_set(_usage,USE_POSITION)) 106 _component->generate_file(); 103 107 #endif 104 108 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_deallocation.cpp
r81 r88 24 24 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); 25 25 26 if ( _usage & USE_SYSTEMC)26 if (usage_is_set(_usage,USE_SYSTEMC)) 27 27 { 28 28 delete in_CLOCK ; … … 43 43 delete [] out_PUSH_SPR_ACK ; 44 44 delete [] in_PUSH_SPR_NUM_REG; 45 46 delete [] _gpr_list; 47 delete [] _spr_list; 48 49 delete [] internal_POP_ACK ; 50 delete [] internal_POP_GPR_BANK; 51 delete [] internal_POP_SPR_BANK; 52 53 delete [] internal_PUSH_GPR_ACK ; 54 delete [] internal_PUSH_SPR_ACK ; 55 delete [] internal_PUSH_GPR_BANK; 56 delete [] internal_PUSH_SPR_BANK; 45 57 } 58 46 59 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 47 delete [] _gpr_list;48 delete [] _spr_list;49 50 delete [] internal_POP_ACK ;51 delete [] internal_POP_GPR_BANK;52 delete [] internal_POP_SPR_BANK;53 54 delete [] internal_PUSH_GPR_ACK ;55 delete [] internal_PUSH_SPR_ACK ;56 delete [] internal_PUSH_GPR_BANK;57 delete [] internal_PUSH_SPR_BANK;58 60 59 61 delete _component; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_end_cycle.cpp
r81 r88 26 26 27 27 #ifdef STATISTICS 28 _stat->end_cycle(); 28 if (usage_is_set(_usage,USE_STATISTICS)) 29 _stat->end_cycle(); 29 30 #endif 30 31 … … 32 33 // Evaluation before read the ouput signal 33 34 // sc_start(0); 34 _interfaces->testbench(); 35 if (usage_is_set(_usage,USE_VHDL_TESTBENCH)) 36 _interfaces->testbench(); 35 37 #endif 36 38 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_pop.cpp
r81 r88 23 23 void Free_List_unit::genMealy_pop (void) 24 24 { 25 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); 25 log_begin(Free_List_unit,FUNCTION); 26 log_function(Free_List_unit,FUNCTION,_name.c_str()); 26 27 27 28 for (uint32_t i=0; i<_param->_nb_pop; i++) … … 77 78 78 79 79 log_ printf(FUNC,Free_List_unit,FUNCTION,"End");80 log_end(Free_List_unit,FUNCTION); 80 81 }; 81 82 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_gpr.cpp
r81 r88 23 23 void Free_List_unit::genMealy_push_gpr (void) 24 24 { 25 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); 25 log_begin(Free_List_unit,FUNCTION); 26 log_function(Free_List_unit,FUNCTION,_name.c_str()); 26 27 27 28 bool bank_use [_param->_nb_bank]; … … 51 52 } 52 53 53 log_ printf(FUNC,Free_List_unit,FUNCTION,"End");54 log_end(Free_List_unit,FUNCTION); 54 55 }; 55 56 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_spr.cpp
r81 r88 23 23 void Free_List_unit::genMealy_push_spr (void) 24 24 { 25 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); 25 log_begin(Free_List_unit,FUNCTION); 26 log_function(Free_List_unit,FUNCTION,_name.c_str()); 26 27 27 28 bool bank_use [_param->_nb_bank]; … … 51 52 } 52 53 53 log_ printf(FUNC,Free_List_unit,FUNCTION,"End");54 log_end(Free_List_unit,FUNCTION); 54 55 }; 55 56 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp
r81 r88 23 23 void Free_List_unit::transition (void) 24 24 { 25 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); 25 log_begin(Free_List_unit,FUNCTION); 26 log_function(Free_List_unit,FUNCTION,_name.c_str()); 26 27 27 28 if (PORT_READ(in_NRESET) == 0) … … 39 40 // =====[ POP ]====================================== 40 41 // ================================================== 41 // log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction POP");42 42 for (uint32_t i=0; i<_param->_nb_pop; i++) 43 43 if (PORT_READ(in_POP_VAL[i]) and internal_POP_ACK [i]) 44 44 { 45 log_printf(TRACE,Free_List_unit,FUNCTION," * POP [%d]",i); 46 45 47 if (PORT_READ(in_POP_GPR_VAL [i])) 46 48 _gpr_list [internal_POP_GPR_BANK[i]].pop_front(); … … 53 55 // =====[ PUSH_GPR ]================================= 54 56 // ================================================== 55 // log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction PUSH_GPR");56 57 for (uint32_t i=0; i<_param->_nb_push; i++) 57 58 if (PORT_READ(in_PUSH_GPR_VAL[i]) and internal_PUSH_GPR_ACK [i]) 58 _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(//_param->_mask_gpr & 59 PORT_READ(in_PUSH_GPR_NUM_REG [i]));59 { 60 log_printf(TRACE,Free_List_unit,FUNCTION," * PUSH_GPR[%d]",i); 60 61 62 _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(//_param->_mask_gpr & 63 PORT_READ(in_PUSH_GPR_NUM_REG [i])); 64 } 61 65 // ================================================== 62 66 // =====[ PUSH_SPR ]================================= 63 67 // ================================================== 64 // log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction PUSH_SPR");65 68 for (uint32_t i=0; i<_param->_nb_push; i++) 66 69 if (PORT_READ(in_PUSH_SPR_VAL[i]) and internal_PUSH_SPR_ACK [i]) 67 _spr_list [internal_PUSH_SPR_BANK[i]].push_back(//_param->_mask_spr & 68 PORT_READ(in_PUSH_SPR_NUM_REG [i])); 70 { 71 log_printf(TRACE,Free_List_unit,FUNCTION," * PUSH_SPR[%d]",i); 72 73 _spr_list [internal_PUSH_SPR_BANK[i]].push_back(//_param->_mask_spr & 74 PORT_READ(in_PUSH_SPR_NUM_REG [i])); 75 } 69 76 70 77 if (_param->_priority == PRIORITY_ROUND_ROBIN) 71 78 internal_BANK_PRIORITY = (internal_BANK_PRIORITY+1)%_param->_nb_bank_by_pop; 79 80 #if (DEBUG >= DEBUG_TRACE) and (DEBUG_Free_List_unit == true) 81 log_printf(TRACE,Free_List_unit,FUNCTION," * Dump Free List"); 82 83 for (uint32_t i=0; i<_param->_nb_bank; ++i) 84 { 85 uint32_t j=0; 86 for (std::list<Tgeneral_address_t>::iterator it=_gpr_list->begin(); 87 it!=_gpr_list->end(); 88 ++it) 89 { 90 log_printf(TRACE,Free_List_unit,FUNCTION," * GPR_LIST[%.5d][%.5d] : %.5d",i,j,*it); 91 ++j; 92 } 93 } 94 for (uint32_t i=0; i<_param->_nb_bank; ++i) 95 { 96 uint32_t j=0; 97 for (std::list<Tspecial_address_t>::iterator it=_spr_list->begin(); 98 it!=_spr_list->end(); 99 ++it) 100 { 101 log_printf(TRACE,Free_List_unit,FUNCTION," * SPR_LIST[%.5d][%.5d] : %.5d",i,j,*it); 102 ++j; 103 } 104 } 105 106 #endif 72 107 } 73 108 … … 76 111 #endif 77 112 78 log_ printf(FUNC,Free_List_unit,FUNCTION,"End");113 log_end(Free_List_unit,FUNCTION); 79 114 }; 80 115 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters.cpp
r81 r88 27 27 uint32_t nb_pop , 28 28 uint32_t nb_push , 29 Tpriority_t priority ) 29 Tpriority_t priority , 30 bool is_toplevel ) 30 31 { 31 32 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); … … 41 42 test(); 42 43 43 _size_general_register = log2(nb_general_register);44 _size_special_register = log2(nb_special_register);44 uint32_t size_general_register = log2(nb_general_register); 45 uint32_t size_special_register = log2(nb_special_register); 45 46 46 47 _nb_bank_by_pop = _nb_bank / _nb_pop; … … 49 50 50 51 _bank_gpr_nb_slot = gpr_nb_slot/nb_bank; 51 _bank_gpr_size_slot = _size_general_register-log2(nb_bank);52 _bank_gpr_size_slot = size_general_register-log2(nb_bank); 52 53 53 54 _mask_gpr = gen_mask<Tgeneral_address_t> (_bank_gpr_size_slot); … … 56 57 57 58 _bank_spr_nb_slot = spr_nb_slot/nb_bank; 58 _bank_spr_size_slot = _size_special_register-log2(nb_bank);59 _bank_spr_size_slot = size_special_register-log2(nb_bank); 59 60 60 61 _mask_spr = gen_mask<Tspecial_address_t> (_bank_spr_size_slot); 62 63 if (is_toplevel) 64 { 65 _size_general_register = size_general_register; 66 _size_special_register = size_special_register; 67 68 copy(); 69 } 61 70 62 71 log_printf(FUNC,Free_List_unit,FUNCTION,"End"); … … 74 83 #undef FUNCTION 75 84 #define FUNCTION "Free_List_unit::~Parameters" 76 Parameters::~Parameters () 85 Parameters::~Parameters (void) 86 { 87 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); 88 log_printf(FUNC,Free_List_unit,FUNCTION,"End"); 89 }; 90 91 #undef FUNCTION 92 #define FUNCTION "Free_List_unit::copy" 93 void Parameters::copy (void) 77 94 { 78 95 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters_msg_error.cpp
r82 r88 29 29 30 30 if (_nb_general_register <= _nb_thread*_nb_general_register_logic) 31 test.error( _("The number of physical general register is insufficient.\n"));31 test.error(toString(_("The number of physical general register is insufficient. (Minimum : %d)\n"),_nb_thread*_nb_general_register_logic+1)); 32 32 if (_nb_special_register <= _nb_thread*_nb_special_register_logic) 33 test.error( _("The number of physical special register is insufficient.\n"));33 test.error(toString(_("The number of physical special register is insufficient. (Minimum : %d)\n"),_nb_thread*_nb_special_register_logic+1)); 34 34 if (not is_multiple (_nb_bank, _nb_pop)) 35 35 test.error(_("Number of pop must be a multiple of number of bank.\n")); 36 36 if (not is_power2 (_nb_bank)) 37 37 test.error(_("Number of bank must be a power of 2.\n")); 38 if (_nb_general_register < _nb_bank) 39 test.error(_("The number of physical general register must be >= nb_bank.\n")); 40 if (_nb_special_register < _nb_bank) 41 test.error(_("The number of physical special register must be >= nb_bank.\n")); 38 42 39 43 if ((_priority != PRIORITY_STATIC) and
Note: See TracChangeset
for help on using the changeset viewer.