Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit
- Timestamp:
- Mar 18, 2009, 11:36:26 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit
- Files:
-
- 40 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_allocation.cpp
r88 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 58 58 // ~~~~~[ Interface "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("rename_in", IN, EAST, "Registers before near dependency checking", _param->_nb_inst_insert);60 ALLOC1_INTERFACE_BEGIN("rename_in", IN, EAST, _("Registers before near dependency checking"), _param->_nb_inst_insert); 61 61 62 // 63 // 62 // ALLOC1_VALACK_IN ( in_RENAME_IN_VAL ,VAL); 63 // ALLOC1_VALACK_OUT(out_RENAME_IN_ACK ,ACK); 64 64 ALLOC1_SIGNAL_IN ( in_RENAME_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 65 ALLOC1_SIGNAL_IN ( in_RENAME_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); … … 81 81 ALLOC1_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register ); 82 82 ALLOC1_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register ); 83 84 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 83 85 } 84 86 85 87 // ~~~~~[ Interface "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 88 { 87 ALLOC1_INTERFACE ("rename_out", OUT, WEST, "Registers after near dependency checking", _param->_nb_inst_insert);89 ALLOC1_INTERFACE_BEGIN("rename_out", OUT, WEST, _("Registers after near dependency checking"), _param->_nb_inst_insert); 88 90 89 // 90 // 91 // ALLOC1_VALACK_OUT(out_RENAME_OUT_VAL ,VAL); 92 // ALLOC1_VALACK_IN ( in_RENAME_OUT_ACK ,ACK); 91 93 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 92 94 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); … … 108 110 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register ); 109 111 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register ); 112 113 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 110 114 } 111 115 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/include/Dependency_checking_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 // delete [] in_RENAME_IN_VAL ; 32 // delete [] out_RENAME_IN_ACK ; 33 if (_param->_have_port_front_end_id) 34 delete [] in_RENAME_IN_FRONT_END_ID ; 35 if (_param->_have_port_context_id) 36 delete [] in_RENAME_IN_CONTEXT_ID ; 37 delete [] in_RENAME_IN_READ_RA ; 38 delete [] in_RENAME_IN_NUM_REG_RA_LOG ; 39 delete [] in_RENAME_IN_NUM_REG_RA_PHY ; 40 delete [] in_RENAME_IN_READ_RB ; 41 delete [] in_RENAME_IN_NUM_REG_RB_LOG ; 42 delete [] in_RENAME_IN_NUM_REG_RB_PHY ; 43 delete [] in_RENAME_IN_READ_RC ; 44 delete [] in_RENAME_IN_NUM_REG_RC_LOG ; 45 delete [] in_RENAME_IN_NUM_REG_RC_PHY ; 46 delete [] in_RENAME_IN_WRITE_RD ; 47 delete [] in_RENAME_IN_NUM_REG_RD_LOG ; 48 delete [] in_RENAME_IN_NUM_REG_RD_PHY_OLD ; 49 delete [] in_RENAME_IN_NUM_REG_RD_PHY_NEW ; 50 delete [] in_RENAME_IN_WRITE_RE ; 51 delete [] in_RENAME_IN_NUM_REG_RE_LOG ; 52 delete [] in_RENAME_IN_NUM_REG_RE_PHY_OLD ; 53 delete [] in_RENAME_IN_NUM_REG_RE_PHY_NEW ; 32 // DELETE1_SIGNAL( in_RENAME_IN_VAL ,_param->_nb_inst_insert,1); 33 // DELETE1_SIGNAL(out_RENAME_IN_ACK ,_param->_nb_inst_insert,1); 34 DELETE1_SIGNAL( in_RENAME_IN_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id ); 35 DELETE1_SIGNAL( in_RENAME_IN_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 36 DELETE1_SIGNAL( in_RENAME_IN_READ_RA ,_param->_nb_inst_insert,1 ); 37 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RA_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 38 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 39 DELETE1_SIGNAL( in_RENAME_IN_READ_RB ,_param->_nb_inst_insert,1 ); 40 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RB_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 41 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 42 DELETE1_SIGNAL( in_RENAME_IN_READ_RC ,_param->_nb_inst_insert,1 ); 43 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RC_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 44 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register ); 45 DELETE1_SIGNAL( in_RENAME_IN_WRITE_RD ,_param->_nb_inst_insert,1 ); 46 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 47 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_PHY_OLD ,_param->_nb_inst_insert,_param->_size_general_register ); 48 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_PHY_NEW ,_param->_nb_inst_insert,_param->_size_general_register ); 49 DELETE1_SIGNAL( in_RENAME_IN_WRITE_RE ,_param->_nb_inst_insert,1 ); 50 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 51 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_PHY_OLD ,_param->_nb_inst_insert,_param->_size_special_register ); 52 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_PHY_NEW ,_param->_nb_inst_insert,_param->_size_special_register ); 54 53 55 // delete [] out_RENAME_OUT_VAL ; 56 // delete [] in_RENAME_OUT_ACK ; 57 if (_param->_have_port_front_end_id) 58 delete [] out_RENAME_OUT_FRONT_END_ID ; 59 if (_param->_have_port_context_id) 60 delete [] out_RENAME_OUT_CONTEXT_ID ; 61 delete [] out_RENAME_OUT_READ_RA ; 62 delete [] out_RENAME_OUT_NUM_REG_RA_LOG ; 63 delete [] out_RENAME_OUT_NUM_REG_RA_PHY ; 64 delete [] out_RENAME_OUT_READ_RB ; 65 delete [] out_RENAME_OUT_NUM_REG_RB_LOG ; 66 delete [] out_RENAME_OUT_NUM_REG_RB_PHY ; 67 delete [] out_RENAME_OUT_READ_RC ; 68 delete [] out_RENAME_OUT_NUM_REG_RC_LOG ; 69 delete [] out_RENAME_OUT_NUM_REG_RC_PHY ; 70 delete [] out_RENAME_OUT_WRITE_RD ; 71 delete [] out_RENAME_OUT_NUM_REG_RD_LOG ; 72 delete [] out_RENAME_OUT_NUM_REG_RD_PHY_OLD; 73 delete [] out_RENAME_OUT_NUM_REG_RD_PHY_NEW; 74 delete [] out_RENAME_OUT_WRITE_RE ; 75 delete [] out_RENAME_OUT_NUM_REG_RE_LOG ; 76 delete [] out_RENAME_OUT_NUM_REG_RE_PHY_OLD; 77 delete [] out_RENAME_OUT_NUM_REG_RE_PHY_NEW; 54 // DELETE1_SIGNAL(out_RENAME_OUT_VAL ,_param->_nb_inst_insert,1); 55 // DELETE1_SIGNAL( in_RENAME_OUT_ACK ,_param->_nb_inst_insert,1); 56 DELETE1_SIGNAL(out_RENAME_OUT_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id ); 57 DELETE1_SIGNAL(out_RENAME_OUT_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 58 DELETE1_SIGNAL(out_RENAME_OUT_READ_RA ,_param->_nb_inst_insert,1 ); 59 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 60 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 61 DELETE1_SIGNAL(out_RENAME_OUT_READ_RB ,_param->_nb_inst_insert,1 ); 62 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 63 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 64 DELETE1_SIGNAL(out_RENAME_OUT_READ_RC ,_param->_nb_inst_insert,1 ); 65 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 66 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register ); 67 DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RD ,_param->_nb_inst_insert,1 ); 68 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 69 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register ); 70 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register ); 71 DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RE ,_param->_nb_inst_insert,1 ); 72 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 73 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register ); 74 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register ); 78 75 } 79 76 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_allocation.cpp
r109 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 58 58 // ~~~~~[ interface : "pop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("pop", IN, NORTH, "New destination register", _param->_nb_pop);60 ALLOC1_INTERFACE_BEGIN("pop", IN, NORTH, _("New destination register"), _param->_nb_pop); 61 61 62 62 ALLOC1_VALACK_IN ( in_POP_VAL ,VAL); … … 66 66 ALLOC1_SIGNAL_IN ( in_POP_SPR_VAL ,"spr_val" ,Tcontrol_t ,1 ); 67 67 ALLOC1_SIGNAL_OUT(out_POP_SPR_NUM_REG,"spr_num_reg",Tspecial_address_t,_param->_size_special_register); 68 69 ALLOC1_INTERFACE_END(_param->_nb_pop); 68 70 } 69 71 70 72 // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 71 73 { 72 ALLOC1_INTERFACE ("push_gpr", IN, NORTH, "General register free", _param->_nb_push);74 ALLOC1_INTERFACE_BEGIN("push_gpr", IN, NORTH, _("General register free"), _param->_nb_push); 73 75 74 76 ALLOC1_VALACK_IN ( in_PUSH_GPR_VAL ,VAL); 75 77 ALLOC1_VALACK_OUT(out_PUSH_GPR_ACK ,ACK); 76 78 ALLOC1_SIGNAL_IN ( in_PUSH_GPR_NUM_REG,"num_reg",Tgeneral_address_t,_param->_size_general_register); 79 80 ALLOC1_INTERFACE_END(_param->_nb_push); 77 81 } 78 82 79 83 // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 80 84 { 81 ALLOC1_INTERFACE ("push_spr", IN, NORTH, "General register free", _param->_nb_push);85 ALLOC1_INTERFACE_BEGIN("push_spr", IN, NORTH, _("General register free"), _param->_nb_push); 82 86 83 87 ALLOC1_VALACK_IN ( in_PUSH_SPR_VAL ,VAL); 84 88 ALLOC1_VALACK_OUT(out_PUSH_SPR_ACK ,ACK); 85 89 ALLOC1_SIGNAL_IN ( in_PUSH_SPR_NUM_REG,"num_reg",Tspecial_address_t,_param->_size_special_register); 90 91 ALLOC1_INTERFACE_END(_param->_nb_push); 86 92 } 87 93 88 94 if (usage_is_set(_usage,USE_SYSTEMC)) 89 95 { 90 _gpr_list = new std::list<uint32_t> [_param->_nb_bank];91 _spr_list = new std::list<uint32_t> [_param->_nb_bank];96 ALLOC1(_gpr_list,std::list<uint32_t>,_param->_nb_bank); 97 ALLOC1(_spr_list,std::list<uint32_t>,_param->_nb_bank); 92 98 93 internal_POP_ACK = new Tcontrol_t [_param->_nb_pop];94 internal_POP_GPR_BANK = new uint32_t [_param->_nb_pop];95 internal_POP_SPR_BANK = new uint32_t [_param->_nb_pop];99 ALLOC1(internal_POP_ACK ,Tcontrol_t,_param->_nb_pop); 100 ALLOC1(internal_POP_GPR_BANK ,uint32_t ,_param->_nb_pop); 101 ALLOC1(internal_POP_SPR_BANK ,uint32_t ,_param->_nb_pop); 96 102 97 internal_PUSH_GPR_ACK = new Tcontrol_t [_param->_nb_push];98 internal_PUSH_SPR_ACK = new Tcontrol_t [_param->_nb_push];99 internal_PUSH_GPR_BANK = new uint32_t [_param->_nb_push];100 internal_PUSH_SPR_BANK = new uint32_t [_param->_nb_push];103 ALLOC1(internal_PUSH_GPR_ACK ,Tcontrol_t,_param->_nb_push); 104 ALLOC1(internal_PUSH_SPR_ACK ,Tcontrol_t,_param->_nb_push); 105 ALLOC1(internal_PUSH_GPR_BANK,uint32_t ,_param->_nb_push); 106 ALLOC1(internal_PUSH_SPR_BANK,uint32_t ,_param->_nb_push); 101 107 } 108 102 109 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 103 110 _priority_gpr = new generic::priority::Priority (_name+"_priority_gpr", -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_deallocation.cpp
r109 r112 7 7 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 delete [] in_POP_VAL;32 delete [] out_POP_ACK;33 delete [] in_POP_GPR_VAL;34 delete [] out_POP_GPR_NUM_REG;35 delete [] in_POP_SPR_VAL;36 delete [] out_POP_SPR_NUM_REG;32 DELETE1_SIGNAL( in_POP_VAL ,_param->_nb_pop,1); 33 DELETE1_SIGNAL(out_POP_ACK ,_param->_nb_pop,1); 34 DELETE1_SIGNAL( in_POP_GPR_VAL ,_param->_nb_pop,1 ); 35 DELETE1_SIGNAL(out_POP_GPR_NUM_REG ,_param->_nb_pop,_param->_size_general_register); 36 DELETE1_SIGNAL( in_POP_SPR_VAL ,_param->_nb_pop,1 ); 37 DELETE1_SIGNAL(out_POP_SPR_NUM_REG ,_param->_nb_pop,_param->_size_special_register); 37 38 38 delete [] in_PUSH_GPR_VAL;39 delete [] out_PUSH_GPR_ACK;40 delete [] in_PUSH_GPR_NUM_REG;39 DELETE1_SIGNAL( in_PUSH_GPR_VAL ,_param->_nb_push,1); 40 DELETE1_SIGNAL(out_PUSH_GPR_ACK ,_param->_nb_push,1); 41 DELETE1_SIGNAL( in_PUSH_GPR_NUM_REG,_param->_nb_push,_param->_size_general_register); 41 42 42 delete [] in_PUSH_SPR_VAL;43 delete [] out_PUSH_SPR_ACK;44 delete [] in_PUSH_SPR_NUM_REG;43 DELETE1_SIGNAL( in_PUSH_SPR_VAL ,_param->_nb_push,1); 44 DELETE1_SIGNAL(out_PUSH_SPR_ACK ,_param->_nb_push,1); 45 DELETE1_SIGNAL( in_PUSH_SPR_NUM_REG,_param->_nb_push,_param->_size_special_register); 45 46 46 delete [] _gpr_list;47 delete [] _spr_list;48 49 delete [] internal_POP_ACK;50 delete [] internal_POP_GPR_BANK;51 delete [] internal_POP_SPR_BANK;52 53 delete [] internal_PUSH_GPR_ACK;54 delete [] internal_PUSH_SPR_ACK;55 delete [] internal_PUSH_GPR_BANK;56 delete [] internal_PUSH_SPR_BANK;47 DELETE1(_gpr_list ,_param->_nb_bank); 48 DELETE1(_spr_list ,_param->_nb_bank); 49 50 DELETE1(internal_POP_ACK ,_param->_nb_pop); 51 DELETE1(internal_POP_GPR_BANK ,_param->_nb_pop); 52 DELETE1(internal_POP_SPR_BANK ,_param->_nb_pop); 53 54 DELETE1(internal_PUSH_GPR_ACK ,_param->_nb_push); 55 DELETE1(internal_PUSH_SPR_ACK ,_param->_nb_push); 56 DELETE1(internal_PUSH_GPR_BANK,_param->_nb_push); 57 DELETE1(internal_PUSH_SPR_BANK,_param->_nb_push); 57 58 } 58 59 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp
r110 r112 51 51 52 52 #ifdef STATISTICS 53 (*_stat_nb_inst_pop) ++; 53 if (usage_is_set(_usage,USE_STATISTICS)) 54 (*_stat_nb_inst_pop) ++; 54 55 #endif 55 56 … … 57 58 { 58 59 #ifdef STATISTICS 59 (*_stat_nb_inst_pop_gpr) ++; 60 if (usage_is_set(_usage,USE_STATISTICS)) 61 (*_stat_nb_inst_pop_gpr) ++; 60 62 #endif 61 63 _gpr_list [internal_POP_GPR_BANK[i]].pop_front(); … … 65 67 { 66 68 #ifdef STATISTICS 67 (*_stat_nb_inst_pop_spr) ++; 69 if (usage_is_set(_usage,USE_STATISTICS)) 70 (*_stat_nb_inst_pop_spr) ++; 68 71 #endif 69 72 _spr_list [internal_POP_SPR_BANK[i]].pop_front(); … … 82 85 83 86 #ifdef STATISTICS 84 (*_stat_nb_inst_push_gpr) ++; 87 if (usage_is_set(_usage,USE_STATISTICS)) 88 (*_stat_nb_inst_push_gpr) ++; 85 89 #endif 86 90 … … 98 102 99 103 #ifdef STATISTICS 100 (*_stat_nb_inst_push_spr) ++; 104 if (usage_is_set(_usage,USE_STATISTICS)) 105 (*_stat_nb_inst_push_spr) ++; 101 106 #endif 102 107 … … 105 110 106 111 #ifdef STATISTICS 107 for (uint32_t i=0; i<_param->_nb_bank; ++i) 108 { 112 if (usage_is_set(_usage,USE_STATISTICS)) 113 for (uint32_t i=0; i<_param->_nb_bank; ++i) 114 { 115 109 116 (*(_stat_bank_gpr_nb_elt [i])) += _gpr_list[i].size(); 110 117 (*(_stat_bank_spr_nb_elt [i])) += _spr_list[i].size(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/test.cpp
r106 r112 89 89 ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,"out_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t ,_param->_nb_inst_retire); 90 90 ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,"out_RETIRE_RESTORE_RE_PHY_OLD",Tcontrol_t ,_param->_nb_inst_retire); 91 ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE ,"out_RETIRE_RESTORE ",Tcontrol_t ,_param->_nb_inst_retire); 91 92 92 93 ALLOC2_SC_SIGNAL( in_RETIRE_EVENT_VAL ," in_RETIRE_EVENT_VAL ",Tcontrol_t ,_param->_nb_front_end,_param->_nb_context[it1]); … … 147 148 INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire); 148 149 INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire); 150 INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE ,_param->_nb_inst_retire); 149 151 150 152 INSTANCE2_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1]); … … 540 542 delete [] out_RETIRE_RESTORE_RD_PHY_OLD; 541 543 delete [] out_RETIRE_RESTORE_RE_PHY_OLD; 544 delete [] out_RETIRE_RESTORE ; 542 545 543 546 DELETE2_SC_SIGNAL( in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h
r104 r112 104 104 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire] 105 105 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire] 106 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_RESTORE ;//[nb_inst_retire] 106 107 107 108 // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 126 127 private : bool *** internal_rat_gpr_update_table; //[nb_front_end][nb_context][nb_general_register_logic] 127 128 private : bool *** internal_rat_spr_update_table; //[nb_front_end][nb_context][nb_special_register_logic] 129 public : Tcontrol_t * internal_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire] 130 public : Tcontrol_t * internal_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire] 131 128 132 #endif 129 133 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_allocation.cpp
r104 r112 59 59 // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC1_INTERFACE ("rename",IN,EAST,"Input to rename source logical register", _param->_nb_inst_insert);61 ALLOC1_INTERFACE_BEGIN("rename",IN,EAST,_("Input to rename source logical register"), _param->_nb_inst_insert); 62 62 63 63 ALLOC1_VALACK_IN ( in_RENAME_VAL , VAL); … … 75 75 ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register); 76 76 ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register); 77 78 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 77 79 } 78 80 79 81 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 80 82 { 81 ALLOC1_INTERFACE ("insert",IN,NORTH,"Input to rename destination logical register", _param->_nb_inst_insert);83 ALLOC1_INTERFACE_BEGIN("insert",IN,NORTH,_("Input to rename destination logical register"), _param->_nb_inst_insert); 82 84 83 85 ALLOC1_VALACK_IN ( in_INSERT_VAL ,VAL); … … 91 93 ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RD_PHY,"num_reg_rd_phy",Tgeneral_address_t,_param->_size_general_register); 92 94 ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY,"num_reg_re_phy",Tspecial_address_t,_param->_size_special_register); 95 96 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 93 97 } 94 98 95 99 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 100 { 97 ALLOC1_INTERFACE ("retire",IN,NORTH,"Input to update on event", _param->_nb_inst_retire);101 ALLOC1_INTERFACE_BEGIN("retire",IN,NORTH,_("Input to update on event"), _param->_nb_inst_retire); 98 102 99 103 ALLOC1_VALACK_IN ( in_RETIRE_VAL ,VAL); … … 109 113 ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t ,1); 110 114 ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t ,1); 115 ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE ,"restore" ,Tcontrol_t ,1); 116 117 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 111 118 } 112 119 113 120 // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 114 121 { 115 ALLOC2_INTERFACE ("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);122 ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]); 116 123 117 124 _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); 118 125 _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK ,ACK,_param->_nb_front_end, _param->_nb_context[it1]); 119 126 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]); 127 128 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 120 129 } 121 130 … … 127 136 ALLOC2(internal_RETIRE_EVENT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]); 128 137 129 rat_gpr = new Tgeneral_address_t ** [_param->_nb_front_end];130 rat_spr = new Tspecial_address_t ** [_param->_nb_front_end];131 rat_gpr_update_table = new bool ** [_param->_nb_front_end];132 rat_spr_update_table = new bool ** [_param->_nb_front_end];133 internal_rat_gpr_update_table = new bool ** [_param->_nb_front_end];134 internal_rat_spr_update_table = new bool ** [_param->_nb_front_end];138 ALLOC3(rat_gpr ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 139 ALLOC3(rat_spr ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 140 ALLOC3(rat_gpr_update_table ,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 141 ALLOC3(rat_spr_update_table ,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 142 ALLOC3(internal_rat_gpr_update_table,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 143 ALLOC3(internal_rat_spr_update_table,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 135 144 136 for (uint32_t i=0; i<_param->_nb_front_end; i++) 137 { 138 rat_gpr [i] = new Tgeneral_address_t * [_param->_nb_context[i]]; 139 rat_spr [i] = new Tspecial_address_t * [_param->_nb_context[i]]; 140 rat_gpr_update_table [i] = new bool * [_param->_nb_context[i]]; 141 rat_spr_update_table [i] = new bool * [_param->_nb_context[i]]; 142 internal_rat_gpr_update_table [i] = new bool * [_param->_nb_context[i]]; 143 internal_rat_spr_update_table [i] = new bool * [_param->_nb_context[i]]; 144 145 for (uint32_t j=0; j<_param->_nb_context[i]; j++) 146 { 147 rat_gpr [i][j] = new Tgeneral_address_t [_param->_nb_general_register_logic]; 148 rat_spr [i][j] = new Tspecial_address_t [_param->_nb_special_register_logic]; 149 rat_gpr_update_table [i][j] = new bool [_param->_nb_general_register_logic]; 150 rat_spr_update_table [i][j] = new bool [_param->_nb_special_register_logic]; 151 internal_rat_gpr_update_table [i][j] = new bool [_param->_nb_general_register_logic]; 152 internal_rat_spr_update_table [i][j] = new bool [_param->_nb_special_register_logic]; 153 } 154 } 145 ALLOC1(internal_RETIRE_RESTORE_RD_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire); 146 ALLOC1(internal_RETIRE_RESTORE_RE_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire); 155 147 } 156 148 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_deallocation.cpp
r104 r112 30 30 delete in_NRESET; 31 31 32 delete [] in_RENAME_VAL ; 33 delete [] out_RENAME_ACK ; 34 if (_param->_have_port_front_end_id) 35 delete [] in_RENAME_FRONT_END_ID ; 36 if (_param->_have_port_context_id) 37 delete [] in_RENAME_CONTEXT_ID ; 38 delete [] in_RENAME_NUM_REG_RA_LOG ; 39 delete [] in_RENAME_NUM_REG_RB_LOG ; 40 delete [] in_RENAME_NUM_REG_RC_LOG ; 41 delete [] in_RENAME_NUM_REG_RD_LOG ; 42 delete [] in_RENAME_NUM_REG_RE_LOG ; 43 delete [] out_RENAME_NUM_REG_RA_PHY ; 44 delete [] out_RENAME_NUM_REG_RB_PHY ; 45 delete [] out_RENAME_NUM_REG_RC_PHY ; 46 delete [] out_RENAME_NUM_REG_RD_PHY_OLD; 47 delete [] out_RENAME_NUM_REG_RE_PHY_OLD; 32 DELETE1_SIGNAL( in_RENAME_VAL ,_param->_nb_inst_insert,1); 33 DELETE1_SIGNAL(out_RENAME_ACK ,_param->_nb_inst_insert,1); 34 DELETE1_SIGNAL( in_RENAME_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id); 35 DELETE1_SIGNAL( in_RENAME_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 36 DELETE1_SIGNAL( in_RENAME_NUM_REG_RA_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 37 DELETE1_SIGNAL( in_RENAME_NUM_REG_RB_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 38 DELETE1_SIGNAL( in_RENAME_NUM_REG_RC_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 39 DELETE1_SIGNAL( in_RENAME_NUM_REG_RD_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 40 DELETE1_SIGNAL( in_RENAME_NUM_REG_RE_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 41 DELETE1_SIGNAL(out_RENAME_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 42 DELETE1_SIGNAL(out_RENAME_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 43 DELETE1_SIGNAL(out_RENAME_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register); 44 DELETE1_SIGNAL(out_RENAME_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register); 45 DELETE1_SIGNAL(out_RENAME_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register); 48 46 49 delete [] in_INSERT_VAL ; 50 delete [] out_INSERT_ACK ; 51 // if (_param->_have_port_front_end_id) 52 // delete [] in_INSERT_FRONT_END_ID ; 53 // if (_param->_have_port_context_id) 54 // delete [] in_INSERT_CONTEXT_ID ; 55 delete [] in_INSERT_WRITE_RD ; 56 delete [] in_INSERT_WRITE_RE ; 57 delete [] in_INSERT_NUM_REG_RD_LOG ; 58 delete [] in_INSERT_NUM_REG_RE_LOG ; 59 delete [] in_INSERT_NUM_REG_RD_PHY ; 60 delete [] in_INSERT_NUM_REG_RE_PHY ; 47 DELETE1_SIGNAL( in_INSERT_VAL ,_param->_nb_inst_insert,1); 48 DELETE1_SIGNAL(out_INSERT_ACK ,_param->_nb_inst_insert,1); 49 // DELETE1_SIGNAL( in_INSERT_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id); 50 // DELETE1_SIGNAL( in_INSERT_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 51 DELETE1_SIGNAL( in_INSERT_WRITE_RD ,_param->_nb_inst_insert,1); 52 DELETE1_SIGNAL( in_INSERT_WRITE_RE ,_param->_nb_inst_insert,1); 53 DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic); 54 DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic); 55 DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY,_param->_nb_inst_insert,_param->_size_general_register); 56 DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY,_param->_nb_inst_insert,_param->_size_special_register); 61 57 62 delete [] in_RETIRE_VAL ; 63 delete [] out_RETIRE_ACK ; 64 if (_param->_have_port_front_end_id) 65 delete [] in_RETIRE_FRONT_END_ID ; 66 if (_param->_have_port_context_id) 67 delete [] in_RETIRE_CONTEXT_ID ; 68 delete [] in_RETIRE_WRITE_RD ; 69 delete [] in_RETIRE_WRITE_RE ; 70 delete [] in_RETIRE_NUM_REG_RD_LOG ; 71 delete [] in_RETIRE_NUM_REG_RE_LOG ; 72 delete [] in_RETIRE_NUM_REG_RD_PHY_OLD; 73 delete [] in_RETIRE_NUM_REG_RE_PHY_OLD; 74 delete [] out_RETIRE_RESTORE_RD_PHY_OLD; 75 delete [] out_RETIRE_RESTORE_RE_PHY_OLD; 58 DELETE1_SIGNAL( in_RETIRE_VAL ,_param->_nb_inst_retire,1); 59 DELETE1_SIGNAL(out_RETIRE_ACK ,_param->_nb_inst_retire,1); 60 DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id); 61 DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id ); 62 DELETE1_SIGNAL( in_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1); 63 DELETE1_SIGNAL( in_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1); 64 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG ,_param->_nb_inst_retire,_param->_size_general_register_logic); 65 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG ,_param->_nb_inst_retire,_param->_size_special_register_logic); 66 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register); 67 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register); 68 DELETE1_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire,1); 69 DELETE1_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire,1); 70 DELETE1_SIGNAL(out_RETIRE_RESTORE ,_param->_nb_inst_retire,1); 71 72 DELETE2_SIGNAL( in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1],1); 73 DELETE2_SIGNAL(out_RETIRE_EVENT_ACK ,_param->_nb_front_end, _param->_nb_context[it1],1); 74 DELETE2_SIGNAL( in_RETIRE_EVENT_STATE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state); 76 75 77 76 DELETE1(internal_RENAME_ACK ,_param->_nb_inst_insert); … … 80 79 DELETE2(internal_RETIRE_EVENT_ACK ,_param->_nb_front_end,_param->_nb_context[it1]); 81 80 82 DELETE2_SIGNAL( in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1],1); 83 DELETE2_SIGNAL(out_RETIRE_EVENT_ACK ,_param->_nb_front_end, _param->_nb_context[it1],1); 84 DELETE2_SIGNAL( in_RETIRE_EVENT_STATE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state); 81 DELETE3(rat_gpr ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 82 DELETE3(rat_spr ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 83 DELETE3(rat_gpr_update_table ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 84 DELETE3(rat_spr_update_table ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 85 DELETE3(internal_rat_gpr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 86 DELETE3(internal_rat_spr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 85 87 86 delete [] rat_gpr ; 87 delete [] rat_spr ; 88 delete [] rat_gpr_update_table; 89 delete [] rat_spr_update_table; 90 delete [] internal_rat_gpr_update_table; 91 delete [] internal_rat_spr_update_table; 88 DELETE1(internal_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire); 89 DELETE1(internal_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire); 92 90 } 93 91 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_retire.cpp
r106 r112 31 31 { 32 32 // An event occure 33 bool no_event = not (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) and (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT)); 33 // bool event = (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) != EVENT_STATE_NO_EVENT); 34 bool reset_update_table = (PORT_READ(in_RETIRE_EVENT_VAL [i][j]) and // always ack 35 (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT)); 36 37 // not event -> update_table == 1 -> always update 38 // event -> update_table and not reset 34 39 for (uint32_t k=0; k<_param->_nb_general_register_logic; ++k) 35 internal_rat_gpr_update_table [i][j][k] = rat_gpr_update_table [i][j][k] and no_event; 40 internal_rat_gpr_update_table [i][j][k] = // not event or 41 (rat_gpr_update_table [i][j][k] and not reset_update_table); 36 42 for (uint32_t k=0; k<_param->_nb_special_register_logic; ++k) 37 internal_rat_spr_update_table [i][j][k] = rat_spr_update_table [i][j][k] and no_event; 43 internal_rat_spr_update_table [i][j][k] = // not event or 44 (rat_spr_update_table [i][j][k] and not reset_update_table); 38 45 } 39 46 … … 50 57 Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0; 51 58 Tcontext_t context_id = (_param->_have_port_context_id )?PORT_READ(in_RETIRE_CONTEXT_ID [i]):0; 59 Tcontrol_t restore = (PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT); 52 60 53 61 // Test if event -> need restore ? 54 if ( PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT)62 if (restore) 55 63 { 56 64 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * Have event"); … … 82 90 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * restore_re_phy_old : %d",retire_restore_re_phy_old); 83 91 } 92 93 internal_RETIRE_RESTORE_RD_PHY_OLD[i] = retire_restore_rd_phy_old; 94 internal_RETIRE_RESTORE_RE_PHY_OLD[i] = retire_restore_re_phy_old; 84 95 85 PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], retire_restore_rd_phy_old); 86 PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], retire_restore_re_phy_old); 96 PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], internal_RETIRE_RESTORE_RD_PHY_OLD[i]); 97 PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], internal_RETIRE_RESTORE_RE_PHY_OLD[i]); 98 PORT_WRITE(out_RETIRE_RESTORE [i], restore); 87 99 } 88 100 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_transition.cpp
r106 r112 125 125 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * event_state : %d",event_state); 126 126 127 if (event_state != EVENT_STATE_NO_EVENT)128 {127 // if (event_state != EVENT_STATE_NO_EVENT) 128 // { 129 129 // Test if write and have not a previous update 130 130 if (PORT_READ(in_RETIRE_WRITE_RD [i]) == 1) 131 131 { 132 132 Tgeneral_address_t rd_log = PORT_READ(in_RETIRE_NUM_REG_RD_LOG [i]); 133 133 134 134 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * retire RD"); 135 135 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * rd_log : %d",rd_log); 136 136 137 // if (RETIRE_RESTORE_RD_PHY_OLD [i]) 138 if (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0) 137 // #ifdef DEBUG_TEST 138 // if (not (internal_RETIRE_RESTORE_RD_PHY_OLD [i] and ( (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0)) and (event_state != EVENT_STATE_NO_EVENT))) 139 // throw ERRORMORPHEO(FUNCTION,toString(_("restore_rd_phy_old [%d] = %d, but rat_gpr_update_table[%d][%d][%d] = %d\n"), 140 // i,internal_RETIRE_RESTORE_RD_PHY_OLD [i], 141 // front_end_id,context_id,rd_log,rat_gpr_update_table [front_end_id][context_id][rd_log])); 142 // #endif 143 144 if (internal_RETIRE_RESTORE_RD_PHY_OLD [i]) 145 // if (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0) 139 146 { 140 147 rat_gpr [front_end_id][context_id][rd_log] = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]); … … 150 157 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * re_log : %d",re_log); 151 158 152 // if (RETIRE_RESTORE_RE_PHY_OLD [i]) 153 if (rat_spr_update_table [front_end_id][context_id][re_log] == 0) 159 // #ifdef DEBUG_TEST 160 // if (not (internal_RETIRE_RESTORE_RE_PHY_OLD [i] and ((rat_spr_update_table [front_end_id][context_id][re_log] == 0) and (event_state != EVENT_STATE_NO_EVENT)))) 161 // throw ERRORMORPHEO(FUNCTION,toString(_("restore_re_phy_old [%d] = %d, but rat_spr_update_table[%d][%d][%d] = %d\n"), 162 // i,internal_RETIRE_RESTORE_RE_PHY_OLD [i], 163 // front_end_id,context_id,re_log,rat_spr_update_table [front_end_id][context_id][re_log])); 164 // #endif 165 166 if (internal_RETIRE_RESTORE_RE_PHY_OLD [i]) 167 // if (rat_spr_update_table [front_end_id][context_id][re_log] == 0) 154 168 { 155 169 rat_spr [front_end_id][context_id][re_log] = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]); … … 157 171 } 158 172 } 159 }173 // } 160 174 } 161 175 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp
r110 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 59 59 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC1_INTERFACE ("insert",OUT, EAST, "insert's interface", _param->_nb_inst_insert);61 ALLOC1_INTERFACE_BEGIN("insert",OUT, EAST, _("insert's interface"), _param->_nb_inst_insert); 62 62 63 63 ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_VAL ,"rename_val" ,Tcontrol_t,1); … … 122 122 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD ,"NUM_REG_RE_PHY_OLD" ,Tspecial_address_t,_param->_size_special_register ); 123 123 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW ,"NUM_REG_RE_PHY_NEW" ,Tspecial_address_t,_param->_size_special_register ); 124 125 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 124 126 } 125 127 126 128 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 127 129 { 128 ALLOC1_INTERFACE ("retire", IN, WEST, "retire's interface", _param->_nb_inst_retire);130 ALLOC1_INTERFACE_BEGIN("retire", IN, WEST, _("retire's interface"), _param->_nb_inst_retire); 129 131 130 132 ALLOC1_SIGNAL_IN ( in_RETIRE_VAL ,"val" ,Tcontrol_t,1); … … 134 136 ALLOC1_SIGNAL_OUT(out_RETIRE_STAT_LIST_VAL,"stat_list_val",Tcontrol_t,1); 135 137 ALLOC1_SIGNAL_IN ( in_RETIRE_STAT_LIST_ACK,"stat_list_ack",Tcontrol_t,1); 138 139 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 136 140 } 137 141 138 142 #ifdef STATISTICS 139 ALLOC1(internal_INSERT_RENAME_ACK, Tcontrol_t,_param->_nb_inst_insert); 143 if (usage_is_set(_usage,USE_SYSTEMC)) 144 ALLOC1(internal_INSERT_RENAME_ACK, Tcontrol_t,_param->_nb_inst_insert); 140 145 #endif 141 146 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-min.cfg
r88 r112 8 8 1 1 *4 #nb_reg_free 9 9 1 1 *2 #nb_bank 10 1 1 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1.cfg
r88 r112 8 8 1 4 *4 #nb_reg_free 9 9 8 8 *2 #nb_bank 10 1 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1a.cfg
r88 r112 8 8 1 4 *4 #nb_reg_free 9 9 8 8 *2 #nb_bank 10 1 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4a.cfg
r88 r112 11 11 4 4 *4 #nb_reg_free 12 12 8 8 *2 #nb_bank 13 2 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4b.cfg
r88 r112 8 8 4 4 *4 #nb_reg_free 9 9 8 8 *2 #nb_bank 10 2 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4c.cfg
r88 r112 9 9 4 4 *4 #nb_reg_free 10 10 8 8 *2 #nb_bank 11 2 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4d.cfg
r88 r112 9 9 4 4 *4 #nb_reg_free 10 10 8 8 *2 #nb_bank 11 2 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/main.cpp
r88 r112 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/include/test.h" 9 9 10 #define NB_PARAMS 810 #define NB_PARAMS 7 11 11 12 12 void usage (int argc, char * argv[]) … … 22 22 err (_(" * nb_reg_free (uint32_t)\n")); 23 23 err (_(" * nb_bank (uint32_t)\n")); 24 err (_(" * size_read_counter (uint32_t)\n"));24 // err (_(" * size_read_counter (uint32_t)\n")); 25 25 26 26 exit (1); … … 51 51 uint32_t _nb_reg_free = atoi(argv[x++]); 52 52 uint32_t _nb_bank = atoi(argv[x++]); 53 uint32_t _size_read_counter = atoi(argv[x++]);53 // uint32_t _size_read_counter = atoi(argv[x++]); 54 54 55 55 int _return = EXIT_SUCCESS; … … 65 65 _nb_reg_free , 66 66 _nb_bank , 67 _size_read_counter ,67 // _size_read_counter , 68 68 true //is_toplevel 69 69 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_mono_thread.cfg
r81 r112 8 8 1 4 *2 #_nb_reg_free 9 9 4 4 *2 #_nb_bank 10 2 2 +1 #_size_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_multi_thread.cfg
r81 r112 9 9 4 4 *2 #_nb_reg_free 10 10 4 8 *2 #_nb_bank 11 2 4 *2 #_size_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/main.cpp
r88 r112 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/include/test.h" 9 9 10 #define NB_PARAMS 810 #define NB_PARAMS 7 11 11 12 12 void usage (int argc, char * argv[]) … … 22 22 err (_(" * nb_reg_free (uint32_t)\n")); 23 23 err (_(" * nb_bank (uint32_t)\n")); 24 err (_(" * size_counter (uint32_t)\n"));25 24 26 25 exit (1); … … 55 54 uint32_t _nb_reg_free = atoi(argv[x++]); 56 55 uint32_t _nb_bank = atoi(argv[x++]); 57 uint32_t _size_counter = atoi(argv[x++]);58 56 59 57 try … … 68 66 _nb_reg_free , 69 67 _nb_bank , 70 _size_counter ,71 68 true //is_toplevel 72 69 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp
r88 r112 75 75 ALLOC1_SC_SIGNAL( in_RETIRE_VAL ," in_RETIRE_VAL ",Tcontrol_t ,_param->_nb_inst_retire); 76 76 ALLOC1_SC_SIGNAL(out_RETIRE_ACK ,"out_RETIRE_ACK ",Tcontrol_t ,_param->_nb_inst_retire); 77 ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE ," in_RETIRE_RESTORE ",Tcontrol_t ,_param->_nb_inst_retire); 77 78 ALLOC1_SC_SIGNAL( in_RETIRE_READ_RA ," in_RETIRE_READ_RA ",Tcontrol_t ,_param->_nb_inst_retire); 78 79 ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RA_PHY ," in_RETIRE_NUM_REG_RA_PHY ",Tgeneral_address_t,_param->_nb_inst_retire); … … 121 122 INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_VAL ,_param->_nb_inst_retire); 122 123 INSTANCE1_SC_SIGNAL(_Stat_List_unit,out_RETIRE_ACK ,_param->_nb_inst_retire); 124 INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE ,_param->_nb_inst_retire); 123 125 INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_READ_RA ,_param->_nb_inst_retire); 124 126 INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RA_PHY ,_param->_nb_inst_retire); … … 234 236 TEST(bool, true,((gpr_status[reg]._is_free == 0) and 235 237 (gpr_status[reg]._is_link == 0) and 236 (gpr_status[reg]._is_valid == 1) and 237 (gpr_status[reg]._counter == 0))); 238 (gpr_status[reg]._is_valid == 1)// and 239 // (gpr_status[reg]._counter == 0) 240 )); 238 241 239 242 gpr_status[reg]._is_free = 1; … … 254 257 TEST(bool, true,((spr_status[reg]._is_free == 0) and 255 258 (spr_status[reg]._is_link == 0) and 256 (spr_status[reg]._is_valid == 1) and 257 (spr_status[reg]._counter == 0))); 259 (spr_status[reg]._is_valid == 1)// and 260 // (spr_status[reg]._counter == 0) 261 )); 258 262 259 263 spr_status[reg]._is_free = 1; … … 301 305 Tspecial_address_t re = (it_spr != free_list_spr.end())?*it_spr:0; 302 306 303 Tcontrol_t read_ra = (gpr_status_insert[ra]._is_link) and (gpr_status_insert[ra]._counter < _param->_max_reader);304 Tcontrol_t read_rb = (gpr_status_insert[rb]._is_link) and (gpr_status_insert[rb]._counter < _param->_max_reader);305 Tcontrol_t read_rc = (spr_status_insert[rc]._is_link) and (spr_status_insert[rc]._counter < _param->_max_reader);307 Tcontrol_t read_ra = (gpr_status_insert[ra]._is_link); // and (gpr_status_insert[ra]._counter < _param->_max_reader); 308 Tcontrol_t read_rb = (gpr_status_insert[rb]._is_link); // and (gpr_status_insert[rb]._counter < _param->_max_reader); 309 Tcontrol_t read_rc = (spr_status_insert[rc]._is_link); // and (spr_status_insert[rc]._counter < _param->_max_reader); 306 310 Tcontrol_t write_rd = (it_gpr != free_list_gpr.end()); 307 311 Tcontrol_t write_re = (it_spr != free_list_spr.end()); … … 341 345 Tspecial_address_t re_new = (rand()%(_param->_nb_special_register )) ; 342 346 343 Tcontrol_t read_ra = (gpr_status_retire[ra]._is_link) and (gpr_status_retire[ra]._counter > 0);344 Tcontrol_t read_rb = (gpr_status_retire[rb]._is_link) and (gpr_status_retire[rb]._counter > 0);345 Tcontrol_t read_rc = (spr_status_retire[rc]._is_link) and (spr_status_retire[rc]._counter > 0);347 Tcontrol_t read_ra = (gpr_status_retire[ra]._is_link); // and (gpr_status_retire[ra]._counter > 0); 348 Tcontrol_t read_rb = (gpr_status_retire[rb]._is_link); // and (gpr_status_retire[rb]._counter > 0); 349 Tcontrol_t read_rc = (spr_status_retire[rc]._is_link); // and (spr_status_retire[rc]._counter > 0); 346 350 Tcontrol_t write_rd = ( (gpr_status_retire[rd_old]._is_link ) and 347 351 (gpr_status_retire[rd_old]._is_valid) and … … 355 359 in_RETIRE_VAL [i]->write((rand()%100) < percent_transaction_retire); 356 360 in_RETIRE_READ_RA [i]->write(read_ra ); 357 in_RETIRE_NUM_REG_RA_PHY [i]->write(ra); 361 in_RETIRE_RESTORE [i]->write(0); 362 in_RETIRE_NUM_REG_RA_PHY [i]->write(ra); 358 363 in_RETIRE_READ_RB [i]->write(read_rb ); 359 364 in_RETIRE_NUM_REG_RB_PHY [i]->write(rb); … … 502 507 if (in_RETIRE_VAL [i]->read() and out_RETIRE_ACK [i]->read()) 503 508 { 509 Tcontrol_t restore = in_RETIRE_RESTORE [i]->read(); 504 510 Tcontrol_t read_ra = in_RETIRE_READ_RA [i]->read(); 505 511 Tgeneral_address_t ra = in_RETIRE_NUM_REG_RA_PHY [i]->read(); … … 518 524 519 525 LABEL("RETIRE [%d] - Accepted",i); 526 LABEL(" * restore : %d",restore); 520 527 LABEL(" * read_ra : %d",read_ra ); 521 528 LABEL(" * reg_ra : %d",ra ); … … 575 582 if (write_rd) 576 583 { 577 if (restore _rd_old)584 if (restore) 578 585 { 579 gpr_status[rd_old]._is_link = 1; 580 gpr_status[rd_new]._is_link = 0; 581 gpr_status[rd_new]._is_valid = 1; 586 if (restore_rd_old) 587 { 588 gpr_status[rd_old]._is_link = 1; 589 gpr_status[rd_new]._is_link = 0; 590 gpr_status[rd_new]._is_valid = 1; 591 } 592 else 593 { 594 gpr_status[rd_old]._is_link = 0; 595 gpr_status[rd_new]._is_link = 0; 596 gpr_status[rd_new]._is_valid = 1; 597 } 582 598 } 583 599 else … … 586 602 gpr_status[rd_new]._is_valid = 1; 587 603 } 604 588 605 } 589 606 if (write_re) … … 619 636 TEST(bool, true,((gpr_status[reg]._is_free == 0) and 620 637 (gpr_status[reg]._is_link == 0) and 621 (gpr_status[reg]._is_valid == 1) and 622 (gpr_status[reg]._counter == 0))); 638 (gpr_status[reg]._is_valid == 1)// and 639 // (gpr_status[reg]._counter == 0) 640 )); 623 641 624 642 gpr_status[reg]._is_free = 1; … … 639 657 TEST(bool, true,((spr_status[reg]._is_free == 0) and 640 658 (spr_status[reg]._is_link == 0) and 641 (spr_status[reg]._is_valid == 1) and 642 (spr_status[reg]._counter == 0))); 659 (spr_status[reg]._is_valid == 1)// and 660 // (spr_status[reg]._counter == 0) 661 )); 643 662 644 663 spr_status[reg]._is_free = 1; … … 678 697 delete [] in_RETIRE_VAL ; 679 698 delete [] out_RETIRE_ACK ; 699 delete [] in_RETIRE_RESTORE ; 680 700 delete [] in_RETIRE_READ_RA ; 681 701 delete [] in_RETIRE_NUM_REG_RA_PHY ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h
r88 r112 34 34 public : uint32_t _nb_reg_free ; 35 35 public : uint32_t _nb_bank ; 36 36 //public : uint32_t _size_counter ; 37 37 38 38 //public : uint32_t _size_general_register ; 39 39 //public : uint32_t _size_special_register ; 40 40 41 41 //public : uint32_t _max_reader ; 42 42 public : uint32_t _nb_gpr_use_init ; 43 43 public : uint32_t _nb_spr_use_init ; … … 63 63 uint32_t nb_reg_free , 64 64 uint32_t nb_bank , 65 uint32_t size_counter ,65 // uint32_t size_counter , 66 66 bool is_toplevel=false 67 67 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h
r88 r112 79 79 public : SC_IN (Tcontrol_t ) ** in_RETIRE_VAL ;//[nb_inst_retire] 80 80 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_ACK ;//[nb_inst_retire] 81 public : SC_IN (Tcontrol_t ) ** in_RETIRE_RESTORE ;//[nb_inst_retire] 81 82 public : SC_IN (Tcontrol_t ) ** in_RETIRE_READ_RA ;//[nb_inst_retire] 82 83 public : SC_IN (Tgeneral_address_t) ** in_RETIRE_NUM_REG_RA_PHY ;//[nb_inst_retire] … … 110 111 private : stat_list_entry_t ** spr_stat_list; //[nb_bank][nb_general_register_by_bank] 111 112 113 private : uint32_t reg_GPR_PTR_FREE; 114 private : uint32_t reg_SPR_PTR_FREE; 115 112 116 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 113 private : uint32_t internal_GPR_PTR_FREE;114 private : uint32_t internal_SPR_PTR_FREE;115 116 117 private : Tcontrol_t * internal_INSERT_ACK ;//[nb_inst_insert] 117 118 private : Tcontrol_t * internal_RETIRE_ACK ;//[nb_inst_retire] … … 154 155 public : void transition (void); 155 156 public : void genMoore (void); 156 157 //public : void genMealy (void); 157 158 #endif 158 159 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h
r88 r112 25 25 public : bool _is_free ; // set = is present in free list 26 26 public : bool _is_link ; // set = is present in rat 27 28 27 //public : bool _is_valid; // set = an instruction have write in this register 28 //public : uint32_t _counter ; // number of register that must read this register 29 29 30 30 public : stat_list_entry_t (void) {}; … … 35 35 _is_free = 0; 36 36 _is_link = is_link; 37 38 37 // _is_valid = 1; 38 // _counter = 0; 39 39 } 40 40 41 public : void insert_read (void) 42 { 43 _counter ++; 44 } 41 // public : void insert_read (void) 42 // { 43 // _counter ++; 44 // } 45 45 46 public : void insert_write (void) 46 47 { 47 48 _is_free = 0; 48 49 _is_link = 1; 49 50 // _is_valid = 0; 50 51 } 51 52 52 public : void retire_read (void) 53 // public : void retire_read (void) 54 // { 55 // _counter --; 56 // } 57 58 public : void retire_write_old (bool restore, bool restore_old) 53 59 { 54 _counter --; 60 // restore restore_old is_link 61 // 0 x 0 - normal case : unallocate 62 // 1 0 0 - event and previous update 63 // 1 1 1 - event and first update 64 65 _is_link = restore and restore_old; 55 66 } 56 67 57 public : void retire_write_ old (bool restore_old)68 public : void retire_write_new (bool restore, bool restore_old) 58 69 { 59 if (not restore_old) 60 { 61 _is_link = 0; 62 } 63 // else nothing 64 } 70 // restore restore_old is_link 71 // 0 x 1 - normal case : allocate 72 // 1 x 0 - event, need restore oldest register 65 73 66 public : void retire_write_new (bool restore_old) 67 { 68 if (restore_old) 69 { 70 _is_link = 0; 71 } 74 if (restore) 75 _is_link = 0; 72 76 73 77 // in all case 74 78 // _is_valid = 1; 75 79 } 76 80 … … 80 84 } 81 85 82 public : bool can_insert_read (uint32_t max_reader)83 {84 85 }86 // public : bool can_insert_read (uint32_t max_reader) 87 // { 88 // return ((_counter+1) < max_reader); 89 // } 86 90 87 91 public : bool can_free (void) 88 92 { 89 93 return ((_is_free == 0) and 90 (_is_link == 0) and 91 // (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset 92 (_counter == 0)); 94 (_is_link == 0) // and 95 // (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset 96 // (_counter == 0) 97 ); 93 98 } 94 99 … … 97 102 { 98 103 output << x._is_free << " " 99 << x._is_link << " " 100 << x._is_valid << " " 101 << x._counter; 104 << x._is_link // << " " 105 // << x._is_valid << " " 106 // << x._counter 107 ; 102 108 103 109 return output; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters.cpp
r88 r112 29 29 uint32_t nb_reg_free , 30 30 uint32_t nb_bank , 31 uint32_t size_counter ,31 // uint32_t size_counter , 32 32 bool is_toplevel) 33 33 { … … 42 42 _nb_reg_free = nb_reg_free ; 43 43 _nb_bank = nb_bank ; 44 44 // _size_counter = size_counter ; 45 45 46 46 // _max_reader = 1<<size_counter; 47 47 48 48 uint32_t nb_thread = 0; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters_print.cpp
r81 r112 35 35 xml.singleton_begin("nb_reg_free "); xml.attribut("value",toString(_nb_reg_free )); xml.singleton_end(); 36 36 xml.singleton_begin("nb_bank "); xml.attribut("value",toString(_nb_bank )); xml.singleton_end(); 37 xml.singleton_begin("size_counter "); xml.attribut("value",toString(_size_counter )); xml.singleton_end();37 // xml.singleton_begin("size_counter "); xml.attribut("value",toString(_size_counter )); xml.singleton_end(); 38 38 39 39 for (uint32_t i=0;i<_nb_front_end; i++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit.cpp
r88 r112 75 75 { 76 76 // Constant 77 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 78 { 79 internal_INSERT_ACK[i] = 1; 80 PORT_WRITE(out_INSERT_ACK[i], internal_INSERT_ACK[i]); 81 } 77 82 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 78 83 { … … 101 106 # endif 102 107 103 log_printf(INFO,Stat_List_unit,FUNCTION,"Method - genMealy");108 // log_printf(INFO,Stat_List_unit,FUNCTION,"Method - genMealy"); 104 109 105 SC_METHOD (genMealy);106 dont_initialize ();107 sensitive << (*(in_CLOCK)).neg(); // need internal register108 for (uint32_t i=0; i<_param->_nb_inst_insert; i++)109 sensitive << (*(in_INSERT_READ_RA [i]))110 << (*(in_INSERT_NUM_REG_RA_PHY [i]))111 << (*(in_INSERT_READ_RB [i]))112 << (*(in_INSERT_NUM_REG_RB_PHY [i]))113 << (*(in_INSERT_READ_RC [i]))114 << (*(in_INSERT_NUM_REG_RC_PHY [i]));110 // SC_METHOD (genMealy); 111 // dont_initialize (); 112 // sensitive << (*(in_CLOCK)).neg(); // need internal register 113 // for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 114 // sensitive << (*(in_INSERT_READ_RA [i])) 115 // << (*(in_INSERT_NUM_REG_RA_PHY [i])) 116 // << (*(in_INSERT_READ_RB [i])) 117 // << (*(in_INSERT_NUM_REG_RB_PHY [i])) 118 // << (*(in_INSERT_READ_RC [i])) 119 // << (*(in_INSERT_NUM_REG_RC_PHY [i])); 115 120 116 # ifdef SYSTEMCASS_SPECIFIC117 // List dependency information121 // # ifdef SYSTEMCASS_SPECIFIC 122 // // List dependency information 118 123 119 for (uint32_t i=0; i<_param->_nb_inst_insert; i++)120 {121 (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RA [i]));122 (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RA_PHY [i]));123 (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RB [i]));124 (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RB_PHY [i]));125 (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RC [i]));126 (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RC_PHY [i]));127 }128 # endif124 // for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 125 // { 126 // (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RA [i])); 127 // (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RA_PHY [i])); 128 // (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RB [i])); 129 // (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RB_PHY [i])); 130 // (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RC [i])); 131 // (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RC_PHY [i])); 132 // } 133 // # endif 129 134 130 135 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp
r88 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 58 58 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("insert",IN,SOUTH,"Insert a renaming result",_param->_nb_inst_insert);60 ALLOC1_INTERFACE_BEGIN("insert",IN,SOUTH,_("Insert a renaming result"),_param->_nb_inst_insert); 61 61 62 62 ALLOC1_VALACK_IN ( in_INSERT_VAL ,VAL); … … 72 72 ALLOC1_SIGNAL_IN ( in_INSERT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 73 73 ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register); 74 75 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 74 76 } 75 77 76 78 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 77 79 { 78 ALLOC1_INTERFACE ("retire",IN,NORTH,"Retire a renaming result",_param->_nb_inst_retire);80 ALLOC1_INTERFACE_BEGIN("retire",IN,NORTH,_("Retire a renaming result"),_param->_nb_inst_retire); 79 81 80 82 ALLOC1_VALACK_IN ( in_RETIRE_VAL ,VAL); 81 83 ALLOC1_VALACK_OUT(out_RETIRE_ACK ,ACK); 84 ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE ,"restore" ,Tcontrol_t ,1 ); 82 85 ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 83 86 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RA_PHY ,"num_reg_ra_phy" ,Tgeneral_address_t,_param->_size_general_register); … … 94 97 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register); 95 98 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register); 99 100 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 96 101 } 97 102 98 103 // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 99 104 { 100 ALLOC1_INTERFACE ("push_gpr",OUT,SOUTH,"Free a general register",_param->_nb_reg_free);105 ALLOC1_INTERFACE_BEGIN("push_gpr",OUT,SOUTH,_("Free a general register"),_param->_nb_reg_free); 101 106 102 107 ALLOC1_VALACK_OUT(out_PUSH_GPR_VAL ,VAL); 103 108 ALLOC1_VALACK_IN ( in_PUSH_GPR_ACK ,ACK); 104 109 ALLOC1_SIGNAL_OUT(out_PUSH_GPR_NUM_REG,"num_reg",Tgeneral_address_t,_param->_size_general_register); 110 111 ALLOC1_INTERFACE_END(_param->_nb_reg_free); 105 112 } 106 113 107 114 // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 108 115 { 109 ALLOC1_INTERFACE ("push_spr",OUT,SOUTH,"Free a special register",_param->_nb_reg_free);116 ALLOC1_INTERFACE_BEGIN("push_spr",OUT,SOUTH,_("Free a special register"),_param->_nb_reg_free); 110 117 111 118 ALLOC1_VALACK_OUT(out_PUSH_SPR_VAL ,VAL); 112 119 ALLOC1_VALACK_IN ( in_PUSH_SPR_ACK ,ACK); 113 120 ALLOC1_SIGNAL_OUT(out_PUSH_SPR_NUM_REG,"num_reg",Tspecial_address_t,_param->_size_special_register); 121 122 ALLOC1_INTERFACE_END(_param->_nb_reg_free); 114 123 } 115 124 … … 117 126 if (usage_is_set(_usage,USE_SYSTEMC)) 118 127 { 119 gpr_stat_list = new stat_list_entry_t * [_param->_nb_bank]; 120 spr_stat_list = new stat_list_entry_t * [_param->_nb_bank]; 121 122 for (uint32_t i=0; i<_param->_nb_bank; i++) 123 { 124 gpr_stat_list [i] = new stat_list_entry_t [_param->_nb_general_register_by_bank]; 125 spr_stat_list [i] = new stat_list_entry_t [_param->_nb_special_register_by_bank]; 126 } 127 128 internal_INSERT_ACK = new Tcontrol_t [_param->_nb_inst_insert]; 129 internal_RETIRE_ACK = new Tcontrol_t [_param->_nb_inst_retire]; 130 internal_PUSH_GPR_VAL = new Tcontrol_t [_param->_nb_reg_free]; 131 internal_PUSH_GPR_NUM_BANK = new uint32_t [_param->_nb_reg_free]; 132 internal_PUSH_SPR_VAL = new Tcontrol_t [_param->_nb_reg_free]; 133 internal_PUSH_SPR_NUM_BANK = new uint32_t [_param->_nb_reg_free]; 128 ALLOC2(gpr_stat_list,stat_list_entry_t,_param->_nb_bank,_param->_nb_general_register_by_bank); 129 ALLOC2(spr_stat_list,stat_list_entry_t,_param->_nb_bank,_param->_nb_special_register_by_bank); 130 ALLOC1(internal_INSERT_ACK ,Tcontrol_t,_param->_nb_inst_insert); 131 ALLOC1(internal_RETIRE_ACK ,Tcontrol_t,_param->_nb_inst_retire); 132 ALLOC1(internal_PUSH_GPR_VAL ,Tcontrol_t,_param->_nb_reg_free); 133 ALLOC1(internal_PUSH_GPR_NUM_BANK,uint32_t ,_param->_nb_reg_free); 134 ALLOC1(internal_PUSH_SPR_VAL ,Tcontrol_t,_param->_nb_reg_free); 135 ALLOC1(internal_PUSH_SPR_NUM_BANK,uint32_t ,_param->_nb_reg_free); 134 136 } 135 137 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 delete [] in_INSERT_VAL;32 delete [] out_INSERT_ACK;33 delete [] in_INSERT_READ_RA;34 delete [] in_INSERT_NUM_REG_RA_PHY;35 delete [] in_INSERT_READ_RB;36 delete [] in_INSERT_NUM_REG_RB_PHY;37 delete [] in_INSERT_READ_RC;38 delete [] in_INSERT_NUM_REG_RC_PHY;39 delete [] in_INSERT_WRITE_RD;40 delete [] in_INSERT_NUM_REG_RD_PHY_NEW;41 delete [] in_INSERT_WRITE_RE;42 delete [] in_INSERT_NUM_REG_RE_PHY_NEW;32 DELETE1_SIGNAL( in_INSERT_VAL ,_param->_nb_inst_insert,1); 33 DELETE1_SIGNAL(out_INSERT_ACK ,_param->_nb_inst_insert,1); 34 DELETE1_SIGNAL( in_INSERT_READ_RA ,_param->_nb_inst_insert,1 ); 35 DELETE1_SIGNAL( in_INSERT_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 36 DELETE1_SIGNAL( in_INSERT_READ_RB ,_param->_nb_inst_insert,1 ); 37 DELETE1_SIGNAL( in_INSERT_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 38 DELETE1_SIGNAL( in_INSERT_READ_RC ,_param->_nb_inst_insert,1 ); 39 DELETE1_SIGNAL( in_INSERT_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register); 40 DELETE1_SIGNAL( in_INSERT_WRITE_RD ,_param->_nb_inst_insert,1 ); 41 DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register); 42 DELETE1_SIGNAL( in_INSERT_WRITE_RE ,_param->_nb_inst_insert,1 ); 43 DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register); 43 44 44 delete [] in_RETIRE_VAL ; 45 delete [] out_RETIRE_ACK ; 46 delete [] in_RETIRE_READ_RA ; 47 delete [] in_RETIRE_NUM_REG_RA_PHY ; 48 delete [] in_RETIRE_READ_RB ; 49 delete [] in_RETIRE_NUM_REG_RB_PHY ; 50 delete [] in_RETIRE_READ_RC ; 51 delete [] in_RETIRE_NUM_REG_RC_PHY ; 52 delete [] in_RETIRE_WRITE_RD ; 53 delete [] in_RETIRE_RESTORE_RD_PHY_OLD; 54 delete [] in_RETIRE_NUM_REG_RD_PHY_OLD; 55 delete [] in_RETIRE_NUM_REG_RD_PHY_NEW; 56 delete [] in_RETIRE_WRITE_RE ; 57 delete [] in_RETIRE_RESTORE_RE_PHY_OLD; 58 delete [] in_RETIRE_NUM_REG_RE_PHY_OLD; 59 delete [] in_RETIRE_NUM_REG_RE_PHY_NEW; 45 DELETE1_SIGNAL( in_RETIRE_VAL ,_param->_nb_inst_retire,1); 46 DELETE1_SIGNAL(out_RETIRE_ACK ,_param->_nb_inst_retire,1); 47 DELETE1_SIGNAL( in_RETIRE_RESTORE ,_param->_nb_inst_retire,1 ); 48 DELETE1_SIGNAL( in_RETIRE_READ_RA ,_param->_nb_inst_retire,1 ); 49 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY ,_param->_nb_inst_retire,_param->_size_general_register); 50 DELETE1_SIGNAL( in_RETIRE_READ_RB ,_param->_nb_inst_retire,1 ); 51 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RB_PHY ,_param->_nb_inst_retire,_param->_size_general_register); 52 DELETE1_SIGNAL( in_RETIRE_READ_RC ,_param->_nb_inst_retire,1 ); 53 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RC_PHY ,_param->_nb_inst_retire,_param->_size_special_register); 54 DELETE1_SIGNAL( in_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1 ); 55 DELETE1_SIGNAL( in_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire,1 ); 56 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register); 57 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register); 58 DELETE1_SIGNAL( in_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1 ); 59 DELETE1_SIGNAL( in_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire,1 ); 60 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register); 61 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register); 60 62 61 delete [] out_PUSH_GPR_VAL ; 62 delete [] in_PUSH_GPR_ACK ; 63 DELETE1_SIGNAL(out_PUSH_GPR_VAL ,_param->_nb_reg_free,1); 64 DELETE1_SIGNAL( in_PUSH_GPR_ACK ,_param->_nb_reg_free,1); 65 DELETE1_SIGNAL(out_PUSH_GPR_NUM_REG,_param->_nb_reg_free,_param->_size_general_register); 63 66 64 delete [] out_PUSH_GPR_NUM_REG ; 65 delete [] out_PUSH_SPR_VAL ; 66 delete [] in_PUSH_SPR_ACK ; 67 delete [] out_PUSH_SPR_NUM_REG ; 68 69 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 70 71 delete [] gpr_stat_list; 72 delete [] spr_stat_list; 73 74 delete [] internal_INSERT_ACK ; 75 delete [] internal_RETIRE_ACK ; 76 delete [] internal_PUSH_GPR_VAL ; 77 delete [] internal_PUSH_GPR_NUM_BANK; 78 delete [] internal_PUSH_SPR_VAL ; 79 delete [] internal_PUSH_SPR_NUM_BANK; 67 DELETE1_SIGNAL(out_PUSH_SPR_VAL ,_param->_nb_reg_free,1); 68 DELETE1_SIGNAL( in_PUSH_SPR_ACK ,_param->_nb_reg_free,1); 69 DELETE1_SIGNAL(out_PUSH_SPR_NUM_REG,_param->_nb_reg_free,_param->_size_special_register); 70 71 DELETE2(gpr_stat_list ,_param->_nb_bank,_param->_nb_general_register_by_bank); 72 DELETE2(spr_stat_list ,_param->_nb_bank,_param->_nb_special_register_by_bank); 73 DELETE1(internal_INSERT_ACK ,_param->_nb_inst_insert); 74 DELETE1(internal_RETIRE_ACK ,_param->_nb_inst_retire); 75 DELETE1(internal_PUSH_GPR_VAL ,_param->_nb_reg_free); 76 DELETE1(internal_PUSH_GPR_NUM_BANK,_param->_nb_reg_free); 77 DELETE1(internal_PUSH_SPR_VAL ,_param->_nb_reg_free); 78 DELETE1(internal_PUSH_SPR_NUM_BANK,_param->_nb_reg_free); 80 79 } 81 82 80 83 81 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMealy.cpp
r88 r112 19 19 20 20 21 #undef FUNCTION22 #define FUNCTION "Stat_List_unit::genMealy"23 void Stat_List_unit::genMealy (void)24 {25 log_begin(Stat_List_unit,FUNCTION);26 log_function(Stat_List_unit,FUNCTION,_name.c_str());21 // #undef FUNCTION 22 // #define FUNCTION "Stat_List_unit::genMealy" 23 // void Stat_List_unit::genMealy (void) 24 // { 25 // log_begin(Stat_List_unit,FUNCTION); 26 // log_function(Stat_List_unit,FUNCTION,_name.c_str()); 27 27 28 for (uint32_t i=0; i<_param->_nb_inst_insert; i++)29 {30 bool ack = true;28 // for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 29 // { 30 // bool ack = true; 31 31 32 if (PORT_READ(in_INSERT_READ_RA [i]))33 {34 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);35 uint32_t bank = num_reg >> _param->_shift_gpr;36 uint32_t reg = num_reg & _param->_mask_gpr ;37 ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);38 }32 // if (PORT_READ(in_INSERT_READ_RA [i])) 33 // { 34 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]); 35 // uint32_t bank = num_reg >> _param->_shift_gpr; 36 // uint32_t reg = num_reg & _param->_mask_gpr ; 37 // ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader); 38 // } 39 39 40 if (PORT_READ(in_INSERT_READ_RB [i]))41 {42 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);43 uint32_t bank = num_reg >> _param->_shift_gpr;44 uint32_t reg = num_reg & _param->_mask_gpr ;45 ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);46 }40 // if (PORT_READ(in_INSERT_READ_RB [i])) 41 // { 42 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]); 43 // uint32_t bank = num_reg >> _param->_shift_gpr; 44 // uint32_t reg = num_reg & _param->_mask_gpr ; 45 // ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader); 46 // } 47 47 48 if (PORT_READ(in_INSERT_READ_RC [i]))49 {50 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);51 uint32_t bank = num_reg >> _param->_shift_spr;52 uint32_t reg = num_reg & _param->_mask_spr ;53 ack &= spr_stat_list [bank][reg].can_insert_read(_param->_max_reader);54 }48 // if (PORT_READ(in_INSERT_READ_RC [i])) 49 // { 50 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]); 51 // uint32_t bank = num_reg >> _param->_shift_spr; 52 // uint32_t reg = num_reg & _param->_mask_spr ; 53 // ack &= spr_stat_list [bank][reg].can_insert_read(_param->_max_reader); 54 // } 55 55 56 internal_INSERT_ACK [i] = ack;57 PORT_WRITE(out_INSERT_ACK [i], ack);58 }56 // internal_INSERT_ACK [i] = ack; 57 // PORT_WRITE(out_INSERT_ACK [i], ack); 58 // } 59 59 60 log_end(Stat_List_unit,FUNCTION);61 };60 // log_end(Stat_List_unit,FUNCTION); 61 // }; 62 62 63 63 }; // end namespace stat_list_unit -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp
r88 r112 26 26 log_function(Stat_List_unit,FUNCTION,_name.c_str()); 27 27 28 uint32_t gpr_ptr = internal_GPR_PTR_FREE;29 uint32_t spr_ptr = internal_SPR_PTR_FREE;28 uint32_t gpr_ptr = reg_GPR_PTR_FREE; 29 uint32_t spr_ptr = reg_SPR_PTR_FREE; 30 30 31 31 for (uint32_t i=0; i<_param->_nb_reg_free; i++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_transition.cpp
r106 r112 38 38 spr_stat_list [i][j].reset((spr++)<_param->_nb_spr_use_init); 39 39 } 40 internal_GPR_PTR_FREE = 0;41 internal_SPR_PTR_FREE = 0;40 reg_GPR_PTR_FREE = 0; 41 reg_SPR_PTR_FREE = 0; 42 42 } 43 43 else … … 51 51 log_printf(TRACE,Stat_List_unit,FUNCTION," * INSERT [%d]",i); 52 52 53 if (PORT_READ(in_INSERT_READ_RA [i]))54 {55 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);56 57 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RA - num_reg : %d",num_reg);58 59 uint32_t bank = num_reg >> _param->_shift_gpr;60 uint32_t reg = num_reg & _param->_mask_gpr ;61 gpr_stat_list [bank][reg].insert_read();62 }63 64 if (PORT_READ(in_INSERT_READ_RB [i]))65 {66 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);67 68 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RB - num_reg : %d",num_reg);69 70 uint32_t bank = num_reg >> _param->_shift_gpr;71 uint32_t reg = num_reg & _param->_mask_gpr ;72 gpr_stat_list [bank][reg].insert_read();73 }74 75 if (PORT_READ(in_INSERT_READ_RC [i]))76 {77 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);78 79 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RC - num_reg : %d",num_reg);80 81 uint32_t bank = num_reg >> _param->_shift_spr;82 uint32_t reg = num_reg & _param->_mask_spr ;83 spr_stat_list [bank][reg].insert_read();84 }53 // if (PORT_READ(in_INSERT_READ_RA [i])) 54 // { 55 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]); 56 57 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RA - num_reg : %d",num_reg); 58 59 // uint32_t bank = num_reg >> _param->_shift_gpr; 60 // uint32_t reg = num_reg & _param->_mask_gpr ; 61 // gpr_stat_list [bank][reg].insert_read(); 62 // } 63 64 // if (PORT_READ(in_INSERT_READ_RB [i])) 65 // { 66 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]); 67 68 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RB - num_reg : %d",num_reg); 69 70 // uint32_t bank = num_reg >> _param->_shift_gpr; 71 // uint32_t reg = num_reg & _param->_mask_gpr ; 72 // gpr_stat_list [bank][reg].insert_read(); 73 // } 74 75 // if (PORT_READ(in_INSERT_READ_RC [i])) 76 // { 77 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]); 78 79 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RC - num_reg : %d",num_reg); 80 81 // uint32_t bank = num_reg >> _param->_shift_spr; 82 // uint32_t reg = num_reg & _param->_mask_spr ; 83 // spr_stat_list [bank][reg].insert_read(); 84 // } 85 85 86 86 if (PORT_READ(in_INSERT_WRITE_RD [i])) … … 88 88 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RD_PHY_NEW [i]); 89 89 90 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RD - num_reg 90 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RD - num_reg new : %d",num_reg); 91 91 92 92 uint32_t bank = num_reg >> _param->_shift_gpr; … … 97 97 if (PORT_READ(in_INSERT_WRITE_RE [i])) 98 98 { 99 T general_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_NEW [i]);100 101 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RE - num_reg 99 Tspecial_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_NEW [i]); 100 101 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RE - num_reg new : %d",num_reg); 102 102 103 103 uint32_t bank = num_reg >> _param->_shift_spr; … … 115 115 log_printf(TRACE,Stat_List_unit,FUNCTION," * RETIRE [%d]",i); 116 116 117 if (PORT_READ(in_RETIRE_READ_RA [i])) 118 { 119 Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RA_PHY [i]); 120 121 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RA - num_reg : %d",num_reg); 122 123 uint32_t bank = num_reg >> _param->_shift_gpr; 124 uint32_t reg = num_reg & _param->_mask_gpr ; 125 gpr_stat_list [bank][reg].retire_read(); 126 } 127 128 if (PORT_READ(in_RETIRE_READ_RB [i])) 129 { 130 Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RB_PHY [i]); 131 132 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RD - num_reg : %d",num_reg); 133 134 uint32_t bank = num_reg >> _param->_shift_gpr; 135 uint32_t reg = num_reg & _param->_mask_gpr ; 136 gpr_stat_list [bank][reg].retire_read(); 137 } 138 139 if (PORT_READ(in_RETIRE_READ_RC [i])) 140 { 141 Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RC_PHY [i]); 142 143 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RC - num_reg : %d",num_reg); 144 145 uint32_t bank = num_reg >> _param->_shift_spr; 146 uint32_t reg = num_reg & _param->_mask_spr ; 147 spr_stat_list [bank][reg].retire_read(); 148 } 117 Tcontrol_t restore = PORT_READ(in_RETIRE_RESTORE [i]); 118 119 log_printf(TRACE,Stat_List_unit,FUNCTION," * restore : %d",restore); 120 121 // if (PORT_READ(in_RETIRE_READ_RA [i])) 122 // { 123 // Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RA_PHY [i]); 124 125 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RA - num_reg : %d",num_reg); 126 127 // uint32_t bank = num_reg >> _param->_shift_gpr; 128 // uint32_t reg = num_reg & _param->_mask_gpr ; 129 // gpr_stat_list [bank][reg].retire_read(); 130 // } 131 132 // if (PORT_READ(in_RETIRE_READ_RB [i])) 133 // { 134 // Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RB_PHY [i]); 135 136 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RB - num_reg : %d",num_reg); 137 138 // uint32_t bank = num_reg >> _param->_shift_gpr; 139 // uint32_t reg = num_reg & _param->_mask_gpr ; 140 // gpr_stat_list [bank][reg].retire_read(); 141 // } 142 143 // if (PORT_READ(in_RETIRE_READ_RC [i])) 144 // { 145 // Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RC_PHY [i]); 146 147 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RC - num_reg : %d",num_reg); 148 149 // uint32_t bank = num_reg >> _param->_shift_spr; 150 // uint32_t reg = num_reg & _param->_mask_spr ; 151 // spr_stat_list [bank][reg].retire_read(); 152 // } 149 153 150 154 if (PORT_READ(in_RETIRE_WRITE_RD [i])) … … 157 161 Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]); 158 162 159 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RD -num_reg_old : %d",num_reg);163 log_printf(TRACE,Stat_List_unit,FUNCTION," num_reg_old : %d",num_reg); 160 164 161 165 uint32_t bank = num_reg >> _param->_shift_gpr; 162 166 uint32_t reg = num_reg & _param->_mask_gpr ; 163 gpr_stat_list [bank][reg].retire_write_old(restore _old);167 gpr_stat_list [bank][reg].retire_write_old(restore, restore_old); 164 168 } 165 169 { 166 170 Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_NEW [i]); 167 171 168 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RD -num_reg_new : %d",num_reg);172 log_printf(TRACE,Stat_List_unit,FUNCTION," num_reg_new : %d",num_reg); 169 173 170 174 uint32_t bank = num_reg >> _param->_shift_gpr; 171 175 uint32_t reg = num_reg & _param->_mask_gpr ; 172 gpr_stat_list [bank][reg].retire_write_new(restore _old);176 gpr_stat_list [bank][reg].retire_write_new(restore, restore_old); 173 177 } 174 178 } … … 181 185 182 186 { 183 T general_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);184 185 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RE - num_reg_new: %d",num_reg);187 Tspecial_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]); 188 189 log_printf(TRACE,Stat_List_unit,FUNCTION," num_reg_old : %d",num_reg); 186 190 187 191 uint32_t bank = num_reg >> _param->_shift_spr; 188 192 uint32_t reg = num_reg & _param->_mask_spr ; 189 spr_stat_list [bank][reg].retire_write_old(restore _old);193 spr_stat_list [bank][reg].retire_write_old(restore, restore_old); 190 194 } 191 195 { 192 T general_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_NEW [i]);193 194 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RE -num_reg_new : %d",num_reg);196 Tspecial_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_NEW [i]); 197 198 log_printf(TRACE,Stat_List_unit,FUNCTION," num_reg_new : %d",num_reg); 195 199 196 200 uint32_t bank = num_reg >> _param->_shift_spr; 197 201 uint32_t reg = num_reg & _param->_mask_spr ; 198 spr_stat_list [bank][reg].retire_write_new(restore _old);202 spr_stat_list [bank][reg].retire_write_new(restore, restore_old); 199 203 } 200 204 } … … 207 211 // ===================================================== 208 212 if (internal_PUSH_GPR_VAL [i] and PORT_READ(in_PUSH_GPR_ACK [i])) 209 gpr_stat_list[internal_PUSH_GPR_NUM_BANK [i]][ internal_GPR_PTR_FREE].free();213 gpr_stat_list[internal_PUSH_GPR_NUM_BANK [i]][reg_GPR_PTR_FREE].free(); 210 214 211 215 // ===================================================== … … 213 217 // ===================================================== 214 218 if (internal_PUSH_SPR_VAL [i] and PORT_READ(in_PUSH_SPR_ACK [i])) 215 spr_stat_list[internal_PUSH_SPR_NUM_BANK [i]][ internal_SPR_PTR_FREE].free();219 spr_stat_list[internal_PUSH_SPR_NUM_BANK [i]][reg_SPR_PTR_FREE].free(); 216 220 } 217 221 218 222 // Update pointer 219 internal_GPR_PTR_FREE = ((internal_GPR_PTR_FREE==0)?_param->_nb_general_register_by_bank:internal_GPR_PTR_FREE)-1;220 internal_SPR_PTR_FREE = ((internal_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:internal_SPR_PTR_FREE)-1;223 reg_GPR_PTR_FREE = ((reg_GPR_PTR_FREE==0)?_param->_nb_general_register_by_bank:reg_GPR_PTR_FREE)-1; 224 reg_SPR_PTR_FREE = ((reg_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:reg_SPR_PTR_FREE)-1; 221 225 } 222 226 223 227 224 228 #if (DEBUG >= DEBUG_TRACE) 225 log_printf(TRACE,Stat_List_unit,FUNCTION," * Dump Stat List"); 226 for (uint32_t i=0; i<_param->_nb_bank; i++) 227 for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++) 228 log_printf(TRACE,Stat_List_unit,FUNCTION," * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d", 229 i, 230 j, 231 (i<<_param->_shift_gpr)|j, 232 gpr_stat_list[i][j]._is_free, 233 gpr_stat_list[i][j]._is_link, 234 gpr_stat_list[i][j]._is_valid, 235 gpr_stat_list[i][j]._counter); 236 for (uint32_t i=0; i<_param->_nb_bank; i++) 237 for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++) 238 log_printf(TRACE,Stat_List_unit,FUNCTION," * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d", 239 i, 240 j, 241 (i<<_param->_shift_spr)|j, 242 spr_stat_list[i][j]._is_free, 243 spr_stat_list[i][j]._is_link, 244 spr_stat_list[i][j]._is_valid, 245 spr_stat_list[i][j]._counter); 229 { 230 log_printf(TRACE,Stat_List_unit,FUNCTION," * Dump Stat List"); 231 log_printf(TRACE,Stat_List_unit,FUNCTION," * reg_GPR_PTR_FREE : %d",reg_GPR_PTR_FREE); 232 log_printf(TRACE,Stat_List_unit,FUNCTION," * reg_SPR_PTR_FREE : %d",reg_SPR_PTR_FREE); 233 234 for (uint32_t i=0; i<_param->_nb_bank; i++) 235 for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++) 236 log_printf(TRACE,Stat_List_unit,FUNCTION," * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d", 237 i, 238 j, 239 (i<<_param->_shift_gpr)|j, 240 gpr_stat_list[i][j]._is_free, 241 gpr_stat_list[i][j]._is_link// , 242 // gpr_stat_list[i][j]._is_valid, 243 // gpr_stat_list[i][j]._counter 244 ); 245 for (uint32_t i=0; i<_param->_nb_bank; i++) 246 for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++) 247 log_printf(TRACE,Stat_List_unit,FUNCTION," * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d", 248 i, 249 j, 250 (i<<_param->_shift_spr)|j, 251 spr_stat_list[i][j]._is_free, 252 spr_stat_list[i][j]._is_link// , 253 // spr_stat_list[i][j]._is_valid, 254 // spr_stat_list[i][j]._counter 255 ); 256 } 246 257 #endif 258 259 #ifdef DEBUG_TEST 260 # if 0 261 { 262 uint32_t size_rob = 64; 263 uint32_t nb_context = 1; 264 265 { 266 uint32_t nb_is_link = 0; 267 uint32_t nb_reg = 32; 268 for (uint32_t i=0; i<_param->_nb_bank; i++) 269 for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++) 270 if (gpr_stat_list[i][j]._is_link) 271 nb_is_link ++; 272 273 log_printf(TRACE,Stat_List_unit,FUNCTION," * nb_GPR_IS_LINK : %d",nb_is_link); 274 275 if (nb_is_link > size_rob+nb_context*nb_reg) 276 throw ERRORMORPHEO(FUNCTION,toString(_("They are %d linked gpr register, but max is size_rob+nb_context*%d = %d+%d*%d = %d"),nb_is_link,nb_reg,size_rob,nb_context,nb_reg,size_rob+nb_context*nb_reg)); 277 } 278 279 { 280 uint32_t nb_is_link = 0; 281 uint32_t nb_reg = 2; 282 for (uint32_t i=0; i<_param->_nb_bank; i++) 283 for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++) 284 if (spr_stat_list[i][j]._is_link) 285 nb_is_link ++; 286 287 log_printf(TRACE,Stat_List_unit,FUNCTION," * nb_SPR_IS_LINK : %d",nb_is_link); 288 289 if (nb_is_link > size_rob+nb_context*nb_reg) 290 throw ERRORMORPHEO(FUNCTION,toString(_("They are %d linked spr register, but max is size_rob+nb_context*%d = %d+%d*%d = %d"),nb_is_link,nb_reg,size_rob,nb_context,nb_reg,size_rob+nb_context*nb_reg)); 291 } 292 } 293 # endif 294 #endif 295 247 296 248 297 #if defined(STATISTICS) or defined(VHDL_TESTBENCH) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h
r88 r112 38 38 public : uint32_t _nb_reg_free ; 39 39 public : uint32_t _nb_bank ; 40 40 //public : uint32_t _size_read_counter ; 41 41 42 42 //public : uint32_t _size_front_end_id ; … … 62 62 uint32_t nb_reg_free , 63 63 uint32_t nb_bank , 64 uint32_t size_read_counter ,64 // uint32_t size_read_counter , 65 65 bool is_toplevel=false); 66 66 // public : Parameters (Parameters & param) ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters.cpp
r88 r112 28 28 uint32_t nb_reg_free , 29 29 uint32_t nb_bank , 30 uint32_t size_read_counter ,30 // uint32_t size_read_counter , 31 31 bool is_toplevel) 32 32 { … … 41 41 _nb_reg_free = nb_reg_free ; 42 42 _nb_bank = nb_bank ; 43 _size_read_counter = size_read_counter ;43 // _size_read_counter = size_read_counter ; 44 44 45 45 uint32_t size_general_register = log2(nb_general_register); … … 83 83 _nb_inst_retire , 84 84 _nb_reg_free , 85 _nb_bank , 86 _size_read_counter ); 85 _nb_bank // , 86 // _size_read_counter 87 ); 87 88 88 89 _param_register_translation_unit_glue = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters_print.cpp
r81 r112 34 34 xml.singleton_begin("nb_reg_free "); xml.attribut("value",toString(_nb_reg_free )); xml.singleton_end(); 35 35 xml.singleton_begin("nb_bank "); xml.attribut("value",toString(_nb_bank )); xml.singleton_end(); 36 36 // xml.singleton_begin("size_read_counter "); xml.attribut("value",toString(_size_read_counter )); xml.singleton_end(); 37 37 for (uint32_t i=0;i<_nb_front_end; i++) 38 38 { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp
r104 r112 58 58 // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("rename", IN, EAST, "Instruction with logical register", _param->_nb_inst_insert);60 ALLOC1_INTERFACE_BEGIN("rename", IN, EAST, _("Instruction with logical register"), _param->_nb_inst_insert); 61 61 62 62 ALLOC1_VALACK_IN ( in_RENAME_VAL ,VAL); … … 74 74 ALLOC1_SIGNAL_IN ( in_RENAME_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 75 75 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RE_LOG,"num_reg_re_log",Tspecial_address_t,_param->_size_special_register_logic); 76 77 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 76 78 } 77 79 78 80 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 79 81 { 80 ALLOC1_INTERFACE ("insert",OUT,WEST , "Instruction with physical register", _param->_nb_inst_insert);82 ALLOC1_INTERFACE_BEGIN("insert",OUT,WEST , _("Instruction with physical register"), _param->_nb_inst_insert); 81 83 82 84 ALLOC1_VALACK_OUT(out_INSERT_VAL ,VAL); … … 101 103 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register ); 102 104 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register ); 105 106 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 103 107 } 104 108 105 109 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 106 110 { 107 ALLOC1_INTERFACE("retire",IN ,NORTH, "Retire instruction, update renaming structure.", _param->_nb_inst_retire); 111 ALLOC1_INTERFACE_BEGIN("retire",IN ,NORTH, _("Retire instruction, update renaming structure."), _param->_nb_inst_retire); 112 108 113 ALLOC1_VALACK_IN ( in_RETIRE_VAL ,VAL); 109 114 ALLOC1_VALACK_OUT(out_RETIRE_ACK ,ACK); … … 124 129 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register ); 125 130 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register ); 131 132 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 126 133 } 127 134 128 135 // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 129 136 { 130 ALLOC2_INTERFACE ("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);137 ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]); 131 138 132 139 _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); 133 140 _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK ,ACK,_param->_nb_front_end, _param->_nb_context[it1]); 134 141 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]); 142 143 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 135 144 } 136 145 … … 362 371 COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD", 363 372 dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD"); 373 COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE" , 374 dest, "in_RETIRE_"+toString(i)+"_RESTORE" ); 364 375 } 365 376 … … 671 682 // in_RETIRE_RESTORE_RD_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RD_PHY_OLD 672 683 // in_RETIRE_RESTORE_RE_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RE_PHY_OLD 684 // in_RETIRE_RESTORE - register_address_translation_unit.out_RETIRE_RESTORE 673 685 674 686 dest = _name+"_register_translation_unit_glue"; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp
r104 r112 29 29 delete in_NRESET; 30 30 31 delete [] in_RENAME_VAL ; 32 delete [] out_RENAME_ACK ; 33 if (_param->_have_port_front_end_id) 34 delete [] in_RENAME_FRONT_END_ID ; 35 if (_param->_have_port_context_id) 36 delete [] in_RENAME_CONTEXT_ID ; 37 delete [] in_RENAME_READ_RA ; 38 delete [] in_RENAME_NUM_REG_RA_LOG ; 39 delete [] in_RENAME_READ_RB ; 40 delete [] in_RENAME_NUM_REG_RB_LOG ; 41 delete [] in_RENAME_READ_RC ; 42 delete [] in_RENAME_NUM_REG_RC_LOG ; 43 delete [] in_RENAME_WRITE_RD ; 44 delete [] in_RENAME_NUM_REG_RD_LOG ; 45 delete [] in_RENAME_WRITE_RE ; 46 delete [] in_RENAME_NUM_REG_RE_LOG ; 31 DELETE1_SIGNAL( in_RENAME_VAL ,_param->_nb_inst_insert,1); 32 DELETE1_SIGNAL(out_RENAME_ACK ,_param->_nb_inst_insert,1); 33 DELETE1_SIGNAL( in_RENAME_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id ); 34 DELETE1_SIGNAL( in_RENAME_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 35 DELETE1_SIGNAL( in_RENAME_READ_RA ,_param->_nb_inst_insert,1 ); 36 DELETE1_SIGNAL( in_RENAME_NUM_REG_RA_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic); 37 DELETE1_SIGNAL( in_RENAME_READ_RB ,_param->_nb_inst_insert,1 ); 38 DELETE1_SIGNAL( in_RENAME_NUM_REG_RB_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic); 39 DELETE1_SIGNAL( in_RENAME_READ_RC ,_param->_nb_inst_insert,1 ); 40 DELETE1_SIGNAL( in_RENAME_NUM_REG_RC_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic); 41 DELETE1_SIGNAL( in_RENAME_WRITE_RD ,_param->_nb_inst_insert,1 ); 42 DELETE1_SIGNAL( in_RENAME_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic); 43 DELETE1_SIGNAL( in_RENAME_WRITE_RE ,_param->_nb_inst_insert,1 ); 44 DELETE1_SIGNAL( in_RENAME_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic); 47 45 48 delete [] out_INSERT_VAL ; 49 delete [] in_INSERT_ACK ; 50 if (_param->_have_port_front_end_id) 51 delete [] out_INSERT_FRONT_END_ID ; 52 if (_param->_have_port_context_id) 53 delete [] out_INSERT_CONTEXT_ID ; 54 delete [] out_INSERT_READ_RA ; 55 delete [] out_INSERT_NUM_REG_RA_LOG ; 56 delete [] out_INSERT_NUM_REG_RA_PHY ; 57 delete [] out_INSERT_READ_RB ; 58 delete [] out_INSERT_NUM_REG_RB_LOG ; 59 delete [] out_INSERT_NUM_REG_RB_PHY ; 60 delete [] out_INSERT_READ_RC ; 61 delete [] out_INSERT_NUM_REG_RC_LOG ; 62 delete [] out_INSERT_NUM_REG_RC_PHY ; 63 delete [] out_INSERT_WRITE_RD ; 64 delete [] out_INSERT_NUM_REG_RD_LOG ; 65 delete [] out_INSERT_NUM_REG_RD_PHY_OLD; 66 delete [] out_INSERT_NUM_REG_RD_PHY_NEW; 67 delete [] out_INSERT_WRITE_RE ; 68 delete [] out_INSERT_NUM_REG_RE_LOG ; 69 delete [] out_INSERT_NUM_REG_RE_PHY_OLD; 70 delete [] out_INSERT_NUM_REG_RE_PHY_NEW; 46 DELETE1_SIGNAL(out_INSERT_VAL ,_param->_nb_inst_insert,1); 47 DELETE1_SIGNAL( in_INSERT_ACK ,_param->_nb_inst_insert,1); 48 DELETE1_SIGNAL(out_INSERT_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id ); 49 DELETE1_SIGNAL(out_INSERT_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 50 DELETE1_SIGNAL(out_INSERT_READ_RA ,_param->_nb_inst_insert,1 ); 51 DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 52 DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 53 DELETE1_SIGNAL(out_INSERT_READ_RB ,_param->_nb_inst_insert,1 ); 54 DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 55 DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 56 DELETE1_SIGNAL(out_INSERT_READ_RC ,_param->_nb_inst_insert,1 ); 57 DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 58 DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register ); 59 DELETE1_SIGNAL(out_INSERT_WRITE_RD ,_param->_nb_inst_insert,1 ); 60 DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 61 DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register ); 62 DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register ); 63 DELETE1_SIGNAL(out_INSERT_WRITE_RE ,_param->_nb_inst_insert,1 ); 64 DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 65 DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register ); 66 DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register ); 71 67 72 delete [] in_RETIRE_VAL ; 73 delete [] out_RETIRE_ACK ; 74 if (_param->_have_port_front_end_id) 75 delete [] in_RETIRE_FRONT_END_ID ; 76 if (_param->_have_port_context_id) 77 delete [] in_RETIRE_CONTEXT_ID ; 78 delete [] in_RETIRE_READ_RA ; 79 delete [] in_RETIRE_NUM_REG_RA_PHY ; 80 delete [] in_RETIRE_READ_RB ; 81 delete [] in_RETIRE_NUM_REG_RB_PHY ; 82 delete [] in_RETIRE_READ_RC ; 83 delete [] in_RETIRE_NUM_REG_RC_PHY ; 84 delete [] in_RETIRE_WRITE_RD ; 85 delete [] in_RETIRE_NUM_REG_RD_LOG ; 86 delete [] in_RETIRE_NUM_REG_RD_PHY_OLD; 87 delete [] in_RETIRE_NUM_REG_RD_PHY_NEW; 88 delete [] in_RETIRE_WRITE_RE ; 89 delete [] in_RETIRE_NUM_REG_RE_LOG ; 90 delete [] in_RETIRE_NUM_REG_RE_PHY_OLD; 91 delete [] in_RETIRE_NUM_REG_RE_PHY_NEW; 68 DELETE1_SIGNAL( in_RETIRE_VAL ,_param->_nb_inst_retire,1); 69 DELETE1_SIGNAL(out_RETIRE_ACK ,_param->_nb_inst_retire,1); 70 DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id ); 71 DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id ); 72 DELETE1_SIGNAL( in_RETIRE_READ_RA ,_param->_nb_inst_retire,1 ); 73 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY ,_param->_nb_inst_retire,_param->_size_general_register ); 74 DELETE1_SIGNAL( in_RETIRE_READ_RB ,_param->_nb_inst_retire,1 ); 75 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RB_PHY ,_param->_nb_inst_retire,_param->_size_general_register ); 76 DELETE1_SIGNAL( in_RETIRE_READ_RC ,_param->_nb_inst_retire,1 ); 77 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RC_PHY ,_param->_nb_inst_retire,_param->_size_special_register ); 78 DELETE1_SIGNAL( in_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1 ); 79 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG ,_param->_nb_inst_retire,_param->_size_general_register_logic); 80 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register ); 81 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register ); 82 DELETE1_SIGNAL( in_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1 ); 83 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG ,_param->_nb_inst_retire,_param->_size_special_register_logic); 84 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register ); 85 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register ); 92 86 93 87 DELETE2_SIGNAL( in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1],1);
Note: See TracChangeset
for help on using the changeset viewer.