Changeset 136 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit
- Timestamp:
- Oct 20, 2009, 8:52:15 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Decod.h
r110 r136 72 72 public : SC_OUT(Tcontrol_t ) *** out_IFETCH_ACK ;//[nb_context][nb_inst_fetch] 73 73 public : SC_IN (Tinstruction_t ) *** in_IFETCH_INSTRUCTION ;//[nb_context][nb_inst_fetch] 74 public : SC_IN (Tcontext_t ) ** in_IFETCH_CONTEXT_ID ;//[nb_context]75 public : SC_IN (Tgeneral_address_t ) ** in_IFETCH_ADDRESS ;//[nb_context]76 //public : SC_IN (Tgeneral_address_t ) ** in_IFETCH_ADDRESS_NEXT ;//[nb_context]77 public : SC_IN (Tinst_ifetch_ptr_t ) ** in_IFETCH_INST_IFETCH_PTR ;//[nb_context]78 public : SC_IN (Tbranch_state_t ) ** in_IFETCH_BRANCH_STATE ;//[nb_context]79 public : SC_IN (Tprediction_ptr_t ) ** in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;//[nb_context]80 public : SC_IN (Texception_t ) ** in_IFETCH_EXCEPTION ;//[nb_context]74 public : SC_IN (Tcontext_t ) *** in_IFETCH_CONTEXT_ID ;//[nb_context][nb_inst_fetch] 75 public : SC_IN (Tgeneral_address_t ) *** in_IFETCH_ADDRESS ;//[nb_context][nb_inst_fetch] 76 //public : SC_IN (Tgeneral_address_t ) *** in_IFETCH_ADDRESS_NEXT ;//[nb_context][nb_inst_fetch] 77 //public : SC_IN (Tinst_ifetch_ptr_t ) *** in_IFETCH_INST_IFETCH_PTR ;//[nb_context][nb_inst_fetch] 78 public : SC_IN (Tbranch_state_t ) *** in_IFETCH_BRANCH_STATE ;//[nb_context][nb_inst_fetch] 79 public : SC_IN (Tprediction_ptr_t ) *** in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;//[nb_context][nb_inst_fetch] 80 public : SC_IN (Texception_t ) *** in_IFETCH_EXCEPTION ;//[nb_context][nb_inst_fetch] 81 81 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 82 public : SC_OUT(Tcontrol_t ) ** out_DECOD_VAL ;//[nb_inst_decod] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod.cpp
r132 r136 94 94 { 95 95 for (uint32_t j=0; j<_param->_nb_inst_fetch [i]; j++) 96 sensitive << (*(in_IFETCH_VAL [i][j])) 97 << (*(in_IFETCH_INSTRUCTION [i][j])); 98 sensitive << (*(in_IFETCH_ADDRESS [i])) 99 // << (*(in_IFETCH_ADDRESS_NEXT [i])) 100 << (*(in_IFETCH_BRANCH_STATE [i])) 101 << (*(in_IFETCH_EXCEPTION [i])) 102 << (*(in_CONTEXT_DECOD_ENABLE [i])); 103 if (_param->_have_port_context_id) 104 sensitive << (*(in_IFETCH_CONTEXT_ID [i])); 105 if (_param->_have_port_depth) 106 sensitive << (*(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i])); 107 sensitive << (*(in_CONTEXT_DEPTH_VAL [i])); 96 { 97 sensitive << (*(in_IFETCH_VAL [i][j])) 98 << (*(in_IFETCH_INSTRUCTION [i][j])) 99 << (*(in_IFETCH_ADDRESS [i][j])) 100 // << (*(in_IFETCH_ADDRESS_NEXT [i][j])) 101 << (*(in_IFETCH_BRANCH_STATE [i][j])) 102 << (*(in_IFETCH_EXCEPTION [i][j])); 103 104 if (_param->_have_port_context_id) 105 sensitive << (*(in_IFETCH_CONTEXT_ID [i][j])); 106 if (_param->_have_port_depth) 107 sensitive << (*(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i][j])); 108 // if (_param->_have_port_inst_ifetch_ptr) 109 // sensitive << (*(in_IFETCH_INST_IFETCH_PTR [i][j])); 110 } 111 sensitive << (*(in_CONTEXT_DECOD_ENABLE [i])) 112 << (*(in_CONTEXT_DEPTH_VAL [i])); 108 113 if (_param->_have_port_depth) 109 114 sensitive << (*(in_CONTEXT_DEPTH [i])); 110 if (_param->_have_port_inst_ifetch_ptr)111 sensitive << (*(in_IFETCH_INST_IFETCH_PTR [i]));112 115 } 113 116 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp
r112 r136 61 61 62 62 63 _ALLOC2_VALACK_IN ( in_IFETCH_VAL ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]); 64 _ALLOC2_VALACK_OUT(out_IFETCH_ACK ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]); 65 _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[it1]); 63 _ALLOC2_VALACK_IN ( in_IFETCH_VAL ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]); 64 _ALLOC2_VALACK_OUT(out_IFETCH_ACK ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]); 65 _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION ,"instruction" ,Tinstruction_t ,_param->_size_instruction ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 66 _ALLOC2_SIGNAL_IN (in_IFETCH_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 67 _ALLOC2_SIGNAL_IN (in_IFETCH_ADDRESS ,"address" ,Tgeneral_address_t ,_param->_size_instruction_address,_param->_nb_context, _param->_nb_inst_fetch[it1]); 68 // _ALLOC2_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT ,"address_next" ,Tgeneral_address_t ,_param->_size_instruction_address,_param->_nb_context, _param->_nb_inst_fetch[it1]); 69 // _ALLOC2_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 70 _ALLOC2_SIGNAL_IN (in_IFETCH_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 71 _ALLOC2_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 72 _ALLOC2_SIGNAL_IN (in_IFETCH_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 66 73 67 74 ALLOC2_INTERFACE_END(_param->_nb_context, _param->_nb_inst_fetch[it1]); 68 }69 {70 ALLOC1_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context);71 72 73 ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id );74 ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS ,"address" ,Tgeneral_address_t ,_param->_size_instruction_address );75 // ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT ,"address_next" ,Tgeneral_address_t ,_param->_size_instruction_address );76 ALLOC1_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr );77 ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state );78 ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth );79 ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch);80 81 ALLOC1_INTERFACE_END(_param->_nb_context);82 75 } 83 76 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_deallocation.cpp
r112 r136 29 29 delete in_NRESET; 30 30 31 DELETE2_SIGNAL( in_IFETCH_VAL , _param->_nb_context, _param->_nb_inst_fetch[it1],1); 32 DELETE2_SIGNAL(out_IFETCH_ACK , _param->_nb_context, _param->_nb_inst_fetch[it1],1); 33 DELETE2_SIGNAL( in_IFETCH_INSTRUCTION, _param->_nb_context, _param->_nb_inst_fetch[it1],_param->_size_instruction); 34 35 DELETE1_SIGNAL(in_IFETCH_CONTEXT_ID , _param->_nb_context,_param->_size_context_id ); 36 DELETE1_SIGNAL(in_IFETCH_ADDRESS , _param->_nb_context,_param->_size_instruction_address ); 37 // DELETE1_SIGNAL(in_IFETCH_ADDRESS_NEXT , _param->_nb_context,_param->_size_instruction_address ); 38 DELETE1_SIGNAL(in_IFETCH_INST_IFETCH_PTR , _param->_nb_context,_param->_size_inst_ifetch_ptr ); 39 DELETE1_SIGNAL(in_IFETCH_BRANCH_STATE , _param->_nb_context,_param->_size_branch_state ); 40 DELETE1_SIGNAL(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID, _param->_nb_context,_param->_size_depth ); 41 DELETE1_SIGNAL(in_IFETCH_EXCEPTION , _param->_nb_context,_param->_size_exception_ifetch); 31 DELETE2_SIGNAL( in_IFETCH_VAL ,_param->_nb_context,_param->_nb_inst_fetch[it1],1); 32 DELETE2_SIGNAL(out_IFETCH_ACK ,_param->_nb_context,_param->_nb_inst_fetch[it1],1); 33 DELETE2_SIGNAL( in_IFETCH_INSTRUCTION ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction); 34 DELETE2_SIGNAL( in_IFETCH_CONTEXT_ID ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_context_id ); 35 DELETE2_SIGNAL( in_IFETCH_ADDRESS ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction_address ); 36 // DELETE2_SIGNAL( in_IFETCH_ADDRESS_NEXT ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction_address ); 37 // DELETE2_SIGNAL( in_IFETCH_INST_IFETCH_PTR ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_inst_ifetch_ptr ); 38 DELETE2_SIGNAL( in_IFETCH_BRANCH_STATE ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_branch_state ); 39 DELETE2_SIGNAL( in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_depth ); 40 DELETE2_SIGNAL( in_IFETCH_EXCEPTION ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_exception_ifetch); 42 41 43 42 DELETE1_SIGNAL(out_DECOD_VAL ,_param->_nb_inst_decod,1); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp
r135 r136 99 99 ifetch_ack [x][y] = PORT_READ(in_DECOD_ACK [i]); // fetch_val and decod_enable and decod_ack 100 100 101 Tgeneral_data_t addr = PORT_READ(in_IFETCH_ADDRESS [x] )+y;101 Tgeneral_data_t addr = PORT_READ(in_IFETCH_ADDRESS [x][y]); 102 102 103 103 _decod_instruction->_instruction = PORT_READ(in_IFETCH_INSTRUCTION [x][y]); … … 132 132 133 133 // Test IFetch exception 134 Texception_t ifetch_exception = PORT_READ(in_IFETCH_EXCEPTION [x] );134 Texception_t ifetch_exception = PORT_READ(in_IFETCH_EXCEPTION [x][y]); 135 135 136 136 if (ifetch_exception == EXCEPTION_IFETCH_NONE) … … 232 232 } 233 233 234 Tbranch_state_t ifetch_branch_state = PORT_READ(in_IFETCH_BRANCH_STATE [x][y]); 234 235 if (_param->_have_port_context_id) 235 236 PORT_WRITE(out_PREDICT_CONTEXT_ID [i],x); 236 PORT_WRITE(out_PREDICT_MATCH_INST_IFETCH_PTR [i],y == ((_param->_have_port_inst_ifetch_ptr)?PORT_READ(in_IFETCH_INST_IFETCH_PTR [x]):0)); 237 PORT_WRITE(out_PREDICT_BRANCH_STATE [i],PORT_READ(in_IFETCH_BRANCH_STATE [x])); 237 // PORT_WRITE(out_PREDICT_MATCH_INST_IFETCH_PTR [i],y == ((_param->_have_port_inst_ifetch_ptr)?PORT_READ(in_IFETCH_INST_IFETCH_PTR [x]):0)); 238 PORT_WRITE(out_PREDICT_MATCH_INST_IFETCH_PTR [i],ifetch_branch_state != BRANCH_STATE_NONE); 239 240 PORT_WRITE(out_PREDICT_BRANCH_STATE [i],ifetch_branch_state); 238 241 if (_param->_have_port_depth) 239 PORT_WRITE(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [i],PORT_READ(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [x] ));242 PORT_WRITE(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [i],PORT_READ(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [x][y])); 240 243 PORT_WRITE(out_PREDICT_BRANCH_CONDITION [i],_decod_instruction->_branch_condition ); 241 244 // PORT_WRITE(out_PREDICT_BRANCH_STACK_WRITE [i],_decod_instruction->_branch_stack_write); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Decod_queue.h
r123 r136 56 56 private : counter_t * _stat_use_queue; 57 57 58 private : counter_t * _stat_ sum_inst_enable;59 private : counter_t * _stat_ sum_transaction_decod_in;60 private : counter_t * _stat_ average_occupation_bundle;58 private : counter_t * _stat_decode_in_empty ; 59 private : counter_t * _stat_decode_in_full ; 60 private : counter_t * _stat_decode_in_average; 61 61 #endif 62 62 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_transition.cpp
r124 r136 51 51 { 52 52 #ifdef STATISTICS 53 bool find = false; 54 #endif 53 uint32_t nb_decod_in = 0; 54 #endif 55 55 56 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 56 57 if (PORT_READ(in_DECOD_IN_VAL [i]) and internal_DECOD_IN_ACK[i]) 57 58 { 58 59 log_printf(TRACE,Decod_queue,FUNCTION,_(" * DECOD_IN [%d]"),i); 59 60 61 #ifdef STATISTICS 62 nb_decod_in ++; 63 #endif 64 60 65 // Create entry 61 66 decod_queue_entry_t * entry = new decod_queue_entry_t (1); 62 67 reg_QUEUE[reg_NUM_BANK_TAIL].push_back(entry); 63 68 64 #ifdef STATISTICS65 find = true;66 if (usage_is_set(_usage,USE_STATISTICS))67 (*_stat_sum_inst_enable) ++;68 #endif69 70 69 Tcontext_t context = (_param->_have_port_context_id)?PORT_READ(in_DECOD_IN_CONTEXT_ID [i]):0; 71 70 … … 107 106 108 107 #ifdef STATISTICS 109 if (usage_is_set(_usage,USE_STATISTICS)) 110 if (find) 111 (*_stat_sum_transaction_decod_in) ++; 108 if (usage_is_set(_usage,USE_STATISTICS)) 109 { 110 if (nb_decod_in > 0) 111 { 112 if (nb_decod_in == _param->_nb_inst_decod) 113 (*_stat_decode_in_full) ++; 114 else 115 (*_stat_decode_in_average) += nb_decod_in; 116 } 117 else 118 { 119 (*_stat_decode_in_empty) ++; 120 } 121 } 112 122 #endif 113 123 } … … 208 218 { 209 219 for (uint32_t i=0; i<_param->_nb_bank; ++i) 210 *(_stat_use_queue) += reg_QUEUE[i].size();220 (*_stat_use_queue) += reg_QUEUE[i].size(); 211 221 for (uint32_t i=0; i<_param->_nb_context; i++) 212 *(_stat_nb_inst [i]) += reg_NB_INST [i];222 (*_stat_nb_inst [i]) += reg_NB_INST [i]; 213 223 } 214 224 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_transition.cpp
r123 r136 46 46 //-----[ DECOD_IN ]--------------------------------------------------- 47 47 //-------------------------------------------------------------------- 48 { 48 49 decod_queue_entry_t * entry = NULL; 50 51 #ifdef STATISTICS 52 uint32_t nb_decod_in = 0; 53 #endif 54 49 55 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 50 56 { … … 58 64 entry = new decod_queue_entry_t (_param->_nb_inst_decod); 59 65 reg_QUEUE->push_back(entry); 60 61 #ifdef STATISTICS62 if (usage_is_set(_usage,USE_STATISTICS))63 (*_stat_sum_transaction_decod_in) ++;64 #endif65 66 } 66 67 67 68 #ifdef STATISTICS 68 if (usage_is_set(_usage,USE_STATISTICS)) 69 (*_stat_sum_inst_enable) ++; 69 nb_decod_in ++; 70 70 #endif 71 71 … … 106 106 } 107 107 } 108 109 #ifdef STATISTICS 110 if (usage_is_set(_usage,USE_STATISTICS)) 111 { 112 if (nb_decod_in > 0) 113 { 114 if (nb_decod_in == _param->_nb_inst_decod) 115 (*_stat_decode_in_full) ++; 116 else 117 (*_stat_decode_in_average) += nb_decod_in; 118 } 119 else 120 { 121 (*_stat_decode_in_empty) ++; 122 } 123 } 124 #endif 125 } 108 126 109 127 //-------------------------------------------------------------------- … … 217 235 if (usage_is_set(_usage,USE_STATISTICS)) 218 236 { 219 *(_stat_use_queue) += reg_QUEUE->size();237 (*_stat_use_queue) += reg_QUEUE->size(); 220 238 for (uint32_t i=0; i<_param->_nb_context; i++) 221 *(_stat_nb_inst [i]) += reg_NB_INST [i];239 (*_stat_nb_inst [i]) += reg_NB_INST [i]; 222 240 } 223 241 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_statistics_allocation.cpp
r110 r136 17 17 namespace decod_queue { 18 18 19 20 19 #undef FUNCTION 21 20 #define FUNCTION "Decod_queue::statistics_allocation" … … 29 28 param_statistics); 30 29 31 _stat_ sum_transaction_decod_in = _stat->create_variable("sum_transaction_decod_in");32 _stat_ sum_inst_enable = _stat->create_variable("sum_inst_enable");33 _stat_ average_occupation_bundle= _stat->create_counter ("average_occupation_bundle", "", "Occupation average of instruction's bundle.");30 _stat_decode_in_empty = _stat->create_counter ("decode_in_empty" , "", "Number cycle with no input instruction."); 31 _stat_decode_in_full = _stat->create_counter ("decode_in_full" , "", toString("Number cycle with full input instruction (%d).",_param->_nb_inst_decod)); 32 _stat_decode_in_average = _stat->create_counter ("decode_in_average", "", "Average decod instruction."); 34 33 35 _stat->create_expr ("average_occupation_bundle" ,"/ sum_inst_enable sum_transaction_decod_in");36 _stat->create_expr_percent ("percent_ occupation_bundle" ,"average_occupation_bundle", toString(_param->_nb_inst_decod),"Percent of instruction's bundle occupation.");34 _stat->create_expr_average_by_cycle("average_decod_in", toString("+ * decode_in_full %d decode_in_average",_param->_nb_inst_decod), "", "Average instruction from decode unit"); 35 _stat->create_expr_percent ("percent_decod_in" ,"average_decod_in", toString(_param->_nb_inst_decod),"Percent of instruction's bundle occupation."); 37 36 38 37 _stat_use_queue = _stat->create_variable ("use_queue"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Decod_unit.h
r123 r136 70 70 public : SC_OUT(Tcontrol_t ) *** out_IFETCH_ACK ;//[nb_context][nb_inst_fetch] 71 71 public : SC_IN (Tinstruction_t ) *** in_IFETCH_INSTRUCTION ;//[nb_context][nb_inst_fetch] 72 public : SC_IN (Tcontext_t ) ** in_IFETCH_CONTEXT_ID ;//[nb_context]73 public : SC_IN (Tgeneral_address_t ) ** in_IFETCH_ADDRESS ;//[nb_context]74 //public : SC_IN (Tgeneral_address_t ) ** in_IFETCH_ADDRESS_NEXT ;//[nb_context]75 public : SC_IN (Tinst_ifetch_ptr_t ) ** in_IFETCH_INST_IFETCH_PTR ;//[nb_context]76 public : SC_IN (Tbranch_state_t ) ** in_IFETCH_BRANCH_STATE ;//[nb_context]77 public : SC_IN (Tprediction_ptr_t ) ** in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;//[nb_context]78 public : SC_IN (Texception_t ) ** in_IFETCH_EXCEPTION ;//[nb_context]72 public : SC_IN (Tcontext_t ) *** in_IFETCH_CONTEXT_ID ;//[nb_context][nb_inst_fetch] 73 public : SC_IN (Tgeneral_address_t ) *** in_IFETCH_ADDRESS ;//[nb_context][nb_inst_fetch] 74 //public : SC_IN (Tgeneral_address_t ) *** in_IFETCH_ADDRESS_NEXT ;//[nb_context][nb_inst_fetch] 75 //public : SC_IN (Tinst_ifetch_ptr_t ) *** in_IFETCH_INST_IFETCH_PTR ;//[nb_context][nb_inst_fetch] 76 public : SC_IN (Tbranch_state_t ) *** in_IFETCH_BRANCH_STATE ;//[nb_context][nb_inst_fetch] 77 public : SC_IN (Tprediction_ptr_t ) *** in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;//[nb_context][nb_inst_fetch] 78 public : SC_IN (Texception_t ) *** in_IFETCH_EXCEPTION ;//[nb_context][nb_inst_fetch] 79 79 80 80 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_allocation.cpp
r123 r136 15 15 namespace front_end { 16 16 namespace decod_unit { 17 18 19 17 20 18 #undef FUNCTION … … 60 58 ALLOC2_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context, _param->_nb_inst_fetch[it1]); 61 59 62 _ALLOC2_VALACK_IN ( in_IFETCH_VAL ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]); 63 _ALLOC2_VALACK_OUT(out_IFETCH_ACK ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]); 64 _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[it1]); 60 _ALLOC2_VALACK_IN ( in_IFETCH_VAL ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]); 61 _ALLOC2_VALACK_OUT(out_IFETCH_ACK ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]); 62 _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION ,"instruction" ,Tinstruction_t ,_param->_size_instruction ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 63 _ALLOC2_SIGNAL_IN (in_IFETCH_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 64 _ALLOC2_SIGNAL_IN (in_IFETCH_ADDRESS ,"address" ,Tgeneral_address_t ,_param->_size_instruction_address,_param->_nb_context, _param->_nb_inst_fetch[it1]); 65 // _ALLOC2_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT ,"address_next" ,Tgeneral_address_t ,_param->_size_instruction_address,_param->_nb_context, _param->_nb_inst_fetch[it1]); 66 // _ALLOC2_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 67 _ALLOC2_SIGNAL_IN (in_IFETCH_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 68 _ALLOC2_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 69 _ALLOC2_SIGNAL_IN (in_IFETCH_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch ,_param->_nb_context, _param->_nb_inst_fetch[it1]); 65 70 66 71 ALLOC2_INTERFACE_END(_param->_nb_context, _param->_nb_inst_fetch[it1]); 67 }68 {69 ALLOC1_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context);70 71 ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id );72 ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS ,"address" ,Tgeneral_address_t ,_param->_size_instruction_address );73 // ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT ,"address_next" ,Tgeneral_address_t ,_param->_size_instruction_address );74 ALLOC1_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr );75 ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state );76 ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth );77 ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch);78 79 ALLOC1_INTERFACE_END(_param->_nb_context);80 72 } 81 73 … … 261 253 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_INSTRUCTION", 262 254 dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_INSTRUCTION"); 255 if (_param->_have_port_context_id) 256 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID" , 257 dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID" ); 258 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_ADDRESS" , 259 dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_ADDRESS" ); 260 // PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT" , 261 // dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT" ); 262 // if (_param->_have_port_inst_ifetch_ptr) 263 // PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_INST_IFETCH_PTR" , 264 // dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_INST_IFETCH_PTR" ); 265 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_BRANCH_STATE" , 266 dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_BRANCH_STATE" ); 267 if (_param->_have_port_depth) 268 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_BRANCH_UPDATE_PREDICTION_ID", 269 dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_BRANCH_UPDATE_PREDICTION_ID"); 270 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_EXCEPTION" , 271 dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_EXCEPTION" ); 263 272 } 264 265 #ifdef POSITION 266 _component->interface_map (src ,"ifetch_"+toString(i), 267 dest,"ifetch_"+toString(i)); 268 #endif 269 270 if (_param->_have_port_context_id) 271 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_CONTEXT_ID" , 272 dest, "in_IFETCH_"+toString(i)+"_CONTEXT_ID" ); 273 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_ADDRESS" , 274 dest, "in_IFETCH_"+toString(i)+"_ADDRESS" ); 275 // PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_ADDRESS_NEXT" , 276 // dest, "in_IFETCH_"+toString(i)+"_ADDRESS_NEXT" ); 277 if (_param->_have_port_inst_ifetch_ptr) 278 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_INST_IFETCH_PTR" , 279 dest, "in_IFETCH_"+toString(i)+"_INST_IFETCH_PTR" ); 280 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_BRANCH_STATE" , 281 dest, "in_IFETCH_"+toString(i)+"_BRANCH_STATE" ); 282 if (_param->_have_port_depth) 283 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID", 284 dest, "in_IFETCH_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID"); 285 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_EXCEPTION" , 286 dest, "in_IFETCH_"+toString(i)+"_EXCEPTION" ); 273 287 274 } 288 275 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_deallocation.cpp
r128 r136 28 28 delete in_NRESET; 29 29 30 DELETE2_SIGNAL( in_IFETCH_VAL ,_param->_nb_context, _param->_nb_inst_fetch[it1],1); 31 DELETE2_SIGNAL(out_IFETCH_ACK ,_param->_nb_context, _param->_nb_inst_fetch[it1],1); 32 DELETE2_SIGNAL( in_IFETCH_INSTRUCTION ,_param->_nb_context, _param->_nb_inst_fetch[it1],_param->_size_instruction); 33 34 DELETE1_SIGNAL(in_IFETCH_CONTEXT_ID ,_param->_nb_context,_param->_size_context_id ); 35 DELETE1_SIGNAL(in_IFETCH_ADDRESS ,_param->_nb_context,_param->_size_instruction_address); 36 // DELETE1_SIGNAL(in_IFETCH_ADDRESS_NEXT ,_param->_nb_context,_param->_size_instruction_address); 37 DELETE1_SIGNAL(in_IFETCH_INST_IFETCH_PTR ,_param->_nb_context,_param->_size_inst_ifetch_ptr ); 38 DELETE1_SIGNAL(in_IFETCH_BRANCH_STATE ,_param->_nb_context,_param->_size_branch_state ); 39 DELETE1_SIGNAL(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ,_param->_nb_context,_param->_size_depth ); 40 DELETE1_SIGNAL(in_IFETCH_EXCEPTION ,_param->_nb_context,_param->_size_exception_ifetch); 30 DELETE2_SIGNAL( in_IFETCH_VAL ,_param->_nb_context,_param->_nb_inst_fetch[it1],1); 31 DELETE2_SIGNAL(out_IFETCH_ACK ,_param->_nb_context,_param->_nb_inst_fetch[it1],1); 32 DELETE2_SIGNAL( in_IFETCH_INSTRUCTION ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction); 33 DELETE2_SIGNAL(in_IFETCH_CONTEXT_ID ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_context_id ); 34 DELETE2_SIGNAL(in_IFETCH_ADDRESS ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction_address); 35 // DELETE2_SIGNAL(in_IFETCH_ADDRESS_NEXT ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction_address); 36 // DELETE2_SIGNAL(in_IFETCH_INST_IFETCH_PTR ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_inst_ifetch_ptr ); 37 DELETE2_SIGNAL(in_IFETCH_BRANCH_STATE ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_branch_state ); 38 DELETE2_SIGNAL(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_depth ); 39 DELETE2_SIGNAL(in_IFETCH_EXCEPTION ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_exception_ifetch ); 41 40 42 41 DELETE1_SIGNAL(out_DECOD_VAL ,_param->_nb_inst_decod,1);
Note: See TracChangeset
for help on using the changeset viewer.