- Timestamp:
- May 26, 2009, 9:01:47 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Core_Glue.h
r118 r120 209 209 210 210 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 211 private : uint32_t reg_PRIORITY ;212 211 213 212 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Parameters.h
r117 r120 62 62 63 63 public : uint32_t ** _translate_num_execute_loop_to_ooo_engine_execute_loop_id;//[nb_execute_loop][execute_loop_nb_ooo_engine] 64 public : Tcontext_t ** _translate_num_ooo_engine_to_execute_loop_ooo_engine_id ;//[nb_ooo_engine][nb_execute_loop] 64 65 65 66 public : uint32_t ** _execute_loop_nb_inst_insert ;//[nb_execute_loop][execute_loop_nb_ooo_engine] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue.cpp
r117 r120 77 77 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 78 78 for (uint32_t j=0; j<_param->_nb_inst_decod [i]; ++j) 79 PORT_WRITE(out_RENAME_FRONT_END_ID [i][j],_param->_translate_num_front_end_to_ooo_engine_front_end_id[i]); 80 79 { 80 PORT_WRITE(out_RENAME_FRONT_END_ID [i][j],_param->_translate_num_front_end_to_ooo_engine_front_end_id[i]); 81 } 82 81 83 log_printf(INFO,Core_Glue,FUNCTION,_("<%s> : Method - transition"),_name.c_str()); 82 84 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_allocation.cpp
r117 r120 259 259 _priority_ooo_engine = new generic::priority::Priority (_name+"_priority_ooo_engine", 260 260 _param->_dispatch_priority , 261 261 // _param->_dispatch_load_balancing, 262 262 _param->_nb_ooo_engine , 263 263 // _param->_nb_inst_issue_slot , 264 264 _param->_nb_ooo_engine 265 265 ); 266 266 267 // _priority_ooo_engine = new generic::priority::Priority * [_param->_nb_execute_loop];268 267 _priority_read_unit = new generic::priority::Priority * [_param->_nb_execute_loop]; 269 270 268 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 271 {272 // _priority_ooo_engine [i] = new generic::priority::Priority (_name+"_priority_ooo_engine_"+toString(i),273 // _param->_dispatch_priority ,274 // _param->_dispatch_load_balancing,275 // _param->_execute_loop_nb_ooo_engine [i],276 // _param->_execute_loop_nb_inst_issue_slot [i],277 // _param->_execute_loop_nb_ooo_engine [i]278 // );279 280 269 _priority_read_unit [i] = new generic::priority::Priority (_name+"_priority_read_unit_"+toString(i), 281 270 // PRIORITY_STATIC, … … 284 273 _param->_nb_read_unit [i] 285 274 ); 286 }287 288 289 275 290 276 #ifdef POSITION -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_deallocation.cpp
r117 r120 159 159 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 160 160 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 161 { 162 // delete _priority_ooo_engine [i]; 163 delete _priority_read_unit [i]; 164 } 165 // delete [] _priority_ooo_engine; 161 delete _priority_read_unit [i]; 166 162 delete [] _priority_read_unit ; 167 163 delete _priority_ooo_engine; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_issue.cpp
r118 r120 119 119 // } 120 120 121 for (uint32_t num_ooo_engine=0; num_ooo_engine<_param->_nb_ooo_engine; ++num_ooo_engine) 122 for (uint32_t num_inst_issue_queue=0; num_inst_issue_queue<_param->_nb_inst_issue_queue[num_ooo_engine]; ++num_inst_issue_queue) 123 { 124 bool find = false; 125 126 Tcontrol_t val = PORT_READ(in_ISSUE_OOO_ENGINE_VAL [num_ooo_engine][num_inst_issue_queue]); 127 Ttype_t type = PORT_READ(in_ISSUE_OOO_ENGINE_TYPE [num_ooo_engine][num_inst_issue_queue]); 128 129 log_printf(TRACE,Core_Glue,FUNCTION," * num_ooo_engine : %d",num_ooo_engine ); 130 log_printf(TRACE,Core_Glue,FUNCTION," * num_inst_issue_queue : %d",num_inst_issue_queue); 131 log_printf(TRACE,Core_Glue,FUNCTION," * val : %d",val); 132 log_printf(TRACE,Core_Glue,FUNCTION," * type : %d",type); 133 134 if (val) 135 for (uint32_t num_inst_issue_slot=0; num_inst_issue_slot<_param->_nb_inst_issue_slot[num_ooo_engine]; ++num_inst_issue_slot) 121 // for (uint32_t num_ooo_engine=0; num_ooo_engine<_param->_nb_ooo_engine; ++num_ooo_engine) 122 123 std::list<generic::priority::select_t> * select_ooo_engine = _priority_ooo_engine->select(); 124 for (std::list<generic::priority::select_t>::iterator it_ooo_engine=select_ooo_engine->begin(); 125 it_ooo_engine!=select_ooo_engine->end(); 126 ++it_ooo_engine) 127 { 128 uint32_t num_ooo_engine = it_ooo_engine->grp; 129 130 for (uint32_t num_inst_issue_queue=0; num_inst_issue_queue<_param->_nb_inst_issue_queue[num_ooo_engine]; ++num_inst_issue_queue) 131 { 132 bool find = false; 133 134 Tcontrol_t val = PORT_READ(in_ISSUE_OOO_ENGINE_VAL [num_ooo_engine][num_inst_issue_queue]); 135 Ttype_t type = PORT_READ(in_ISSUE_OOO_ENGINE_TYPE [num_ooo_engine][num_inst_issue_queue]); 136 137 log_printf(TRACE,Core_Glue,FUNCTION," * num_ooo_engine : %d",num_ooo_engine ); 138 log_printf(TRACE,Core_Glue,FUNCTION," * num_inst_issue_queue : %d",num_inst_issue_queue); 139 log_printf(TRACE,Core_Glue,FUNCTION," * val : %d",val); 140 log_printf(TRACE,Core_Glue,FUNCTION," * type : %d",type); 141 142 if (val) 143 for (uint32_t num_inst_issue_slot=0; num_inst_issue_slot<_param->_nb_inst_issue_slot[num_ooo_engine]; ++num_inst_issue_slot) 144 { 145 log_printf(TRACE,Core_Glue,FUNCTION," * num_inst_issue_slot : %d",num_inst_issue_slot); 146 147 // scan all read_unit 148 149 if (SLOT_ENABLE [num_ooo_engine][num_inst_issue_slot]) 150 for (uint32_t num_execute_loop=0; num_execute_loop<_param->_nb_execute_loop; ++num_execute_loop) 151 { 152 std::list<generic::priority::select_t> * select_read_unit = _priority_read_unit[num_execute_loop]->select(); 153 for (std::list<generic::priority::select_t>::iterator it_read_unit=select_read_unit->begin(); 154 it_read_unit!=select_read_unit->end(); 155 ++it_read_unit) 156 { 157 // get the most priotary ... 158 uint32_t num_read_unit = it_read_unit->grp; 159 Tcontrol_t ack = READ_UNIT_ENABLE [num_execute_loop][num_read_unit]; 160 161 log_printf(TRACE,Core_Glue,FUNCTION," * num_execute_loop : %d",num_execute_loop); 162 log_printf(TRACE,Core_Glue,FUNCTION," * num_read_unit : %d",num_read_unit ); 163 log_printf(TRACE,Core_Glue,FUNCTION," * read_unit_enable : %d",ack ); 164 165 // test if : 166 // * read_unit can accept an instruction (valid and no previous instruction) 167 // * slot can issue an instruction at this read_unit 168 // * read_unit can accept this type 169 if (ack and 170 _param->_table_dispatch [num_ooo_engine][num_inst_issue_slot][num_execute_loop][num_read_unit] and 171 _param->_table_issue_type [num_execute_loop][num_read_unit][type]) 172 { 173 log_printf(TRACE,Core_Glue,FUNCTION," * find !!!"); 174 175 // find ! 176 // Transaction 177 READ_UNIT_ENABLE [num_execute_loop][num_read_unit] = false; // now, this read_unit is busy 178 ISSUE_EXECUTE_LOOP_VAL [num_execute_loop][num_read_unit] = 1; // = val 179 ISSUE_OOO_ENGINE_ACK [num_ooo_engine][num_inst_issue_queue] = 1; // = ack 180 SLOT_ENABLE [num_ooo_engine][num_inst_issue_slot] = false; // now this slot is used 181 182 if (_param->_have_port_context_id) 183 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_CONTEXT_ID [num_ooo_engine][num_inst_issue_queue])); 184 if (_param->_have_port_front_end_id) 185 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_FRONT_END_ID [num_ooo_engine][num_inst_issue_queue])); 186 if (_param->_have_port_ooo_engine_id) 187 { 188 Tcontext_t ooo_engine_id = _param->_translate_num_ooo_engine_to_execute_loop_ooo_engine_id [num_ooo_engine][num_execute_loop]; 189 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID [num_execute_loop][num_read_unit],ooo_engine_id); 190 } 191 if (_param->_have_port_rob_ptr) 192 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_PACKET_ID [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_PACKET_ID [num_ooo_engine][num_inst_issue_queue])); 193 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OPERATION [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_OPERATION [num_ooo_engine][num_inst_issue_queue])); 194 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_TYPE [num_execute_loop][num_read_unit],type); 195 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue_queue])); 196 if (_param->_have_port_load_queue_ptr) 197 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue_queue])); 198 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT [num_ooo_engine][num_inst_issue_queue])); 199 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_IMMEDIAT [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_IMMEDIAT [num_ooo_engine][num_inst_issue_queue])); 200 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RA [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RA [num_ooo_engine][num_inst_issue_queue])); 201 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RA [num_ooo_engine][num_inst_issue_queue])); 202 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RB [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RB [num_ooo_engine][num_inst_issue_queue])); 203 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RB [num_ooo_engine][num_inst_issue_queue])); 204 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RC [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RC [num_ooo_engine][num_inst_issue_queue])); 205 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RC [num_ooo_engine][num_inst_issue_queue])); 206 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RD [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RD [num_ooo_engine][num_inst_issue_queue])); 207 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RD [num_ooo_engine][num_inst_issue_queue])); 208 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RE [num_ooo_engine][num_inst_issue_queue])); 209 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RE [num_ooo_engine][num_inst_issue_queue])); 210 211 212 find = true; 213 break; 214 } 215 //if (find) 216 // break; 217 } 218 if (find) 219 break; 220 } 221 if (find) 222 break; 223 } 224 225 if (_param->_issue_queue_in_order [num_ooo_engine] and 226 not find and 227 (num_inst_issue_queue >= _param->_nb_inst_reexecute [num_ooo_engine])) 136 228 { 137 log_printf(TRACE,Core_Glue,FUNCTION," * num_inst_issue_slot : %d",num_inst_issue_slot);229 log_printf(TRACE,Core_Glue,FUNCTION," * stop scan !!!"); 138 230 139 // scan all read_unit 140 141 if (SLOT_ENABLE [num_ooo_engine][num_inst_issue_slot]) 142 for (uint32_t num_execute_loop=0; num_execute_loop<_param->_nb_execute_loop; ++num_execute_loop) 143 { 144 for (uint32_t _num_read_unit=0; _num_read_unit<_param->_nb_read_unit[num_execute_loop]; ++_num_read_unit) 145 { 146 uint32_t num_read_unit = (_num_read_unit+reg_PRIORITY)%_param->_nb_read_unit[num_execute_loop]; 147 Tcontrol_t ack = READ_UNIT_ENABLE [num_execute_loop][num_read_unit]; 148 149 log_printf(TRACE,Core_Glue,FUNCTION," * num_execute_loop : %d",num_execute_loop); 150 log_printf(TRACE,Core_Glue,FUNCTION," * num_read_unit : %d",num_read_unit ); 151 log_printf(TRACE,Core_Glue,FUNCTION," * read_unit_enable : %d",ack ); 152 153 // test if : 154 // * read_unit can accept an instruction (valid and no previous instruction) 155 // * slot can issue an instruction at this read_unit 156 // * read_unit can accept this type 157 if (ack and 158 _param->_table_dispatch [num_ooo_engine][num_inst_issue_slot][num_execute_loop][num_read_unit] and 159 _param->_table_issue_type [num_execute_loop][num_read_unit][type]) 160 { 161 log_printf(TRACE,Core_Glue,FUNCTION," * find !!!"); 162 163 // find ! 164 // Transaction 165 READ_UNIT_ENABLE [num_execute_loop][num_read_unit] = false; // now, this read_unit is busy 166 ISSUE_EXECUTE_LOOP_VAL [num_execute_loop][num_read_unit] = 1; // = val 167 ISSUE_OOO_ENGINE_ACK [num_ooo_engine][num_inst_issue_queue] = 1; // = ack 168 SLOT_ENABLE [num_ooo_engine][num_inst_issue_slot] = false; // now this slot is used 169 170 if (_param->_have_port_context_id) 171 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_CONTEXT_ID [num_ooo_engine][num_inst_issue_queue])); 172 if (_param->_have_port_front_end_id) 173 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_FRONT_END_ID [num_ooo_engine][num_inst_issue_queue])); 174 if (_param->_have_port_ooo_engine_id) 175 { 176 Tcontext_t ooo_engine_id = 0; 177 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID [num_execute_loop][num_read_unit],ooo_engine_id); 178 } 179 if (_param->_have_port_rob_ptr) 180 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_PACKET_ID [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_PACKET_ID [num_ooo_engine][num_inst_issue_queue])); 181 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OPERATION [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_OPERATION [num_ooo_engine][num_inst_issue_queue])); 182 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_TYPE [num_execute_loop][num_read_unit],type); 183 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue_queue])); 184 if (_param->_have_port_load_queue_ptr) 185 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue_queue])); 186 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT [num_ooo_engine][num_inst_issue_queue])); 187 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_IMMEDIAT [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_IMMEDIAT [num_ooo_engine][num_inst_issue_queue])); 188 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RA [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RA [num_ooo_engine][num_inst_issue_queue])); 189 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RA [num_ooo_engine][num_inst_issue_queue])); 190 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RB [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RB [num_ooo_engine][num_inst_issue_queue])); 191 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RB [num_ooo_engine][num_inst_issue_queue])); 192 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RC [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RC [num_ooo_engine][num_inst_issue_queue])); 193 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RC [num_ooo_engine][num_inst_issue_queue])); 194 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RD [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RD [num_ooo_engine][num_inst_issue_queue])); 195 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RD [num_ooo_engine][num_inst_issue_queue])); 196 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RE [num_ooo_engine][num_inst_issue_queue])); 197 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RE [num_ooo_engine][num_inst_issue_queue])); 198 199 200 find = true; 201 break; 202 } 203 //if (find) 204 // break; 205 } 206 if (find) 207 break; 208 } 209 if (find) 210 break; 231 break; // stop scan 211 232 } 212 213 if (_param->_issue_queue_in_order [num_ooo_engine] and 214 not find and 215 (num_inst_issue_queue >= _param->_nb_inst_reexecute [num_ooo_engine])) 216 { 217 log_printf(TRACE,Core_Glue,FUNCTION," * stop scan !!!"); 218 219 break; // stop scan 220 } 221 } 233 } 234 } 222 235 223 236 // Write output -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_transition.cpp
r118 r120 24 24 { 25 25 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 26 { 27 // _priority_ooo_engine [i]->reset(); 28 _priority_read_unit [i]->reset(); 29 } 26 _priority_read_unit [i]->reset(); 30 27 _priority_ooo_engine->reset(); 31 32 reg_PRIORITY = 0;33 28 } 34 29 else … … 36 31 // next priority 37 32 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 38 { 39 // _priority_ooo_engine [i]->transition(); 40 _priority_read_unit [i]->transition(); 41 } 33 _priority_read_unit [i]->transition(); 42 34 _priority_ooo_engine->transition(); 43 44 reg_PRIORITY ++;45 35 } 46 36 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Parameters.cpp
r117 r120 95 95 } 96 96 97 ALLOC2(_translate_num_execute_loop_to_ooo_engine_execute_loop_id, uint32_t, _nb_execute_loop,_execute_loop_nb_ooo_engine[it1]); 97 ALLOC2(_translate_num_execute_loop_to_ooo_engine_execute_loop_id,uint32_t ,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]); 98 ALLOC2(_translate_num_ooo_engine_to_execute_loop_ooo_engine_id ,Tcontext_t,_nb_ooo_engine,_nb_execute_loop); 99 100 for (uint32_t i=0; i<_nb_ooo_engine; ++i) 101 for (uint32_t j=0; j<_nb_execute_loop; ++j) 102 _translate_num_ooo_engine_to_execute_loop_ooo_engine_id [i][j] = _nb_ooo_engine; 103 98 104 for (uint32_t i=0; i<_nb_execute_loop; ++i) 99 105 for (uint32_t j=0; j<_execute_loop_nb_ooo_engine[i]; ++j) 100 106 { 101 107 uint32_t num_ooo_engine = _translate_execute_loop_num_ooo_engine [i][j]; 108 109 _translate_num_ooo_engine_to_execute_loop_ooo_engine_id [num_ooo_engine][i] = j; 110 102 111 uint32_t execute_loop_id; 103 112 for (execute_loop_id = 0; execute_loop_id<_ooo_engine_nb_execute_loop[num_ooo_engine]; ++execute_loop_id) … … 179 188 log_begin(Core_Glue,FUNCTION); 180 189 181 DELETE2(_execute_loop_nb_inst_issue_slot,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]); 182 DELETE2(_execute_loop_nb_inst_insert,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]); 183 DELETE2(_translate_num_execute_loop_to_ooo_engine_execute_loop_id, _nb_execute_loop,_execute_loop_nb_ooo_engine[it1]); 184 DELETE1(_translate_num_front_end_to_ooo_engine_front_end_id,_nb_front_end); 185 DELETE1(_link_ooo_engine_with_front_end,_nb_front_end); 190 DELETE2(_execute_loop_nb_inst_issue_slot ,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]); 191 DELETE2(_execute_loop_nb_inst_insert ,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]); 192 DELETE2(_translate_num_ooo_engine_to_execute_loop_ooo_engine_id ,_nb_ooo_engine,_nb_execute_loop); 193 DELETE2(_translate_num_execute_loop_to_ooo_engine_execute_loop_id,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]); 194 DELETE1(_translate_num_front_end_to_ooo_engine_front_end_id ,_nb_front_end); 195 DELETE1(_link_ooo_engine_with_front_end ,_nb_front_end); 186 196 187 197 log_end(Core_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Parameters_msg_error.cpp
r88 r120 57 57 test.error(toString(_("ooo_engine[%d][%d].nb_inst_execute must be equal at execute_loop[%d].nb_write_unit.\n"),num_ooo_engine,k,i)); 58 58 } 59 60 if (_dispatch_load_balancing != LOAD_BALANCING_MAXIMUM_FOR_PRIORITY) 61 test.error(toString(_("distpatch load_balancing scheme \"%s\" is not yet supported.\n"),toString(_dispatch_load_balancing).c_str())); 62 59 63 log_end(Core_Glue,FUNCTION); 60 64
Note: See TracChangeset
for help on using the changeset viewer.