Changeset 120 for trunk/IPs/systemC
- Timestamp:
- May 26, 2009, 9:01:47 PM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo
- Files:
-
- 2 added
- 55 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/SelfTest/src/test.cpp
r108 r120 36 36 cout << "------------------------------------------------------" << endl; 37 37 38 Instance * instance1 = new Instance ("../../../Files/Instance_ min.cfg",38 Instance * instance1 = new Instance ("../../../Files/Instance_x1_w1_0.cfg", 39 39 generator1, 40 40 _get_custom_information … … 49 49 Configuration * configuration1 = new Configuration("../../../Files/Morpheo.sim", 50 50 "../../../Files/Morpheo.gen", 51 "../../../Files/Instance_ min.cfg",51 "../../../Files/Instance_x1_w1_0.cfg", 52 52 _get_custom_information); 53 53 … … 59 59 cout << "------------------------------------------------------" << endl; 60 60 61 Instance * instance = new Instance ("../../../Files/Instance_ debug.cfg",61 Instance * instance = new Instance ("../../../Files/Instance_x2_w1_6.cfg", 62 62 generator1, 63 63 _get_custom_information -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration.cpp
r114 r120 46 46 fromString<uint32_t> (_simulator->getParam("debug_idle_time"))); 47 47 48 log_init(fromString<bool>(_simulator->getParam("debug_have_log_file")), 48 log_init(fromString<bool>(_simulator->getParam("debug_log_file_generate")), 49 fromString<bool>(_simulator->getParam("debug_log_file_with_pid")), 49 50 MORPHEO_LOG); 50 51 -
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 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h
r88 r120 40 40 public : bool *** _table_routing ; //[nb_execute_unit][nb_execute_unit_port][nb_write_unit] 41 41 public : bool ** _table_thread ; //[nb_write_unit][nb_thread] 42 public : bool * _num_thread_valid ; //[nb_thread] 42 43 43 44 public : uint32_t _max_nb_execute_unit_port ; … … 71 72 bool *** table_routing , 72 73 bool ** table_thread , 74 bool * num_thread_valid , //[nb_thread] 73 75 bool is_toplevel=false 74 76 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters.cpp
r97 r120 33 33 bool *** table_routing ,//[nb_execute_unit][nb_execute_unit_port][nb_write_unit] 34 34 bool ** table_thread ,//[nb_write_unit][nb_thread] 35 bool * num_thread_valid ,//[nb_thread] 35 36 bool is_toplevel ) 36 37 { … … 49 50 _table_routing = table_routing ; 50 51 _table_thread = table_thread ; 52 _num_thread_valid = num_thread_valid ; 51 53 52 54 _max_nb_execute_unit_port= max<uint32_t>(_nb_execute_unit_port, _nb_execute_unit); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h
r88 r120 44 44 public : bool ** _table_execute_type ; //[nb_execute_unit][nb_type] 45 45 public : bool ** _table_execute_thread ; //[nb_execute_unit][nb_thread] 46 public : bool * _num_thread_valid ; //[nb_thread] 46 47 47 48 public : uint32_t _max_nb_read_unit_port ; … … 83 84 bool ** table_execute_type , 84 85 bool ** table_execute_thread , 86 bool * num_thread_valid , 85 87 bool is_toplevel=false ); 86 88 // public : Parameters (Parameters & param) ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp
r109 r120 38 38 bool ** table_execute_type , 39 39 bool ** table_execute_thread , 40 bool * num_thread_valid , 40 41 bool is_toplevel ) 41 42 { … … 56 57 _table_execute_type = table_execute_type ; 57 58 _table_execute_thread = table_execute_thread; 59 _num_thread_valid = num_thread_valid ; 58 60 59 61 log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION," * table_routing [nb_read_unit][nb_execute_unit][nb_execute_unit_port]"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp
r109 r120 41 41 // TYPE_BRANCH | X | | | 42 42 // TYPE_MEMORY | | | X | 43 44 43 bool type_present [_nb_thread][_nb_type]; 45 44 for (uint32_t i=0; i<_nb_thread; i++) … … 49 48 for (uint32_t i=0; i<_nb_execute_unit; i++) 50 49 for (uint32_t j=0; j<_nb_thread; j++) 51 if (_table_execute_thread [i][j] == true) 50 if (_num_thread_valid [j] and 51 (_table_execute_thread [i][j] == true)) 52 52 // this execute_unit execute this thread ! 53 53 for (Ttype_t k=0; k<_nb_type; k++) … … 66 66 if (not is_type_valid(j)) 67 67 for (uint32_t i=0; i<_nb_thread; i++) 68 if (type_present [i][j]) 68 if (_num_thread_valid [j] and 69 (type_present [i][j])) 69 70 test.error(toString(_("The thread '%d' can execute the type's operation '%s' but this type is invalid.\n"),i,toString(j).c_str())); 70 71 … … 72 73 if (is_type_valid(j) and not is_type_optionnal(j)) 73 74 for (uint32_t i=0; i<_nb_thread; i++) 74 if (not type_present [i][j]) 75 if (_num_thread_valid [i] and 76 (not type_present [i][j])) 75 77 test.error(toString(_("The thread '%d' can't access at the execute_unit to execute the type's operation '%s' (and this type is not optional !).\n"),i,toString(j).c_str())); 76 78 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Parameters.h
r115 r120 103 103 public : uint32_t * _translate_num_execute_unit ; //[nb_execute_unit] 104 104 105 public : bool * _num_thread_valid ; //[nb_thread] 106 105 107 public : uint32_t _nb_execute_unit ; 106 108 public : uint32_t * _nb_execute_unit_port ; … … 198 200 uint32_t * translate_num_execute_unit ,//[nb_execute_unit] 199 201 202 bool * num_thread_valid ,//[nb_thread] 203 200 204 bool is_toplevel=false 201 205 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp
r117 r120 73 73 bool * is_load_store_unit ,//[nb_execute_unit] 74 74 uint32_t * translate_num_execute_unit ,//[nb_execute_unit] 75 76 bool * num_thread_valid ,//[nb_thread] 75 77 76 78 bool is_toplevel … … 133 135 _translate_num_execute_unit = translate_num_execute_unit; 134 136 137 _num_thread_valid = num_thread_valid; 138 135 139 _nb_execute_unit = _nb_functionnal_unit + _nb_load_store_unit; 136 140 … … 481 485 _read_unit_to_execution_unit_table_routing , 482 486 _read_unit_to_execution_unit_table_execute_type, 483 _read_unit_to_execution_unit_table_thread ); 487 _read_unit_to_execution_unit_table_thread , 488 _num_thread_valid); 484 489 485 490 log_printf(TRACE,Execute_loop,FUNCTION,"Parameters : execution_unit_to_write_unit"); … … 499 504 _execution_unit_to_write_unit_priority , 500 505 _execution_unit_to_write_unit_table_routing, 501 _execution_unit_to_write_unit_table_thread ); 506 _execution_unit_to_write_unit_table_thread , 507 _num_thread_valid); 502 508 503 509 log_printf(TRACE,Execute_loop,FUNCTION,"Parameters : register_unit"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h
r119 r120 52 52 #ifdef STATISTICS 53 53 public : Stat * _stat; 54 private : counter_t ** _stat_nb_cycle_state_ok ; //[nb_context] 55 private : counter_t ** _stat_nb_cycle_state_ko_excep ; //[nb_context] 56 private : counter_t ** _stat_nb_cycle_state_ko_miss_branch ; //[nb_context] 57 private : counter_t ** _stat_nb_cycle_state_ko_miss_load ; //[nb_context] 58 private : counter_t ** _stat_nb_cycle_state_ko_miss_load_and_branch; //[nb_context] 59 private : counter_t ** _stat_nb_cycle_state_ko_msync ; //[nb_context] 60 private : counter_t ** _stat_nb_cycle_state_ko_psync ; //[nb_context] 61 private : counter_t ** _stat_nb_cycle_state_ko_csync ; //[nb_context] 62 private : counter_t ** _stat_nb_cycle_state_ko_spr ; //[nb_context] 54 63 #endif 55 64 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Types.h
r119 r120 29 29 CONTEXT_STATE_KO_EXCEP_ADDR , // update address manager 30 30 CONTEXT_STATE_KO_EXCEP_SPR , // update spr (epc, esr, sr[DSX]) 31 // CONTEXT_STATE_KO_MISS_BRANCH_FAST_ADDR , // update address manager32 // CONTEXT_STATE_KO_MISS_BRANCH_FAST_WAIT_UPDATE , // branch is complete, wait update by update_prediction_table33 31 CONTEXT_STATE_KO_MISS_BRANCH_WAIT_UPDATE , // branch is complete, wait update by update_prediction_table 34 32 CONTEXT_STATE_KO_MISS_BRANCH_ADDR , // update address manager … … 68 66 case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_EXCEP_ADDR : return "context_state_ko_excep_addr" ; break; 69 67 case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_EXCEP_SPR : return "context_state_ko_excep_spr" ; break; 70 // case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS_BRANCH_FAST_WAIT_UPDATE : return "context_state_ko_miss_branch_fast_wait_update" ; break;71 // case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS_BRANCH_FAST_ADDR : return "context_state_ko_miss_branch_fast_addr" ; break;72 68 case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS_BRANCH_WAIT_UPDATE : return "context_state_ko_miss_branch_wait_update" ; break; 73 69 case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS_BRANCH_ADDR : return "context_state_ko_miss_branch_addr" ; break; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_statistics_allocation.cpp
r83 r120 8 8 9 9 #include "Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h" 10 #include "Behavioural/include/Allocation.h" 10 11 11 12 namespace morpheo { … … 26 27 "Context_State", 27 28 param_statistics); 28 29 30 ALLOC1(_stat_nb_cycle_state_ok ,counter_t *,_param->_nb_context); 31 ALLOC1(_stat_nb_cycle_state_ko_excep ,counter_t *,_param->_nb_context); 32 ALLOC1(_stat_nb_cycle_state_ko_miss_branch ,counter_t *,_param->_nb_context); 33 ALLOC1(_stat_nb_cycle_state_ko_miss_load ,counter_t *,_param->_nb_context); 34 ALLOC1(_stat_nb_cycle_state_ko_miss_load_and_branch,counter_t *,_param->_nb_context); 35 ALLOC1(_stat_nb_cycle_state_ko_msync ,counter_t *,_param->_nb_context); 36 ALLOC1(_stat_nb_cycle_state_ko_psync ,counter_t *,_param->_nb_context); 37 ALLOC1(_stat_nb_cycle_state_ko_csync ,counter_t *,_param->_nb_context); 38 ALLOC1(_stat_nb_cycle_state_ko_spr ,counter_t *,_param->_nb_context); 39 40 for (uint32_t i=0; i<_param->_nb_context; ++i) 41 { 42 _stat_nb_cycle_state_ok [i] = _stat->create_counter("nb_cycle_state_ok_" +toString(i),"",toString(_("Number of cycle in state ok (context %d)"),i)); 43 _stat_nb_cycle_state_ko_excep [i] = _stat->create_counter("nb_cycle_state_ko_excep_" +toString(i),"",toString(_("Number of cycle in state ko_excep (context %d)"),i)); 44 _stat_nb_cycle_state_ko_miss_branch [i] = _stat->create_counter("nb_cycle_state_ko_miss_branch_" +toString(i),"",toString(_("Number of cycle in state ko_miss_branch (context %d)"),i)); 45 _stat_nb_cycle_state_ko_miss_load [i] = _stat->create_counter("nb_cycle_state_ko_miss_load_" +toString(i),"",toString(_("Number of cycle in state ko_miss_load (context %d)"),i)); 46 _stat_nb_cycle_state_ko_miss_load_and_branch [i] = _stat->create_counter("nb_cycle_state_ko_miss_load_and_branch_"+toString(i),"",toString(_("Number of cycle in state ko_miss_load_and_branch (context %d)"),i)); 47 _stat_nb_cycle_state_ko_msync [i] = _stat->create_counter("nb_cycle_state_ko_msync_" +toString(i),"",toString(_("Number of cycle in state ko_msync (context %d)"),i)); 48 _stat_nb_cycle_state_ko_psync [i] = _stat->create_counter("nb_cycle_state_ko_psync_" +toString(i),"",toString(_("Number of cycle in state ko_psync (context %d)"),i)); 49 _stat_nb_cycle_state_ko_csync [i] = _stat->create_counter("nb_cycle_state_ko_csync_" +toString(i),"",toString(_("Number of cycle in state ko_csync (context %d)"),i)); 50 _stat_nb_cycle_state_ko_spr [i] = _stat->create_counter("nb_cycle_state_ko_spr_" +toString(i),"",toString(_("Number of cycle in state ko_spr (context %d)"),i)); 51 52 53 _stat->create_expr_percent("percent_state_ok_" +toString(i),"nb_cycle_state_ok_" +toString(i),"cycle",toString(_("Percent of cycle in state ok (context %d)"),i)); 54 _stat->create_expr_percent("percent_state_ko_excep_" +toString(i),"nb_cycle_state_ko_excep_" +toString(i),"cycle",toString(_("Percent of cycle in state ko_excep (context %d)"),i)); 55 _stat->create_expr_percent("percent_state_ko_miss_branch_" +toString(i),"nb_cycle_state_ko_miss_branch_" +toString(i),"cycle",toString(_("Percent of cycle in state ko_miss_branch (context %d)"),i)); 56 _stat->create_expr_percent("percent_state_ko_miss_load_" +toString(i),"nb_cycle_state_ko_miss_load_" +toString(i),"cycle",toString(_("Percent of cycle in state ko_miss_load (context %d)"),i)); 57 _stat->create_expr_percent("percent_state_ko_miss_load_and_branch_"+toString(i),"nb_cycle_state_ko_miss_load_and_branch_"+toString(i),"cycle",toString(_("Percent of cycle in state ko_miss_load_and_branch (context %d)"),i)); 58 _stat->create_expr_percent("percent_state_ko_msync_" +toString(i),"nb_cycle_state_ko_msync_" +toString(i),"cycle",toString(_("Percent of cycle in state ko_msync (context %d)"),i)); 59 _stat->create_expr_percent("percent_state_ko_psync_" +toString(i),"nb_cycle_state_ko_psync_" +toString(i),"cycle",toString(_("Percent of cycle in state ko_psync (context %d)"),i)); 60 _stat->create_expr_percent("percent_state_ko_csync_" +toString(i),"nb_cycle_state_ko_csync_" +toString(i),"cycle",toString(_("Percent of cycle in state ko_csync (context %d)"),i)); 61 _stat->create_expr_percent("percent_state_ko_spr_" +toString(i),"nb_cycle_state_ko_spr_" +toString(i),"cycle",toString(_("Percent of cycle in state ko_spr (context %d)"),i)); 62 } 63 29 64 log_end(Context_State,FUNCTION); 30 65 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_statistics_deallocation.cpp
r83 r120 8 8 9 9 #include "Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h" 10 #include "Behavioural/include/Allocation.h" 10 11 11 12 namespace morpheo { … … 24 25 25 26 log_printf(INFO,Context_State,FUNCTION,_("Generate Statistics file")); 26 27 27 28 delete _stat; 29 30 DELETE1(_stat_nb_cycle_state_ok ,_param->_nb_context); 31 DELETE1(_stat_nb_cycle_state_ko_excep ,_param->_nb_context); 32 DELETE1(_stat_nb_cycle_state_ko_miss_branch ,_param->_nb_context); 33 DELETE1(_stat_nb_cycle_state_ko_miss_load ,_param->_nb_context); 34 DELETE1(_stat_nb_cycle_state_ko_miss_load_and_branch,_param->_nb_context); 35 DELETE1(_stat_nb_cycle_state_ko_msync ,_param->_nb_context); 36 DELETE1(_stat_nb_cycle_state_ko_psync ,_param->_nb_context); 37 DELETE1(_stat_nb_cycle_state_ko_csync ,_param->_nb_context); 38 DELETE1(_stat_nb_cycle_state_ko_spr ,_param->_nb_context); 28 39 29 40 log_end(Context_State,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp
r119 r120 678 678 } 679 679 680 681 #ifdef STATISTICS 682 if (usage_is_set(_usage,USE_STATISTICS)) 683 for (uint32_t i=0; i<_param->_nb_context; ++i) 684 switch(reg_STATE[i]) 685 { 686 case CONTEXT_STATE_OK : (*_stat_nb_cycle_state_ok [i])++; break; 687 688 case CONTEXT_STATE_KO_EXCEP : 689 case CONTEXT_STATE_KO_EXCEP_ADDR : 690 case CONTEXT_STATE_KO_EXCEP_SPR : (*_stat_nb_cycle_state_ko_excep [i])++; break; 691 692 case CONTEXT_STATE_KO_MISS_BRANCH_WAIT_UPDATE : 693 case CONTEXT_STATE_KO_MISS_BRANCH_ADDR : 694 case CONTEXT_STATE_KO_MISS_BRANCH_WAITEND : (*_stat_nb_cycle_state_ko_miss_branch [i])++; break; 695 696 case CONTEXT_STATE_KO_MISS_LOAD_ADDR : 697 case CONTEXT_STATE_KO_MISS_LOAD_WAITEND : (*_stat_nb_cycle_state_ko_miss_load [i])++; break; 698 699 case CONTEXT_STATE_KO_MISS_LOAD_AND_BRANCH_WAIT_UPDATE: 700 case CONTEXT_STATE_KO_MISS_LOAD_AND_BRANCH_ADDR : 701 case CONTEXT_STATE_KO_MISS_LOAD_AND_BRANCH_WAITEND : (*_stat_nb_cycle_state_ko_miss_load_and_branch [i])++; break; 702 703 // case CONTEXT_STATE_KO_MSYNC : 704 // case CONTEXT_STATE_KO_MSYNC_ISSUE : 705 case CONTEXT_STATE_KO_MSYNC_EXEC : (*_stat_nb_cycle_state_ko_msync [i])++; break; 706 707 // case CONTEXT_STATE_KO_PSYNC : 708 case CONTEXT_STATE_KO_PSYNC_FLUSH : 709 case CONTEXT_STATE_KO_PSYNC_ADDR : (*_stat_nb_cycle_state_ko_psync [i])++; break; 710 711 // case CONTEXT_STATE_KO_CSYNC : 712 case CONTEXT_STATE_KO_CSYNC_FLUSH : 713 case CONTEXT_STATE_KO_CSYNC_ADDR : (*_stat_nb_cycle_state_ko_csync [i])++; break; 714 715 // case CONTEXT_STATE_KO_SPR : 716 // case CONTEXT_STATE_KO_SPR_ISSUE : 717 case CONTEXT_STATE_KO_SPR_EXEC : (*_stat_nb_cycle_state_ko_spr [i])++; break; 718 } 719 #endif 720 721 722 680 723 #if DEBUG >= DEBUG_TRACE 681 724 for (uint32_t i=0; i<_param->_nb_context; i++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp
r119 r120 202 202 203 203 // can_continue [x] = false; // one branch per context, the DS don't execute 204 204 can_continue [x]&= PORT_READ(in_PREDICT_CAN_CONTINUE [i]); // one branch per context, the DS don't execute 205 205 have_decod_branch [x] = true; 206 } 206 207 log_printf(TRACE,Decod,FUNCTION," * predict_can_continue : %d",PORT_READ(in_PREDICT_CAN_CONTINUE [i])); 208 } 207 209 208 210 Tevent_type_t event_type = _decod_instruction->_event_type; … … 245 247 246 248 can_continue [x] &= have_transaction; // to have a in order decod !!! if a previous instruction can decod, also next instruction can't decod. 249 250 log_printf(TRACE,Decod,FUNCTION," * have_transaction : %d",have_transaction); 251 247 252 } 248 253 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Parameters.h
r111 r120 34 34 public : uint32_t _size_history ; 35 35 public : uint32_t * _size_ras_index ; // [nb_context] 36 public : const bool _not_accurate_block_predict;37 36 public : uint32_t _nb_thread ; 38 37 public : uint32_t * _translate_num_context_to_num_thread;//[nb_context] 38 public : const bool _accurate_block_predict ; 39 public : const bool _accurate_block_decod ; 39 40 40 41 //public : uint32_t _size_context_id ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Parameters.cpp
r111 r120 34 34 uint32_t * translate_num_context_to_num_thread ,//[nb_context] 35 35 bool is_toplevel): 36 _not_accurate_block_predict (false) 36 _accurate_block_predict (false), 37 _accurate_block_decod (false) 37 38 { 38 39 log_printf(FUNC,Update_Prediction_Table,FUNCTION,"Begin"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp
r119 r120 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h" 9 9 #include "Behavioural/include/Allocation.h" 10 #include "Common/include/Filename.h" 10 11 11 12 namespace morpheo { … … 250 251 if (_param->_have_thread [i]) 251 252 { 252 std::string filename = MORPHEO_LOG+"/"+toString(getpid())+"-Branchement_prediction-thread_"+toString(i)+".log"; 253 std::string filename = morpheo::filename(MORPHEO_LOG, 254 "Branchement_prediction-thread_"+toString(i), 255 "", 256 "log", 257 false, 258 log_with_pid, 259 false); 253 260 254 261 branchement_log_file [i] .open(filename.c_str() ,std::ios::out | std::ios::trunc); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_decod.cpp
r110 r120 33 33 34 34 Tcontext_t context = (_param->_have_port_context_id)?PORT_READ(in_DECOD_CONTEXT_ID [i]):0; 35 bool is_accurate = reg_IS_ACCURATE [context];35 bool is_accurate = _param->_accurate_block_decod or reg_IS_ACCURATE [context]; 36 36 event_state_t event_state = reg_EVENT_STATE [context]; 37 37 uint32_t ptr_write = reg_UPT_TOP [context]; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_predict.cpp
r88 r120 45 45 PORT_WRITE(out_PREDICT_UPDATE_PREDICTION_ID [i], internal_PREDICT_UPDATE_PREDICTION_ID [i]); 46 46 47 bool is_accurate = not _param->_not_accurate_block_predict or reg_IS_ACCURATE[context];47 bool is_accurate = _param->_accurate_block_predict or reg_IS_ACCURATE[context]; 48 48 49 49 // Ack if : … … 52 52 // * is_accurate 53 53 internal_PREDICT_ACK [i] = ((reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._state == UPDATE_FETCH_PREDICTION_STATE_EMPTY) and 54 // PORT_READ(in_PREDICT_BTB_IS_ACCURATE [i]) and55 (reg_EVENT_STATE [context] == EVENT_STATE_OK) and54 (reg_EVENT_STATE [context] == EVENT_STATE_OK) and 55 // (reg_UFPT_NB_UPDATE [context] == 0) and 56 56 is_accurate); 57 57 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp
r119 r120 203 203 reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._state = UPDATE_FETCH_PREDICTION_STATE_WAIT_DECOD; 204 204 205 Tbranch_condition_t condition = PORT_READ(in_PREDICT_BTB_CONDITION [i]);206 205 Tbranch_condition_t condition = PORT_READ(in_PREDICT_BTB_CONDITION [i]); 206 bool is_accurate = _param->_accurate_block_predict or PORT_READ(in_PREDICT_BTB_IS_ACCURATE [i]); 207 207 reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._condition = condition; 208 208 reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._address_src = PORT_READ(in_PREDICT_BTB_ADDRESS_SRC [i]); 209 209 reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._address_dest = PORT_READ(in_PREDICT_BTB_ADDRESS_DEST [i]); 210 210 reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._last_take = PORT_READ(in_PREDICT_BTB_LAST_TAKE [i]); 211 reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._is_accurate = PORT_READ(in_PREDICT_BTB_IS_ACCURATE [i]);211 reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._is_accurate = is_accurate; 212 212 reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._history = (_param->_have_port_history)?PORT_READ(in_PREDICT_DIR_HISTORY [i]):0; 213 213 reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._address_ras = PORT_READ(in_PREDICT_RAS_ADDRESS [i]); … … 263 263 // Have a miss !!! 264 264 condition = PORT_READ(in_DECOD_BTB_CONDITION [i]); 265 is_accurate = PORT_READ(in_DECOD_IS_ACCURATE [i]);265 is_accurate = _param->_accurate_block_decod or PORT_READ(in_DECOD_IS_ACCURATE [i]); 266 266 267 267 // if can_continue else don't wait the end of all instruction -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp
r118 r120 9 9 #include "Behavioural/include/Allocation.h" 10 10 #include "Common/include/Max.h" 11 #include "Common/include/Filename.h" 11 12 12 13 namespace morpheo { … … 342 343 if (_param->_have_thread [i]) 343 344 { 344 std::string filename = MORPHEO_LOG+"/"+toString(getpid())+"-Instruction_flow-thread_"+toString(i)+".log"; 345 std::string filename = morpheo::filename(MORPHEO_LOG, 346 "Instruction_flow-thread_"+toString(i), 347 "", 348 "log", 349 false, 350 log_with_pid, 351 false); 345 352 346 353 instruction_log_file [i] .open(filename.c_str() ,std::ios::out | std::ios::trunc); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_rename.cpp
r88 r120 24 24 log_function(OOO_Engine_Glue,FUNCTION,_name.c_str()); 25 25 26 for (uint32_t i=0; i<_param->_nb_ rename_unit; ++i)26 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 27 27 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; ++j) 28 // if have not front_end_id port, this function is not use 29 PORT_WRITE(out_RENAME_RENAME_UNIT_FRONT_END_ID [i][j],_param->_translate_front_end_id_to_rename_unit [PORT_READ(in_RENAME_FRONT_END_ID [i][j])]); 30 28 { 29 // if have not front_end_id port, this function is not use 30 PORT_WRITE(out_RENAME_RENAME_UNIT_FRONT_END_ID [i][j],_param->_translate_front_end_id_to_rename_unit [PORT_READ(in_RENAME_FRONT_END_ID [i][j])]); 31 } 32 31 33 log_end(OOO_Engine_Glue,FUNCTION); 32 34 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp
r117 r120 411 411 uint32_t x = 0; 412 412 for (uint32_t j=0; j<_param->_nb_front_end; j++) 413 if ( i== *it)413 if (j == *it) 414 414 { 415 415 // this front end is link with this rename_unit … … 486 486 if (_param->_have_port_front_end_id) 487 487 COMPONENT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+ "_FRONT_END_ID" , 488 dest, "in_RENAME_" +toString(j)+"_"+toString(k)+"_RENAME_UNIT_FRONT_END_ID" );488 dest,"out_RENAME_" +toString(j)+"_"+toString(k)+"_RENAME_UNIT_FRONT_END_ID" ); 489 489 } 490 490 … … 658 658 uint32_t x = 0; 659 659 for (uint32_t j=0; j<_param->_nb_front_end; j++) 660 if ( i== (*it))660 if (j == (*it)) 661 661 { 662 662 for (uint32_t k=0; k<_param->_nb_context[i]; k++) … … 685 685 uint32_t x = 0; 686 686 for (uint32_t j=0; j<_param->_nb_front_end; j++) 687 if ( i== *it)687 if (j == *it) 688 688 { 689 689 for (uint32_t k=0; k<_param->_nb_context[j]; k++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp
r117 r120 132 132 test(); 133 133 134 log_printf(TRACE,OOO_Engine,FUNCTION," * link_front_end_with_rename_unit"); 134 135 _link_front_end_with_rename_unit = new std::vector<uint32_t> [_nb_rename_unit]; 135 136 for (uint32_t i=0; i<_nb_front_end; i++) 136 _link_front_end_with_rename_unit[_link_rename_unit_with_front_end[i]].push_back(i); 137 137 { 138 uint32_t num_rename_unit = _link_rename_unit_with_front_end[i]; 139 140 log_printf(TRACE,OOO_Engine,FUNCTION," front_end %d is link with rename_unit %d with id %d",i,num_rename_unit,_link_front_end_with_rename_unit[num_rename_unit].size()); 141 142 _link_front_end_with_rename_unit[num_rename_unit].push_back(i); 143 } 138 144 _rename_unit_size_front_end_id = new uint32_t [_nb_rename_unit]; 139 145 _rename_unit_size_context_id = new uint32_t [_nb_rename_unit]; … … 172 178 for (uint32_t i=0; i<_nb_rename_unit; i++) 173 179 { 174 log_printf(TRACE,OOO_Engine,FUNCTION," Rename_unit [%d]",i);175 log_printf(TRACE,OOO_Engine,FUNCTION," * front_end : %d",_rename_unit_nb_front_end[i]);180 log_printf(TRACE,OOO_Engine,FUNCTION," * Rename_unit [%d]",i); 181 log_printf(TRACE,OOO_Engine,FUNCTION," * front_end : %d",_rename_unit_nb_front_end[i]); 176 182 177 183 for (uint32_t j=0; j<_rename_unit_nb_front_end[i]; j++) 178 184 { 179 log_printf(TRACE,OOO_Engine,FUNCTION," * [%d] nb_context : %d, nb_inst_decod : %d",j,_rename_unit_nb_context[i][j],_rename_unit_nb_inst_decod[i][j]);185 log_printf(TRACE,OOO_Engine,FUNCTION," * [%d] nb_context : %d, nb_inst_decod : %d",j,_rename_unit_nb_context[i][j],_rename_unit_nb_inst_decod[i][j]); 180 186 181 187 for (uint32_t k=0; k<_rename_unit_nb_context[i][j]; ++k) 182 log_printf(TRACE,OOO_Engine,FUNCTION," * [%d][%d] link_lsq : %d",j,k,_rename_unit_link_load_store_unit_with_thread[i][j][k]);188 log_printf(TRACE,OOO_Engine,FUNCTION," * [%d][%d] link_lsq : %d",j,k,_rename_unit_link_load_store_unit_with_thread[i][j][k]); 183 189 } 184 190 } … … 203 209 _sum_inst_retire += _nb_inst_retire [i]; 204 210 205 log_printf(TRACE,OOO_Engine,FUNCTION," rename_unit [%d] - nb_inst_insert %d, nb_inst_retire %d", i,_nb_inst_insert [i],_nb_inst_retire [i]);211 log_printf(TRACE,OOO_Engine,FUNCTION," * rename_unit [%d] - nb_inst_insert %d, nb_inst_retire %d", i,_nb_inst_insert [i],_nb_inst_retire [i]); 206 212 } 207 213 208 log_printf(TRACE,OOO_Engine,FUNCTION," sum_inst_insert %d, sum_inst_retire %d",_sum_inst_insert,_sum_inst_retire);214 log_printf(TRACE,OOO_Engine,FUNCTION," * sum_inst_insert %d, sum_inst_retire %d",_sum_inst_insert,_sum_inst_retire); 209 215 210 216 // _have_port_front_end_id = _size_front_end_id > 0; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/include/Parameters.h
r117 r120 303 303 public : bool ** _execute_loop_is_load_store_unit ;//[nb_execute_loop][nb_execute_unit] 304 304 public : uint32_t ** _execute_loop_translate_num_execute_unit ;//[nb_execute_loop][nb_execute_unit] 305 public : bool ** _execute_loop_num_thread_valid ;//[nb_execute_loop][execute_loop_nb_thread] 305 306 306 307 // translate for icache_access -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp
r117 r120 20 20 uint32_t num_thread) 21 21 { 22 log_printf(TRACE,Core,FUNCTION,_("execute_loop_get_num_thread")); 23 log_printf(TRACE,Core,FUNCTION,_(" * Parameters :")); 22 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_get_num_thread")); 24 23 log_printf(TRACE,Core,FUNCTION,_(" * num_execute_loop : %d"),num_execute_loop); 25 24 log_printf(TRACE,Core,FUNCTION,_(" * num_thread : %d"),num_thread); … … 38 37 uint32_t front_end_id ; 39 38 uint32_t ooo_engine_id; 40 39 41 40 // * compute 42 41 for (ooo_engine_id=0; ooo_engine_id<_execute_loop_nb_ooo_engine [num_execute_loop]; ++ooo_engine_id) … … 44 43 break; 45 44 46 #ifdef DEBUG_TEST47 45 if (ooo_engine_id == _execute_loop_nb_ooo_engine [num_execute_loop]) 48 throw ERRORMORPHEO(FUNCTION,toString(_("execute_loop [%d] : ooo_engine [%d] is not find."),num_execute_loop,num_ooo_engine)); 49 #endif 46 return static_cast<Tcontext_t>(-1); 50 47 51 48 log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_id : %d"),ooo_engine_id); … … 55 52 break; 56 53 57 #ifdef DEBUG_TEST58 54 if (front_end_id == _execute_loop_nb_front_end [num_execute_loop]) 59 throw ERRORMORPHEO(FUNCTION,toString(_("execute_loop [%d] : front_end [%d] is not find."),num_execute_loop,num_front_end)); 60 #endif 55 return static_cast<Tcontext_t>(-1); 61 56 62 57 log_printf(TRACE,Core,FUNCTION,_(" * front_end_id : %d"),front_end_id ); 63 58 59 Tcontext_t _return = get_num_thread(context_id , log2(_execute_loop_nb_context [num_execute_loop]), 60 front_end_id , log2(_execute_loop_nb_front_end [num_execute_loop]), 61 ooo_engine_id, log2(_execute_loop_nb_ooo_engine [num_execute_loop])); 62 63 log_printf(TRACE,Core,FUNCTION,_(" * return : %d"),_return); 64 64 65 // compute the thread number 65 return get_num_thread(context_id , (1<<_execute_loop_nb_context [num_execute_loop]), 66 front_end_id , (1<<_execute_loop_nb_front_end [num_execute_loop]), 67 ooo_engine_id, (1<<_execute_loop_nb_ooo_engine [num_execute_loop])); 66 return _return; 68 67 } 69 68 … … 376 375 377 376 log_printf(TRACE,Core,FUNCTION,_("Core parameters :")); 377 378 log_printf(TRACE,Core,FUNCTION,_(" * nb_thread : %d"),_nb_thread); 378 379 379 380 // inverse link … … 436 437 for (uint32_t j=0; j<_nb_execute_unit[i]; ++j) 437 438 { 438 log_printf(TRACE,Core,FUNCTION,_(" * execute_unit [%d][%d] : functionnal_unit [%d] - load_store_unit [%d]"),i,j,_link_functionnal_unit_with_execute_unit [i][j],_link_load_store_unit_with_execute_unit [i][j]);439 log_printf(TRACE,Core,FUNCTION,_(" * execute_unit [%d][%d] : functionnal_unit [%d] - load_store_unit [%d]"),i,j,_link_functionnal_unit_with_execute_unit [i][j],_link_load_store_unit_with_execute_unit [i][j]); 439 440 440 441 … … 742 743 } 743 744 744 // log_printf(TRACE,Core,FUNCTION,_(" * front_end_instruction_implemeted"));745 // log_printf(TRACE,Core,FUNCTION,_(" * front_end_instruction_implemeted")); 745 746 // for (uint32_t i=0; i<_nb_front_end; ++i) 746 747 // for (uint32_t j=0; j<_nb_context[i]; ++j) … … 824 825 825 826 ALLOC1(_ooo_engine_nb_front_end ,uint32_t ,_nb_ooo_engine); 827 828 log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_nb_front_end")); 826 829 827 830 { … … 837 840 uint32_t num_rename_bloc = _link_rename_bloc_with_front_end [i]; 838 841 uint32_t num_ooo_engine = _link_rename_unit_with_rename_bloc [num_rename_bloc].first; 839 842 843 log_printf(TRACE,Core,FUNCTION,_(" * num_front_end : %d"),i); 844 log_printf(TRACE,Core,FUNCTION,_(" * num_rename_bloc : %d"),num_rename_bloc); 845 log_printf(TRACE,Core,FUNCTION,_(" * num_ooo_engine : %d"),num_ooo_engine ); 846 log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_nb_front_end : %d"),_ooo_engine_nb_front_end [num_ooo_engine]); 840 847 // insert a new front_end 841 848 _ooo_engine_nb_front_end [num_ooo_engine] ++; // === list_front_end.size() … … 843 850 } 844 851 845 log_printf(TRACE,Core,FUNCTION,_(" * translate_ooo_engine_num_front_end"));852 log_printf(TRACE,Core,FUNCTION,_(" * translate_ooo_engine_num_front_end")); 846 853 847 854 ALLOC2(_translate_ooo_engine_num_front_end ,uint32_t ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1]); 848 855 for (uint32_t i=0; i<_nb_ooo_engine; ++i) 849 for (uint32_t j=0; j<_ooo_engine_nb_front_end[i];++j) 850 { 851 uint32_t num_front_end = list_front_end[i][j]; 856 { 857 // log_printf(TRACE,Core,FUNCTION,_(" %d -> %d"),i,_ooo_engine_nb_front_end[i]); 858 859 for (uint32_t j=0; j<_ooo_engine_nb_front_end[i] ;++j) 860 { 861 uint32_t num_front_end = list_front_end[i][j]; 852 862 853 log_printf(TRACE,Core,FUNCTION,_(" [%d][%d] -> %d"),i,j,num_front_end); 854 _translate_ooo_engine_num_front_end [i][j++] = num_front_end; 855 } 863 log_printf(TRACE,Core,FUNCTION,_(" [%d][%d] -> %d"),i,j,num_front_end); 864 865 _translate_ooo_engine_num_front_end [i][j] = num_front_end; 866 } 867 } 856 868 } 857 869 … … 891 903 } 892 904 893 log_printf(TRACE,Core,FUNCTION,_(" * translate_ooo_engine_num_execute_loop"));905 log_printf(TRACE,Core,FUNCTION,_(" * translate_ooo_engine_num_execute_loop")); 894 906 895 907 ALLOC2(_translate_ooo_engine_num_execute_loop ,uint32_t ,_nb_ooo_engine,_ooo_engine_nb_execute_loop[it1]); … … 1011 1023 for (uint32_t i=0; i<_nb_ooo_engine; ++i) 1012 1024 { 1013 // log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_issue_type [%d]"),i);1025 // log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_issue_type [%d]"),i); 1014 1026 1015 1027 // Init … … 1111 1123 } 1112 1124 1113 log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_routing [%d]"),i);1125 log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_routing [%d]"),i); 1114 1126 for (uint32_t j=0; j<_nb_rename_unit[i]; ++j) 1115 1127 { … … 1149 1161 } 1150 1162 1151 log_printf(TRACE,Core,FUNCTION,_(" * network_table_dispatch [nb_ooo_engine][nb_inst_issue_slot][nb_execute_loop][nb_read_unit]"));1163 log_printf(TRACE,Core,FUNCTION,_(" * network_table_dispatch [nb_ooo_engine][nb_inst_issue_slot][nb_execute_loop][nb_read_unit]")); 1152 1164 for (uint32_t i=0; i<_nb_ooo_engine; ++i) 1153 1165 for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j) … … 1159 1171 ALLOC3(_network_table_issue_type,bool,_nb_execute_loop,_nb_read_unit[it1],_nb_type); 1160 1172 1161 log_printf(TRACE,Core,FUNCTION,_(" * network_table_issue_type"));1173 log_printf(TRACE,Core,FUNCTION,_(" * network_table_issue_type")); 1162 1174 for (uint32_t i=0; i<_nb_execute_loop; ++i) 1163 1175 for (uint32_t j=0; j<_nb_read_unit[i]; ++j) … … 1383 1395 _execute_loop_nb_ooo_engine [i] = _list_ooo_engine_with_execute_loop[i].size(); 1384 1396 1385 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_ooo_engine : %d"),_execute_loop_nb_ooo_engine [i]);1397 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_ooo_engine : %d"),_execute_loop_nb_ooo_engine [i]); 1386 1398 1387 1399 uint32_t max_nb_front_end = 0; … … 1409 1421 _execute_loop_nb_packet [i] = max_size_rob ; 1410 1422 1411 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_front_end : %d"),_execute_loop_nb_front_end [i]);1412 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_context : %d"),_execute_loop_nb_context [i]);1413 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_packet : %d"),_execute_loop_nb_packet [i]);1423 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_front_end : %d"),_execute_loop_nb_front_end [i]); 1424 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_context : %d"),_execute_loop_nb_context [i]); 1425 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_packet : %d"),_execute_loop_nb_packet [i]); 1414 1426 1415 1427 _execute_loop_nb_thread [i] = get_nb_thread(_execute_loop_nb_context [i], … … 1417 1429 _execute_loop_nb_ooo_engine [i]); 1418 1430 1419 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_thread : %d"),_execute_loop_nb_thread [i]);1431 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_thread : %d"),_execute_loop_nb_thread [i]); 1420 1432 } 1421 1433 … … 1431 1443 ALLOC2(_execute_loop_nb_inst_retire ,uint32_t,_nb_execute_loop,_nb_read_unit[it1]); 1432 1444 1433 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop - Read_unit"));1445 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop - Read_unit")); 1434 1446 for (uint32_t i=0; i<_nb_execute_loop; ++i) 1435 1447 { 1436 log_printf(TRACE,Core,FUNCTION,_(" * [%d] nb_read_unit : %d"),i,_nb_read_unit[i]);1448 log_printf(TRACE,Core,FUNCTION,_(" * [%d] nb_read_unit : %d"),i,_nb_read_unit[i]); 1437 1449 1438 1450 for (uint32_t j=0; j<_nb_read_unit[i]; ++j) … … 1440 1452 uint32_t num_read_bloc = _link_read_bloc_with_read_unit [i][j]; 1441 1453 1442 log_printf(TRACE,Core,FUNCTION,_(" * num_read_bloc : %d"),num_read_bloc);1454 log_printf(TRACE,Core,FUNCTION,_(" * num_read_bloc : %d"),num_read_bloc); 1443 1455 1444 1456 _execute_loop_size_read_queue [i][j] = _size_read_queue [num_read_bloc]; … … 1494 1506 _execute_loop_nb_inst_functionnal_unit [i][num_fu] = _nb_inst_functionnal_unit [num_functionnal_unit]; 1495 1507 1496 log_printf(TRACE,Core,FUNCTION, " * _execute_loop_nb_inst_functionnal_unit [%d][%d] = _nb_inst_functionnal_unit [%d] = %d",i,num_fu,num_functionnal_unit,_nb_inst_functionnal_unit [num_functionnal_unit]);1508 log_printf(TRACE,Core,FUNCTION,_(" * _execute_loop_nb_inst_functionnal_unit [%d][%d] = _nb_inst_functionnal_unit [%d] = %d"),i,num_fu,num_functionnal_unit,_nb_inst_functionnal_unit [num_functionnal_unit]); 1497 1509 1498 1510 for (uint32_t k=0; k<_nb_type; ++k) … … 1527 1539 uint32_t num_load_store_unit = _list_load_store_unit_with_execute_unit [i][j]; 1528 1540 1529 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_load_store_unit [%d][%d] : %d"),i,j,num_load_store_unit);1530 log_printf(TRACE,Core,FUNCTION,_(" * nb_bypass_memory : %d"),_nb_bypass_memory[num_load_store_unit]);1541 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_load_store_unit [%d][%d] : %d"),i,j,num_load_store_unit); 1542 log_printf(TRACE,Core,FUNCTION,_(" * nb_bypass_memory : %d"),_nb_bypass_memory[num_load_store_unit]); 1531 1543 1532 1544 _execute_loop_size_store_queue [i][j] = _size_store_queue [num_load_store_unit]; … … 1619 1631 ALLOC4(_execute_loop_read_unit_to_execution_unit_table_routing ,bool ,_nb_execute_loop,_nb_read_unit[it1],_nb_execute_unit[it1],_execute_loop_nb_execute_unit_port[it1][it2]); 1620 1632 1621 log_printf(TRACE,Core,FUNCTION,_(" execute_loop_read_unit_to_execution_unit_table_routing [execute_loop][read_unit][execute_unit][execute_unit_port]"));1633 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_read_unit_to_execution_unit_table_routing [execute_loop][read_unit][execute_unit][execute_unit_port]")); 1622 1634 for (uint32_t i=0; i<_nb_execute_loop; ++i) 1623 1635 for (uint32_t j=0; j<_nb_execute_unit[i]; ++j) … … 1647 1659 ALLOC4(_execute_loop_execution_unit_to_write_unit_table_routing,bool ,_nb_execute_loop,_nb_execute_unit[it1],_execute_loop_nb_execute_unit_port[it1][it2],_nb_write_unit[it1]); 1648 1660 1649 log_printf(TRACE,Core,FUNCTION,_(" execute_loop_execution_unit_to_write_unit_table_routing [execute_loop][execute_unit][execute_unit_port][write_unit]"));1661 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_execution_unit_to_write_unit_table_routing [execute_loop][execute_unit][execute_unit_port][write_unit]")); 1650 1662 1651 1663 for (uint32_t i=0; i<_nb_execute_loop; ++i) … … 1677 1689 ALLOC3(_execute_loop_execution_unit_to_write_unit_table_thread ,bool ,_nb_execute_loop,_nb_write_unit[it1],_execute_loop_nb_thread [it1]); 1678 1690 1679 log_printf(TRACE,Core,FUNCTION,_(" execute_loop_read_unit_to_execution_unit_table_thread"));1691 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_read_unit_to_execution_unit_table_thread")); 1680 1692 for (uint32_t i=0; i<_nb_execute_loop; ++i) 1681 1693 { … … 1704 1716 { 1705 1717 uint32_t num_thread = execute_loop_get_num_thread (i,k); 1718 1719 #ifdef DEBUG_TEST 1720 if (num_thread == static_cast<Tcontext_t>(-1)) 1721 throw ERRORMORPHEO(FUNCTION,toString(_("execute_loop [%d] : thread %d is invalid."),i,k)); 1722 #endif 1723 1706 1724 _execute_loop_read_unit_to_execution_unit_table_thread [i][j][num_thread] = true; 1707 1725 log_printf(TRACE,Core,FUNCTION,_(" [%d][%d][%d] -> Ok"),i,j,num_thread); … … 1722 1740 } 1723 1741 1742 ALLOC2(_execute_loop_num_thread_valid ,bool ,_nb_execute_loop,_execute_loop_nb_thread[it1]); 1743 1744 log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_num_thread_valid")); 1745 1746 for (uint32_t i=0; i<_nb_execute_loop; ++i) 1747 { 1748 for (uint32_t j=0; j<_execute_loop_nb_thread[i]; ++j) 1749 _execute_loop_num_thread_valid [i][j] = false; 1750 1751 for (uint32_t j=0; j<_nb_thread; ++j) 1752 { 1753 uint32_t num_thread = execute_loop_get_num_thread (i,j); 1754 1755 if (num_thread != static_cast<Tcontext_t>(-1)) 1756 { 1757 log_printf(TRACE,Core,FUNCTION,_(" [%d][%d] -> valid"),i,num_thread); 1758 1759 _execute_loop_num_thread_valid [i][num_thread] = true; 1760 } 1761 } 1762 } 1763 1764 1724 1765 ALLOC2(_icache_access_size_packet_id,uint32_t,_nb_front_end,_nb_context[it1]); 1725 1766 ALLOC2(_icache_access_table_routing ,uint32_t,_nb_front_end,_nb_context[it1]); … … 2041 2082 2042 2083 _execute_loop_is_load_store_unit [i], 2043 _execute_loop_translate_num_execute_unit [i] 2084 _execute_loop_translate_num_execute_unit [i], 2085 2086 _execute_loop_num_thread_valid [i] 2044 2087 ); 2045 2088 … … 2153 2196 DELETE2(_icache_access_table_routing ,_nb_front_end,_nb_context[it1]); 2154 2197 DELETE2(_icache_access_size_packet_id ,_nb_front_end,_nb_context[it1]); 2198 DELETE2(_execute_loop_num_thread_valid ,_nb_execute_loop,_execute_loop_nb_thread[it1]); 2155 2199 DELETE3(_execute_loop_execution_unit_to_write_unit_table_thread ,_nb_execute_loop,_nb_write_unit[it1],_execute_loop_nb_thread [it1]); 2156 2200 DELETE3(_execute_loop_read_unit_to_execution_unit_table_thread ,_nb_execute_loop,_nb_execute_unit[it1],_execute_loop_nb_thread[it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h
r119 r120 10 10 #define MORPHEO_MAJOR_VERSION "0" 11 11 #define MORPHEO_MINOR_VERSION "2" 12 #define MORPHEO_REVISION "1 19"12 #define MORPHEO_REVISION "120" 13 13 #define MORPHEO_CODENAME "Castor" 14 14 15 #define MORPHEO_DATE_DAY "2 5"15 #define MORPHEO_DATE_DAY "26" 16 16 #define MORPHEO_DATE_MONTH "05" 17 17 #define MORPHEO_DATE_YEAR "2009" -
trunk/IPs/systemC/processor/Morpheo/Common/include/Message.h
r113 r120 43 43 #endif 44 44 45 extern bool log_with_pid; 45 46 extern FILE * log_stream; 47 46 48 FILE * log (FILE * stream); 47 49 void log_init (bool have_file, 50 bool with_pid , 48 51 std::string directory, 49 52 std::string file=""); -
trunk/IPs/systemC/processor/Morpheo/Common/src/Message.cpp
r115 r120 15 15 16 16 static bool log_initialized; 17 bool log_with_pid; 17 18 FILE * log_stream; 18 19 … … 28 29 #define FUNCTION "log_init" 29 30 void log_init (bool have_file, 31 bool with_pid , 30 32 std::string directory, 31 33 std::string file) … … 34 36 { 35 37 log_initialized = true; 36 38 log_with_pid = with_pid; 39 37 40 if (have_file) 38 41 { … … 43 46 "log", 44 47 (file==""), 45 (file==""),48 with_pid, 46 49 true); 47 50 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_2.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="1" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="8" /> 10 10 <parameter name="ufpt_size_queue" value="2" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_3.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="1" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="8" /> 10 10 <parameter name="ufpt_size_queue" value="2" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_4.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="1" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="8" /> 10 10 <parameter name="ufpt_size_queue" value="2" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_1.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="2" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="8" /> 10 10 <parameter name="ufpt_size_queue" value="2" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_2.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="2" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="8" /> 10 10 <parameter name="ufpt_size_queue" value="4" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_3.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="2" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="8" /> 10 10 <parameter name="ufpt_size_queue" value="4" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_4.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="2" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="8" /> 10 10 <parameter name="ufpt_size_queue" value="4" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_1.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="8" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="16" /> 10 10 <parameter name="ufpt_size_queue" value="4" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_2.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="8" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="16" /> 10 10 <parameter name="ufpt_size_queue" value="4" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_3.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="8" /> 8 8 <parameter name="ras_size_queue" value="16" /> 9 <parameter name="upt_size_queue" value=" 8" />9 <parameter name="upt_size_queue" value="16" /> 10 10 <parameter name="ufpt_size_queue" value="4" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w8_1.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="8" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="16" /> 10 10 <parameter name="ufpt_size_queue" value="4" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w8_2.cfg
r119 r120 7 7 <parameter name="nb_inst_fetch" value="8" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="16" /> 10 10 <parameter name="ufpt_size_queue" value="4" /> 11 11 -
trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.gen
r119 r120 19 19 <parameter name="implement_group" default="0" level="..." description="..." /> 20 20 <parameter name="ras_size_queue" min="2" max="16" step="* 2" default="2" level="..." description="..." /> 21 <parameter name="upt_size_queue" min="1" max=" 16" step="* 2" default="2" level="..." description="..." />21 <parameter name="upt_size_queue" min="1" max="32" step="* 2" default="2" level="..." description="..." /> 22 22 <parameter name="ufpt_size_queue" min="1" max="16" step="* 2" default="2" level="..." description="..." /> 23 23 -
trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.sim
r119 r120 10 10 <parameter name="use_statistics" value="1" /> 11 11 <parameter name="use_information" value="0" /> 12 <parameter name="use_header" value=" 0" />12 <parameter name="use_header" value="1" /> 13 13 14 14 <parameter name="directory_statistics" value="." /> … … 26 26 <parameter name="debug_cycle_start" value="4250" /> 27 27 <parameter name="debug_cycle_stop" value="4400" /> 28 <parameter name="debug_have_log_file" value="0" /> 28 29 <parameter name="debug_log_file_generate" value="0" /> 30 <parameter name="debug_log_file_with_pid" value="0" /> 29 31 <parameter name="debug_idle_cycle" value="1000" /> 30 32 <parameter name="debug_idle_time" value="10" /> … … 104 106 <component name="TopLevel" model="systemc" debug="0" /> 105 107 108 <component name="Behavioural" model="systemc" debug="0" /> 109 <component name="Interface" model="systemc" debug="0" /> 110 <component name="Allocation" model="systemc" debug="0" /> 106 111 </parameters> -
trunk/IPs/systemC/processor/Morpheo/Files/debug.cfg
r119 r120 1 1 <?xml version="1.0" encoding="ISO-8859-1" ?> 2 2 3 <core name=" Instance_x1_w2_4">3 <core name="debug"> 4 4 5 5 <thread id="0"> 6 <parameter name="size_ifetch_queue" value=" 8" />7 <parameter name="nb_inst_fetch" value=" 2" />6 <parameter name="size_ifetch_queue" value="32" /> 7 <parameter name="nb_inst_fetch" value="8" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 4" />9 <parameter name="upt_size_queue" value="32" /> 10 10 <parameter name="ufpt_size_queue" value="4" /> 11 11 … … 16 16 17 17 <decod_bloc id="0"> 18 <parameter name="size_decod_queue" value=" 8"/>18 <parameter name="size_decod_queue" value="16"/> 19 19 <parameter name="decod_queue_scheme" value="1" /> 20 <parameter name="nb_inst_decod" value=" 2" />20 <parameter name="nb_inst_decod" value="4" /> 21 21 <parameter name="nb_context_select" value="1" /> 22 22 <parameter name="context_select_priority" value="1" /> … … 25 25 26 26 <rename_bloc id="0"> 27 <parameter name="nb_inst_insert" value=" 2" />28 <parameter name="nb_inst_retire" value=" 2" />27 <parameter name="nb_inst_insert" value="4" /> 28 <parameter name="nb_inst_retire" value="4" /> 29 29 <parameter name="rename_select_priority" value="1" /> 30 30 <parameter name="rename_select_load_balancing" value="1" /> 31 31 <parameter name="rename_select_nb_front_end_select" value="1" /> 32 <parameter name="nb_general_register" value=" 128"/>33 <parameter name="nb_special_register" value=" 64"/>34 <parameter name="nb_reg_free" value=" 2" />35 <parameter name="nb_rename_unit_bank" value=" 2" />32 <parameter name="nb_general_register" value="256"/> 33 <parameter name="nb_special_register" value="128"/> 34 <parameter name="nb_reg_free" value="8" /> 35 <parameter name="nb_rename_unit_bank" value="8" /> 36 36 </rename_bloc> 37 37 38 <read_bloc id="0,1,2,3 ">38 <read_bloc id="0,1,2,3,4,5"> 39 39 <parameter name="size_read_queue" value="4" /> 40 40 <parameter name="size_reservation_station" value="4" /> 41 41 <parameter name="nb_inst_retire_reservation_station" value="4" /> 42 42 </read_bloc> 43 44 <write_bloc id="0,1,2,3 ">43 44 <write_bloc id="0,1,2,3,4,5"> 45 45 <parameter name="size_write_queue" value="4" /> 46 46 <parameter name="size_execute_queue" value="4" /> … … 48 48 <parameter name="write_queue_scheme" value="1" /> 49 49 </write_bloc> 50 50 51 51 <load_store_unit id="0"> 52 <parameter name="size_store_queue" value=" 32" />53 <parameter name="size_load_queue" value=" 8" />52 <parameter name="size_store_queue" value="16" /> 53 <parameter name="size_load_queue" value="32" /> 54 54 <parameter name="size_speculative_access_queue" value="4" /> 55 <parameter name="nb_port_check" value=" 1" />55 <parameter name="nb_port_check" value="4" /> 56 56 <parameter name="speculative_load" value="2" /> 57 57 <parameter name="nb_bypass_memory" value="0" /> … … 61 61 62 62 <functionnal_unit id="0"> 63 <parameter name="nb_inst_functionnal_unit" value="1" /> 64 65 <timing type="8" latence="1" delay="1" /> 66 <timing type="10" latence="1" delay="1" /> 67 </functionnal_unit> 68 69 <functionnal_unit id="1,2,3,4" > 63 70 <parameter name="nb_inst_functionnal_unit" value="1" /> 64 71 … … 70 77 <timing type="6" latence="1" delay="1" /> 71 78 <timing type="7" latence="1" delay="1" /> 72 <timing type="8" latence="1" delay="1" />73 <timing type="10" latence="1" delay="1" />74 </functionnal_unit>75 76 <functionnal_unit id="1,2">77 <parameter name="nb_inst_functionnal_unit" value="1" />78 79 <timing type="0" latence="1" delay="1" />80 <timing type="1" latence="1" delay="1" />81 <timing type="2" latence="1" delay="1" />82 <timing type="3" latence="1" delay="1" />83 <timing type="4" latence="1" delay="1" />84 <timing type="6" latence="1" delay="1" />85 <timing type="7" latence="1" delay="1" />86 87 <timing type="10" latence="1" delay="1" />88 79 </functionnal_unit> 89 80 … … 94 85 <parameter name="nb_inst_branch_decod" value="1" /> 95 86 <parameter name="nb_inst_branch_update" value="1" /> 96 <parameter name="btb_size_queue" value=" 64"/>97 <parameter name="btb_associativity" value=" 2" />87 <parameter name="btb_size_queue" value="256" /> 88 <parameter name="btb_associativity" value="8" /> 98 89 <parameter name="btb_size_counter" value="2" /> 99 90 <parameter name="btb_victim_scheme" value="3" /> 100 <parameter name="dir_predictor_scheme" value="2" /> 91 <parameter name="dir_predictor_scheme" value="4" /> 92 93 <predictor id="0"> 94 <parameter name="dir_have_bht" value="1" /> 95 <parameter name="dir_bht_size_shifter" value="4" /> 96 <parameter name="dir_bht_nb_shifter" value="64" /> 97 <parameter name="dir_have_pht" value="1" /> 98 <parameter name="dir_pht_size_counter" value="2" /> 99 <parameter name="dir_pht_nb_counter" value="64" /> 100 <parameter name="dir_pht_size_address_share" value="0" /> 101 </predictor> 102 <predictor id="1"> 103 <parameter name="dir_have_bht" value="1" /> 104 <parameter name="dir_bht_size_shifter" value="4" /> 105 <parameter name="dir_bht_nb_shifter" value="1" /> 106 <parameter name="dir_have_pht" value="1" /> 107 <parameter name="dir_pht_size_counter" value="2" /> 108 <parameter name="dir_pht_nb_counter" value="128" /> 109 <parameter name="dir_pht_size_address_share" value="0" /> 110 </predictor> 111 <predictor id="2"> 112 <parameter name="dir_have_bht" value="0" /> 113 <parameter name="dir_have_pht" value="1" /> 114 <parameter name="dir_pht_size_counter" value="2" /> 115 <parameter name="dir_pht_nb_counter" value="128" /> 116 <parameter name="dir_pht_size_address_share" value="0" /> 117 </predictor> 101 118 </front_end> 102 119 103 120 <ooo_engine id="0"> 104 121 <parameter name="nb_rename_unit" value="1" /> 105 <parameter name="nb_inst_issue" value=" 2" />122 <parameter name="nb_inst_issue" value="4" /> 106 123 <parameter name="nb_inst_reexecute" value="1" /> 107 <parameter name="nb_inst_commit" value=" 2" />108 <parameter name="nb_inst_branch_complete" value=" 1" />124 <parameter name="nb_inst_commit" value="4" /> 125 <parameter name="nb_inst_branch_complete" value="2" /> 109 126 <parameter name="nb_rename_unit_select" value="1" /> 110 127 <parameter name="nb_execute_loop_select" value="1" /> 111 <parameter name="size_re_order_buffer" value=" 64"/>112 <parameter name="nb_re_order_buffer_bank" value=" 32"/>128 <parameter name="size_re_order_buffer" value="128"/> 129 <parameter name="nb_re_order_buffer_bank" value="64" /> 113 130 <parameter name="commit_priority" value="1" /> 114 131 <parameter name="commit_load_balancing" value="1" /> 115 <parameter name="size_issue_queue" value=" 8" />116 <parameter name="nb_issue_queue_bank" value=" 2" />132 <parameter name="size_issue_queue" value="16" /> 133 <parameter name="nb_issue_queue_bank" value="4" /> 117 134 <parameter name="issue_queue_scheme" value="0" /> 118 135 <parameter name="issue_priority" value="1" /> … … 124 141 125 142 <execute_loop id="0"> 126 <parameter name="nb_read_unit" value="4" /> 127 <parameter name="nb_write_unit" value="4" /> 128 <parameter name="nb_gpr_bank" value="2" /> 129 <parameter name="nb_gpr_port_read_by_bank" value="2" /> 130 <parameter name="nb_gpr_port_write_by_bank" value="2" /> 131 <parameter name="nb_spr_bank" value="2" /> 132 <parameter name="nb_spr_port_read_by_bank" value="2" /> 133 <parameter name="nb_spr_port_write_by_bank" value="2" /> 143 <parameter name="nb_read_unit" value="6" /> 144 <parameter name="nb_write_unit" value="6" /> 145 <parameter name="nb_execute_unit" value="6" /> 146 <parameter name="nb_gpr_bank" value="1" /> 147 <parameter name="nb_gpr_port_read_by_bank" value="12" /> 148 <parameter name="nb_gpr_port_write_by_bank" value="6" /> 149 <parameter name="nb_spr_bank" value="1" /> 150 <parameter name="nb_spr_port_read_by_bank" value="5" /> 151 <parameter name="nb_spr_port_write_by_bank" value="5" /> 134 152 <parameter name="execution_unit_to_write_unit_priority" value="1" /> 135 153 <parameter name="read_unit_to_execution_unit_priority" value="1" /> 136 137 <execute_unit id="0">138 <link name="link_execute_unit_with_load_store_unit" src="0"/>139 </execute_unit>140 <execute_unit id="1">141 <link name="link_execute_unit_with_functionnal_unit" src="0"/>142 </execute_unit>143 <execute_unit id="2">144 <link name="link_execute_unit_with_functionnal_unit" src="1"/>145 </execute_unit>146 <execute_unit id="3">147 <link name="link_execute_unit_with_functionnal_unit" src="2"/>148 </execute_unit>149 150 154 </execute_loop> 151 155 … … 171 175 <link name="link_read_unit_with_read_bloc" src="2" dest="0.2" /> 172 176 <link name="link_read_unit_with_read_bloc" src="3" dest="0.3" /> 177 <link name="link_read_unit_with_read_bloc" src="4" dest="0.4" /> 178 <link name="link_read_unit_with_read_bloc" src="5" dest="0.5" /> 173 179 174 180 <link name="link_write_unit_with_write_bloc" src="0" dest="0.0" /> … … 176 182 <link name="link_write_unit_with_write_bloc" src="2" dest="0.2" /> 177 183 <link name="link_write_unit_with_write_bloc" src="3" dest="0.3" /> 184 <link name="link_write_unit_with_write_bloc" src="4" dest="0.4" /> 185 <link name="link_write_unit_with_write_bloc" src="5" dest="0.5" /> 178 186 179 187 <link name="link_decod_bloc_with_thread" src="0" dest="0" /> … … 181 189 <link name="link_load_store_unit_with_thread" src="0" dest="0" /> 182 190 191 <link name="link_execute_unit_with_load_store_unit" src="0" dest="0.0"/> 192 <link name="link_execute_unit_with_functionnal_unit" src="0" dest="0.1"/> 193 <link name="link_execute_unit_with_functionnal_unit" src="1" dest="0.2"/> 194 <link name="link_execute_unit_with_functionnal_unit" src="2" dest="0.3"/> 195 <link name="link_execute_unit_with_functionnal_unit" src="3" dest="0.4"/> 196 <link name="link_execute_unit_with_functionnal_unit" src="4" dest="0.5"/> 197 183 198 <link name="link_icache_port_with_thread" src="0" dest="0" /> 184 199 <link name="link_dcache_port_with_load_store_unit" src="0.0" dest="0" /> 185 200 186 201 <link name="table_dispatch" src="0.0.0" dest="1" /> 202 <link name="table_dispatch" src="0.1.0" dest="1" /> 203 <link name="table_dispatch" src="0.2.0" dest="1" /> 204 <link name="table_dispatch" src="0.3.0" dest="1" /> 205 187 206 <link name="table_dispatch" src="0.0.1" dest="1" /> 207 <link name="table_dispatch" src="0.1.1" dest="1" /> 208 <link name="table_dispatch" src="0.2.1" dest="1" /> 209 <link name="table_dispatch" src="0.3.1" dest="1" /> 210 188 211 <link name="table_dispatch" src="0.0.2" dest="1" /> 212 <link name="table_dispatch" src="0.1.2" dest="1" /> 213 <link name="table_dispatch" src="0.2.2" dest="1" /> 214 <link name="table_dispatch" src="0.3.2" dest="1" /> 215 189 216 <link name="table_dispatch" src="0.0.3" dest="1" /> 190 <link name="table_dispatch" src="0.1.0" dest="1" />191 <link name="table_dispatch" src="0.1.1" dest="1" />192 <link name="table_dispatch" src="0.1.2" dest="1" />193 217 <link name="table_dispatch" src="0.1.3" dest="1" /> 218 <link name="table_dispatch" src="0.2.3" dest="1" /> 219 <link name="table_dispatch" src="0.3.3" dest="1" /> 220 221 <link name="table_dispatch" src="0.0.4" dest="1" /> 222 <link name="table_dispatch" src="0.1.4" dest="1" /> 223 <link name="table_dispatch" src="0.2.4" dest="1" /> 224 <link name="table_dispatch" src="0.3.4" dest="1" /> 225 226 <link name="table_dispatch" src="0.0.5" dest="1" /> 227 <link name="table_dispatch" src="0.1.5" dest="1" /> 228 <link name="table_dispatch" src="0.2.5" dest="1" /> 229 <link name="table_dispatch" src="0.3.5" dest="1" /> 194 230 195 231 <link name="link_read_bloc_and_load_store_unit" src="0.0" dest="1" /> … … 197 233 <link name="link_read_bloc_and_load_store_unit" src="2.0" dest="0" /> 198 234 <link name="link_read_bloc_and_load_store_unit" src="3.0" dest="0" /> 235 <link name="link_read_bloc_and_load_store_unit" src="4.0" dest="0" /> 236 <link name="link_read_bloc_and_load_store_unit" src="5.0" dest="0" /> 199 237 200 238 <link name="link_read_bloc_and_functionnal_unit" src="0.0" dest="0" /> 239 <link name="link_read_bloc_and_functionnal_unit" src="1.0" dest="1" /> 240 <link name="link_read_bloc_and_functionnal_unit" src="2.0" dest="0" /> 241 <link name="link_read_bloc_and_functionnal_unit" src="3.0" dest="0" /> 242 <link name="link_read_bloc_and_functionnal_unit" src="4.0" dest="0" /> 243 <link name="link_read_bloc_and_functionnal_unit" src="5.0" dest="0" /> 201 244 <link name="link_read_bloc_and_functionnal_unit" src="0.1" dest="0" /> 245 <link name="link_read_bloc_and_functionnal_unit" src="1.1" dest="0" /> 246 <link name="link_read_bloc_and_functionnal_unit" src="2.1" dest="1" /> 247 <link name="link_read_bloc_and_functionnal_unit" src="3.1" dest="1" /> 248 <link name="link_read_bloc_and_functionnal_unit" src="4.1" dest="1" /> 249 <link name="link_read_bloc_and_functionnal_unit" src="5.1" dest="1" /> 202 250 <link name="link_read_bloc_and_functionnal_unit" src="0.2" dest="0" /> 203 <link name="link_read_bloc_and_functionnal_unit" src="1.0" dest="1" /> 204 <link name="link_read_bloc_and_functionnal_unit" src="1.1" dest="1" /> 205 <link name="link_read_bloc_and_functionnal_unit" src="1.2" dest="1" /> 206 <link name="link_read_bloc_and_functionnal_unit" src="2.0" dest="1" /> 207 <link name="link_read_bloc_and_functionnal_unit" src="2.1" dest="1" /> 251 <link name="link_read_bloc_and_functionnal_unit" src="1.2" dest="0" /> 208 252 <link name="link_read_bloc_and_functionnal_unit" src="2.2" dest="1" /> 209 <link name="link_read_bloc_and_functionnal_unit" src="3.0" dest="1" />210 <link name="link_read_bloc_and_functionnal_unit" src="3.1" dest="1" />211 253 <link name="link_read_bloc_and_functionnal_unit" src="3.2" dest="1" /> 254 <link name="link_read_bloc_and_functionnal_unit" src="4.2" dest="1" /> 255 <link name="link_read_bloc_and_functionnal_unit" src="5.2" dest="1" /> 256 <link name="link_read_bloc_and_functionnal_unit" src="0.3" dest="0" /> 257 <link name="link_read_bloc_and_functionnal_unit" src="1.3" dest="0" /> 258 <link name="link_read_bloc_and_functionnal_unit" src="2.3" dest="1" /> 259 <link name="link_read_bloc_and_functionnal_unit" src="3.3" dest="1" /> 260 <link name="link_read_bloc_and_functionnal_unit" src="4.3" dest="1" /> 261 <link name="link_read_bloc_and_functionnal_unit" src="5.3" dest="1" /> 262 <link name="link_read_bloc_and_functionnal_unit" src="0.4" dest="0" /> 263 <link name="link_read_bloc_and_functionnal_unit" src="1.4" dest="0" /> 264 <link name="link_read_bloc_and_functionnal_unit" src="2.4" dest="1" /> 265 <link name="link_read_bloc_and_functionnal_unit" src="3.4" dest="1" /> 266 <link name="link_read_bloc_and_functionnal_unit" src="4.4" dest="1" /> 267 <link name="link_read_bloc_and_functionnal_unit" src="5.4" dest="1" /> 212 268 213 269 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> … … 215 271 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest="0" /> 216 272 <link name="link_write_bloc_and_load_store_unit" src="3.0" dest="0" /> 273 <link name="link_write_bloc_and_load_store_unit" src="4.0" dest="0" /> 274 <link name="link_write_bloc_and_load_store_unit" src="5.0" dest="0" /> 217 275 218 276 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="0" /> 277 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 278 <link name="link_write_bloc_and_functionnal_unit" src="2.0" dest="0" /> 279 <link name="link_write_bloc_and_functionnal_unit" src="3.0" dest="0" /> 280 <link name="link_write_bloc_and_functionnal_unit" src="4.0" dest="0" /> 281 <link name="link_write_bloc_and_functionnal_unit" src="5.0" dest="0" /> 282 219 283 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest="0" /> 284 <link name="link_write_bloc_and_functionnal_unit" src="1.1" dest="0" /> 285 <link name="link_write_bloc_and_functionnal_unit" src="2.1" dest="1" /> 286 <link name="link_write_bloc_and_functionnal_unit" src="3.1" dest="1" /> 287 <link name="link_write_bloc_and_functionnal_unit" src="4.1" dest="1" /> 288 <link name="link_write_bloc_and_functionnal_unit" src="5.1" dest="1" /> 289 220 290 <link name="link_write_bloc_and_functionnal_unit" src="0.2" dest="0" /> 221 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 222 <link name="link_write_bloc_and_functionnal_unit" src="1.1" dest="1" /> 223 <link name="link_write_bloc_and_functionnal_unit" src="1.2" dest="1" /> 224 <link name="link_write_bloc_and_functionnal_unit" src="2.0" dest="1" /> 225 <link name="link_write_bloc_and_functionnal_unit" src="2.1" dest="1" /> 291 <link name="link_write_bloc_and_functionnal_unit" src="1.2" dest="0" /> 226 292 <link name="link_write_bloc_and_functionnal_unit" src="2.2" dest="1" /> 227 <link name="link_write_bloc_and_functionnal_unit" src="3.0" dest="1" />228 <link name="link_write_bloc_and_functionnal_unit" src="3.1" dest="1" />229 293 <link name="link_write_bloc_and_functionnal_unit" src="3.2" dest="1" /> 294 <link name="link_write_bloc_and_functionnal_unit" src="4.2" dest="1" /> 295 <link name="link_write_bloc_and_functionnal_unit" src="5.2" dest="1" /> 296 297 <link name="link_write_bloc_and_functionnal_unit" src="0.3" dest="0" /> 298 <link name="link_write_bloc_and_functionnal_unit" src="1.3" dest="0" /> 299 <link name="link_write_bloc_and_functionnal_unit" src="2.3" dest="1" /> 300 <link name="link_write_bloc_and_functionnal_unit" src="3.3" dest="1" /> 301 <link name="link_write_bloc_and_functionnal_unit" src="4.3" dest="1" /> 302 <link name="link_write_bloc_and_functionnal_unit" src="5.3" dest="1" /> 303 304 <link name="link_write_bloc_and_functionnal_unit" src="0.4" dest="0" /> 305 <link name="link_write_bloc_and_functionnal_unit" src="1.4" dest="0" /> 306 <link name="link_write_bloc_and_functionnal_unit" src="2.4" dest="1" /> 307 <link name="link_write_bloc_and_functionnal_unit" src="3.4" dest="1" /> 308 <link name="link_write_bloc_and_functionnal_unit" src="4.4" dest="1" /> 309 <link name="link_write_bloc_and_functionnal_unit" src="5.4" dest="1" /> 230 310 231 311 <link name="link_thread_and_functionnal_unit" src="0.0" dest="1" /> 232 312 <link name="link_thread_and_functionnal_unit" src="0.1" dest="1" /> 233 313 <link name="link_thread_and_functionnal_unit" src="0.2" dest="1" /> 314 <link name="link_thread_and_functionnal_unit" src="0.3" dest="1" /> 315 <link name="link_thread_and_functionnal_unit" src="0.4" dest="1" /> 234 316 235 317 </core> -
trunk/IPs/systemC/processor/Morpheo/Files/debug.sim
r119 r120 24 24 25 25 <parameter name="debug_level" value="3" /> 26 <parameter name="debug_cycle_start" value="18000" /> 27 <parameter name="debug_cycle_stop" value="18100" /> 28 <parameter name="debug_have_log_file" value="0" /> 26 <parameter name="debug_cycle_start" value="30" /> 27 <parameter name="debug_cycle_stop" value="50" /> 28 29 <parameter name="debug_log_file_generate" value="0" /> 30 <parameter name="debug_log_file_with_pid" value="0" /> 29 31 <parameter name="debug_idle_cycle" value="200" /> 30 32 <parameter name="debug_idle_time" value="10" /> … … 104 106 <component name="TopLevel" model="systemc" debug="1" /> 105 107 108 <component name="Behavioural" model="systemc" debug="1" /> 109 <component name="Interface" model="systemc" debug="1" /> 110 <component name="Allocation" model="systemc" debug="1" /> 111 106 112 </parameters>
Note: See TracChangeset
for help on using the changeset viewer.