Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src
- 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/Stat_List_unit/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
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)
Note: See TracChangeset
for help on using the changeset viewer.