Changeset 136 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Execute_loop_allocation.cpp
- Timestamp:
- Oct 20, 2009, 8:52:15 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Execute_loop_allocation.cpp
r122 r136 65 65 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation); 66 66 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type); 67 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_CANCEL ,"cancel" ,Tcontrol_t ,1); 67 68 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 68 69 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_READ ,"store_queue_ptr_read" ,Tlsq_ptr_t ,_param->_size_store_queue_ptr); … … 96 97 // ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation); 97 98 // ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type); 99 ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_CANCEL ,"cancel" ,Tcontrol_t ,1); 98 100 ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data); 99 101 ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception); … … 133 135 } 134 136 135 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~136 {137 ALLOC2_INTERFACE_BEGIN("insert_rob",IN, EAST, "Rename's stage : insert a new instruction in the Re Order Buffer",_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);138 139 _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);140 _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);141 142 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE ,"rd_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);143 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_NUM_REG,"rd_num_reg",Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);144 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE ,"re_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);145 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_NUM_REG,"re_num_reg",Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);146 147 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);148 }137 // // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 138 // { 139 // ALLOC2_INTERFACE_BEGIN("insert_rob",IN, EAST, "Rename's stage : insert a new instruction in the Re Order Buffer",_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 140 141 // _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 142 // _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 143 144 // _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE ,"rd_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 145 // _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_NUM_REG,"rd_num_reg",Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 146 // _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE ,"re_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 147 // _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_NUM_REG,"re_num_reg",Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 148 149 // ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 150 // } 149 151 150 152 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 440 442 } 441 443 442 444 // -----[ Interface "issue" ]----------------------------------------- 445 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 446 { 447 dest = _name; 448 449 PORT_MAP(_component ,src , "in_ISSUE_"+toString(i)+"_VAL", 450 dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_VAL"); 451 PORT_MAP(_component ,src ,"out_ISSUE_"+toString(i)+"_ACK", 452 dest,"out_EXECUTE_LOOP_IN_"+toString(i)+"_ACK"); 453 454 //out_ISSUE_READ_UNIT_VAL 455 // in_ISSUE_READ_UNIT_ACK 456 //out_ISSUE_REGISTER_UNIT_VAL 457 // in_ISSUE_REGISTER_UNIT_ACK 458 } 443 459 } 444 460 … … 466 482 // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 467 483 { 484 dest = _name+"_glue"; 485 486 COMPONENT_MAP(_component ,src , "in_READ_UNIT_IN_VAL" , 487 dest,"out_ISSUE_"+toString(i)+"_READ_UNIT_VAL"); 488 COMPONENT_MAP(_component ,src ,"out_READ_UNIT_IN_ACK" 489 ,dest, "in_ISSUE_"+toString(i)+"_READ_UNIT_ACK"); 490 468 491 dest = _name; 469 492 #ifdef POSITION … … 472 495 #endif 473 496 474 PORT_MAP(_component ,src , "in_READ_UNIT_IN_VAL" ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_VAL" );475 PORT_MAP(_component ,src ,"out_READ_UNIT_IN_ACK" ,dest ,"out_EXECUTE_LOOP_IN_"+toString(i)+"_ACK" );476 497 if (_param->_have_port_context_id) 477 498 PORT_MAP(_component ,src , "in_READ_UNIT_IN_CONTEXT_ID" ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_CONTEXT_ID" ); … … 484 505 PORT_MAP(_component ,src , "in_READ_UNIT_IN_OPERATION" ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_OPERATION" ); 485 506 PORT_MAP(_component ,src , "in_READ_UNIT_IN_TYPE" ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_TYPE" ); 507 PORT_MAP(_component ,src , "in_READ_UNIT_IN_CANCEL" ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_CANCEL" ); 486 508 PORT_MAP(_component ,src , "in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE",dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_STORE_QUEUE_PTR_WRITE"); 487 509 PORT_MAP(_component ,src , "in_READ_UNIT_IN_STORE_QUEUE_PTR_READ" ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_STORE_QUEUE_PTR_READ" ); … … 533 555 COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j )+"_TYPE" , 534 556 dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_TYPE" ); 557 COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j )+"_CANCEL" , 558 dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_CANCEL" ); 535 559 COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j )+"_STORE_QUEUE_PTR_WRITE", 536 560 dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_STORE_QUEUE_PTR_WRITE"); … … 818 842 COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_TYPE" , 819 843 dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_TYPE" ); 844 COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_CANCEL" , 845 dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_CANCEL" ); 820 846 COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE", 821 847 dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_STORE_QUEUE_PTR_WRITE"); … … 876 902 // COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_TYPE" , 877 903 // dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_TYPE" ); 904 COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_CANCEL" , 905 dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_CANCEL" ); 878 906 COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_WRITE_RD" , 879 907 dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_WRITE_RD" ); … … 946 974 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_TYPE" , 947 975 dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_TYPE" ); 976 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_CANCEL" , 977 dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_CANCEL" ); 948 978 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_STORE_QUEUE_PTR_WRITE", 949 979 dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_STORE_QUEUE_PTR_WRITE"); … … 1005 1035 // COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_TYPE" , 1006 1036 // dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_TYPE" ); 1037 COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_CANCEL" , 1038 dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_CANCEL" ); 1007 1039 COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_WRITE_RD" , 1008 1040 dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_WRITE_RD" ); … … 1115 1147 // COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_TYPE" , 1116 1148 // dest,"out_WRITE_UNIT_IN_"+toString(i)+"_TYPE" ); 1149 COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_CANCEL" , 1150 dest,"out_WRITE_UNIT_IN_"+toString(i)+"_CANCEL" ); 1117 1151 COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_WRITE_RD" , 1118 1152 dest,"out_WRITE_UNIT_IN_"+toString(i)+"_WRITE_RD" ); … … 1163 1197 // PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_TYPE" , 1164 1198 // dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_TYPE" ); 1199 PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_CANCEL" , 1200 dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_CANCEL" ); 1165 1201 PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_FLAGS" , 1166 1202 dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_FLAGS" ); … … 1279 1315 #endif 1280 1316 1281 COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_VAL" ,dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_VAL" ); 1282 COMPONENT_MAP(_component ,src ,"out_GPR_WRITE_"+toString(i)+"_ACK" ,dest, "in_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_ACK" ); 1317 COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_VAL" , 1318 dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_VAL" ); 1319 COMPONENT_MAP(_component ,src ,"out_GPR_WRITE_"+toString(i)+"_ACK" , 1320 dest, "in_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_ACK" ); 1283 1321 if (_param->_have_port_ooo_engine_id) 1284 COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_OOO_ENGINE_ID"); 1285 COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_NUM_REG" ,dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_NUM_REG" ); 1286 COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_DATA" ,dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_DATA" ); 1322 COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID", 1323 dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_OOO_ENGINE_ID"); 1324 COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_NUM_REG" , 1325 dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_NUM_REG" ); 1326 COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_DATA" , 1327 dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_DATA" ); 1287 1328 } 1288 1329 … … 1321 1362 COMPONENT_MAP(_component ,src , "in_SPR_WRITE_"+toString(i)+"_DATA" ,dest,"out_SPR_WRITE_REGISTER_FILE_"+toString(i)+"_DATA" ); 1322 1363 } 1364 1365 // ~~~~~[ Interface "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1366 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 1367 { 1368 dest = _name+"_glue"; 1369 1370 COMPONENT_MAP(_component ,src , "in_ISSUE_"+toString(i)+"_VAL", 1371 dest,"out_ISSUE_"+toString(i)+"_REGISTER_UNIT_VAL"); 1372 COMPONENT_MAP(_component ,src ,"out_ISSUE_"+toString(i)+"_ACK", 1373 dest, "in_ISSUE_"+toString(i)+"_REGISTER_UNIT_ACK"); 1374 1375 dest = _name; 1376 #ifdef POSITION 1377 _component->interface_map (src ,"issue_"+toString(i), 1378 dest,"issue_"+toString(i)); 1379 #endif 1380 1381 if (_param->_have_port_ooo_engine_id) 1382 PORT_MAP(_component ,src , "in_ISSUE_" +toString(i)+"_OOO_ENGINE_ID", 1383 dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_OOO_ENGINE_ID"); 1384 PORT_MAP(_component ,src , "in_ISSUE_" +toString(i)+"_RD_USE" , 1385 dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_WRITE_RD" ); 1386 PORT_MAP(_component ,src , "in_ISSUE_" +toString(i)+"_RE_USE" , 1387 dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_WRITE_RE" ); 1388 PORT_MAP(_component ,src , "in_ISSUE_" +toString(i)+"_RD_NUM_REG", 1389 dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_NUM_REG_RD"); 1390 PORT_MAP(_component ,src , "in_ISSUE_" +toString(i)+"_RE_NUM_REG", 1391 dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_NUM_REG_RE"); 1392 } 1323 1393 1324 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1325 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)1326 {1327 uint32_t x=_param->_nb_inst_insert_rob [i];1394 // // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1395 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 1396 // { 1397 // uint32_t x=_param->_nb_inst_insert_rob [i]; 1328 1398 1329 for (uint32_t j=0; j<x; j++)1330 {1331 dest = _name;1332 #ifdef POSITION1333 _component->interface_map (src ,"insert_rob_"+toString(i)+"_"+toString(j),1334 dest,"insert_rob_"+toString(i)+"_"+toString(j));1335 #endif1336 1337 PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL" ,1338 dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL" );1339 PORT_MAP(_component ,src ,"out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK" ,1340 dest,"out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK" );1341 PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE" ,1342 dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE" );1343 PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG",1344 dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG");1345 PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE" ,1346 dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE" );1347 PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG",1348 dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG");1349 }1350 }1399 // for (uint32_t j=0; j<x; j++) 1400 // { 1401 // dest = _name; 1402 // #ifdef POSITION 1403 // _component->interface_map (src ,"insert_rob_"+toString(i)+"_"+toString(j), 1404 // dest,"insert_rob_"+toString(i)+"_"+toString(j)); 1405 // #endif 1406 1407 // PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL" , 1408 // dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL" ); 1409 // PORT_MAP(_component ,src ,"out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK" , 1410 // dest,"out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK" ); 1411 // PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE" , 1412 // dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE" ); 1413 // PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG", 1414 // dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG"); 1415 // PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE" , 1416 // dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE" ); 1417 // PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG", 1418 // dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG"); 1419 // } 1420 // } 1351 1421 1352 1422 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 1756 1826 1757 1827 log_printf(FUNC,Execute_loop,FUNCTION,"End"); 1758 };1828 }; 1759 1829 1760 1830 }; // end namespace execute_loop
Note: See TracChangeset
for help on using the changeset viewer.