Changeset 123 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src
- Timestamp:
- Jun 8, 2009, 10:43:30 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State.cpp
r101 r123 39 39 usage_environment(_usage); 40 40 41 #if DEBUG_Context_State == true42 log_printf(INFO,Context_State,FUNCTION,_("<%s> Parameters"),_name.c_str());41 // #if DEBUG_Context_State == true 42 // log_printf(INFO,Context_State,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 43 44 std::cout << *param << std::endl;45 #endif44 // std::cout << *param << std::endl; 45 // #endif 46 46 47 47 log_printf(INFO,Context_State,FUNCTION,_("Allocation")); … … 139 139 // List dependency information 140 140 # endif 141 142 log_printf(INFO,Context_State,FUNCTION,_("Method - genMealy_context_event")); 143 144 SC_METHOD (genMealy_context_event); 145 dont_initialize (); 146 // sensitive << (*(in_CLOCK)).neg(); // use internal register 147 sensitive << (*(in_COMMIT_EVENT_VAL )); 148 if (_param->_have_port_context_id) 149 sensitive << (*(in_COMMIT_EVENT_CONTEXT_ID )); 150 for (uint32_t i=0; i<_param->_nb_inst_branch_complete; ++i) 151 { 152 sensitive << (*(in_BRANCH_COMPLETE_VAL [i])) 153 << (*(in_BRANCH_COMPLETE_MISS_PREDICTION [i])); 154 if (_param->_have_port_context_id) 155 sensitive << (*(in_BRANCH_COMPLETE_CONTEXT_ID [i])); 156 } 157 158 # ifdef SYSTEMCASS_SPECIFIC 159 // List dependency information 160 # endif 141 161 142 162 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_allocation.cpp
r119 r123 172 172 173 173 ALLOC1_SIGNAL_OUT(out_CONTEXT_DECOD_ENABLE ,"decod_enable",Tcontrol_t,1); 174 ALLOC1_SIGNAL_OUT(out_CONTEXT_EVENT ,"event" ,Tcontrol_t,1); 174 175 175 176 ALLOC1_INTERFACE_END(_param->_nb_context); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_deallocation.cpp
r119 r123 91 91 92 92 DELETE1_SIGNAL(out_CONTEXT_DECOD_ENABLE ,_param->_nb_context,1); 93 DELETE1_SIGNAL(out_CONTEXT_EVENT ,_param->_nb_context,1); 93 94 94 95 DELETE1_SIGNAL( in_DEPTH_MIN ,_param->_nb_context,_param->_size_depth); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_genMealy_decod_event.cpp
r102 r123 24 24 log_function(Context_State,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 27 29 { … … 49 51 50 52 internal_DECOD_EVENT_ACK [i] = ack; 51 PORT_WRITE(out_DECOD_EVENT_ACK [i], internal_DECOD_EVENT_ACK [i]);52 53 } 54 } 55 else 56 { 57 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 58 internal_DECOD_EVENT_ACK [i] = 0; 59 } 60 61 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 62 PORT_WRITE(out_DECOD_EVENT_ACK [i], internal_DECOD_EVENT_ACK [i]); 53 63 54 64 log_end(Context_State,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_genMoore.cpp
r119 r123 24 24 log_function(Context_State,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 // ------------------------------------------------------------------- 27 29 // -----[ EVENT ]----------------------------------------------------- … … 67 69 68 70 internal_EVENT_VAL [i] = val; 69 PORT_WRITE(out_EVENT_VAL [i], val);70 71 PORT_WRITE(out_EVENT_ADDRESS [i], address); 71 72 PORT_WRITE(out_EVENT_ADDRESS_NEXT [i], address_next); … … 97 98 internal_SPR_EVENT_VAL [i] = (state == CONTEXT_STATE_KO_EXCEP_SPR ); 98 99 99 PORT_WRITE(out_SPR_EVENT_VAL [i], internal_SPR_EVENT_VAL [i]);100 100 PORT_WRITE(out_SPR_EVENT_EPCR [i], reg_EVENT_ADDRESS_EPCR [i]); 101 101 PORT_WRITE(out_SPR_EVENT_EEAR [i], reg_EVENT_ADDRESS_EEAR [i]); … … 117 117 PORT_WRITE(out_CONTEXT_DECOD_ENABLE [i], (state==CONTEXT_STATE_OK)); 118 118 } 119 } 120 else 121 { 122 for (uint32_t i=0; i<_param->_nb_context; i++) 123 { 124 internal_EVENT_VAL [i] = 0; 125 internal_SPR_EVENT_VAL [i] = 0; 126 127 PORT_WRITE(out_CONTEXT_DECOD_ENABLE [i], 0); 128 } 129 } 130 131 // Write output 132 for (uint32_t i=0; i<_param->_nb_context; i++) 133 { 134 PORT_WRITE(out_EVENT_VAL [i], internal_EVENT_VAL [i]); 135 PORT_WRITE(out_SPR_EVENT_VAL [i], internal_SPR_EVENT_VAL [i]); 136 } 119 137 120 138 log_end(Context_State,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp
r122 r123 16 16 namespace context_state { 17 17 18 #define MISS_FAST 18 // #define MANAGE_EVENT MANAGE_EVENT_WAIT_ALL 19 // #define MANAGE_EVENT MANAGE_EVENT_WAIT_DECODE 20 #define MANAGE_EVENT MANAGE_EVENT_NO_WAIT 19 21 20 22 #define get_priority(x) \ 21 23 (((state == CONTEXT_STATE_KO_MISS_LOAD_ADDR ) or \ 24 (state == CONTEXT_STATE_KO_MISS_LOAD_WAITEND ) or \ 22 25 (state == CONTEXT_STATE_KO_MISS_LOAD_AND_BRANCH_ADDR ) or \ 23 (state == CONTEXT_STATE_KO_MISS_LOAD_WAITEND ) or \24 26 (state == CONTEXT_STATE_KO_MISS_LOAD_AND_BRANCH_WAITEND ) or \ 25 27 (state == CONTEXT_STATE_KO_MISS_LOAD_AND_BRANCH_WAIT_UPDATE))?3: \ … … 43 45 reg_STATE [i] = CONTEXT_STATE_OK; 44 46 reg_INTERRUPT_ENABLE [i] = 0; 47 reg_EVENT_DEPTH [i] = 0; // unacessary 45 48 } 46 49 } … … 59 62 Tcounter_t inst_all = inst_commit_all + inst_decod_all; 60 63 // Tcounter_t inst_mem = inst_commit_mem + inst_decod_all; 64 bool condition = ( (MANAGE_EVENT == MANAGE_EVENT_WAIT_ALL )?(inst_all == 0): 65 ((MANAGE_EVENT == MANAGE_EVENT_WAIT_DECODE)?(inst_decod_all == 0): 66 true)); 61 67 62 68 context_state_t state = reg_STATE [i]; … … 89 95 case CONTEXT_STATE_KO_MISS_BRANCH_WAITEND : 90 96 { 91 // Wait end of all instruction 92 // if (inst_all == 0) 93 if ( 94 #ifdef MISS_FAST 95 inst_decod_all == 96 #else 97 inst_all == 98 #endif 99 0) 100 97 if (condition) 101 98 // state = CONTEXT_STATE_OK; 102 99 state = CONTEXT_STATE_KO_MISS_BRANCH_ADDR; … … 106 103 { 107 104 // Wait end of all instruction 108 // if (inst_all == 0) 109 if ( 110 #ifdef MISS_FAST 111 inst_decod_all == 112 #else 113 inst_all == 114 #endif 115 0) 105 if (condition) 116 106 state = CONTEXT_STATE_KO_MISS_LOAD_ADDR; 117 107 … … 146 136 { 147 137 // Wait end of all instruction 148 // if (inst_all == 0) 149 if ( 150 #ifdef MISS_FAST 151 inst_decod_all == 152 #else 153 inst_all == 154 #endif 155 0) 138 if (condition) 156 139 // state = CONTEXT_STATE_OK; // @@@ TODO : make MISS fast (miss decod) 157 140 state = CONTEXT_STATE_KO_MISS_LOAD_AND_BRANCH_ADDR; … … 333 316 #endif 334 317 318 log_printf(TRACE,Context_State,FUNCTION," * state : %s",toString(state).c_str()); 335 319 log_printf(TRACE,Context_State,FUNCTION," * depth : %d",depth ); 336 320 log_printf(TRACE,Context_State,FUNCTION," * depth_cur : %d",depth_cur ); … … 648 632 } 649 633 } 634 635 depth = (depth+1)%_param->_nb_inst_branch_speculated[context]; 636 650 637 break; 651 638 }
Note: See TracChangeset
for help on using the changeset viewer.