Changeset 123 for trunk/IPs/systemC
- Timestamp:
- Jun 8, 2009, 10:43:30 PM (16 years ago)
- Location:
- trunk/IPs/systemC
- Files:
-
- 2 added
- 261 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/Environment/Data/src/Segment_init.cpp
r88 r123 10 10 int size = this->size; 11 11 int offset = 0; 12 12 13 13 loadexec(&ptab,&size,&offset,filename,sections); 14 14 15 15 // std::cout << " - size : " << size << std::endl; 16 16 // std::cout << " - offset : " << offset << std::endl; -
trunk/IPs/systemC/Environment/src/Environment.cpp
r112 r123 11 11 12 12 component_cache = new cache::Cache ("cache", param->param_cache); 13 14 13 component_tty = new tty::TTY * [param->nb_component_tty]; 15 14 for (uint32_t i=0; i<param->nb_component_tty; i++) 16 15 component_tty [i] = new tty::TTY ("tty_"+i ,param->param_tty [i]); 17 18 16 component_ramlock = new ramlock::RamLock * [param->nb_component_ramlock]; 19 17 for (uint32_t i=0; i<param->nb_component_ramlock; i++) 20 18 component_ramlock [i] = new ramlock::RamLock ("ramlock_"+i,param->param_ramlock [i]); 21 22 19 component_sim2os = new sim2os::Sim2OS ("sim2os" ,param->param_sim2os ); 23 20 component_data = new data::Data ("data" ,param->param_data ); 24 25 21 component_buffer_irsp = new queue::Sort_Queue<irsp_t*> * [param->nb_entity]; 26 22 component_buffer_drsp = new queue::Sort_Queue<drsp_t*> * [param->nb_entity]; … … 60 56 entity.segment->define_target(data::TYPE_TARGET_SIM2OS,0); 61 57 } 62 63 58 64 59 for (uint32_t i=0; i<param->nb_entity; i++) … … 201 196 dcache_rsp_val [i] = new Tcontrol_t [param->dcache_dedicated_nb_port[i]]; 202 197 } 198 203 199 // *****[ Definition of method ]***** 204 200 SC_METHOD (transition); … … 209 205 dont_initialize (); 210 206 sensitive << (*(CLOCK)).neg(); 207 211 208 } 212 209 -
trunk/IPs/systemC/Environment/src/Environment_transition.cpp
r117 r123 501 501 502 502 _cout(ENVIRONMENT," * Rdata : "); 503 for (uint32_t i=0; i<nb_bytes; i++)504 __cout(ENVIRONMENT,"%.2x",0xff&static_cast<uint32_t>(read_dram[0][ i]));503 for (uint32_t x=0; x<nb_bytes; x++) 504 __cout(ENVIRONMENT,"%.2x",0xff&static_cast<uint32_t>(read_dram[0][x])); 505 505 _cout(ENVIRONMENT,".\n"); 506 506 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue.cpp
r122 r123 37 37 usage_environment(_usage); 38 38 39 #if DEBUG_Core_Glue == true40 log_printf(INFO,Core_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());41 42 std::cout << *param << std::endl;43 #endif39 // #if DEBUG_Core_Glue == true 40 // log_printf(INFO,Core_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 41 42 // std::cout << *param << std::endl; 43 // #endif 44 44 45 45 log_printf(INFO,Core_Glue,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_branch_complete.cpp
r98 r123 33 33 BRANCH_COMPLETE_OOO_ENGINE_ACK [i][j] = 0; 34 34 35 if (PORT_READ(in_NRESET)) 36 { 35 37 for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i) 36 38 for (uint32_t j=0; j<_param->_ooo_engine_nb_inst_branch_complete[i]; ++j) … … 54 56 PORT_WRITE(out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION [i][j], PORT_READ(in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION [num_front_end][j])); 55 57 } 58 } 56 59 57 60 for (uint32_t i=0; i<_param->_nb_front_end; ++i) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_commit_event.cpp
r105 r123 32 32 COMMIT_EVENT_OOO_ENGINE_ACK [i] = 0; 33 33 34 if (PORT_READ(in_NRESET)) 35 { 34 36 for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i) 35 37 { … … 57 59 } 58 60 61 } 62 59 63 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 60 64 PORT_WRITE(out_COMMIT_EVENT_FRONT_END_VAL [i], COMMIT_EVENT_FRONT_END_VAL [i]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_execute.cpp
r88 r123 34 34 EXECUTE_EXECUTE_LOOP_ACK [i][j] = 0; 35 35 36 if (PORT_READ(in_NRESET)) 37 { 36 38 37 39 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) … … 60 62 PORT_WRITE(out_EXECUTE_OOO_ENGINE_DATA [num_ooo_engine][num_execute_loop][j], PORT_READ(in_EXECUTE_EXECUTE_LOOP_DATA [i][j])); 61 63 } 64 } 62 65 63 66 for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_insert.cpp
r109 r123 22 22 log_function(Core_Glue,FUNCTION,_name.c_str()); 23 23 24 if (PORT_READ(in_NRESET)) 25 { 24 26 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 25 27 for (uint32_t j=0; j<_param->_execute_loop_nb_ooo_engine[i]; ++j) … … 50 52 } 51 53 } 54 } 55 else 56 { 57 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 58 for (uint32_t j=0; j<_param->_execute_loop_nb_ooo_engine[i]; ++j) 59 { 60 Tcontext_t num_ooo_engine = _param->_translate_execute_loop_num_ooo_engine [i][j]; 61 62 for (uint32_t k=0; k<_param->_execute_loop_nb_inst_insert[i][j]; ++k) 63 { 64 PORT_WRITE(out_INSERT_OOO_ENGINE_ACK [num_ooo_engine][k],0); 65 PORT_WRITE(out_INSERT_EXECUTE_LOOP_VAL [i][j][k],0); 66 } 67 } 68 } 52 69 53 70 log_end(Core_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_issue.cpp
r122 r123 64 64 Tcontrol_t ISSUE_OOO_ENGINE_ACK [_param->_nb_ooo_engine ][_param->_max_nb_inst_issue_queue]; 65 65 Tcontrol_t ISSUE_EXECUTE_LOOP_VAL [_param->_nb_execute_loop][_param->_max_nb_read_unit]; 66 67 for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i) 68 for (uint32_t j=0; j<_param->_nb_inst_issue_queue[i]; ++j) 69 ISSUE_OOO_ENGINE_ACK [i][j] = 0; 70 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 71 for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j) 72 ISSUE_EXECUTE_LOOP_VAL [i][j] = 0; 73 74 if (PORT_READ(in_NRESET)) 75 { 66 76 Tcontrol_t READ_UNIT_ENABLE [_param->_nb_execute_loop][_param->_max_nb_read_unit]; 67 77 Tcontrol_t SLOT_ENABLE [_param->_nb_ooo_engine ][_param->_max_nb_inst_issue_slot]; … … 69 79 // Init -> all at 0 70 80 for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i) 71 { 72 for (uint32_t j=0; j<_param->_nb_inst_issue_queue[i]; ++j) 73 ISSUE_OOO_ENGINE_ACK [i][j] = 0; 74 for (uint32_t j=0; j<_param->_nb_inst_issue_slot[i]; ++j) 75 SLOT_ENABLE [i][j] = 1; 76 } 81 for (uint32_t j=0; j<_param->_nb_inst_issue_slot[i]; ++j) 82 SLOT_ENABLE [i][j] = 1; 77 83 78 84 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 79 85 for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j) 80 86 { 81 ISSUE_EXECUTE_LOOP_VAL [i][j] = 0;82 83 87 // Read unit is enable is signal ack is set 84 88 READ_UNIT_ENABLE [i][j] = (PORT_READ(in_ISSUE_EXECUTE_LOOP_ACK [i][j]) == 1); … … 236 240 } 237 241 242 } 243 238 244 // Write output 239 245 for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Dcache_Access/src/Dcache_Access.cpp
r88 r123 37 37 usage_environment(_usage); 38 38 39 #if DEBUG_Dcache_Access == true40 log_printf(INFO,Dcache_Access,FUNCTION,_("<%s> Parameters"),_name.c_str());39 // #if DEBUG_Dcache_Access == true 40 // log_printf(INFO,Dcache_Access,FUNCTION,_("<%s> Parameters"),_name.c_str()); 41 41 42 std::cout << *param << std::endl;43 #endif42 // std::cout << *param << std::endl; 43 // #endif 44 44 45 45 log_printf(INFO,Dcache_Access,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Dcache_Access/src/Dcache_Access_genMealy_req.cpp
r117 r123 21 21 log_begin(Dcache_Access,FUNCTION); 22 22 23 if (PORT_READ(in_NRESET)) 24 { 23 25 Tcontrol_t dcache_req_val [_param->_nb_dcache_port]; 24 26 for (uint32_t i=0; i<_param->_nb_dcache_port; ++i) … … 105 107 for (uint32_t k=0; k<_param->_nb_cache_access [i][j]; ++k) 106 108 PORT_WRITE(out_LSQ_REQ_ACK [i][j][k], lsq_req_ack [i][j][k]); 109 } 110 111 else 112 { 113 for (uint32_t i=0; i<_param->_nb_dcache_port; ++i) 114 PORT_WRITE(out_DCACHE_REQ_VAL [i], 0); 115 116 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 117 for (uint32_t j=0; j<_param->_nb_load_store_unit[i]; ++j) 118 for (uint32_t k=0; k<_param->_nb_cache_access [i][j]; ++k) 119 PORT_WRITE(out_LSQ_REQ_ACK [i][j][k], 0); 120 } 107 121 108 122 log_end(Dcache_Access,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Dcache_Access/src/Dcache_Access_genMealy_rsp.cpp
r94 r123 21 21 log_begin(Dcache_Access,FUNCTION); 22 22 23 if (PORT_READ(in_NRESET)) 24 { 23 25 Tcontrol_t lsq_rsp_val [_param->_nb_execute_loop][_param->_max_nb_load_store_unit][_param->_max_nb_cache_access]; 24 26 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) … … 87 89 for (uint32_t k=0; k<_param->_nb_cache_access [i][j]; ++k) 88 90 PORT_WRITE(out_LSQ_RSP_VAL [i][j][k], lsq_rsp_val [i][j][k]); 91 } 92 else 93 { 94 for (uint32_t i=0; i<_param->_nb_dcache_port; ++i) 95 PORT_WRITE(out_DCACHE_RSP_ACK [i],0); 96 97 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 98 for (uint32_t j=0; j<_param->_nb_load_store_unit[i]; ++j) 99 for (uint32_t k=0; k<_param->_nb_cache_access [i][j]; ++k) 100 PORT_WRITE(out_LSQ_RSP_VAL [i][j][k], 0); 101 } 89 102 90 103 log_end(Dcache_Access,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/src/Icache_Access.cpp
r88 r123 37 37 usage_environment(_usage); 38 38 39 #if DEBUG_Core == true40 log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str());41 42 std::cout << *param << std::endl;43 #endif39 // #if DEBUG_Core == true 40 // log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str()); 41 42 // std::cout << *param << std::endl; 43 // #endif 44 44 45 45 log_printf(INFO,Icache_Access,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/src/Icache_Access_genMealy_req.cpp
r119 r123 23 23 Tcontrol_t icache_req_val [_param->_nb_icache_port]; 24 24 for (uint32_t i=0; i<_param->_nb_icache_port; ++i) 25 icache_req_val [i] = 0; 26 Tcontrol_t context_req_ack [_param->_nb_front_end][_param->_max_nb_context]; 27 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 28 for (uint32_t j=0; j<_param->_nb_context[i]; ++j) 29 context_req_ack [i][j] = 0; 30 31 if (PORT_READ(in_NRESET)) 25 32 { 26 icache_req_val [i] = 0; 27 33 for (uint32_t i=0; i<_param->_nb_icache_port; ++i) 34 { 28 35 #ifdef STATISTICS 29 36 _internal_ICACHE_REQ_NB_ACCESS [i] = 0; … … 32 39 } 33 40 34 Tcontrol_t context_req_ack [_param->_nb_front_end][_param->_max_nb_context];35 for (uint32_t i=0; i<_param->_nb_front_end; ++i)36 for (uint32_t j=0; j<_param->_nb_context[i]; ++j)37 context_req_ack [i][j] = 0;38 39 41 std::list<generic::priority::select_t> * select = _priority ->select(); 40 42 for (std::list<generic::priority::select_t>::iterator it=select ->begin(); … … 85 87 } 86 88 } 89 } 90 87 91 88 92 for (uint32_t i=0; i<_param->_nb_icache_port; ++i) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/src/Icache_Access_genMealy_rsp.cpp
r88 r123 26 26 context_rsp_val [i][j] = 0; 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 for (uint32_t i=0; i<_param->_nb_icache_port; ++i) 29 31 { … … 75 77 } 76 78 79 } 80 else 81 for (uint32_t i=0; i<_param->_nb_icache_port; ++i) 82 PORT_WRITE(out_ICACHE_RSP_ACK [i],0); 83 77 84 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 78 85 for (uint32_t j=0; j<_param->_nb_context[i]; ++j) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/src/Execute_loop_Glue.cpp
r88 r123 39 39 usage_environment(_usage); 40 40 41 #if DEBUG_Execute_loop_Glue == true42 log_printf(INFO,Execute_loop_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());41 // #if DEBUG_Execute_loop_Glue == true 42 // log_printf(INFO,Execute_loop_Glue,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,Execute_loop_Glue,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/src/Execute_loop_Glue_genMealy_gpr_write.cpp
r88 r123 23 23 log_begin(Execute_loop_Glue,FUNCTION); 24 24 25 if (PORT_READ(in_NRESET)) 26 { 25 27 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 26 28 { … … 45 47 PORT_WRITE(out_GPR_WRITE_READ_UNIT_DATA [i],data ); 46 48 } 49 } 50 else 51 { 52 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 53 { 54 PORT_WRITE(out_GPR_WRITE_WRITE_UNIT_ACK [i],0); 55 PORT_WRITE(out_GPR_WRITE_REGISTER_FILE_VAL [i],0); 56 PORT_WRITE(out_GPR_WRITE_READ_UNIT_VAL [i],0); 57 } 58 } 47 59 48 60 log_end(Execute_loop_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/src/Execute_loop_Glue_genMealy_spr_write.cpp
r88 r123 23 23 log_begin(Execute_loop_Glue,FUNCTION); 24 24 25 if (PORT_READ(in_NRESET)) 26 { 25 27 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 26 28 { … … 45 47 PORT_WRITE(out_SPR_WRITE_READ_UNIT_DATA [i],data ); 46 48 } 49 } 50 else 51 { 52 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 53 { 54 PORT_WRITE(out_SPR_WRITE_WRITE_UNIT_ACK [i],0); 55 PORT_WRITE(out_SPR_WRITE_REGISTER_FILE_VAL [i],0); 56 PORT_WRITE(out_SPR_WRITE_READ_UNIT_VAL [i],0); 57 } 58 } 47 59 48 60 log_end(Execute_loop_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit.cpp
r116 r123 42 42 allocation (); 43 43 44 #if DEBUG_Functionnal_unit == true45 log_printf(INFO,Functionnal_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());44 // #if DEBUG_Functionnal_unit == true 45 // log_printf(INFO,Functionnal_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 46 46 47 std::cout << *param << std::endl;48 #endif47 // std::cout << *param << std::endl; 48 // #endif 49 49 50 50 #ifdef STATISTICS -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_genMealy.cpp
r118 r123 31 31 // Can out if : have an instruction and is finish (latence == 0) 32 32 internal_EXECUTE_OUT_VAL = (reg_BUSY_OUT and (_execute_operation_out->_timing._latence == 0)); 33 34 PORT_WRITE(out_EXECUTE_OUT_VAL, internal_EXECUTE_OUT_VAL);35 33 } 36 34 … … 50 48 (internal_EXECUTE_OUT_VAL and PORT_READ(in_EXECUTE_OUT_ACK))); 51 49 } 52 53 PORT_WRITE(out_EXECUTE_IN_ACK , internal_EXECUTE_IN_ACK);54 50 } 55 51 } 52 else 53 { 54 // RESET 55 internal_EXECUTE_IN_ACK = 0; 56 internal_EXECUTE_OUT_VAL = 0; 57 } 58 59 // Write Output 60 PORT_WRITE(out_EXECUTE_IN_ACK , internal_EXECUTE_IN_ACK); 61 PORT_WRITE(out_EXECUTE_OUT_VAL, internal_EXECUTE_OUT_VAL); 56 62 57 63 log_end(Functionnal_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_genMoore.cpp
r116 r123 26 26 log_function(Functionnal_unit,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 28 29 { 29 30 if (_param->_have_port_context_id) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit.cpp
r111 r123 39 39 log_printf(FUNC,Load_store_unit,FUNCTION,"Begin"); 40 40 41 #if DEBUG_Load_store_unit == true42 log_printf(INFO,Load_store_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());43 44 std::cout << *param << std::endl;45 #endif41 // #if DEBUG_Load_store_unit == true 42 // log_printf(INFO,Load_store_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 // std::cout << *param << std::endl; 45 // #endif 46 46 47 47 #ifdef SYSTEMC -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMealy_insert.cpp
r101 r123 35 35 ack [i] = 0; 36 36 37 if (PORT_READ(in_NRESET)) 38 { 37 39 // find first valid entry 38 40 // store queue is never full (pointer is manage by rename stage) … … 49 51 } 50 52 } 53 } 54 else 55 { 56 internal_MEMORY_IN_ACK = 0; 57 // internal_MEMORY_IN_PORT = i; 58 } 51 59 52 60 for (uint32_t i=0; i<_param->_nb_inst_memory; i++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMoore.cpp
r122 r123 27 27 log_function(Load_store_unit,FUNCTION,_name.c_str()); 28 28 29 if (PORT_READ(in_NRESET)) 30 { 29 31 // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 30 32 … … 140 142 141 143 // write output 142 PORT_WRITE(out_MEMORY_OUT_VAL [0], internal_MEMORY_OUT_VAL);143 144 144 if (_param->_have_port_context_id) 145 145 PORT_WRITE(out_MEMORY_OUT_CONTEXT_ID [0], memory_out_context_id ); … … 171 171 // ~~~~~[ Interface "dache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 172 172 173 Tcontext_t dcache_req_context_id ;174 Tpacket_t dcache_req_packet_id ;175 Tdcache_address_t dcache_req_address ;176 Tdcache_type_t dcache_req_type ;177 Tdcache_data_t dcache_req_wdata ;173 Tcontext_t dcache_req_context_id = 0; 174 Tpacket_t dcache_req_packet_id = 0; 175 Tdcache_address_t dcache_req_address = 0; 176 Tdcache_type_t dcache_req_type = 0; 177 Tdcache_data_t dcache_req_wdata = 0; 178 178 179 179 log_printf(TRACE,Load_store_unit,FUNCTION," * Test DCACHE_REQ"); … … 241 241 } 242 242 243 PORT_WRITE(out_DCACHE_REQ_VAL [0], internal_DCACHE_REQ_VAL);244 243 if (_param->_have_port_dcache_context_id) 245 244 PORT_WRITE(out_DCACHE_REQ_CONTEXT_ID[0], dcache_req_context_id); … … 248 247 PORT_WRITE(out_DCACHE_REQ_TYPE [0], dcache_req_type ); 249 248 PORT_WRITE(out_DCACHE_REQ_WDATA [0], dcache_req_wdata ); 250 249 } 250 else 251 { 252 // Reset 253 internal_MEMORY_OUT_VAL = 0; 254 // internal_MEMORY_OUT_PTR =0 255 // internal_MEMORY_OUT_SELECT_QUEUE = SELECT_STORE_QUEUE; 256 257 internal_DCACHE_REQ_VAL = 0; 258 internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ = 0; 259 // internal_DCACHE_REQ_SELECT_QUEUE = SELECT_LOAD_QUEUE_SPECULATIVE; 260 } 261 262 // Write output 263 PORT_WRITE(out_MEMORY_OUT_VAL [0], internal_MEMORY_OUT_VAL); 264 PORT_WRITE(out_DCACHE_REQ_VAL [0], internal_DCACHE_REQ_VAL); 265 266 251 267 log_end(Load_store_unit,FUNCTION); 252 268 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_genMoore.cpp
r81 r123 26 26 log_printf(FUNC,Load_store_unit,FUNCTION,"Begin"); 27 27 28 // if (PORT_READ(in_NRESET)) 28 29 (this->*function_genMoore) (); 29 30 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp
r88 r123 36 36 log_printf(FUNC,Read_queue,"Read_queue","Begin"); 37 37 38 #if DEBUG_Read_queue == true39 log_printf(INFO,Read_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());40 41 std::cout << *param << std::endl;42 #endif38 // #if DEBUG_Read_queue == true 39 // log_printf(INFO,Read_queue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 40 41 // std::cout << *param << std::endl; 42 // #endif 43 43 44 44 #ifdef SYSTEMC -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_gpr.cpp
r88 r123 25 25 log_function(Read_queue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 internal_READ_QUEUE_OUT_DATA_RA_VAL = (// Previous value 28 30 _queue_head->_data_ra_val or … … 102 104 103 105 // Affectation out port 106 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RA ,internal_READ_QUEUE_OUT_DATA_RA ); 107 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB ,internal_READ_QUEUE_OUT_DATA_RB ); 108 } 109 else 110 { 111 internal_READ_QUEUE_OUT_DATA_RA_VAL = 0; 112 internal_READ_QUEUE_OUT_DATA_RB_VAL = 0; 113 // internal_READ_QUEUE_OUT_DATA_RA = 0; 114 // internal_READ_QUEUE_OUT_DATA_RB = 0; 115 } 116 104 117 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RA_VAL,internal_READ_QUEUE_OUT_DATA_RA_VAL); 105 118 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB_VAL,internal_READ_QUEUE_OUT_DATA_RB_VAL); 106 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RA ,internal_READ_QUEUE_OUT_DATA_RA );107 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB ,internal_READ_QUEUE_OUT_DATA_RB );108 119 109 120 log_end(Read_queue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_spr.cpp
r88 r123 25 25 log_function(Read_queue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 internal_READ_QUEUE_OUT_DATA_RC_VAL = (// Previous value 28 30 _queue_head->_data_rc_val or … … 72 74 73 75 // Affectation out port 76 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC ,internal_READ_QUEUE_OUT_DATA_RC ); 77 } 78 else 79 { 80 internal_READ_QUEUE_OUT_DATA_RC_VAL = 0; 81 // internal_READ_QUEUE_OUT_DATA_RC 82 } 83 74 84 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC_VAL,internal_READ_QUEUE_OUT_DATA_RC_VAL); 75 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC ,internal_READ_QUEUE_OUT_DATA_RC );76 85 77 86 log_end(Read_queue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_val.cpp
r88 r123 25 25 log_function(Read_queue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 internal_READ_QUEUE_OUT_READ_RA_VAL = (// Previous value 28 30 _queue_head->_read_ra_val and … … 98 100 99 101 100 PORT_WRITE(out_READ_QUEUE_OUT_VAL, internal_READ_QUEUE_OUT_VAL);101 102 102 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_VAL : %d",internal_READ_QUEUE_OUT_VAL); 103 103 log_printf(TRACE,Read_queue,FUNCTION," * _queue->empty() : %d",_queue->empty()); … … 111 111 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_rc_val : %d",_queue_head->_read_rc_val); 112 112 log_printf(TRACE,Read_queue,FUNCTION," * in_SPR_READ_ACK [0] : %d",PORT_READ(in_SPR_READ_ACK [0])); 113 } 114 else 115 { 116 internal_READ_QUEUE_OUT_VAL = 0; 117 } 118 119 PORT_WRITE(out_READ_QUEUE_OUT_VAL, internal_READ_QUEUE_OUT_VAL); 113 120 114 121 log_end(Read_queue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp
r122 r123 25 25 log_function(Read_queue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 bool not_full = _queue->size() < _param->_size_queue; 28 30 bool not_empty = not _queue->empty(); … … 84 86 PORT_WRITE (out_SPR_READ_OOO_ENGINE_ID [0], _queue_head->_ooo_engine_id); 85 87 PORT_WRITE (out_SPR_READ_NUM_REG [0], _queue_head->_num_reg_rc); 86 88 } 89 else 90 { 91 // Reset 92 93 PORT_WRITE (out_READ_QUEUE_IN_ACK , 0); 94 PORT_WRITE (out_GPR_READ_VAL [0], 0); 95 PORT_WRITE (out_GPR_READ_VAL [1], 0); 96 PORT_WRITE (out_SPR_READ_VAL [0], 0); 97 98 } 99 87 100 log_end(Read_queue,FUNCTION); 88 101 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
r122 r123 43 43 // Init, else error in registerfile 44 44 _queue_head->_ooo_engine_id = 0; 45 // not necessary 46 _queue_head->_read_ra_val = false; 47 _queue_head->_read_rb_val = false; 48 _queue_head->_read_rc_val = false; 49 50 _queue_head->_data_ra_val = false; 51 _queue_head->_data_rb_val = false; 52 _queue_head->_data_rc_val = false; 53 54 _queue_head->_num_reg_ra = 0; 55 _queue_head->_num_reg_rb = 0; 56 _queue_head->_num_reg_rc = 0; 45 57 } 46 58 else -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station.cpp
r88 r123 39 39 log_printf(FUNC,Reservation_station,FUNCTION,"Begin"); 40 40 41 #if DEBUG_Reservation_station == true42 log_printf(INFO,Reservation_station,FUNCTION,_("<%s> Parameters"),_name.c_str());41 // #if DEBUG_Reservation_station == true 42 // log_printf(INFO,Reservation_station,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 #ifdef SYSTEMC -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp
r122 r123 27 27 log_function(Reservation_station,FUNCTION,_name.c_str()); 28 28 29 if (PORT_READ(in_NRESET)) 30 { 29 31 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~ 30 32 … … 36 38 internal_INSERT_ACK = not _queue_control->full(); 37 39 #endif 38 PORT_WRITE(out_INSERT_ACK, internal_INSERT_ACK);39 40 40 41 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~ … … 92 93 93 94 internal_RETIRE_VAL [i] = val; 94 PORT_WRITE(out_RETIRE_VAL [i], val);95 95 96 96 if (val) … … 128 128 } 129 129 } 130 } 131 else 132 { 133 // Reset 134 internal_INSERT_ACK = 0; 135 // internal_INSERT_SLOT 136 137 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 138 { 139 internal_RETIRE_VAL [i] = 0; 140 // internal_RETIRE_SLOT [i]; 141 } 142 } 143 144 // Write Output 145 PORT_WRITE(out_INSERT_ACK , internal_INSERT_ACK); 146 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 147 PORT_WRITE(out_RETIRE_VAL [i], internal_RETIRE_VAL [i]); 130 148 131 149 log_end(Reservation_station,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit.cpp
r88 r123 38 38 log_printf(FUNC,Read_unit,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Read_unit == true41 log_printf(INFO,Read_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_Read_unit == true 41 // log_printf(INFO,Read_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Read_unit,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_genMoore.cpp
r101 r123 26 26 log_function(Execute_queue,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 // -----[ Interface "execute_queue_in" ]-------------------------------- 29 31 { 30 32 internal_EXECUTE_QUEUE_IN_ACK = _queue->size() < _param->_size_queue; 31 32 PORT_WRITE(out_EXECUTE_QUEUE_IN_ACK, internal_EXECUTE_QUEUE_IN_ACK);33 33 } 34 34 35 35 // -----[ Interface "execute_queue_out" ]-------------------------------- 36 36 { 37 // TODO : make a genMealy version38 37 internal_EXECUTE_QUEUE_OUT_VAL = (not _queue->empty()); 39 38 40 PORT_WRITE(out_EXECUTE_QUEUE_OUT_VAL, internal_EXECUTE_QUEUE_OUT_VAL);41 42 39 if (internal_EXECUTE_QUEUE_OUT_VAL) 43 40 { … … 59 56 } 60 57 } 58 } 59 else 60 { 61 // Reset 62 internal_EXECUTE_QUEUE_IN_ACK = 0; 63 internal_EXECUTE_QUEUE_OUT_VAL = 0; 64 } 65 66 // Write output 67 PORT_WRITE(out_EXECUTE_QUEUE_IN_ACK , internal_EXECUTE_QUEUE_IN_ACK); 68 PORT_WRITE(out_EXECUTE_QUEUE_OUT_VAL, internal_EXECUTE_QUEUE_OUT_VAL); 61 69 62 70 log_end(Execute_queue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_genMealy_bypass.cpp
r118 r123 26 26 log_function(Write_queue,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 Tcontrol_t val = PORT_READ(in_WRITE_QUEUE_IN_VAL); 29 31 … … 36 38 PORT_WRITE(out_BYPASS_WRITE_SPR_NUM_REG [0], PORT_READ(in_WRITE_QUEUE_IN_NUM_REG_RE )); // RE 37 39 PORT_WRITE(out_BYPASS_WRITE_SPR_DATA [0], PORT_READ(in_WRITE_QUEUE_IN_DATA_RE )); 38 39 // -----[ Interface "bypass_write" ]---------------------------------- 40 } 41 else 42 { 43 PORT_WRITE(out_BYPASS_WRITE_GPR_VAL [0], 0); 44 PORT_WRITE(out_BYPASS_WRITE_SPR_VAL [0], 0); 45 } 40 46 41 47 log_end(Write_queue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_genMealy_write.cpp
r118 r123 26 26 log_function(Write_queue,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 // -----[ Interface "bypass_write" ]---------------------------------- 29 31 // in genMoore … … 91 93 } 92 94 } 95 } 96 else 97 { 98 internal_WRITE_QUEUE_OUT_VAL = 0; 99 } 100 101 PORT_WRITE(out_WRITE_QUEUE_OUT_VAL, internal_WRITE_QUEUE_OUT_VAL); 93 102 94 103 log_end(Write_queue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_genMoore.cpp
r118 r123 26 26 log_function(Write_queue,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 // -----[ Interface "bypass_write" ]---------------------------------- 29 31 { … … 71 73 { 72 74 internal_WRITE_QUEUE_IN_ACK = _queue->size() < _param->_size_queue; 73 74 PORT_WRITE(out_WRITE_QUEUE_IN_ACK, internal_WRITE_QUEUE_IN_ACK);75 75 } 76 76 … … 85 85 internal_SPR_WRITE_VAL = val and _queue->front()->_write_re; 86 86 87 PORT_WRITE(out_GPR_WRITE_VAL [0], internal_GPR_WRITE_VAL);88 PORT_WRITE(out_SPR_WRITE_VAL [0], internal_SPR_WRITE_VAL);89 90 87 if (val) 91 88 { … … 110 107 ); 111 108 112 PORT_WRITE(out_WRITE_QUEUE_OUT_VAL, internal_WRITE_QUEUE_OUT_VAL);113 114 109 if (internal_WRITE_QUEUE_OUT_VAL) 115 110 { … … 133 128 134 129 } // end WRITE_QUEUE_SCHEME_MOORE 130 } 131 else 132 { 133 // Reset 134 internal_WRITE_QUEUE_IN_ACK = 0; 135 internal_WRITE_QUEUE_OUT_VAL = 0; 136 internal_GPR_WRITE_VAL = 0; 137 internal_SPR_WRITE_VAL = 0; 138 139 } 140 141 // Write output 142 PORT_WRITE(out_WRITE_QUEUE_IN_ACK , internal_WRITE_QUEUE_IN_ACK); 143 PORT_WRITE(out_WRITE_QUEUE_OUT_VAL, internal_WRITE_QUEUE_OUT_VAL); 144 145 PORT_WRITE(out_GPR_WRITE_VAL [0] , internal_GPR_WRITE_VAL); 146 PORT_WRITE(out_SPR_WRITE_VAL [0] , internal_SPR_WRITE_VAL); 147 135 148 log_end(Write_queue,FUNCTION); 136 149 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit.cpp
r88 r123 38 38 log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Execution_unit_to_Write_unit == true41 log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());42 43 std::cout << *param << std::endl;44 #endif40 // #if DEBUG_Execution_unit_to_Write_unit == true 41 // log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_genMealy.cpp
r97 r123 24 24 log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin"); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 bool write_unit_use [_param->_nb_write_unit]; 27 29 … … 96 98 PORT_WRITE(out_WRITE_UNIT_IN_VAL[i], write_unit_use[i]); 97 99 } 100 } 101 else 102 { 103 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 104 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 105 PORT_WRITE(out_EXECUTE_UNIT_OUT_ACK [i][j], 0); 106 107 for (uint32_t i=0; i<_param->_nb_write_unit; i++) 108 PORT_WRITE(out_WRITE_UNIT_IN_VAL[i], 0); 109 } 98 110 99 111 log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit.cpp
r88 r123 38 38 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Read_unit_to_Execution_unit == true41 log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());42 43 std::cout << *param << std::endl;44 #endif40 // #if DEBUG_Read_unit_to_Execution_unit == true 41 // log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_genMealy.cpp
r122 r123 25 25 log_function(Read_unit_to_Execution_unit,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 bool execute_unit_use [_param->_nb_execute_unit][_param->_max_nb_execute_unit_port]; 28 30 … … 106 108 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 107 109 PORT_WRITE(out_EXECUTE_UNIT_IN_VAL[i][j], execute_unit_use[i][j]); 110 } 111 else 112 { 108 113 114 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 115 for (uint32_t j=0; j<_param->_nb_read_unit_port[i]; j++) 116 PORT_WRITE(out_READ_UNIT_OUT_ACK [i][j], 0); 117 118 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 119 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 120 PORT_WRITE(out_EXECUTE_UNIT_IN_VAL[i][j], 0); 121 122 } 123 109 124 log_end(Read_unit_to_Execution_unit,FUNCTION); 110 125 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp
r88 r123 38 38 log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Register_unit_Glue == true41 log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());42 43 std::cout << *param << std::endl;44 #endif40 // #if DEBUG_Register_unit_Glue == true 41 // log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Register_unit_Glue,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_gpr_read; j++) 31 // PORT_WRITE(out_GPR_READ_ACK [j], 0); 32 // } 33 // else 28 if (PORT_READ(in_NRESET)) 34 29 { 35 30 for (uint32_t j=0; j<_param->_nb_gpr_read; j++) … … 44 39 PORT_WRITE(out_GPR_READ_DATA_VAL [j], PORT_READ(in_GPR_READ_STATUS_DATA_VAL [ooo_engine_id][j])); 45 40 } 41 } 42 else 43 { 44 for (uint32_t j=0; j<_param->_nb_gpr_read; j++) 45 PORT_WRITE(out_GPR_READ_ACK [j], 0); 46 46 } 47 47 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_registerfile.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_gpr_read; j++) 31 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 32 // PORT_WRITE(out_GPR_READ_REGISTERFILE_VAL [i][j],0); 33 // } 34 // else 28 if (PORT_READ(in_NRESET)) 35 29 { 36 30 for (uint32_t j=0; j<_param->_nb_gpr_read; j++) … … 49 43 } 50 44 } 45 else 46 { 47 for (uint32_t j=0; j<_param->_nb_gpr_read; j++) 48 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 49 PORT_WRITE(out_GPR_READ_REGISTERFILE_VAL [i][j],0); 50 } 51 51 52 52 log_end(Register_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_status.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_gpr_read; j++) 31 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 32 // PORT_WRITE(out_GPR_READ_STATUS_VAL [i][j], 0); 33 // } 34 // else 28 if (PORT_READ(in_NRESET)) 35 29 { 36 30 for (uint32_t j=0; j<_param->_nb_gpr_read; j++) … … 49 43 } 50 44 } 45 else 46 { 47 for (uint32_t j=0; j<_param->_nb_gpr_read; j++) 48 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 49 PORT_WRITE(out_GPR_READ_STATUS_VAL [i][j], 0); 50 } 51 51 52 52 log_end(Register_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_registerfile.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_gpr_write; j++) 31 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 32 // PORT_WRITE(out_GPR_WRITE_REGISTERFILE_VAL [i][j], 0); 33 // } 34 // else 28 if (PORT_READ(in_NRESET)) 35 29 { 36 30 for (uint32_t j=0; j<_param->_nb_gpr_write; j++) … … 48 42 } 49 43 } 44 else 45 { 46 for (uint32_t j=0; j<_param->_nb_gpr_write; j++) 47 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 48 PORT_WRITE(out_GPR_WRITE_REGISTERFILE_VAL [i][j], 0); 49 } 50 50 51 51 log_end(Register_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write.cpp
r88 r123 25 25 log_begin(Register_unit_Glue,FUNCTION); 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 // if (not PORT_READ(in_NRESET)) 28 // { 29 // for (uint32_t j=0; j<_param->_nb_gpr_write; j++) 30 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 31 // PORT_WRITE(out_GPR_WRITE_ACK [j], 0); 32 // } 33 // else 27 28 29 if (PORT_READ(in_NRESET)) 34 30 { 35 31 for (uint32_t j=0; j<_param->_nb_gpr_write; j++) … … 42 38 PORT_WRITE(out_GPR_WRITE_ACK [j],registerfile_ack and status_ack); 43 39 } 40 } 41 else 42 { 43 for (uint32_t j=0; j<_param->_nb_gpr_write; j++) 44 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 45 PORT_WRITE(out_GPR_WRITE_ACK [j], 0); 44 46 } 45 47 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_gpr_write; j++) 31 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 32 // PORT_WRITE(out_GPR_WRITE_STATUS_VAL [i][j], 0); 33 // } 34 // else 28 if (PORT_READ(in_NRESET)) 35 29 { 36 30 for (uint32_t j=0; j<_param->_nb_gpr_write; j++) … … 48 42 } 49 43 } 44 else 45 { 46 for (uint32_t j=0; j<_param->_nb_gpr_write; j++) 47 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 48 PORT_WRITE(out_GPR_WRITE_STATUS_VAL [i][j], 0); 49 } 50 50 51 51 52 log_end(Register_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_insert.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 29 31 for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++) … … 59 61 60 62 } 63 } 64 else 65 { 66 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 67 for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++) 68 { 69 PORT_WRITE(out_INSERT_ROB_ACK [i][j], 0); 70 PORT_WRITE(out_INSERT_ROB_GPR_STATUS_VAL [i][j], 0); 71 PORT_WRITE(out_INSERT_ROB_SPR_STATUS_VAL [i][j], 0); 72 } 73 } 61 74 62 75 log_end(Register_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_retire.cpp
r88 r123 27 27 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 28 28 29 if (PORT_READ(in_NRESET)) 30 { 29 31 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 30 32 { … … 58 60 } 59 61 } 60 62 } 61 63 log_end(Register_unit_Glue,FUNCTION); 62 64 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_spr_read; j++) 31 // PORT_WRITE(out_SPR_READ_ACK [j], 0); 32 // } 33 // else 28 if (PORT_READ(in_NRESET)) 34 29 { 35 30 for (uint32_t j=0; j<_param->_nb_spr_read; j++) … … 44 39 PORT_WRITE(out_SPR_READ_DATA_VAL [j], PORT_READ(in_SPR_READ_STATUS_DATA_VAL [ooo_engine_id][j])); 45 40 } 41 } 42 else 43 { 44 for (uint32_t j=0; j<_param->_nb_spr_read; j++) 45 PORT_WRITE(out_SPR_READ_ACK [j], 0); 46 46 } 47 47 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_registerfile.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_spr_read; j++) 31 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 32 // PORT_WRITE(out_SPR_READ_REGISTERFILE_VAL [i][j],0); 33 // } 34 // else 28 if (PORT_READ(in_NRESET)) 35 29 { 36 30 for (uint32_t j=0; j<_param->_nb_spr_read; j++) … … 48 42 } 49 43 } 44 else 45 { 46 for (uint32_t j=0; j<_param->_nb_spr_read; j++) 47 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 48 PORT_WRITE(out_SPR_READ_REGISTERFILE_VAL [i][j],0); 49 } 50 50 51 51 log_end(Register_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_status.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_spr_read; j++) 31 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 32 // PORT_WRITE(out_SPR_READ_STATUS_VAL [i][j], 0); 33 // } 34 // else 28 if (PORT_READ(in_NRESET)) 35 29 { 36 30 for (uint32_t j=0; j<_param->_nb_spr_read; j++) … … 48 42 } 49 43 } 44 else 45 { 46 for (uint32_t j=0; j<_param->_nb_spr_read; j++) 47 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 48 PORT_WRITE(out_SPR_READ_STATUS_VAL [i][j], 0); 49 } 50 50 51 51 log_end(Register_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_registerfile.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_spr_write; j++) 31 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 32 // PORT_WRITE(out_SPR_WRITE_REGISTERFILE_VAL [i][j], 0); 33 // } 34 // else 28 if (PORT_READ(in_NRESET)) 35 29 { 36 30 for (uint32_t j=0; j<_param->_nb_spr_write; j++) … … 48 42 } 49 43 } 44 else 45 { 46 for (uint32_t j=0; j<_param->_nb_spr_write; j++) 47 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 48 PORT_WRITE(out_SPR_WRITE_REGISTERFILE_VAL [i][j], 0); 49 } 50 50 51 51 log_end(Register_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_spr_write; j++) 31 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 32 // PORT_WRITE(out_SPR_WRITE_ACK [j], 0); 33 // } 34 // else 28 if (PORT_READ(in_NRESET)) 35 29 { 36 30 for (uint32_t j=0; j<_param->_nb_spr_write; j++) … … 43 37 PORT_WRITE(out_SPR_WRITE_ACK [j],registerfile_ack and status_ack); 44 38 } 39 } 40 else 41 { 42 for (uint32_t j=0; j<_param->_nb_spr_write; j++) 43 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 44 PORT_WRITE(out_SPR_WRITE_ACK [j], 0); 45 45 } 46 46 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write_status.cpp
r88 r123 26 26 log_function(Register_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 // if (not PORT_READ(in_NRESET)) 29 // { 30 // for (uint32_t j=0; j<_param->_nb_spr_write; j++) 31 // for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 32 // PORT_WRITE(out_SPR_WRITE_STATUS_VAL [i][j], 0); 33 // } 34 // else 28 if (PORT_READ(in_NRESET)) 35 29 { 36 30 for (uint32_t j=0; j<_param->_nb_spr_write; j++) … … 48 42 } 49 43 } 44 else 45 { 46 for (uint32_t j=0; j<_param->_nb_spr_write; j++) 47 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 48 PORT_WRITE(out_SPR_WRITE_STATUS_VAL [i][j], 0); 49 } 50 50 51 51 log_end(Register_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit.cpp
r88 r123 37 37 log_printf(FUNC,Register_unit,FUNCTION,"Begin"); 38 38 39 #if DEBUG_Register_unit == true40 log_printf(INFO,Register_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());39 // #if DEBUG_Register_unit == true 40 // log_printf(INFO,Register_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 41 41 42 std::cout << *param << std::endl;43 #endif42 // std::cout << *param << std::endl; 43 // #endif 44 44 45 45 log_printf(INFO,Register_unit,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Execute_loop.cpp
r88 r123 36 36 log_printf(FUNC,Execute_loop,FUNCTION,"Begin"); 37 37 38 #if DEBUG_Execute_loop == true39 log_printf(INFO,Execute_loop,FUNCTION,_("<%s> Parameters"),_name.c_str());38 // #if DEBUG_Execute_loop == true 39 // log_printf(INFO,Execute_loop,FUNCTION,_("<%s> Parameters"),_name.c_str()); 40 40 41 std::cout << *param << std::endl;42 #endif41 // std::cout << *param << std::endl; 42 // #endif 43 43 44 44 log_printf(INFO,Execute_loop,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters_msg_error.cpp
r88 r123 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Parameters.h" 10 10 #include <sstream> 11 #include <set> 11 12 12 13 namespace morpheo { … … 29 30 test.error(toString(_("Functionnal_unit [%d] must treat once instruction.\n"),i)); 30 31 32 std::set<uint32_t> link_load_store_unit_and_write_unit [_nb_load_store_unit]; 33 for (uint32_t i=0; i<_nb_load_store_unit; ++i) 34 link_load_store_unit_and_write_unit[i].clear(); 35 36 for (uint32_t i=0; i<_nb_execute_unit; i++) 37 if (_is_load_store_unit [i]) 38 { 39 uint32_t lsq = _translate_num_execute_unit[i]; 40 41 for (uint32_t j=0; j<_nb_execute_unit_port[i]; j++) 42 for (uint32_t k=0; k<_nb_write_unit; k++) 43 if (_execution_unit_to_write_unit_table_routing [i][j][k]) 44 { 45 if (link_load_store_unit_and_write_unit[lsq].find(k) != link_load_store_unit_and_write_unit[lsq].end()) 46 { 47 if (link_load_store_unit_and_write_unit[lsq].size() != 0) 48 test.error(toString(_("Can't connect Load Store Unit [%d] (port %d) with Write unit [%d], because it's already connected with Write unit [%d]"),lsq,j,k,*(link_load_store_unit_and_write_unit[lsq].begin()))); 49 50 link_load_store_unit_and_write_unit[lsq].insert(link_load_store_unit_and_write_unit[lsq].end(),k); 51 } 52 } 53 } 31 54 log_printf(FUNC,Execute_loop,FUNCTION,"End"); 32 55 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h
r120 r123 143 143 // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 144 144 public : SC_OUT(Tcontrol_t ) ** out_CONTEXT_DECOD_ENABLE ;//[nb_context] 145 public : SC_OUT(Tcontrol_t ) ** out_CONTEXT_EVENT ;//[nb_context] 145 146 146 147 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 211 212 public : void genMoore (void); 212 213 public : void genMealy_decod_event (void); 214 public : void genMealy_context_event (void); 213 215 #endif 214 216 -
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 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod.cpp
r101 r123 38 38 log_printf(FUNC,Decod,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Decod == true41 log_printf(INFO,Decod,FUNCTION,_("<%s> Parameters"),_name.c_str());42 43 std::cout << *param << std::endl;44 #endif40 // #if DEBUG_Decod == true 41 // log_printf(INFO,Decod,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Decod,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp
r120 r123 25 25 log_function(Decod,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 //----------------------------------- 28 30 // Initialization … … 280 282 #endif 281 283 } 284 } 285 else 286 { 287 for (uint32_t i=0; i<_param->_nb_context; i++) 288 { 289 internal_CONTEXT_HAVE_TRANSACTION [i] = false; 290 // internal_CONTEXT_ADDRESS_PREVIOUS [i] = reg_CONTEXT_ADDRESS_PREVIOUS [i]; 291 // internal_CONTEXT_IS_DELAY_SLOT [i] = reg_CONTEXT_IS_DELAY_SLOT [i]; 292 for (uint32_t j=0; j<_param->_nb_inst_fetch[i]; j++) 293 PORT_WRITE(out_IFETCH_ACK [i][j], 0); 294 } 295 296 PORT_WRITE(out_CONTEXT_EVENT_VAL, 0); 297 298 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 299 { 300 PORT_WRITE(out_PREDICT_VAL [i], 0); 301 PORT_WRITE(out_DECOD_VAL [i], 0); 302 303 #ifdef STATISTICS 304 internal_DECOD_VAL [i] = 0; 305 #endif 306 } 307 } 282 308 283 309 log_end(Decod,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Decod_queue.h
r111 r123 106 106 public : SC_OUT(Toperation_t ) ** out_DECOD_OUT_OPERATION ;//[nb_inst_decod] 107 107 public : SC_OUT(Tcontrol_t ) ** out_DECOD_OUT_NO_EXECUTE ;//[nb_inst_decod] 108 //public : SC_OUT(Tcontrol_t ) ** out_DECOD_OUT_HAVE_EVENT ;//[nb_inst_decod] 109 public : SC_OUT(Tcontrol_t ) ** out_DECOD_OUT_LAST_EVENT ;//[nb_inst_decod] 108 110 public : SC_OUT(Tcontrol_t ) ** out_DECOD_OUT_IS_DELAY_SLOT ;//[nb_inst_decod] 109 111 #ifdef DEBUG … … 134 136 public : SC_OUT(Tcounter_t ) ** out_NB_INST_ALL ;//[nb_context] 135 137 138 // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 139 public : SC_IN (Tcontrol_t ) ** in_CONTEXT_EVENT ;//[nb_context] 140 136 141 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 137 142 … … 141 146 private : std::list<decod_queue_entry_t*> * reg_QUEUE ; 142 147 private : uint32_t * reg_NB_INST ;//[nb_context] 148 private : uint32_t * reg_NB_INST_EVENT ;//[nb_context] 149 143 150 // implementation : one_fifo only 144 151 private : uint32_t reg_LAST_SLOT ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue.cpp
r111 r123 40 40 usage_environment(_usage); 41 41 42 #if DEBUG_Decod_queue == true43 log_printf(INFO,Decod_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());42 // #if DEBUG_Decod_queue == true 43 // log_printf(INFO,Decod_queue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 44 44 45 std::cout << *param << std::endl;46 #endif45 // std::cout << *param << std::endl; 46 // #endif 47 47 48 48 log_printf(INFO,Decod_queue,FUNCTION,_("Allocation")); … … 129 129 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 130 130 sensitive << (*(in_DECOD_OUT_ACK [i])); 131 132 133 134 135 sensitive << (*(in_DEPTH_MIN [i]));136 sensitive << (*(in_DEPTH_MAX [i]));137 138 139 131 // for (uint32_t i=0; i<_param->_nb_context; i++) 132 // { 133 // if (_param->_have_port_depth) 134 // { 135 // sensitive << (*(in_DEPTH_MIN [i])); 136 // sensitive << (*(in_DEPTH_MAX [i])); 137 // } 138 // sensitive << (*(in_DEPTH_FULL[i])); 139 // } 140 140 141 141 # ifdef SYSTEMCASS_SPECIFIC 142 // List dependency information143 for (uint32_t i=0; i<_param->_nb_inst_decod; i++)144 {145 (*(out_DECOD_OUT_VAL [i])) (*(in_DECOD_OUT_ACK [i]));146 for (uint32_t j=0; j<_param->_nb_context; j++)147 {148 if (_param->_have_port_depth)149 {150 (*(out_DECOD_OUT_VAL [i])) (*(in_DEPTH_MIN [j]));151 (*(out_DECOD_OUT_VAL [i])) (*(in_DEPTH_MAX [j]));152 }153 }154 }142 // // List dependency information 143 // for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 144 // { 145 // (*(out_DECOD_OUT_VAL [i])) (*(in_DECOD_OUT_ACK [i])); 146 // for (uint32_t j=0; j<_param->_nb_context; j++) 147 // { 148 // if (_param->_have_port_depth) 149 // { 150 // (*(out_DECOD_OUT_VAL [i])) (*(in_DEPTH_MIN [j])); 151 // (*(out_DECOD_OUT_VAL [i])) (*(in_DEPTH_MAX [j])); 152 // } 153 // } 154 // } 155 155 # endif 156 156 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_allocation.cpp
r118 r123 100 100 ALLOC1_SIGNAL_OUT(out_DECOD_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 101 101 ALLOC1_SIGNAL_OUT(out_DECOD_OUT_NO_EXECUTE ,"no_execute" ,Tcontrol_t ,1 ); 102 // ALLOC1_SIGNAL_OUT(out_DECOD_OUT_HAVE_EVENT ,"have_event" ,Tcontrol_t ,1 ); 103 ALLOC1_SIGNAL_OUT(out_DECOD_OUT_LAST_EVENT ,"last_event" ,Tcontrol_t ,1 ); 102 104 ALLOC1_SIGNAL_OUT(out_DECOD_OUT_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t ,1 ); 103 105 #ifdef DEBUG … … 143 145 } 144 146 147 // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 148 { 149 ALLOC1_INTERFACE_BEGIN("context",IN ,NORTH,_("Context"), _param->_nb_context); 150 151 ALLOC1_SIGNAL_IN ( in_CONTEXT_EVENT ,"event" ,Tcontrol_t ,1); 152 153 ALLOC1_INTERFACE_END(_param->_nb_context); 154 } 155 145 156 if (usage_is_set(_usage,USE_SYSTEMC)) 146 157 { … … 152 163 } 153 164 154 ALLOC1(reg_NB_INST,uint32_t,_param->_nb_context); 165 ALLOC1(reg_NB_INST ,uint32_t,_param->_nb_context); 166 ALLOC1(reg_NB_INST_EVENT ,uint32_t,_param->_nb_context); 155 167 156 168 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_deallocation.cpp
r115 r123 62 62 DELETE1_SIGNAL(out_DECOD_OUT_TYPE ,_param->_nb_inst_decod,_param->_size_type ); 63 63 DELETE1_SIGNAL(out_DECOD_OUT_OPERATION ,_param->_nb_inst_decod,_param->_size_operation ); 64 DELETE1_SIGNAL(out_DECOD_OUT_NO_EXECUTE ,_param->_nb_inst_decod,1 ); 64 DELETE1_SIGNAL(out_DECOD_OUT_NO_EXECUTE ,_param->_nb_inst_decod,1 ); 65 // DELETE1_SIGNAL(out_DECOD_OUT_HAVE_EVENT ,_param->_nb_inst_decod,1 ); 66 DELETE1_SIGNAL(out_DECOD_OUT_LAST_EVENT ,_param->_nb_inst_decod,1 ); 65 67 DELETE1_SIGNAL(out_DECOD_OUT_IS_DELAY_SLOT ,_param->_nb_inst_decod,1 ); 66 68 #ifdef DEBUG … … 88 90 89 91 DELETE1_SIGNAL(out_NB_INST_ALL ,_param->_nb_context,_param->_size_nb_inst_decod); 92 93 DELETE1_SIGNAL( in_CONTEXT_EVENT ,_param->_nb_context,1); 90 94 91 95 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 117 121 } 118 122 119 DELETE1(reg_NB_INST ,_param->_nb_context); 123 DELETE1(reg_NB_INST ,_param->_nb_context); 124 DELETE1(reg_NB_INST_EVENT ,_param->_nb_context); 120 125 121 126 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_genMealy_decod_out.cpp
r115 r123 24 24 log_begin(Decod_queue,FUNCTION); 25 25 log_function(Decod_queue,FUNCTION,_name.c_str()); 26 27 Tcontrol_t val [_param->_nb_inst_decod]; 26 27 if (PORT_READ(in_NRESET)) 28 { 29 bool context_val [_param->_nb_context]; 30 uint32_t nb_inst_event [_param->_nb_context]; 31 for (uint32_t i=0; i<_param->_nb_context; i++) 32 { 33 context_val [i] = true; 34 nb_inst_event [i] = reg_NB_INST_EVENT [i]; 35 } 36 37 Tcontrol_t val [_param->_nb_inst_decod]; 28 38 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 29 39 { … … 44 54 45 55 Tcontext_t context = reg_QUEUE[num_bank].front()->_context_id [0]; 46 Tdepth_t depth = reg_QUEUE[num_bank].front()->_depth [0];47 Tdepth_t depth_min = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN [context]):0;48 Tdepth_t depth_max = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MAX [context]):0;49 Tcontrol_t depth_full = PORT_READ(in_DEPTH_FULL[context]);50 56 51 // is a valid instruction ? 52 // If DEPTH_CURRENT : 53 // equal at DEPTH_MIN -> not speculative 54 // not include ]DEPTH_MIN:DEPTH_MAX] -> previous branch miss 55 // include ]DEPTH_MIN:DEPTH_MAX] -> speculative 56 57 // All case 58 // ....... min ...X... max ....... OK 59 // ....... min ....... max ...X... KO 60 // ...X... min ....... max ....... KO 61 // ....... max ....... min ...X... OK 62 // ...X... max ....... min ....... OK 63 // ....... max ...X... min ....... KO 64 65 Tcontrol_t is_valid = true; 57 log_printf(TRACE,Decod_queue,FUNCTION," * context : %d",context); 66 58 67 // Tcontrol_t is_valid = ((depth == depth_min) or 68 // depth_full or 69 // ((depth_min <= depth_max)? 70 // ((depth >= depth_min) and (depth <=depth_max)): 71 // ((depth >= depth_min) or (depth <=depth_max)))); 72 //Tcontrol_t is_valid = ((depth == depth_min) or 73 // ((depth_min < depth_max)? 74 // (depth<=depth_max): 75 // ((depth > depth_min) or (depth <= depth_max)))); 76 //Tcontrol_t is_valid = depth <= depth_max; 77 78 log_printf(TRACE,Decod_queue,FUNCTION," * is_valid : %d",is_valid); 79 log_printf(TRACE,Decod_queue,FUNCTION," * context : %d",context); 80 log_printf(TRACE,Decod_queue,FUNCTION," * depth : %d",depth); 81 log_printf(TRACE,Decod_queue,FUNCTION," * depth_min : %d",depth_min); 82 log_printf(TRACE,Decod_queue,FUNCTION," * depth_max : %d",depth_max); 83 log_printf(TRACE,Decod_queue,FUNCTION," * depth_full : %d",depth_full); 84 #ifdef DEBUG 85 log_printf(TRACE,Decod_queue,FUNCTION," * address : 0x%x (0x%x)",reg_QUEUE[num_bank].front()->_address [0],reg_QUEUE[num_bank].front()->_address [0]<<2); 86 #endif 87 log_printf(TRACE,Decod_queue,FUNCTION," * address_next : 0x%x (0x%x)",reg_QUEUE[num_bank].front()->_address_next[0],reg_QUEUE[num_bank].front()->_address_next[0]<<2); 59 if (context_val [context]) 60 { 88 61 89 internal_DECOD_OUT_VAL [i] = 1; // in all case, val is set (entry is not empty, and instruction is valid) 90 if (is_valid) 91 { 92 val [i] = 1; 93 internal_DECOD_OUT_ACK [i] = PORT_READ(in_DECOD_OUT_ACK [i]); 94 } 95 else 96 { 97 // Consume the instruction (to erase) 98 internal_DECOD_OUT_ACK [i] = 1; 62 // Tdepth_t depth = reg_QUEUE[num_bank].front()->_depth [0]; 63 // Tdepth_t depth_min = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN [context]):0; 64 // Tdepth_t depth_max = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MAX [context]):0; 65 // Tcontrol_t depth_full = PORT_READ(in_DEPTH_FULL[context]); 66 67 // is a valid instruction ? 68 // If DEPTH_CURRENT : 69 // equal at DEPTH_MIN -> not speculative 70 // not include ]DEPTH_MIN:DEPTH_MAX] -> previous branch miss 71 // include ]DEPTH_MIN:DEPTH_MAX] -> speculative 72 73 // All case 74 // ....... min ...X... max ....... OK 75 // ....... min ....... max ...X... KO 76 // ...X... min ....... max ....... KO 77 // ....... max ....... min ...X... OK 78 // ...X... max ....... min ....... OK 79 // ....... max ...X... min ....... KO 80 81 Tcontrol_t is_valid = (nb_inst_event [context] == 0); 82 83 // Tcontrol_t is_valid = ((depth == depth_min) or 84 // depth_full or 85 // ((depth_min <= depth_max)? 86 // ((depth >= depth_min) and (depth <=depth_max)): 87 // ((depth >= depth_min) or (depth <=depth_max)))); 88 89 log_printf(TRACE,Decod_queue,FUNCTION," * is_valid : %d",is_valid); 90 log_printf(TRACE,Decod_queue,FUNCTION," * context_val : %d",context_val [context]); 91 log_printf(TRACE,Decod_queue,FUNCTION," * nb_inst_event: %d",nb_inst_event [context]); 92 // log_printf(TRACE,Decod_queue,FUNCTION," * depth : %d",depth); 93 // log_printf(TRACE,Decod_queue,FUNCTION," * depth_min : %d",depth_min); 94 // log_printf(TRACE,Decod_queue,FUNCTION," * depth_max : %d",depth_max); 95 // log_printf(TRACE,Decod_queue,FUNCTION," * depth_full : %d",depth_full); 96 #ifdef DEBUG 97 log_printf(TRACE,Decod_queue,FUNCTION," * address : 0x%x (0x%x)",reg_QUEUE[num_bank].front()->_address [0],reg_QUEUE[num_bank].front()->_address [0]<<2); 98 #endif 99 log_printf(TRACE,Decod_queue,FUNCTION," * address_next : 0x%x (0x%x)",reg_QUEUE[num_bank].front()->_address_next[0],reg_QUEUE[num_bank].front()->_address_next[0]<<2); 100 101 internal_DECOD_OUT_VAL [i] = 1; // in all case, val is set (entry is not empty, and instruction is valid) 102 103 if (is_valid) 104 { 105 val [i] = 1; 106 internal_DECOD_OUT_ACK [i] = PORT_READ(in_DECOD_OUT_ACK [i]); 107 108 } 109 else 110 { 111 // Consume the instruction (to erase) 112 internal_DECOD_OUT_ACK [i] = 1; 113 114 // Have event ? 115 if (nb_inst_event [context] > 0) 116 { 117 nb_inst_event [context] --; 118 119 // Last event ? 120 if (nb_inst_event [context] == 0) 121 { 122 context_val [context] = false; 123 } 124 } 125 } 99 126 } 100 127 } … … 107 134 108 135 PORT_WRITE(out_DECOD_OUT_VAL [i],val [i]); 136 } 137 } 138 else 139 { 140 // Reset 141 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 142 { 143 internal_DECOD_OUT_VAL [i] = 0; 144 internal_DECOD_OUT_ACK [i] = 0; 145 PORT_WRITE(out_DECOD_OUT_VAL [i],0); 146 } 109 147 } 110 148 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_genMoore.cpp
r111 r123 25 25 log_function(Decod_queue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 //-------------------------------------------------------------------- 28 30 //-----[ DECOD_IN ]--------------------------------------------------- … … 34 36 { 35 37 internal_DECOD_IN_ACK [i] = (reg_QUEUE[num_bank].size() < _param->_size_queue); 36 PORT_WRITE(out_DECOD_IN_ACK [i],internal_DECOD_IN_ACK [i]);37 38 38 39 num_bank = (num_bank+1)%_param->_nb_bank; … … 57 58 PORT_WRITE(out_DECOD_OUT_OPERATION [i],reg_QUEUE[num_bank].front()->_operation [0]); 58 59 PORT_WRITE(out_DECOD_OUT_NO_EXECUTE [i],reg_QUEUE[num_bank].front()->_no_execute [0]); 60 // PORT_WRITE(out_DECOD_OUT_HAVE_EVENT [i],0); 61 PORT_WRITE(out_DECOD_OUT_LAST_EVENT [i],0); 59 62 PORT_WRITE(out_DECOD_OUT_IS_DELAY_SLOT [i],reg_QUEUE[num_bank].front()->_is_delay_slot [0]); 60 63 #ifdef DEBUG … … 86 89 for (uint32_t i=0; i<_param->_nb_context; i++) 87 90 PORT_WRITE(out_NB_INST_ALL [i], reg_NB_INST [i]); 91 } 92 else 93 { 94 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 95 { 96 internal_DECOD_IN_ACK [i] = 0; 97 } 98 for (uint32_t i=0; i<_param->_nb_context; i++) 99 PORT_WRITE(out_NB_INST_ALL [i], 0); 100 } 101 102 103 // Write output 104 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 105 { 106 PORT_WRITE(out_DECOD_IN_ACK [i],internal_DECOD_IN_ACK [i]); 107 } 108 88 109 89 110 log_end(Decod_queue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_transition.cpp
r112 r123 35 35 36 36 for (uint32_t i=0; i<_param->_nb_context; i++) 37 reg_NB_INST [i]=0; 37 { 38 reg_NB_INST [i]=0; 39 reg_NB_INST_EVENT [i]=0; 40 } 38 41 39 42 reg_NUM_BANK_HEAD = 0; … … 131 134 // Update pointer 132 135 reg_NUM_BANK_HEAD = (reg_NUM_BANK_HEAD+1)%_param->_nb_bank; 133 reg_NB_INST [context] --; 136 137 reg_NB_INST [context] --; 138 if (reg_NB_INST_EVENT [context] > 0) 139 reg_NB_INST_EVENT [context] --; 134 140 } 135 141 } 136 142 137 143 //-------------------------------------------------------------------- 144 //-----[ CONTEXT_EVENT ]---------------------------------------------- 145 //-------------------------------------------------------------------- 146 for (uint32_t i=0; i<_param->_nb_context; i++) 147 if (PORT_READ(in_CONTEXT_EVENT [i])) 148 reg_NB_INST_EVENT [i] = reg_NB_INST [i]; 149 150 //-------------------------------------------------------------------- 138 151 //-----[ OTHERS ]----------------------------------------------------- 139 152 //-------------------------------------------------------------------- … … 141 154 #if defined(DEBUG) and defined(DEBUG_Decod_queue) and (DEBUG >= DEBUG_TRACE) 142 155 log_printf(TRACE,Decod_queue,FUNCTION," * Dump decod_queue"); 143 log_printf(TRACE,Decod_queue,FUNCTION," * reg_NUM_BANK_HEAD : %d",reg_NUM_BANK_HEAD);144 log_printf(TRACE,Decod_queue,FUNCTION," * reg_NUM_BANK_TAIL : %d",reg_NUM_BANK_TAIL);156 log_printf(TRACE,Decod_queue,FUNCTION," * reg_NUM_BANK_HEAD : %d",reg_NUM_BANK_HEAD); 157 log_printf(TRACE,Decod_queue,FUNCTION," * reg_NUM_BANK_TAIL : %d",reg_NUM_BANK_TAIL); 145 158 for (uint32_t i=0; i<_param->_nb_context; i++) 146 log_printf(TRACE,Decod_queue,FUNCTION," * reg_NB_INST [%d] : %d",i,reg_NB_INST [i]); 147 159 { 160 log_printf(TRACE,Decod_queue,FUNCTION," * reg_NB_INST [%d] : %d",i,reg_NB_INST [i]); 161 log_printf(TRACE,Decod_queue,FUNCTION," * reg_NB_INST_EVENT [%d] : %d",i,reg_NB_INST_EVENT [i]); 162 } 148 163 for (uint32_t i=0; i<_param->_nb_bank; ++i) 149 164 { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_genMealy_decod_out.cpp
r115 r123 25 25 log_function(Decod_queue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 29 bool context_val [_param->_nb_context]; 30 uint32_t nb_inst_event [_param->_nb_context]; 31 for (uint32_t i=0; i<_param->_nb_context; i++) 32 { 33 context_val [i] = true; 34 nb_inst_event [i] = reg_NB_INST_EVENT [i]; 35 } 36 27 37 Tcontrol_t val [_param->_nb_inst_decod]; 28 38 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) … … 47 57 48 58 Tcontext_t context = reg_QUEUE->front()->_context_id [index]; 49 Tdepth_t depth = reg_QUEUE->front()->_depth [index];50 Tdepth_t depth_min = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN [context]):0;51 Tdepth_t depth_max = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MAX [context]):0;52 Tcontrol_t depth_full = PORT_READ(in_DEPTH_FULL[context]);53 59 54 // is a valid instruction ? 55 // If DEPTH_CURRENT : 56 // equal at DEPTH_MIN -> not speculative 57 // not include ]DEPTH_MIN:DEPTH_MAX] -> previous branch miss 58 // include ]DEPTH_MIN:DEPTH_MAX] -> speculative 59 60 // All case 61 // ....... min ...X... max ....... OK 62 // ....... min ....... max ...X... KO 63 // ...X... min ....... max ....... KO 64 // ....... max ....... min ...X... OK 65 // ...X... max ....... min ....... OK 66 // ....... max ...X... min ....... KO 67 68 Tcontrol_t is_valid = true; 69 // Tcontrol_t is_valid = ((depth == depth_min) or 70 // depth_full or 71 // ((depth_min <= depth_max)? 72 // ((depth >= depth_min) and (depth <=depth_max)): 73 // ((depth >= depth_min) or (depth <=depth_max)))); 74 //Tcontrol_t is_valid = ((depth == depth_min) or 75 // ((depth_min < depth_max)? 76 // (depth<=depth_max): 77 // ((depth > depth_min) or (depth <= depth_max)))); 78 //Tcontrol_t is_valid = depth <= depth_max; 60 log_printf(TRACE,Decod_queue,FUNCTION," * context : %d",context); 79 61 80 log_printf(TRACE,Decod_queue,FUNCTION," * is_valid : %d",is_valid); 81 log_printf(TRACE,Decod_queue,FUNCTION," * context : %d",context); 82 log_printf(TRACE,Decod_queue,FUNCTION," * depth : %d",depth); 83 log_printf(TRACE,Decod_queue,FUNCTION," * depth_min : %d",depth_min); 84 log_printf(TRACE,Decod_queue,FUNCTION," * depth_max : %d",depth_max); 85 log_printf(TRACE,Decod_queue,FUNCTION," * depth_full : %d",depth_full); 86 #ifdef DEBUG 87 log_printf(TRACE,Decod_queue,FUNCTION," * address : 0x%x (0x%x)",reg_QUEUE->front()->_address [index],reg_QUEUE->front()->_address [index]<<2); 88 #endif 89 log_printf(TRACE,Decod_queue,FUNCTION," * address_next : 0x%x (0x%x)",reg_QUEUE->front()->_address_next[index],reg_QUEUE->front()->_address_next[index]<<2); 90 internal_DECOD_OUT_VAL [index] = 1; // in all case, val is set (entry is not empty, and instruction is valid) 91 if (is_valid) 62 if (context_val [context]) 92 63 { 93 val [i] = 1; 94 internal_DECOD_OUT_ACK [index] = PORT_READ(in_DECOD_OUT_ACK [i]); 95 } 96 else 97 { 98 // Consume the instruction (to erase) 99 internal_DECOD_OUT_ACK [index] = 1; 64 65 // Tdepth_t depth = reg_QUEUE->front()->_depth [index]; 66 // Tdepth_t depth_min = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN [context]):0; 67 // Tdepth_t depth_max = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MAX [context]):0; 68 // Tcontrol_t depth_full = PORT_READ(in_DEPTH_FULL[context]); 69 70 // is a valid instruction ? 71 // If DEPTH_CURRENT : 72 // equal at DEPTH_MIN -> not speculative 73 // not include ]DEPTH_MIN:DEPTH_MAX] -> previous branch miss 74 // include ]DEPTH_MIN:DEPTH_MAX] -> speculative 75 76 // All case 77 // ....... min ...X... max ....... OK 78 // ....... min ....... max ...X... KO 79 // ...X... min ....... max ....... KO 80 // ....... max ....... min ...X... OK 81 // ...X... max ....... min ....... OK 82 // ....... max ...X... min ....... KO 83 84 Tcontrol_t is_valid = (nb_inst_event [context] == 0); 85 86 // Tcontrol_t is_valid = ((depth == depth_min) or 87 // depth_full or 88 // ((depth_min <= depth_max)? 89 // ((depth >= depth_min) and (depth <=depth_max)): 90 // ((depth >= depth_min) or (depth <=depth_max)))); 91 92 log_printf(TRACE,Decod_queue,FUNCTION," * is_valid : %d",is_valid); 93 log_printf(TRACE,Decod_queue,FUNCTION," * context_val : %d",context_val [context]); 94 log_printf(TRACE,Decod_queue,FUNCTION," * nb_inst_event: %d",nb_inst_event [context]); 95 // log_printf(TRACE,Decod_queue,FUNCTION," * depth : %d",depth); 96 // log_printf(TRACE,Decod_queue,FUNCTION," * depth_min : %d",depth_min); 97 // log_printf(TRACE,Decod_queue,FUNCTION," * depth_max : %d",depth_max); 98 // log_printf(TRACE,Decod_queue,FUNCTION," * depth_full : %d",depth_full); 99 #ifdef DEBUG 100 log_printf(TRACE,Decod_queue,FUNCTION," * address : 0x%x (0x%x)",reg_QUEUE->front()->_address [index],reg_QUEUE->front()->_address [index]<<2); 101 #endif 102 log_printf(TRACE,Decod_queue,FUNCTION," * address_next : 0x%x (0x%x)",reg_QUEUE->front()->_address_next[index],reg_QUEUE->front()->_address_next[index]<<2); 103 internal_DECOD_OUT_VAL [index] = 1; // in all case, val is set (entry is not empty, and instruction is valid) 104 105 if (is_valid) 106 { 107 val [i] = 1; 108 internal_DECOD_OUT_ACK [index] = PORT_READ(in_DECOD_OUT_ACK [i]); 109 } 110 else 111 { 112 // Consume the instruction (to erase) 113 internal_DECOD_OUT_ACK [index] = 1; 114 115 // Have event ? 116 if (nb_inst_event [context] > 0) 117 { 118 nb_inst_event [context] --; 119 120 // Last event ? 121 if (nb_inst_event [context] == 0) 122 { 123 context_val [context] = false; 124 } 125 } 126 } 100 127 } 101 128 } … … 107 134 108 135 PORT_WRITE(out_DECOD_OUT_VAL [i],val [i]); 136 } 137 } 138 else 139 { 140 // Reset 141 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 142 { 143 internal_DECOD_OUT_VAL [i] = 0; 144 internal_DECOD_OUT_ACK [i] = 0; 145 PORT_WRITE(out_DECOD_OUT_VAL [i],0); 146 } 109 147 } 110 148 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_genMoore.cpp
r111 r123 25 25 log_function(Decod_queue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 //-------------------------------------------------------------------- 28 30 //-----[ DECOD_IN ]--------------------------------------------------- … … 34 36 { 35 37 internal_DECOD_IN_ACK [i] = ack; 36 PORT_WRITE(out_DECOD_IN_ACK [i],ack);37 38 } 38 39 } … … 57 58 PORT_WRITE(out_DECOD_OUT_OPERATION [i],reg_QUEUE->front()->_operation [index]); 58 59 PORT_WRITE(out_DECOD_OUT_NO_EXECUTE [i],reg_QUEUE->front()->_no_execute [index]); 60 // PORT_WRITE(out_DECOD_OUT_HAVE_EVENT [i],0); 61 PORT_WRITE(out_DECOD_OUT_LAST_EVENT [i],0); 59 62 PORT_WRITE(out_DECOD_OUT_IS_DELAY_SLOT [i],reg_QUEUE->front()->_is_delay_slot [index]); 60 63 #ifdef DEBUG … … 83 86 for (uint32_t i=0; i<_param->_nb_context; i++) 84 87 PORT_WRITE(out_NB_INST_ALL [i], reg_NB_INST [i]); 88 } 89 else 90 { 91 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 92 { 93 internal_DECOD_IN_ACK [i] = 0; 94 } 95 for (uint32_t i=0; i<_param->_nb_context; i++) 96 PORT_WRITE(out_NB_INST_ALL [i], 0); 97 } 98 99 // Write output 100 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 101 { 102 PORT_WRITE(out_DECOD_IN_ACK [i],internal_DECOD_IN_ACK [i]); 103 } 104 85 105 86 106 log_end(Decod_queue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_transition.cpp
r112 r123 34 34 35 35 for (uint32_t i=0; i<_param->_nb_context; i++) 36 reg_NB_INST [i]=0; 36 { 37 reg_NB_INST [i]=0; 38 reg_NB_INST_EVENT [i]=0; 39 } 37 40 38 41 reg_LAST_SLOT = 0; … … 130 133 log_printf(TRACE,Decod_queue,FUNCTION,_(" * context : %d"),context); 131 134 132 reg_NB_INST [context] --; 135 reg_NB_INST [context] --; 136 if (reg_NB_INST_EVENT [context] > 0) 137 reg_NB_INST_EVENT [context] --; 138 133 139 log_printf(TRACE,Decod_queue,FUNCTION,_(" * nb_inst : %d"),reg_NB_INST [context]); 134 140 } … … 149 155 } 150 156 } 157 158 //-------------------------------------------------------------------- 159 //-----[ CONTEXT_EVENT ]---------------------------------------------- 160 //-------------------------------------------------------------------- 161 for (uint32_t i=0; i<_param->_nb_context; i++) 162 if (PORT_READ(in_CONTEXT_EVENT [i])) 163 reg_NB_INST_EVENT [i] = reg_NB_INST [i]; 151 164 } 152 165 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_genMealy_decod_out.cpp
r111 r123 25 25 log_function(Decod_queue,FUNCTION,_name.c_str()); 26 26 27 // if (PORT_READ(in_NRESET)) 27 28 (this->*function_genMealy_decod_out) (); 28 29 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Decod_unit.h
r118 r123 86 86 public : SC_OUT(Toperation_t ) ** out_DECOD_OPERATION ;//[nb_inst_decod] 87 87 public : SC_OUT(Tcontrol_t ) ** out_DECOD_NO_EXECUTE ;//[nb_inst_decod] 88 //public : SC_OUT(Tcontrol_t ) ** out_DECOD_HAVE_EVENT ;//[nb_inst_decod] 89 public : SC_OUT(Tcontrol_t ) ** out_DECOD_LAST_EVENT ;//[nb_inst_decod] 88 90 public : SC_OUT(Tcontrol_t ) ** out_DECOD_IS_DELAY_SLOT ;//[nb_inst_decod] 89 91 #ifdef DEBUG … … 130 132 // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 131 133 public : SC_IN (Tcontrol_t ) ** in_CONTEXT_DECOD_ENABLE ;//[nb_context] 134 public : SC_IN (Tcontrol_t ) ** in_CONTEXT_EVENT ;//[nb_context] 132 135 public : SC_IN (Tcontrol_t ) ** in_CONTEXT_DEPTH_VAL ;//[nb_context] 133 136 public : SC_IN (Tdepth_t ) ** in_CONTEXT_DEPTH ;//[nb_context] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit.cpp
r88 r123 39 39 usage_environment(_usage); 40 40 41 #if DEBUG_Decod_unit == true42 log_printf(INFO,Decod_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());41 // #if DEBUG_Decod_unit == true 42 // log_printf(INFO,Decod_unit,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,Decod_unit,FUNCTION,_("Allocation")); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_allocation.cpp
r118 r123 91 91 ALLOC1_SIGNAL_OUT(out_DECOD_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 92 92 ALLOC1_SIGNAL_OUT(out_DECOD_NO_EXECUTE ,"no_execute" ,Tcontrol_t ,1 ); 93 // ALLOC1_SIGNAL_OUT(out_DECOD_HAVE_EVENT ,"have_event" ,Tcontrol_t ,1 ); 94 ALLOC1_SIGNAL_OUT(out_DECOD_LAST_EVENT ,"last_event" ,Tcontrol_t ,1 ); 93 95 ALLOC1_SIGNAL_OUT(out_DECOD_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t ,1 ); 94 96 #ifdef DEBUG … … 159 161 160 162 ALLOC1_SIGNAL_IN (in_CONTEXT_DECOD_ENABLE,"decod_enable",Tcontrol_t,1); 163 ALLOC1_SIGNAL_IN (in_CONTEXT_EVENT ,"event" ,Tcontrol_t,1); 161 164 ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH_VAL ,"depth_val" ,Tcontrol_t,1); 162 165 ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); … … 499 502 PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_NO_EXECUTE" , 500 503 dest,"out_DECOD_" +toString(i)+"_NO_EXECUTE" ); 504 // PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_HAVE_EVENT" , 505 // dest,"out_DECOD_" +toString(i)+"_HAVE_EVENT" ); 506 PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_LAST_EVENT" , 507 dest,"out_DECOD_" +toString(i)+"_LAST_EVENT" ); 501 508 PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_IS_DELAY_SLOT", 502 509 dest,"out_DECOD_" +toString(i)+"_IS_DELAY_SLOT"); … … 569 576 dest,"out_NB_INST_"+toString(i)+"_DECOD_ALL"); 570 577 } 578 579 580 581 for (uint32_t i=0; i<_param->_nb_context; i++) 582 { 583 dest = _name; 584 585 #ifdef POSITION 586 _component->interface_map (src ,"context_"+toString(i), 587 dest,"context_"+toString(i)); 588 #endif 589 590 PORT_MAP(_component,src , "in_CONTEXT_"+toString(i)+"_EVENT" , 591 dest, "in_CONTEXT_"+toString(i)+"_EVENT" ); 592 593 } 571 594 } 572 595 // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_deallocation.cpp
r112 r123 47 47 DELETE1_SIGNAL(out_DECOD_OPERATION ,_param->_nb_inst_decod,_param->_size_operation ); 48 48 DELETE1_SIGNAL(out_DECOD_NO_EXECUTE ,_param->_nb_inst_decod,1 ); 49 // DELETE1_SIGNAL(out_DECOD_HAVE_EVENT ,_param->_nb_inst_decod,1 ); 50 DELETE1_SIGNAL(out_DECOD_LAST_EVENT ,_param->_nb_inst_decod,1 ); 49 51 DELETE1_SIGNAL(out_DECOD_IS_DELAY_SLOT ,_param->_nb_inst_decod,1 ); 50 52 #ifdef DEBUG … … 87 89 88 90 DELETE1_SIGNAL(in_CONTEXT_DECOD_ENABLE ,_param->_nb_context,1); 91 DELETE1_SIGNAL(in_CONTEXT_EVENT ,_param->_nb_context,1); 89 92 DELETE1_SIGNAL(in_CONTEXT_DEPTH ,_param->_nb_context,_param->_size_depth); 90 93 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue.cpp
r119 r123 39 39 usage_environment(_usage); 40 40 41 #if DEBUG_Front_end_Glue == true42 log_printf(INFO,Front_end_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());43 44 std::cout << *param << std::endl;45 #endif41 // #if DEBUG_Front_end_Glue == true 42 // log_printf(INFO,Front_end_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 // std::cout << *param << std::endl; 45 // #endif 46 46 47 47 log_printf(INFO,Front_end_Glue,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue_genMealy_branch_complete.cpp
r88 r123 22 22 log_begin(Front_end_Glue,FUNCTION); 23 23 24 if (PORT_READ(in_NRESET)) 25 { 24 26 for (uint32_t i=0; i<_param->_nb_inst_branch_complete; ++i) 25 27 { … … 36 38 PORT_WRITE(out_BRANCH_COMPLETE_ACK [i],ack); 37 39 } 40 } 41 else 42 { 43 // RESET 44 for (uint32_t i=0; i<_param->_nb_inst_branch_complete; ++i) 45 { 46 PORT_WRITE(out_BRANCH_COMPLETE_PREDICTION_UNIT_VAL [i],0); 47 PORT_WRITE(out_BRANCH_COMPLETE_CONTEXT_STATE_VAL [i],0); 48 PORT_WRITE(out_BRANCH_COMPLETE_ACK [i],0); 49 } 50 } 38 51 39 52 log_end(Front_end_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue_genMealy_decod.cpp
r88 r123 24 24 // Warning : this function is an sc_method if _have_port_context_id 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 for (uint32_t i=0; i<_param->_nb_decod_unit; ++i) 27 29 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; ++j) 28 30 PORT_WRITE(out_DECOD_CONTEXT_ID [i][j],_param->_translate_context_id_from_decod_unit[i][PORT_READ(in_DECOD_DECOD_UNIT_CONTEXT_ID [i][j])]); 31 } 29 32 30 33 log_end(Front_end_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue_genMealy_depth.cpp
r101 r123 22 22 log_begin(Front_end_Glue,FUNCTION); 23 23 24 if (PORT_READ(in_NRESET)) 25 { 24 26 for (uint32_t i=0; i<_param->_nb_context; ++i) 25 27 { … … 48 50 PORT_WRITE(out_DEPTH_DECOD_UNIT_FULL [i][j], PORT_READ(in_DEPTH_PREDICTION_UNIT_FULL [num_context])); 49 51 } 52 } 50 53 51 54 log_end(Front_end_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue_genMealy_event.cpp
r119 r123 23 23 log_function(Front_end_Glue,FUNCTION,_name.c_str()); 24 24 25 if (PORT_READ(in_NRESET)) 26 { 25 27 for (uint32_t i=0; i<_param->_nb_context; ++i) 26 28 { … … 124 126 #endif 125 127 } 128 } 129 else 130 { 131 // Reset 132 for (uint32_t i=0; i<_param->_nb_context; ++i) 133 { 134 PORT_WRITE(out_EVENT_VAL [i], 0); 135 PORT_WRITE(out_EVENT_IFETCH_UNIT_VAL [i], 0); 136 PORT_WRITE(out_EVENT_PREDICTION_UNIT_VAL [i], 0); 137 PORT_WRITE(out_EVENT_CONTEXT_STATE_ACK [i], 0); 138 } 139 } 126 140 127 141 log_end(Front_end_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue_genMealy_nb_inst.cpp
r108 r123 22 22 log_begin(Front_end_Glue,FUNCTION); 23 23 24 if (PORT_READ(in_NRESET)) 25 { 24 26 for (uint32_t i=0; i<_param->_nb_context; ++i) 25 27 { … … 28 30 PORT_WRITE(out_NB_INST_DECOD_ALL [i], nb_inst); 29 31 PORT_WRITE(out_NB_INST_CONTEXT_STATE_DECOD_ALL [i], nb_inst); 32 } 30 33 } 31 34 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/src/Address_management.cpp
r88 r123 38 38 log_printf(FUNC,Address_management,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Address_management == true41 log_printf(INFO,Address_management,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_Address_management == true 41 // log_printf(INFO,Address_management,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Address_management,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/src/Address_management_genMoore.cpp
r107 r123 24 24 log_printf(FUNC,Address_management,FUNCTION,"Begin"); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 // ========================================= 27 29 // ===== ADDRESS =========================== … … 30 32 internal_ADDRESS_VAL = reg_PC_ACCESS_VAL; 31 33 32 PORT_WRITE(out_ADDRESS_VAL ,internal_ADDRESS_VAL );33 34 // Align pc on instruction packet address. 34 35 PORT_WRITE(out_ADDRESS_INSTRUCTION_ADDRESS ,reg_PC_ACCESS - (reg_PC_ACCESS%_param->_nb_instruction)); … … 48 49 internal_PREDICT_VAL = not reg_PC_NEXT_NEXT_VAL; 49 50 50 PORT_WRITE(out_PREDICT_VAL ,internal_PREDICT_VAL);51 51 PORT_WRITE(out_PREDICT_PC_PREVIOUS ,reg_PC_CURRENT ); 52 52 PORT_WRITE(out_PREDICT_PC_CURRENT ,reg_PC_NEXT ); 53 53 PORT_WRITE(out_PREDICT_PC_CURRENT_IS_DS_TAKE,reg_PC_NEXT_IS_DS_TAKE); 54 54 } 55 else 56 { 57 internal_ADDRESS_VAL = 0; 58 internal_PREDICT_VAL = 0; 59 } 60 61 PORT_WRITE(out_ADDRESS_VAL,internal_ADDRESS_VAL); 62 PORT_WRITE(out_PREDICT_VAL,internal_PREDICT_VAL); 63 55 64 log_printf(FUNC,Address_management,FUNCTION,"End"); 56 65 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/src/Address_management_transition.cpp
r119 r123 222 222 std::string instruction_enable; 223 223 for (uint32_t i=0; i<_param->_nb_instruction; ++i) 224 instruction_enable += toString(reg_PC_ACCESS_INSTRUCTION_ENABLE [i])+ " ";224 instruction_enable += ((reg_PC_ACCESS_VAL)?(toString(reg_PC_ACCESS_INSTRUCTION_ENABLE [i])):"X") + " "; 225 225 226 226 log_printf(TRACE,Address_management,FUNCTION," * Access : %d %d 0x%.8x (%.8x) - %.2d %.2d %.2d - %s", … … 238 238 std::string instruction_enable; 239 239 for (uint32_t i=0; i<_param->_nb_instruction; ++i) 240 instruction_enable += toString(reg_PC_CURRENT_INSTRUCTION_ENABLE [i])+ " ";240 instruction_enable += ((reg_PC_CURRENT_VAL)?(toString(reg_PC_CURRENT_INSTRUCTION_ENABLE [i])):"X") + " "; 241 241 242 242 log_printf(TRACE,Address_management,FUNCTION," * Current : %d %d 0x%.8x (%.8x) - %.2d %.2d %.2d - %s", … … 254 254 std::string instruction_enable; 255 255 for (uint32_t i=0; i<_param->_nb_instruction; ++i) 256 instruction_enable += toString(reg_PC_NEXT_INSTRUCTION_ENABLE [i])+ " ";256 instruction_enable += ((reg_PC_NEXT_VAL)?(toString(reg_PC_NEXT_INSTRUCTION_ENABLE [i])):"X") + " "; 257 257 258 258 log_printf(TRACE,Address_management,FUNCTION," * Next : %d %d 0x%.8x (%.8x) - %.2d %.2d %.2d - %s", -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue.cpp
r88 r123 38 38 log_printf(FUNC,Ifetch_queue,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Ifetch_queue == true41 log_printf(INFO,Ifetch_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_Ifetch_queue == true 41 // log_printf(INFO,Ifetch_queue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Ifetch_queue,FUNCTION,_("<%s> Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_deallocation.cpp
r112 r123 36 36 DELETE0_SIGNAL( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth ); 37 37 DELETE0_SIGNAL(out_ADDRESS_IFETCH_QUEUE_ID ,_param->_size_ifetch_queue_ptr); 38 DELETE1_SIGNAL( in_ADDRESS_INSTRUCTION_ENABLE , 1,_param->_nb_instruction);38 DELETE1_SIGNAL( in_ADDRESS_INSTRUCTION_ENABLE ,_param->_nb_instruction,1); 39 39 40 DELETE1_SIGNAL(out_DECOD_VAL , 1,_param->_nb_instruction);41 DELETE1_SIGNAL( in_DECOD_ACK , 1,_param->_nb_instruction);42 DELETE1_SIGNAL(out_DECOD_INSTRUCTION ,_param->_ size_instruction,_param->_nb_instruction);40 DELETE1_SIGNAL(out_DECOD_VAL ,_param->_nb_instruction,1); 41 DELETE1_SIGNAL( in_DECOD_ACK ,_param->_nb_instruction,1); 42 DELETE1_SIGNAL(out_DECOD_INSTRUCTION ,_param->_nb_instruction,_param->_size_instruction); 43 43 DELETE0_SIGNAL(out_DECOD_ADDRESS ,_param->_size_instruction_address); 44 44 DELETE0_SIGNAL(out_DECOD_INST_IFETCH_PTR ,_param->_size_inst_ifetch_ptr ); … … 51 51 DELETE0_SIGNAL( in_ICACHE_RSP_PACKET_ID ,_param->_size_ifetch_queue_ptr); 52 52 DELETE0_SIGNAL( in_ICACHE_RSP_ERROR ,_param->_size_icache_error); 53 DELETE1_SIGNAL( in_ICACHE_RSP_INSTRUCTION,_param->_ size_instruction,_param->_nb_instruction);53 DELETE1_SIGNAL( in_ICACHE_RSP_INSTRUCTION,_param->_nb_instruction,_param->_size_instruction); 54 54 55 55 DELETE0_SIGNAL( in_EVENT_RESET_VAL,1); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_genMoore.cpp
r119 r123 23 23 log_printf(FUNC,Ifetch_queue,FUNCTION,"Begin"); 24 24 25 if (PORT_READ(in_NRESET)) 26 { 25 27 // ========================================================== 26 28 // =====[ ADDRESS ]========================================== … … 29 31 internal_ADDRESS_ACK = (_queue[reg_PTR_WRITE]->_state == IFETCH_QUEUE_STATE_EMPTY); 30 32 31 PORT_WRITE(out_ADDRESS_ACK , internal_ADDRESS_ACK);32 33 if (_param->_have_port_ifetch_queue_ptr) 33 34 PORT_WRITE(out_ADDRESS_IFETCH_QUEUE_ID, reg_PTR_WRITE); … … 43 44 { 44 45 internal_DECOD_VAL [i] = ack and _queue[reg_PTR_READ]->_instruction_enable [i]; 45 PORT_WRITE(out_DECOD_VAL [i], internal_DECOD_VAL [i]);46 46 PORT_WRITE(out_DECOD_INSTRUCTION [i], _queue[reg_PTR_READ]->_instruction [i]); 47 47 } … … 55 55 PORT_WRITE(out_DECOD_EXCEPTION , _queue[reg_PTR_READ]->_exception ); 56 56 } 57 } 58 else 59 { 60 // Reset 61 internal_ADDRESS_ACK = 0; 62 for (uint32_t i=0; i<_param->_nb_instruction; i++) 63 internal_DECOD_VAL [i] = 0; 64 65 } 66 67 // Write Output 68 PORT_WRITE(out_ADDRESS_ACK , internal_ADDRESS_ACK); 69 for (uint32_t i=0; i<_param->_nb_instruction; i++) 70 PORT_WRITE(out_DECOD_VAL [i], internal_DECOD_VAL [i]); 57 71 58 72 log_printf(FUNC,Ifetch_queue,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/src/Ifetch_unit_Glue.cpp
r88 r123 38 38 log_printf(FUNC,Ifetch_unit_Glue,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Ifetch_unit_Glue == true41 log_printf(INFO,Ifetch_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_Ifetch_unit_Glue == true 41 // log_printf(INFO,Ifetch_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Ifetch_unit_Glue,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/src/Ifetch_unit_Glue_genMealy_event.cpp
r81 r123 24 24 log_printf(FUNC,Ifetch_unit_Glue,FUNCTION,"Begin"); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 Tcontrol_t address_ack = PORT_READ(in_EVENT_ADDRESS_ACK); 27 29 Tcontrol_t queue_ack = PORT_READ(in_EVENT_QUEUE_ACK ); … … 31 33 PORT_WRITE(out_EVENT_ADDRESS_VAL, val and queue_ack); 32 34 PORT_WRITE(out_EVENT_QUEUE_VAL , address_ack and val); 33 35 } 36 else 37 { 38 PORT_WRITE(out_EVENT_ACK , 0); 39 PORT_WRITE(out_EVENT_ADDRESS_VAL, 0); 40 PORT_WRITE(out_EVENT_QUEUE_VAL , 0); 41 } 42 34 43 log_printf(FUNC,Ifetch_unit_Glue,FUNCTION,"End"); 35 44 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/src/Ifetch_unit_Glue_genMealy_icache_req.cpp
r85 r123 24 24 log_printf(FUNC,Ifetch_unit_Glue,FUNCTION,"Begin"); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 Tcontrol_t address_val = PORT_READ(in_ICACHE_REQ_ADDRESS_VAL); 27 29 Tcontrol_t queue_ack = PORT_READ(in_ICACHE_REQ_QUEUE_ACK ); … … 35 37 PORT_WRITE(out_ICACHE_REQ_ADDRESS ,address); 36 38 PORT_WRITE(out_ICACHE_REQ_QUEUE_ADDRESS,address); 39 } 40 else 41 { 42 // RESET 43 PORT_WRITE(out_ICACHE_REQ_VAL , 0); 44 PORT_WRITE(out_ICACHE_REQ_ADDRESS_ACK, 0); 45 PORT_WRITE(out_ICACHE_REQ_QUEUE_VAL , 0); 46 } 37 47 38 48 log_printf(FUNC,Ifetch_unit_Glue,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/src/Ifetch_unit.cpp
r88 r123 37 37 log_printf(FUNC,Ifetch_unit,FUNCTION,"Begin"); 38 38 39 #if DEBUG_Ifetch_unit == true40 log_printf(INFO,Ifetch_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());39 // #if DEBUG_Ifetch_unit == true 40 // log_printf(INFO,Ifetch_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 41 41 42 std::cout << *param << std::endl;43 #endif42 // std::cout << *param << std::endl; 43 // #endif 44 44 45 45 log_printf(INFO,Ifetch_unit,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/src/Ifetch_unit_deallocation.cpp
r112 r123 40 40 DELETE0_SIGNAL( in_ICACHE_RSP_PACKET_ID ,_param->_size_ifetch_queue_ptr ); 41 41 DELETE0_SIGNAL( in_ICACHE_RSP_ERROR ,_param->_size_icache_error); 42 DELETE1_SIGNAL( in_ICACHE_RSP_INSTRUCTION,_param->_ size_instruction,_param->_nb_instruction);42 DELETE1_SIGNAL( in_ICACHE_RSP_INSTRUCTION,_param->_nb_instruction, _param->_size_instruction); 43 43 44 44 DELETE0_SIGNAL(out_PREDICT_VAL ,1); … … 52 52 DELETE0_SIGNAL( in_PREDICT_BRANCH_STATE ,_param->_size_branch_state); 53 53 DELETE0_SIGNAL( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth); 54 DELETE1_SIGNAL( in_PREDICT_INSTRUCTION_ENABLE , 1,_param->_nb_instruction);54 DELETE1_SIGNAL( in_PREDICT_INSTRUCTION_ENABLE ,_param->_nb_instruction,1); 55 55 56 56 // DELETE0_SIGNAL(out_DECOD_CONTEXT_ID ,_param->_size_context_id); … … 62 62 DELETE1_SIGNAL(out_DECOD_VAL ,1,_param->_nb_instruction); 63 63 DELETE1_SIGNAL( in_DECOD_ACK ,1,_param->_nb_instruction); 64 DELETE1_SIGNAL(out_DECOD_INSTRUCTION ,_param->_ size_instruction,_param->_nb_instruction);64 DELETE1_SIGNAL(out_DECOD_INSTRUCTION ,_param->_nb_instruction,_param->_size_instruction); 65 65 66 66 DELETE0_SIGNAL( in_EVENT_VAL ,1); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue.cpp
r88 r123 39 39 log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin"); 40 40 41 #if DEBUG_Branch_Target_Buffer_Glue == true42 log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());43 44 std::cout << *param << std::endl;45 #endif41 // #if DEBUG_Branch_Target_Buffer_Glue == true 42 // log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 // std::cout << *param << std::endl; 45 // #endif 46 46 47 47 log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_genMealy_decod.cpp
r98 r123 25 25 log_function(Branch_Target_Buffer_Glue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 28 30 { … … 62 64 } 63 65 } 66 } 67 else 68 { 69 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 70 { 71 PORT_WRITE(out_DECOD_ACK [i], 0); 72 PORT_WRITE(out_DECOD_REGISTER_VAL [i], 0); 73 if (_param->_have_port_victim) 74 PORT_WRITE(out_DECOD_VICTIM_VAL [i], 0); 75 } 76 } 64 77 65 78 log_end(Branch_Target_Buffer_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_genMealy_predict.cpp
r108 r123 25 25 log_function(Branch_Target_Buffer_Glue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 28 30 { … … 83 85 } 84 86 } 87 } 88 else 89 { 90 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 91 { 92 PORT_WRITE(out_PREDICT_ACK [i], 0); 93 PORT_WRITE(out_PREDICT_REGISTER_VAL [i], 0); 94 if (_param->_have_port_victim) 95 PORT_WRITE(out_PREDICT_VICTIM_VAL [i], 0); 96 } 97 } 85 98 86 99 log_end(Branch_Target_Buffer_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_genMealy_update.cpp
r98 r123 25 25 log_function(Branch_Target_Buffer_Glue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 for (uint32_t i=0; i<_param->_nb_inst_update; i++) 28 30 { … … 52 54 } 53 55 } 56 } 57 else 58 { 59 for (uint32_t i=0; i<_param->_nb_inst_update; i++) 60 { 61 PORT_WRITE(out_UPDATE_ACK [i], 0); 62 PORT_WRITE(out_UPDATE_REGISTER_VAL [i], 0); 63 if (_param->_have_port_victim) 64 PORT_WRITE(out_UPDATE_VICTIM_VAL [i], 0); 65 } 66 } 54 67 55 68 log_end(Branch_Target_Buffer_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register.cpp
r113 r123 38 38 log_printf(FUNC,Branch_Target_Buffer_Register,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Branch_Target_Buffer_Register == true41 log_printf(INFO,Branch_Target_Buffer_Register,FUNCTION,_("<%s> Parameters"),_name.c_str());42 43 std::cout << *param << std::endl;44 #endif40 // #if DEBUG_Branch_Target_Buffer_Register == true 41 // log_printf(INFO,Branch_Target_Buffer_Register,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Branch_Target_Buffer_Register,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register_genMealy_decod.cpp
r88 r123 25 25 log_function(Branch_Target_Buffer_Register,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 28 30 { … … 55 57 } 56 58 } 57 59 } 60 else 61 { 62 // internal_DECOD_HIT [i] = hit ; 63 // internal_DECOD_NUM_BANK [i] = num_bank ; 64 // internal_DECOD_NUM_ENTRY [i] = num_entry; 65 } 66 58 67 log_end(Branch_Target_Buffer_Register,FUNCTION); 59 68 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register_genMealy_predict.cpp
r108 r123 25 25 log_function(Branch_Target_Buffer_Register,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 28 30 { … … 64 66 } 65 67 } 68 } 69 // else 70 // { 71 // } 66 72 67 73 log_end(Branch_Target_Buffer_Register,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register_genMealy_update.cpp
r88 r123 25 25 log_function(Branch_Target_Buffer_Register,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 for (uint32_t i=0; i<_param->_nb_inst_update; i++) 28 30 { … … 55 57 } 56 58 } 59 } 60 // else 61 // { 62 // internal_UPDATE_HIT [i] = hit ; 63 // internal_UPDATE_NUM_BANK [i] = num_bank ; 64 // internal_UPDATE_NUM_ENTRY [i] = num_entry; 65 // } 57 66 58 67 log_end(Branch_Target_Buffer_Register,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/src/Branch_Target_Buffer.cpp
r88 r123 40 40 log_printf(INFO,Branch_Target_Buffer,FUNCTION,"Allocation"); 41 41 42 #if DEBUG_Branch_Target_Buffer == true43 log_printf(INFO,Branch_Target_Buffer,FUNCTION,_("<%s> Parameters"),_name.c_str());42 // #if DEBUG_Branch_Target_Buffer == true 43 // log_printf(INFO,Branch_Target_Buffer,FUNCTION,_("<%s> Parameters"),_name.c_str()); 44 44 45 std::cout << *param << std::endl;46 #endif45 // std::cout << *param << std::endl; 46 // #endif 47 47 48 48 allocation ( -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue.cpp
r112 r123 40 40 41 41 42 #if DEBUG_Direction_Glue == true43 log_printf(INFO,Direction_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());44 45 std::cout << *param << std::endl;46 #endif42 // #if DEBUG_Direction_Glue == true 43 // log_printf(INFO,Direction_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 44 45 // std::cout << *param << std::endl; 46 // #endif 47 47 48 48 log_printf(INFO,Direction_Glue,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue_genMealy_predict.cpp
r107 r123 26 26 log_function(Direction_Glue,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 30 // std::cout << "Kane (before) " << std::endl; 31 // std::cout << _param << std::endl; 32 // std::cout << _param->_nb_inst_update << std::endl; 33 // std::cout << _param->_nb_inst_predict<< std::endl; 34 // std::cout << "Kane (end) " << std::endl; 35 36 28 37 // constant direction : never / always 29 38 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) … … 31 40 log_printf(TRACE,Direction_Glue,FUNCTION," * PREDICT [%d]",i); 32 41 33 Tcontrol_t direction ;42 Tcontrol_t direction = false; 34 43 35 44 switch (_param->_predictor_scheme) … … 86 95 PORT_WRITE(out_PREDICT_DIRECTION [i], direction); 87 96 } 97 } 98 else 99 { 100 //RESET 101 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 102 { 103 if (_param->_have_component_meta_predictor) 104 { 105 PORT_WRITE(out_PREDICT_PREDICTOR_VAL [i], 0); 106 PORT_WRITE(out_PREDICT_ACK [i], 0); 107 } 108 } 109 } 88 110 89 111 log_end(Direction_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue_genMealy_update.cpp
r112 r123 26 26 log_function(Direction_Glue,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 for (uint32_t i=0; i<_param->_nb_inst_update; i++) 29 31 { … … 35 37 PORT_WRITE(out_UPDATE_PREDICTOR_PREDICTION_IFETCH [i], PORT_READ(in_UPDATE_PREDICTION_IFETCH [i])); 36 38 } 37 39 } 40 else 41 { 42 // RESET 43 for (uint32_t i=0; i<_param->_nb_inst_update; i++) 44 { 45 PORT_WRITE(out_UPDATE_PREDICTOR_VAL [i], 0); 46 PORT_WRITE(out_UPDATE_ACK [i], 0); 47 } 48 } 49 38 50 log_end(Direction_Glue,FUNCTION); 39 51 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_genMealy_predict.cpp
r111 r123 27 27 log_function(Meta_Predictor_Glue,FUNCTION,_name.c_str()); 28 28 29 if (PORT_READ(in_NRESET)) 30 { 29 31 for (uint32_t i=0; i<_param->_nb_inst_predict; ++i) 30 32 { … … 89 91 PORT_WRITE(out_PREDICT_DIRECTION [i],direction); 90 92 } 93 } 94 // else 95 // { 96 // } 91 97 92 98 log_end(Meta_Predictor_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_genMealy_predict_valack.cpp
r111 r123 27 27 log_function(Meta_Predictor_Glue,FUNCTION,_name.c_str()); 28 28 29 if (PORT_READ(in_NRESET)) 30 { 29 31 for (uint32_t i=0; i<_param->_nb_inst_predict; ++i) 30 32 { … … 40 42 41 43 PORT_WRITE(out_PREDICT_ACK [i],ack); 44 } 45 } 46 else 47 { 48 // Reset 49 for (uint32_t i=0; i<_param->_nb_inst_predict; ++i) 50 { 51 for (uint32_t j=0; j<_param->_nb_predictor; ++j) 52 PORT_WRITE(out_PREDICT_PREDICTOR_VAL [j][i],0); 53 PORT_WRITE(out_PREDICT_ACK [i],0); 54 } 42 55 } 43 56 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_genMealy_update.cpp
r112 r123 27 27 log_function(Meta_Predictor_Glue,FUNCTION,_name.c_str()); 28 28 29 if (PORT_READ(in_NRESET)) 30 { 29 31 for (uint32_t i=0; i<_param->_nb_inst_update; ++i) 30 32 { … … 112 114 } 113 115 } 116 } 117 // else 118 // { 119 // // RESET 120 // } 114 121 115 122 log_end(Meta_Predictor_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_genMealy_update_valack.cpp
r111 r123 27 27 log_function(Meta_Predictor_Glue,FUNCTION,_name.c_str()); 28 28 29 if (PORT_READ(in_NRESET)) 30 { 29 31 for (uint32_t i=0; i<_param->_nb_inst_update; ++i) 30 32 { … … 40 42 41 43 PORT_WRITE(out_UPDATE_ACK [i],ack); 44 } 45 } 46 else 47 { 48 // RESET 49 for (uint32_t i=0; i<_param->_nb_inst_update; ++i) 50 { 51 for (uint32_t j=0; j<_param->_nb_predictor; ++j) 52 PORT_WRITE(out_UPDATE_PREDICTOR_VAL [j][i],0); 53 PORT_WRITE(out_UPDATE_ACK [i],0); 54 } 42 55 } 43 56 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_genMealy_predict.cpp
r119 r123 29 29 log_function(Two_Level_Branch_Predictor,FUNCTION,_name.c_str()); 30 30 31 if (PORT_READ(in_NRESET)) 32 { 31 33 // =================================================================== 32 34 // =====[ PREDICT ]=================================================== … … 95 97 PORT_WRITE(out_PREDICT_HISTORY [i],history ); 96 98 } 99 } 97 100 98 101 log_end(Two_Level_Branch_Predictor,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/src/Direction.cpp
r88 r123 38 38 log_printf(FUNC,Direction,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Direction == true41 log_printf(INFO,Direction,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_Direction == true 41 // log_printf(INFO,Direction,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Direction,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/src/Prediction_unit_Glue.cpp
r110 r123 40 40 usage_environment(_usage); 41 41 42 #if DEBUG_Prediction_unit_Glue == true43 log_printf(INFO,Prediction_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());44 45 std::cout << *param << std::endl;46 #endif42 // #if DEBUG_Prediction_unit_Glue == true 43 // log_printf(INFO,Prediction_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 44 45 // std::cout << *param << std::endl; 46 // #endif 47 47 48 48 log_printf(INFO,Prediction_unit_Glue,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/src/Prediction_unit_Glue_genMealy_decod.cpp
r110 r123 290 290 PORT_WRITE(out_DECOD_ACK [i][j], ack[j]); 291 291 } 292 else 293 { 294 // Reset 295 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 296 { 297 PORT_WRITE(out_DECOD_BTB_VAL [i], 0); 298 PORT_WRITE(out_DECOD_RAS_VAL [i], 0); 299 PORT_WRITE(out_DECOD_UPT_VAL [i], 0); 300 } 301 302 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 303 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 304 PORT_WRITE(out_DECOD_ACK [i][j], 0); 305 } 292 306 log_end(Prediction_unit_Glue,FUNCTION); 293 307 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/src/Prediction_unit_Glue_genMealy_predict.cpp
r111 r123 420 420 PORT_WRITE(out_PREDICT_ACK[i],ack[i]); 421 421 } 422 else 423 { 424 // RESET 425 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 426 { 427 PORT_WRITE(out_PREDICT_BTB_VAL [i], 0); 428 PORT_WRITE(out_PREDICT_DIR_VAL [i], 0); 429 PORT_WRITE(out_PREDICT_RAS_VAL [i], 0); 430 PORT_WRITE(out_PREDICT_UPT_VAL [i], 0); 431 } 432 for (uint32_t i=0; i<_param->_nb_context; i++) 433 PORT_WRITE(out_PREDICT_ACK[i],0); 434 } 422 435 423 436 log_end(Prediction_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/src/Prediction_unit_Glue_genMealy_update.cpp
r98 r123 25 25 log_function(Prediction_unit_Glue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 for (uint32_t i=0; i<_param->_nb_inst_branch_update; i++) 28 30 { … … 88 90 PORT_WRITE(out_UPDATE_UPT_ACK [i], upt_ack); 89 91 } 92 } 93 else 94 { 95 // RESET 96 for (uint32_t i=0; i<_param->_nb_inst_branch_update; i++) 97 { 98 PORT_WRITE(out_UPDATE_BTB_VAL [i], 0); 99 PORT_WRITE(out_UPDATE_DIR_VAL [i], 0); 100 PORT_WRITE(out_UPDATE_RAS_VAL [i], 0); 101 PORT_WRITE(out_UPDATE_UPT_ACK [i], 0); 102 } 103 } 90 104 91 105 log_end(Prediction_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack.cpp
r88 r123 38 38 log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Return_Address_Stac == true41 log_printf(INFO,Return_Address_Stac,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_Return_Address_Stac == true 41 // log_printf(INFO,Return_Address_Stac,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Return_Address_Stack,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_genMealy_decod.cpp
r118 r123 66 66 } 67 67 } 68 else 69 { 70 // internal_DECOD_HIT [i] = (push or (reg_NB_ELT[context]>0)); 71 } 72 68 73 log_end(Return_Address_Stack,FUNCTION); 69 74 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_genMealy_predict.cpp
r118 r123 25 25 log_function(Return_Address_Stack,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET) == 1)27 if (PORT_READ(in_NRESET)) 28 28 { 29 29 #ifdef DEBUG_TEST … … 69 69 } 70 70 } 71 else 72 { 73 // for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 74 // internal_PREDICT_HIT [i] = (push or (reg_PREDICT_NB_ELT[context]>0)); 75 76 } 71 77 72 78 log_end(Return_Address_Stack,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Types.h
r122 r123 54 54 UPT_EVENT_STATE_KO_DECODE_WAIT_END_EVENT , // prediction unit is ok, wait the end of event (send by Context State) 55 55 UPT_EVENT_STATE_KO_COMMIT_UPDATE_CONTEXT , // prediction unit is update, send signal to context manager 56 UPT_EVENT_STATE_KO_COMMIT_WAIT_END_EVENT // prediction unit is ok, wait the end of event (send by Context State) 56 UPT_EVENT_STATE_KO_COMMIT_WAIT_END_EVENT , // prediction unit is ok, wait the end of event (send by Context State) 57 UPT_EVENT_STATE_KO_COMMIT_WAIT_END_UPDATE // prediction unit is ok, wait the end of event (send by Context State) 57 58 } upt_event_state_t; 58 59 … … 226 227 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_COMMIT_UPDATE_CONTEXT : return "UPT_EVENT_STATE_KO_COMMIT_UPDATE_CONTEXT" ; break; 227 228 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_COMMIT_WAIT_END_EVENT : return "UPT_EVENT_STATE_KO_COMMIT_WAIT_END_EVENT" ; break; 229 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_COMMIT_WAIT_END_UPDATE : return "UPT_EVENT_STATE_KO_COMMIT_WAIT_END_UPDATE" ; break; 228 230 default : return ""; break; 229 231 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table.cpp
r111 r123 40 40 usage_environment(_usage); 41 41 42 #if DEBUG_Update_Prediction_Table == true43 log_printf(INFO,Update_Prediction_Table,FUNCTION,_("<%s> Parameters"),_name.c_str());44 45 std::cout << *param << std::endl;46 #endif42 // #if DEBUG_Update_Prediction_Table == true 43 // log_printf(INFO,Update_Prediction_Table,FUNCTION,_("<%s> Parameters"),_name.c_str()); 44 45 // std::cout << *param << std::endl; 46 // #endif 47 47 48 48 log_printf(INFO,Update_Prediction_Table,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_branch_complete.cpp
r122 r123 24 24 log_begin(Update_Prediction_Table,FUNCTION); 25 25 log_function(Update_Prediction_Table,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++) 28 30 #ifdef DEBUG_TEST … … 129 131 // PORT_WRITE(out_BRANCH_COMPLETE_ADDRESS_DEST [i], internal_BRANCH_COMPLETE_ADDRESS_DEST [i]); 130 132 } 131 133 } 132 134 log_end(Update_Prediction_Table,FUNCTION); 133 135 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_decod.cpp
r122 r123 68 68 } 69 69 } 70 else 71 { 72 // RESET 73 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 74 PORT_WRITE(out_DECOD_ACK [i], 0); 75 } 76 70 77 log_end(Update_Prediction_Table,FUNCTION); 71 78 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_predict.cpp
r122 r123 57 57 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * ACK : %d",internal_PREDICT_ACK [i]); 58 58 59 PORT_WRITE(out_PREDICT_ACK [i], internal_PREDICT_ACK [i]);60 59 if (_param->_have_port_depth) 61 60 PORT_WRITE(out_PREDICT_UPDATE_PREDICTION_ID [i], internal_PREDICT_UPDATE_PREDICTION_ID [i]); … … 63 62 64 63 }//don't reset 64 else 65 { 66 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 67 { 68 internal_PREDICT_ACK [i] = 0; 69 // internal_PREDICT_UPDATE_PREDICTION_ID [i] = top; 70 } 71 } 72 73 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 74 PORT_WRITE(out_PREDICT_ACK [i], internal_PREDICT_ACK [i]); 65 75 66 76 log_end(Update_Prediction_Table,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMoore.cpp
r122 r123 248 248 internal_UPDATE_CONTEXT_ID [i] = context; 249 249 250 PORT_WRITE(out_UPDATE_VAL [i],internal_UPDATE_VAL [i]);251 250 if (val) 252 251 { … … 282 281 Tcontrol_t val = ((reg_UPT_EVENT_STATE [i] == UPT_EVENT_STATE_KO_DECODE_UPDATE_CONTEXT) or 283 282 (reg_UPT_EVENT_STATE [i] == UPT_EVENT_STATE_KO_COMMIT_UPDATE_CONTEXT)); 284 PORT_WRITE(out_BRANCH_EVENT_VAL [i],val);285 283 if (_param->_have_port_depth) 286 284 PORT_WRITE(out_BRANCH_EVENT_DEPTH [i],reg_EVENT_DEPTH [i]); … … 301 299 internal_UPDATE_VAL [i] = 0; 302 300 internal_UPDATE_VAL_WITHOUT_ACK [i] = 0; 301 internal_UPDATE_CONTEXT_ID [i] = 0; 302 303 303 } 304 304 for (uint32_t i=0; i<_param->_nb_context; i++) … … 308 308 } 309 309 310 // Write output 311 for (uint32_t i=0; i<_param->_nb_inst_update; i++) 312 PORT_WRITE(out_UPDATE_VAL [i],internal_UPDATE_VAL [i]); 313 for (uint32_t i=0; i<_param->_nb_context; i++) 314 PORT_WRITE(out_BRANCH_EVENT_VAL [i],internal_BRANCH_EVENT_VAL [i]); 310 315 311 316 log_end(Update_Prediction_Table,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp
r122 r123 545 545 } 546 546 547 // Test if freeing the branch with no accurate ? 548 if ((reg_UPDATE_PREDICTION_TABLE [context][depth]._is_accurate == false) and not ko) 549 reg_IS_ACCURATE [context] = true; 550 547 551 // Update pointer 548 552 // * if update RAS : update pointer is decreaste until it equal at top pointer … … 577 581 } 578 582 579 reg_UPT_EVENT_STATE [context] = upt_event_state;580 583 } 581 584 else … … 593 596 } 594 597 595 // Test if freeing the branch with no accurate ? 596 if ((reg_UPDATE_PREDICTION_TABLE [context][depth]._is_accurate == false) and not ko) 597 reg_IS_ACCURATE [context] = true; 598 // special case : 599 if ((upt_event_state == UPT_EVENT_STATE_KO_COMMIT_WAIT_END_UPDATE) and 600 (reg_UPT_UPDATE [context] == reg_EVENT_UPT_PTR [context])) 601 { 602 reg_UPT_TOP [context] = reg_UPT_TOP_EVENT [context]; 603 reg_UPT_UPDATE [context] = reg_UPT_TOP_EVENT [context]; 604 reg_IS_ACCURATE [context] = true; 605 606 upt_event_state = UPT_EVENT_STATE_OK; 607 } 608 609 reg_UPT_EVENT_STATE [context] = upt_event_state; 598 610 599 611 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_UPDATE (after ) : %d",reg_UPT_UPDATE[context]); … … 654 666 655 667 Taddress_t address_src = reg_UPDATE_PREDICTION_TABLE [context][depth]._address_src; 656 upt_state_t event_top= reg_UPDATE_PREDICTION_TABLE [context][top]._state;668 upt_state_t top_state = reg_UPDATE_PREDICTION_TABLE [context][top]._state; 657 669 658 670 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * upt_event_state : %s",toString(upt_event_state).c_str()); 659 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * event_top : %s",toString(event_top).c_str());671 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * top_state : %s",toString(top_state).c_str()); 660 672 661 673 bool previous_ufpt_event = (reg_UFPT_EVENT_STATE [i] == UFPT_EVENT_STATE_KO_FLUSH); … … 667 679 or (upt_event_state == UPT_EVENT_STATE_KO_EVENT_WAIT_UFPT) 668 680 or (upt_event_state == UPT_EVENT_STATE_KO_EVENT_FLUSH_UPT) 669 or (event_top == UPDATE_PREDICTION_STATE_END_KO ) 670 or (event_top == UPDATE_PREDICTION_STATE_KO ) 681 or (upt_event_state == UPT_EVENT_STATE_KO_COMMIT_WAIT_END_UPDATE) 682 or (top_state == UPDATE_PREDICTION_STATE_END_KO ) 683 or (top_state == UPDATE_PREDICTION_STATE_KO ) 671 684 ); 672 685 … … 706 719 reg_UPDATE_PREDICTION_TABLE [context][top]._retire_ok = false; 707 720 708 switch ( event_top)721 switch (top_state) 709 722 { 710 723 case UPDATE_PREDICTION_STATE_END_KO : 724 case UPDATE_PREDICTION_STATE_END : 711 725 { 712 726 // Have already update predictor … … 867 881 case UPT_EVENT_STATE_KO_COMMIT_WAIT_END_EVENT : 868 882 { 869 Tdepth_t depth = reg_EVENT_UPT_PTR [i]; 883 Tdepth_t depth = reg_EVENT_UPT_PTR [i]; 884 Tdepth_t update = reg_UPT_UPDATE [i]; 870 885 871 886 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * depth : %d",depth); … … 878 893 } 879 894 880 reg_UPT_TOP [i] = reg_UPT_TOP_EVENT [i]; 881 reg_UPT_UPDATE [i] = reg_UPT_TOP_EVENT [i]; 882 883 // break; continue 895 // Special case : branch_complete a speculative branch and the context_state signal the end of this event before the complete of previous branch 896 if (depth != update) 897 { 898 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_COMMIT_WAIT_END_UPDATE (event)",i); 899 upt_event_state = UPT_EVENT_STATE_KO_COMMIT_WAIT_END_UPDATE; 900 901 break; // stop here 902 } 903 904 reg_UPT_TOP [i] = reg_UPT_TOP_EVENT [i]; 905 reg_UPT_UPDATE [i] = reg_UPT_TOP_EVENT [i]; 906 907 // break; continue 884 908 } 885 909 case UPT_EVENT_STATE_KO_DECODE_WAIT_END_EVENT : … … 906 930 // Flush UPFT 907 931 flush_UFPT [i] = true; 932 933 if (upt_event_state == UPT_EVENT_STATE_KO_COMMIT_WAIT_END_UPDATE) 934 { 935 reg_UPT_TOP [i] = reg_UPT_TOP_EVENT [i]; 936 reg_UPT_UPDATE [i] = reg_UPT_TOP_EVENT [i]; 937 reg_IS_ACCURATE [i] = true; 938 939 upt_event_state = UPT_EVENT_STATE_OK; 940 } 908 941 909 942 // Flush UPT … … 978 1011 reg_EVENT_UPT_PTR [i] = top; 979 1012 reg_EVENT_UPT_FULL [i] = (not empty and (bottom == reg_UPT_TOP [i])); 1013 // reg_EVENT_DEPTH [i] = PORT_READ(in_EVENT_DEPTH [i]);//(top+1)%_param->_size_upt_queue[i]; 980 1014 reg_EVENT_DEPTH [i] = top; 1015 981 1016 // reg_EVENT_ADDRESS_SRC [i] = address_src; // delay_slot is compute in I_State 982 1017 // reg_EVENT_ADDRESS_DEST_VAL[i] = good_take; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/src/Prediction_unit.cpp
r88 r123 37 37 log_printf(FUNC,Prediction_unit,FUNCTION,"Begin"); 38 38 39 #if DEBUG_Prediction_unit == true40 log_printf(INFO,Prediction_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());39 // #if DEBUG_Prediction_unit == true 40 // log_printf(INFO,Prediction_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 41 41 42 std::cout << *param << std::endl;43 #endif42 // std::cout << *param << std::endl; 43 // #endif 44 44 45 45 log_printf(INFO,Prediction_unit,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/include/Front_end.h
r108 r123 93 93 public : SC_OUT(Toperation_t ) ** out_DECOD_OPERATION ;//[sum_inst_decod] 94 94 public : SC_OUT(Tcontrol_t ) ** out_DECOD_NO_EXECUTE ;//[sum_inst_decod] 95 //public : SC_OUT(Tcontrol_t ) ** out_DECOD_HAVE_EVENT ;//[sum_inst_decod] 96 public : SC_OUT(Tcontrol_t ) ** out_DECOD_LAST_EVENT ;//[sum_inst_decod] 95 97 public : SC_OUT(Tcontrol_t ) ** out_DECOD_IS_DELAY_SLOT ;//[sum_inst_decod] 96 98 #ifdef DEBUG -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end.cpp
r88 r123 38 38 usage_environment(_usage); 39 39 40 #if DEBUG_Core == true41 log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_Core == true 41 // log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Front_end,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_allocation.cpp
r119 r123 101 101 ALLOC1_SIGNAL_OUT (out_DECOD_OPERATION ,"OPERATION" ,Toperation_t ,_param->_size_operation ); 102 102 ALLOC1_SIGNAL_OUT (out_DECOD_NO_EXECUTE ,"NO_EXECUTE" ,Tcontrol_t ,1 ); 103 // ALLOC1_SIGNAL_OUT (out_DECOD_HAVE_EVENT ,"HAVE_EVENT" ,Tcontrol_t ,1 ); 104 ALLOC1_SIGNAL_OUT (out_DECOD_LAST_EVENT ,"LAST_EVENT" ,Tcontrol_t ,1 ); 103 105 ALLOC1_SIGNAL_OUT (out_DECOD_IS_DELAY_SLOT ,"IS_DELAY_SLOT" ,Tcontrol_t ,1 ); 104 106 #ifdef DEBUG … … 726 728 PORT_MAP(_component,src ,"out_DECOD_"+toString(j)+"_NO_EXECUTE" , 727 729 dest,"out_DECOD_"+toString(x)+"_NO_EXECUTE" ); 730 // PORT_MAP(_component,src ,"out_DECOD_"+toString(j)+"_HAVE_EVENT" , 731 // dest,"out_DECOD_"+toString(x)+"_HAVE_EVENT" ); 732 PORT_MAP(_component,src ,"out_DECOD_"+toString(j)+"_LAST_EVENT" , 733 dest,"out_DECOD_"+toString(x)+"_LAST_EVENT" ); 728 734 PORT_MAP(_component,src ,"out_DECOD_"+toString(j)+"_IS_DELAY_SLOT", 729 735 dest,"out_DECOD_"+toString(x)+"_IS_DELAY_SLOT"); … … 865 871 COMPONENT_MAP(_component,src , "in_CONTEXT_"+toString(j)+"_DECOD_ENABLE", 866 872 dest,"out_CONTEXT_"+toString(y)+"_DECOD_ENABLE"); 873 COMPONENT_MAP(_component,src , "in_CONTEXT_"+toString(j)+"_EVENT", 874 dest,"out_CONTEXT_"+toString(y)+"_EVENT"); 867 875 868 876 dest = _name+"_glue"; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_deallocation.cpp
r122 r123 47 47 DELETE1_SIGNAL(out_DECOD_TYPE ,_param->_sum_inst_decod,_param->_size_type ); 48 48 DELETE1_SIGNAL(out_DECOD_OPERATION ,_param->_sum_inst_decod,_param->_size_operation ); 49 DELETE1_SIGNAL(out_DECOD_NO_EXECUTE ,_param->_sum_inst_decod,1 ); 49 DELETE1_SIGNAL(out_DECOD_NO_EXECUTE ,_param->_sum_inst_decod,1 ); 50 // DELETE1_SIGNAL(out_DECOD_HAVE_EVENT ,_param->_sum_inst_decod,1 ); 51 DELETE1_SIGNAL(out_DECOD_LAST_EVENT ,_param->_sum_inst_decod,1 ); 50 52 DELETE1_SIGNAL(out_DECOD_IS_DELAY_SLOT ,_param->_sum_inst_decod,1 ); 51 53 #ifdef DEBUG -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h
r122 r123 85 85 public : SC_IN (Toperation_t ) *** in_INSERT_OPERATION ;//[nb_rename_unit][nb_inst_insert] 86 86 public : SC_IN (Tcontrol_t ) *** in_INSERT_NO_EXECUTE ;//[nb_rename_unit][nb_inst_insert] 87 public : SC_IN (Tcontrol_t ) *** in_INSERT_LAST_EVENT ;//[nb_rename_unit][nb_inst_insert] 87 88 public : SC_IN (Tcontrol_t ) *** in_INSERT_IS_DELAY_SLOT ;//[nb_rename_unit][nb_inst_insert] 88 89 #ifdef DEBUG … … 143 144 public : SC_IN (Tcontrol_t ) *** in_RETIRE_EVENT_ACK ;//[nb_front_end][nb_context] 144 145 public : SC_OUT(Tevent_state_t ) *** out_RETIRE_EVENT_STATE ;//[nb_front_end][nb_context] 145 146 //public : SC_OUT(Tcontrol_t ) *** out_RETIRE_EVENT_FLUSH ;//[nb_front_end][nb_context] 146 147 public : SC_OUT(Tcontrol_t ) *** out_RETIRE_EVENT_STOP ;//[nb_front_end][nb_context] 147 148 … … 225 226 public : SC_OUT(Tcontrol_t ) *** out_SPR_WRITE_SR_OV ;//[nb_front_end][nb_context] 226 227 228 // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 229 #ifdef DEBUG_TEST 230 public : SC_OUT(bool ) * out_INFO_ROB_EMPTY ; 231 #endif 232 227 233 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 228 234 private : generic::priority::Priority * _priority_insert ; … … 243 249 private : Tcommit_event_state_t ** reg_EVENT_STATE ;//[nb_front_end][nb_context] 244 250 //private : bool ** reg_EVENT_FLUSH ;//[nb_front_end][nb_context] 245 251 //private : bool ** reg_EVENT_STOP ;//[nb_front_end][nb_context] 246 252 private : uint32_t ** reg_EVENT_NUM_BANK ;//[nb_front_end][nb_context] 247 253 private : uint32_t ** reg_EVENT_NUM_PTR ;//[nb_front_end][nb_context] 248 254 //private : bool ** reg_EVENT_CAN_RESTART ;//[nb_front_end][nb_context] 249 255 private : uint32_t ** reg_EVENT_PACKET ;//[nb_front_end][nb_context] 250 256 private : bool ** reg_EVENT_LAST ;//[nb_front_end][nb_context] 251 257 private : uint32_t ** reg_EVENT_LAST_NUM_BANK ;//[nb_front_end][nb_context] 252 258 private : uint32_t ** reg_EVENT_LAST_NUM_PTR ;//[nb_front_end][nb_context] 259 260 private : bool ** reg_EVENT_NEXT_STOP ;//[nb_front_end][nb_context] 261 private : uint32_t ** reg_EVENT_NEXT_PACKET ;//[nb_front_end][nb_context] 253 262 254 263 //private : Taddress_t ** reg_PC_PREVIOUS ;//[nb_front_end][nb_context] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Types.h
r122 r123 62 62 typedef enum 63 63 { 64 COMMIT_EVENT_STATE_NO_EVENT , 65 COMMIT_EVENT_STATE_EVENT , 66 COMMIT_EVENT_STATE_WAIT_DECOD, 67 COMMIT_EVENT_STATE_WAIT_END , 64 COMMIT_EVENT_STATE_NO_EVENT , 65 COMMIT_EVENT_STATE_NOT_YET_EVENT, 66 COMMIT_EVENT_STATE_EVENT , 67 // COMMIT_EVENT_STATE_WAIT_DECOD , 68 COMMIT_EVENT_STATE_WAIT_END , 68 69 COMMIT_EVENT_STATE_END 69 70 } Tcommit_event_state_t; 70 71 71 #define commit_event_state_to_event_state(x) ((x==COMMIT_EVENT_STATE_EVENT)?EVENT_STATE_EVENT:((x==COMMIT_EVENT_STATE_WAIT_DECOD)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_WAIT_END)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_END)?EVENT_STATE_END:EVENT_STATE_NO_EVENT)))) 72 #define commit_event_state_to_event_state(x) ((x==COMMIT_EVENT_STATE_EVENT)?EVENT_STATE_EVENT:((x==COMMIT_EVENT_STATE_WAIT_END)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_END)?EVENT_STATE_END:EVENT_STATE_NO_EVENT))) 73 // #define commit_event_state_to_event_state(x) ((x==COMMIT_EVENT_STATE_EVENT)?EVENT_STATE_EVENT:((x==COMMIT_EVENT_STATE_WAIT_DECOD)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_WAIT_END)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_END)?EVENT_STATE_END:EVENT_STATE_NO_EVENT)))) 72 74 73 75 … … 147 149 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_OK_WAIT_END : return "ROB_STORE_OK_WAIT_END" ; break; 148 150 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_KO_WAIT_END : return "ROB_STORE_KO_WAIT_END" ; break; 151 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_EVENT : return "ROB_STORE_EVENT" ; break; 149 152 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_OTHER_WAIT_END : return "ROB_OTHER_WAIT_END" ; break; 150 153 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_EVENT_WAIT_END : return "ROB_EVENT_WAIT_END" ; break; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit.cpp
r121 r123 40 40 usage_environment(_usage); 41 41 42 #if DEBUG_Commit_unit == true43 log_printf(TRACE,Commit_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());44 45 std::cout << *param << std::endl;46 #endif42 // #if DEBUG_Commit_unit == true 43 // log_printf(TRACE,Commit_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 44 45 // std::cout << *param << std::endl; 46 // #endif 47 47 48 48 log_printf(INFO,Commit_unit,FUNCTION,_("<%s> Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp
r122 r123 71 71 _ALLOC2_SIGNAL_IN ( in_INSERT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 72 72 _ALLOC2_SIGNAL_IN ( in_INSERT_NO_EXECUTE ,"no_execute" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 73 _ALLOC2_SIGNAL_IN ( in_INSERT_LAST_EVENT ,"last_event" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 73 74 _ALLOC2_SIGNAL_IN ( in_INSERT_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 74 75 #ifdef DEBUG … … 141 142 _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_ACK ,ACK,_param->_nb_front_end,_param->_nb_context[it1]); 142 143 _ALLOC2_SIGNAL_OUT(out_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state ,_param->_nb_front_end,_param->_nb_context[it1]); 143 144 // _ALLOC2_SIGNAL_OUT(out_RETIRE_EVENT_FLUSH ,"flush" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 144 145 _ALLOC2_SIGNAL_OUT(out_RETIRE_EVENT_STOP ,"stop" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 145 146 … … 282 283 } 283 284 285 #ifdef DEBUG_TEST 286 { 287 ALLOC0_INTERFACE_BEGIN("info",OUT,EAST,_("Information.")); 288 ALLOC0_SIGNAL_OUT(out_INFO_ROB_EMPTY ,"rob_empty" ,bool ,1); 289 ALLOC0_INTERFACE_END(); 290 } 291 #endif 292 284 293 if (usage_is_set(_usage,USE_SYSTEMC)) 285 294 { … … 318 327 ALLOC2(reg_EVENT_STATE ,Tcommit_event_state_t,_param->_nb_front_end,_param->_nb_context [it1]); 319 328 // ALLOC2(reg_EVENT_FLUSH ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 320 329 // ALLOC2(reg_EVENT_STOP ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 321 330 ALLOC2(reg_EVENT_NUM_BANK ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 322 331 ALLOC2(reg_EVENT_NUM_PTR ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 323 332 // ALLOC2(reg_EVENT_CAN_RESTART ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 324 333 ALLOC2(reg_EVENT_PACKET ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 325 334 ALLOC2(reg_EVENT_LAST ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 326 335 ALLOC2(reg_EVENT_LAST_NUM_BANK ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 327 336 ALLOC2(reg_EVENT_LAST_NUM_PTR ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 337 338 ALLOC2(reg_EVENT_NEXT_STOP ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 339 ALLOC2(reg_EVENT_NEXT_PACKET ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 328 340 329 341 // ALLOC2(reg_PC_PREVIOUS ,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp
r122 r123 38 38 DELETE2_SIGNAL( in_INSERT_OPERATION ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_operation ); 39 39 DELETE2_SIGNAL( in_INSERT_NO_EXECUTE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 40 DELETE2_SIGNAL( in_INSERT_LAST_EVENT ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 40 41 DELETE2_SIGNAL( in_INSERT_IS_DELAY_SLOT ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 41 42 #ifdef DEBUG … … 94 95 DELETE2_SIGNAL( in_RETIRE_EVENT_ACK ,_param->_nb_front_end,_param->_nb_context[it1],1); 95 96 DELETE2_SIGNAL(out_RETIRE_EVENT_STATE ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_event_state); 96 97 // DELETE2_SIGNAL(out_RETIRE_EVENT_FLUSH ,_param->_nb_front_end,_param->_nb_context[it1],1); 97 98 DELETE2_SIGNAL(out_RETIRE_EVENT_STOP ,_param->_nb_front_end,_param->_nb_context[it1],1); 98 99 … … 167 168 DELETE2_SIGNAL(out_SPR_WRITE_SR_OV ,_param->_nb_front_end, _param->_nb_context[it1],1); 168 169 170 DELETE0_SIGNAL(out_INFO_ROB_EMPTY ,1); 171 169 172 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 170 173 DELETE1(internal_BANK_INSERT_VAL ,_param->_nb_bank); … … 207 210 DELETE2(reg_EVENT_STATE ,_param->_nb_front_end,_param->_nb_context [it1]); 208 211 // DELETE2(reg_EVENT_FLUSH ,_param->_nb_front_end,_param->_nb_context [it1]); 209 212 // DELETE2(reg_EVENT_STOP ,_param->_nb_front_end,_param->_nb_context [it1]); 210 213 DELETE2(reg_EVENT_NUM_BANK ,_param->_nb_front_end,_param->_nb_context [it1]); 211 214 DELETE2(reg_EVENT_NUM_PTR ,_param->_nb_front_end,_param->_nb_context [it1]); 212 DELETE2(reg_EVENT_CAN_RESTART ,_param->_nb_front_end,_param->_nb_context [it1]);215 // DELETE2(reg_EVENT_CAN_RESTART ,_param->_nb_front_end,_param->_nb_context [it1]); 213 216 DELETE2(reg_EVENT_PACKET ,_param->_nb_front_end,_param->_nb_context [it1]); 214 217 DELETE2(reg_EVENT_LAST ,_param->_nb_front_end,_param->_nb_context [it1]); 215 218 DELETE2(reg_EVENT_LAST_NUM_BANK ,_param->_nb_front_end,_param->_nb_context [it1]); 216 219 DELETE2(reg_EVENT_LAST_NUM_PTR ,_param->_nb_front_end,_param->_nb_context [it1]); 220 221 DELETE2(reg_EVENT_NEXT_STOP ,_param->_nb_front_end,_param->_nb_context [it1]); 222 DELETE2(reg_EVENT_NEXT_PACKET ,_param->_nb_front_end,_param->_nb_context [it1]); 217 223 218 224 // DELETE2(reg_PC_PREVIOUS ,_param->_nb_front_end,_param->_nb_context [it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_commit.cpp
r119 r123 23 23 log_begin(Commit_unit,FUNCTION); 24 24 log_function(Commit_unit,FUNCTION,_name.c_str()); 25 26 if (PORT_READ(in_NRESET)) 27 { 25 28 26 29 #ifdef STATISTICS … … 96 99 for (uint32_t i=0; i<_param->_nb_inst_commit; i++) 97 100 PORT_WRITE(out_COMMIT_ACK [i],commit_ack [i]); 101 } 102 else 103 { 104 for (uint32_t i=0; i<_param->_nb_inst_commit; i++) 105 PORT_WRITE(out_COMMIT_ACK [i],0); 106 } 98 107 99 108 log_end(Commit_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_insert.cpp
r122 r123 24 24 log_function(Commit_unit,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 Tcontrol_t bank_full [_param->_nb_bank]; 27 29 Tcontrol_t insert_ack [_param->_nb_rename_unit][_param->_max_nb_inst_insert]; … … 136 138 #endif 137 139 } 138 140 } 141 else 142 { 143 for (uint32_t i=0; i<_param->_nb_bank; i++) 144 internal_BANK_INSERT_VAL [i] = false; 145 for (uint32_t i=0; i<_param->_nb_rename_unit; i++) 146 for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++) 147 PORT_WRITE(out_INSERT_ACK [i][j],0); 148 149 } 150 139 151 log_end(Commit_unit,FUNCTION); 140 152 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_retire.cpp
r122 r123 24 24 log_function(Commit_unit,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 Tcontrol_t retire_val [_param->_nb_rename_unit][_param->_max_nb_inst_retire]; 27 29 uint32_t num_inst_retire [_param->_nb_rename_unit]; … … 186 188 187 189 // if future event, don't update after this event 188 if ( reg_EVENT_STOP [front_end_id][context_id]and189 (reg_EVENT_PACKET [entry->front_end_id][entry->context_id] 190 if ((reg_EVENT_STATE [entry->front_end_id][entry->context_id] == COMMIT_EVENT_STATE_NOT_YET_EVENT) and 191 (reg_EVENT_PACKET [entry->front_end_id][entry->context_id] == packet)) 190 192 bypass = false; 191 193 } … … 211 213 PORT_WRITE(out_SPR_WRITE_SR_OV [i][j], spr_write_sr_ov [i][j]); 212 214 } 215 } 216 else 217 { 218 for (uint32_t i=0; i<_param->_nb_rename_unit; i++) 219 for (uint32_t j=0; j<_param->_nb_inst_retire[i]; j++) 220 PORT_WRITE(out_RETIRE_VAL [i][j],0); 221 } 213 222 214 223 log_end(Commit_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMoore.cpp
r122 r123 24 24 log_function(Commit_unit,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 // =================================================================== 27 29 // =====[ REEXECUTE ]================================================= … … 105 107 106 108 internal_REEXECUTE_VAL [i] = val; 107 PORT_WRITE(out_REEXECUTE_VAL[i], internal_REEXECUTE_VAL [i]);108 109 } 109 110 } … … 148 149 149 150 // don't complete a branch when rob manage an present event 150 if ((reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_NO_EVENT) and 151 if (((reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_NO_EVENT) or 152 (reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_NOT_YET_EVENT)) and 151 153 (state == ROB_BRANCH_COMPLETE)) 152 154 { … … 154 156 155 157 // test if have a future event (stop is set) 156 log_printf(TRACE,Commit_unit,FUNCTION," * reg_EVENT_STOP : %d",reg_EVENT_STOP [front_end_id][context_id]);157 158 if (reg_EVENT_ST OP [front_end_id][context_id])158 // log_printf(TRACE,Commit_unit,FUNCTION," * reg_EVENT_STOP : %d",reg_EVENT_STOP [front_end_id][context_id]); 159 160 if (reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_NOT_YET_EVENT) 159 161 { 160 162 // Have future event, can complete the branch if the event is most speculative than this branchement … … 204 206 205 207 internal_BRANCH_COMPLETE_VAL [i] = val; 206 PORT_WRITE(out_BRANCH_COMPLETE_VAL [i], internal_BRANCH_COMPLETE_VAL [i]);207 208 } 208 209 } … … 275 276 } 276 277 277 PORT_WRITE(out_UPDATE_VAL, internal_UPDATE_VAL);278 279 278 log_printf(TRACE,Commit_unit,FUNCTION," * UPDATE (end)"); 280 279 } … … 283 282 // =====[ NB_INST ]=================================================== 284 283 // =================================================================== 285 for (uint32_t i=0; i<_param->_nb_front_end; i++) 286 for (uint32_t j=0; j<_param->_nb_context [i]; j++) 287 { 288 PORT_WRITE(out_NB_INST_COMMIT_ALL [i][j], reg_NB_INST_COMMIT_ALL [i][j]); 289 PORT_WRITE(out_NB_INST_COMMIT_MEM [i][j], reg_NB_INST_COMMIT_MEM [i][j]); 290 } 284 { 285 #ifdef DEBUG_TEST 286 bool empty = true; 287 #endif 288 for (uint32_t i=0; i<_param->_nb_front_end; i++) 289 for (uint32_t j=0; j<_param->_nb_context [i]; j++) 290 { 291 #ifdef DEBUG_TEST 292 empty &= (reg_NB_INST_COMMIT_ALL [i][j] == 0); 293 #endif 294 PORT_WRITE(out_NB_INST_COMMIT_ALL [i][j], reg_NB_INST_COMMIT_ALL [i][j]); 295 PORT_WRITE(out_NB_INST_COMMIT_MEM [i][j], reg_NB_INST_COMMIT_MEM [i][j]); 296 } 297 #ifdef DEBUG_TEST 298 PORT_WRITE(out_INFO_ROB_EMPTY,empty); 299 #endif 300 } 301 291 302 292 303 // =================================================================== … … 296 307 for (uint32_t j=0; j<_param->_nb_context [i]; j++) 297 308 { 298 // bool flush = reg_EVENT_FLUSH [i][j]; 299 bool flush = (((reg_EVENT_STATE [i][j] == COMMIT_EVENT_STATE_EVENT) or 300 (reg_EVENT_STATE [i][j] == COMMIT_EVENT_STATE_WAIT_DECOD)) and 301 not reg_EVENT_CAN_RESTART[i][j]); 309 // bool flush = (((reg_EVENT_STATE [i][j] == COMMIT_EVENT_STATE_EVENT) or 310 // (reg_EVENT_STATE [i][j] == COMMIT_EVENT_STATE_WAIT_DECOD)) and 311 // not reg_EVENT_CAN_RESTART[i][j]); 302 312 303 313 PORT_WRITE(out_RETIRE_EVENT_STATE [i][j], commit_event_state_to_event_state(reg_EVENT_STATE[i][j])); 304 PORT_WRITE(out_RETIRE_EVENT_FLUSH [i][j], flush); 305 PORT_WRITE(out_RETIRE_EVENT_STOP [i][j], reg_EVENT_STOP [i][j]); 314 // PORT_WRITE(out_RETIRE_EVENT_FLUSH [i][j], flush); 315 // PORT_WRITE(out_RETIRE_EVENT_STOP [i][j], reg_EVENT_STOP [i][j]); 316 PORT_WRITE(out_RETIRE_EVENT_STOP [i][j], ((reg_EVENT_STATE [i][j] == COMMIT_EVENT_STATE_NOT_YET_EVENT) or 317 reg_EVENT_NEXT_STOP [i][j])); 306 318 } 307 319 } 320 else 321 { 322 for (uint32_t i=0; i<_param->_nb_inst_reexecute; ++i) 323 { 324 internal_REEXECUTE_VAL [i] = 0; 325 // internal_REEXECUTE_NUM_BANK [i] = num_bank; 326 } 327 328 for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++) 329 { 330 internal_BRANCH_COMPLETE_VAL [i] = 0; 331 // internal_BRANCH_COMPLETE_NUM_BANK [i] = num_bank; 332 } 333 334 internal_UPDATE_VAL = 0; 335 // internal_UPDATE_NUM_BANK = reg_NUM_BANK_HEAD; 336 337 338 for (uint32_t i=0; i<_param->_nb_front_end; i++) 339 for (uint32_t j=0; j<_param->_nb_context [i]; j++) 340 { 341 PORT_WRITE(out_RETIRE_EVENT_STATE [i][j], commit_event_state_to_event_state(COMMIT_EVENT_STATE_NO_EVENT)); 342 // PORT_WRITE(out_RETIRE_EVENT_FLUSH [i][j], flush); 343 // PORT_WRITE(out_RETIRE_EVENT_STOP [i][j], reg_EVENT_STOP [i][j]); 344 PORT_WRITE(out_RETIRE_EVENT_STOP [i][j], true); 345 } 346 } 347 348 for (uint32_t i=0; i<_param->_nb_inst_reexecute; ++i) 349 PORT_WRITE(out_REEXECUTE_VAL[i], internal_REEXECUTE_VAL [i]); 350 for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++) 351 PORT_WRITE(out_BRANCH_COMPLETE_VAL [i], internal_BRANCH_COMPLETE_VAL [i]); 352 PORT_WRITE(out_UPDATE_VAL, internal_UPDATE_VAL); 353 308 354 log_end(Commit_unit,FUNCTION); 309 355 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp
r122 r123 53 53 reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_NO_EVENT; 54 54 // reg_EVENT_FLUSH [i][j] = false; 55 55 // reg_EVENT_STOP [i][j] = false; 56 56 reg_EVENT_LAST [i][j] = false; 57 58 reg_EVENT_NEXT_STOP [i][j] = false; 57 59 58 60 // reg_PC_PREVIOUS [i][j] = (0x100-4)>>2; … … 86 88 // * and decod_queue is empty 87 89 // * and have an event or have a futur event 88 if (not reg_EVENT_CAN_RESTART [i][j] and89 (PORT_READ(in_NB_INST_DECOD_ALL [i][j]) == 0) and90 (reg_EVENT_STOP [i][j] or (reg_EVENT_STATE [i][j] != COMMIT_EVENT_STATE_NO_EVENT)))91 reg_EVENT_CAN_RESTART [i][j] = true;90 // if (not reg_EVENT_CAN_RESTART [i][j] and 91 // (PORT_READ(in_NB_INST_DECOD_ALL [i][j]) == 0) and 92 // (reg_EVENT_STOP [i][j] or (reg_EVENT_STATE [i][j] != COMMIT_EVENT_STATE_NO_EVENT))) 93 // reg_EVENT_CAN_RESTART [i][j] = true; 92 94 93 95 // Test event state … … 100 102 { 101 103 // A minor optimisation : test if wait_decod is previously empty. 102 if (not reg_EVENT_CAN_RESTART [i][j])103 reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_WAIT_DECOD;104 else104 // if (not reg_EVENT_CAN_RESTART [i][j]) 105 // reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_WAIT_DECOD; 106 // else 105 107 reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_WAIT_END; 106 108 } … … 108 110 break; 109 111 } 110 case COMMIT_EVENT_STATE_WAIT_DECOD :111 {112 // Wait flush of decod_queue.113 // Test if can restart now114 if (reg_EVENT_CAN_RESTART [i][j])115 {116 //reg_EVENT_FLUSH [i][j] = false;117 118 // A minor optimisation : test if the last element is already retire119 if (not reg_EVENT_LAST [i][j])120 reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_WAIT_END;121 else122 reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_END;123 }124 break;125 }112 // case COMMIT_EVENT_STATE_WAIT_DECOD : 113 // { 114 // // Wait flush of decod_queue. 115 // // Test if can restart now 116 // if (reg_EVENT_CAN_RESTART [i][j]) 117 // { 118 // //reg_EVENT_FLUSH [i][j] = false; 119 120 // // A minor optimisation : test if the last element is already retire 121 // if (not reg_EVENT_LAST [i][j]) 122 // reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_WAIT_END; 123 // else 124 // reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_END; 125 // } 126 // break; 127 // } 126 128 case COMMIT_EVENT_STATE_WAIT_END : 127 129 { … … 138 140 139 141 // flush of re order buffer is finish 140 reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_NO_EVENT;141 142 reg_EVENT_LAST [i][j] = false; 143 144 if (not reg_EVENT_NEXT_STOP [i][j]) 145 reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_NO_EVENT; 146 else 147 { 148 reg_EVENT_NEXT_STOP [i][j] = false; 149 reg_EVENT_PACKET [i][j] = reg_EVENT_NEXT_PACKET [i][j]; 150 reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_NOT_YET_EVENT; 151 // reg_EVENT_STOP [i][j] = true; 152 reg_EVENT_LAST_NUM_BANK [i][j] = ((reg_NUM_BANK_TAIL==0)?_param->_nb_bank:reg_NUM_BANK_TAIL)-1; 153 reg_EVENT_LAST_NUM_PTR [i][j] = reg_NUM_PTR_TAIL; 154 } 155 142 156 break; 143 157 } 144 158 //case COMMIT_EVENT_STATE_NO_EVENT : 159 //case COMMIT_EVENT_STATE_NOT_YET_EVENT : 145 160 default : break; 146 161 } … … 296 311 // * or present_event 297 312 // * and not can_restart (previous empty decod queue), because between the event_stop (branch_complete) and the state event (miss in head), many cycle is occured. 298 bool flush = ((// present event 299 ((reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_EVENT) or 300 (reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_WAIT_DECOD)) or 301 // futur event 302 reg_EVENT_STOP [front_end_id][context_id]) 303 // can't restart 304 and not reg_EVENT_CAN_RESTART[front_end_id][context_id] 305 ); 306 307 if (flush) 308 { 309 // A new invalid instruction is push in rob -> new last instruction 310 reg_EVENT_LAST [front_end_id][context_id] = false; 311 reg_EVENT_LAST_NUM_BANK [front_end_id][context_id] = num_bank; 312 reg_EVENT_LAST_NUM_PTR [front_end_id][context_id] = ptr; 313 } 313 // bool flush = ((// present event 314 // ((reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_EVENT) or 315 // (reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_WAIT_DECOD) 316 // ) or 317 // futur event 318 // reg_EVENT_STOP [front_end_id][context_id]) 319 // // can't restart 320 // and not reg_EVENT_CAN_RESTART[front_end_id][context_id] 321 // ); 322 323 // if (flush) 324 // { 325 // // A new invalid instruction is push in rob -> new last instruction 326 // reg_EVENT_LAST [front_end_id][context_id] = false; 327 // reg_EVENT_LAST_NUM_BANK [front_end_id][context_id] = num_bank; 328 // reg_EVENT_LAST_NUM_PTR [front_end_id][context_id] = ptr; 329 // } 314 330 315 331 // Update pointer … … 359 375 // find the good entry !!! 360 376 entry_t * entry = internal_BANK_COMMIT_ENTRY [i][j]; 377 378 log_printf(TRACE,Commit_unit,FUNCTION," * ptr : %d",entry->ptr); 361 379 362 380 //Toperation_t operation = PORT_READ(in_COMMIT_OPERATION [x]); … … 480 498 481 499 // Commit an instruction ... 482 // Test if have an event (miss_speculation or exception) and not manage a previous event 483 // if yes, this instruction would modify state machine. Also stop Re Order Buffer 484 485 // bool flush = reg_EVENT_FLUSH [entry->front_end_id][entry->context_id]; 486 bool flush = ((reg_EVENT_STATE [entry->front_end_id][entry->context_id] == COMMIT_EVENT_STATE_EVENT) or 487 (reg_EVENT_STATE [entry->front_end_id][entry->context_id] == COMMIT_EVENT_STATE_WAIT_DECOD) or 488 (reg_EVENT_STATE [entry->front_end_id][entry->context_id] == COMMIT_EVENT_STATE_WAIT_END)); 489 490 if ((have_exception or have_miss_speculation) and (not flush)) 500 // Test if have an event (miss_speculation or exception) 501 502 if (have_exception or have_miss_speculation) 491 503 { 504 // Two case : 505 // if no previous manage event -> generate an event 506 // if previous manage event -> next generate an event 507 508 // bool flush = reg_EVENT_FLUSH [front_end_id][context_id]; 509 bool flush = ((reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_EVENT) or 510 // (reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_WAIT_DECOD) or 511 (reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_WAIT_END) or 512 (reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_END) 513 ); 514 492 515 uint32_t packet = ((entry->ptr << _param->_shift_num_slot) | i); 493 494 // test have a previous event detected (event_stop = 1) 495 // if yes, test if the actual event if "before (in order)" that the previous event 496 if (reg_EVENT_STOP [entry->front_end_id][entry->context_id]) 516 uint32_t _top = ((_rob[ reg_NUM_BANK_HEAD].front()->ptr << _param->_shift_num_slot) | reg_NUM_BANK_HEAD); 517 518 if (not flush) 497 519 { 498 // Compare packet_id (by construction instruction is insert in order by increase packet_id) 499 500 uint32_t _top = ((_rob[ reg_NUM_BANK_HEAD].front()->ptr << _param->_shift_num_slot) | reg_NUM_BANK_HEAD); 501 uint32_t _old = reg_EVENT_PACKET [entry->front_end_id][entry->context_id]; 502 uint32_t _new = packet; 503 if (_old < _top) _old = _old+_param->_size_queue; 504 if (_new < _top) _new = _new+_param->_size_queue; 505 if (_new < _old) reg_EVENT_PACKET [entry->front_end_id][entry->context_id] = packet; 520 bool can = true; 521 // test have a previous event detected (event_stop = 1) 522 // if yes, test if the actual event if "before (in order)" that the previous event 523 if (reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_NOT_YET_EVENT) 524 { 525 // Compare packet_id (by construction instruction is insert in order by increase packet_id) 526 527 uint32_t _old = reg_EVENT_PACKET [front_end_id][context_id]; 528 uint32_t _new = packet; 529 if (_old < _top) _old = _old+_param->_size_queue; 530 if (_new < _top) _new = _new+_param->_size_queue; 531 if (_new < _old) reg_EVENT_PACKET [front_end_id][context_id] = packet; 532 else can = false; 533 } 534 else 535 reg_EVENT_PACKET [front_end_id][context_id] = packet; 536 537 if (can) 538 { 539 // have an error, stop issue instruction 540 reg_EVENT_STATE [front_end_id][context_id] = COMMIT_EVENT_STATE_NOT_YET_EVENT; 541 // reg_EVENT_STOP [front_end_id][context_id] = true; 542 543 reg_EVENT_LAST_NUM_BANK [front_end_id][context_id] = ((reg_NUM_BANK_TAIL==0)?_param->_nb_bank:reg_NUM_BANK_TAIL)-1; 544 reg_EVENT_LAST_NUM_PTR [front_end_id][context_id] = reg_NUM_PTR_TAIL; 545 } 506 546 } 507 547 else 508 reg_EVENT_PACKET [entry->front_end_id][entry->context_id] = packet; 509 510 // have an error, stop issue instruction 511 reg_EVENT_STOP [entry->front_end_id][entry->context_id] = true; 512 // reg_EVENT_NUM_BANK [entry->front_end_id][entry->context_id] = i; 513 // reg_EVENT_NUM_PTR [entry->front_end_id][entry->context_id] = entry->ptr; 514 515 // reg_EVENT_CAN_RESTART [entry->front_end_id][entry->context_id] = false; 516 reg_EVENT_LAST_NUM_BANK [entry->front_end_id][entry->context_id] = ((reg_NUM_BANK_TAIL==0)?_param->_nb_bank:reg_NUM_BANK_TAIL)-1; 517 reg_EVENT_LAST_NUM_PTR [entry->front_end_id][entry->context_id] = reg_NUM_PTR_TAIL; 548 { 549 bool find = true; 550 551 // already manage an event. 552 if (reg_EVENT_NEXT_STOP [front_end_id][context_id]) 553 { 554 // after last ? 555 uint32_t _old = reg_EVENT_NEXT_PACKET [front_end_id][context_id]; 556 uint32_t _new = packet; 557 if (_old < _top) _old = _old+_param->_size_queue; 558 if (_new < _top) _new = _new+_param->_size_queue; 559 if (_new > _old) reg_EVENT_NEXT_PACKET [front_end_id][context_id] = packet; 560 find = false; 561 } 562 else 563 { 564 // after last ? 565 uint32_t _old = ((reg_EVENT_LAST_NUM_PTR [front_end_id][context_id] << _param->_shift_num_slot) | reg_EVENT_LAST_NUM_BANK [front_end_id][context_id]); 566 uint32_t _new = packet; 567 if (_old < _top) _old = _old+_param->_size_queue; 568 if (_new < _top) _new = _new+_param->_size_queue; 569 if (_new > _old) reg_EVENT_NEXT_PACKET [front_end_id][context_id] = packet; 570 find = false; 571 } 572 573 if (find) 574 reg_EVENT_NEXT_STOP [front_end_id][context_id] = true; // in all case : need stop 575 } 518 576 } 519 577 520 578 // Update Re Order Buffer 521 579 entry->state = state; … … 633 691 { 634 692 reg_EVENT_STATE [front_end_id][context_id] = COMMIT_EVENT_STATE_EVENT; 635 // reg_EVENT_FLUSH [front_end_id][context_id] = true; 636 reg_EVENT_STOP [front_end_id][context_id] = false; // instruction flow can continue 637 // reg_EVENT_CAN_RESTART [front_end_id][context_id] = false; 693 // reg_EVENT_STOP [front_end_id][context_id] = false; // instruction flow can continue 638 694 reg_EVENT_LAST [front_end_id][context_id] = false; 639 695 // it the head ! 640 696 reg_EVENT_PACKET [front_end_id][context_id] = packet_id; 641 697 642 // If event is an load_miss, many instruction can be inserted.643 // -> new last instruction644 if (state == ROB_END_LOAD_MISS)645 {646 reg_EVENT_CAN_RESTART [front_end_id][context_id] = false;698 // // If event is an load_miss, many instruction can be inserted. 699 // // -> new last instruction 700 // if (state == ROB_END_LOAD_MISS) 701 // { 702 // // reg_EVENT_CAN_RESTART [front_end_id][context_id] = false; 647 703 648 reg_EVENT_LAST_NUM_BANK [front_end_id][context_id] = ((reg_NUM_BANK_TAIL==0)?_param->_nb_bank:reg_NUM_BANK_TAIL)-1;649 reg_EVENT_LAST_NUM_PTR [front_end_id][context_id] = reg_NUM_PTR_TAIL;650 }704 // reg_EVENT_LAST_NUM_BANK [front_end_id][context_id] = ((reg_NUM_BANK_TAIL==0)?_param->_nb_bank:reg_NUM_BANK_TAIL)-1; 705 // reg_EVENT_LAST_NUM_PTR [front_end_id][context_id] = reg_NUM_PTR_TAIL; 706 // } 651 707 } 652 708 … … 654 710 // * need event 655 711 // * packet id = last packet id 656 if ((reg_EVENT_STATE [front_end_id][context_id] != COMMIT_EVENT_STATE_NO_EVENT) and 712 if (((reg_EVENT_STATE [front_end_id][context_id] != COMMIT_EVENT_STATE_NO_EVENT ) and 713 (reg_EVENT_STATE [front_end_id][context_id] != COMMIT_EVENT_STATE_NOT_YET_EVENT)) and 657 714 (reg_EVENT_LAST_NUM_BANK [front_end_id][context_id] == num_bank ) and 658 715 (reg_EVENT_LAST_NUM_PTR [front_end_id][context_id] == entry->ptr )) … … 666 723 // Update pointer 667 724 reg_NUM_BANK_HEAD = (num_bank+1)%_param->_nb_bank; 668 669 // Remove entry670 delete entry;671 _rob [num_bank].pop_front();672 725 673 726 // Reset watch dog timer because have transaction on retire interface … … 708 761 } 709 762 #endif 763 764 // Remove entry 765 delete entry; 766 _rob [num_bank].pop_front(); 710 767 } 711 768 } … … 775 832 if (miss) 776 833 { 834 bool can = true; 777 835 uint32_t packet = ((entry->ptr << _param->_shift_num_slot) | num_bank); 778 836 779 837 // test if this packet is before previous event 780 if (reg_EVENT_ST OP [entry->front_end_id][entry->context_id])838 if (reg_EVENT_STATE [entry->front_end_id][entry->context_id] == COMMIT_EVENT_STATE_NOT_YET_EVENT) 781 839 { 782 840 uint32_t _top = ((_rob[ reg_NUM_BANK_HEAD].front()->ptr << _param->_shift_num_slot) | reg_NUM_BANK_HEAD); … … 786 844 if (_new < _top) _new = _new+_param->_size_queue; 787 845 if (_new < _old) reg_EVENT_PACKET [entry->front_end_id][entry->context_id] = packet; 846 else can = false; 788 847 } 789 848 else 790 849 reg_EVENT_PACKET [entry->front_end_id][entry->context_id] = packet; 791 850 792 // In all case, stop instruction flow 793 reg_EVENT_STOP [entry->front_end_id][entry->context_id] = true; 794 // reg_EVENT_NUM_BANK [entry->front_end_id][entry->context_id] = num_bank; 795 // reg_EVENT_NUM_PTR [entry->front_end_id][entry->context_id] = entry->ptr; 796 797 reg_EVENT_CAN_RESTART [entry->front_end_id][entry->context_id] = false; 798 799 reg_EVENT_LAST_NUM_BANK [entry->front_end_id][entry->context_id] = ((reg_NUM_BANK_TAIL==0)?_param->_nb_bank:reg_NUM_BANK_TAIL)-1; 800 reg_EVENT_LAST_NUM_PTR [entry->front_end_id][entry->context_id] = reg_NUM_PTR_TAIL; 851 if (can) 852 { 853 // In all case, stop instruction flow 854 reg_EVENT_STATE [entry->front_end_id][entry->context_id] = COMMIT_EVENT_STATE_NOT_YET_EVENT; 855 // reg_EVENT_STOP [entry->front_end_id][entry->context_id] = true; 856 857 // reg_EVENT_CAN_RESTART [entry->front_end_id][entry->context_id] = false; 858 859 reg_EVENT_LAST_NUM_BANK [entry->front_end_id][entry->context_id] = ((reg_NUM_BANK_TAIL==0)?_param->_nb_bank:reg_NUM_BANK_TAIL)-1; 860 reg_EVENT_LAST_NUM_PTR [entry->front_end_id][entry->context_id] = reg_NUM_PTR_TAIL; 861 } 801 862 } 802 863 } … … 902 963 903 964 bool flush = ((reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_EVENT) or 904 965 // (reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_WAIT_DECOD) or 905 966 (reg_EVENT_STATE [front_end_id][context_id] == COMMIT_EVENT_STATE_WAIT_END)); 906 967 bool speculative = entry->speculative and not (depth == depth_min); … … 1005 1066 1006 1067 // Test if this instruction is the last of event 1007 if ((reg_EVENT_STATE [front_end_id][context_id] != COMMIT_EVENT_STATE_NO_EVENT) and 1068 if (((reg_EVENT_STATE [front_end_id][context_id] != COMMIT_EVENT_STATE_NO_EVENT) and 1069 (reg_EVENT_STATE [front_end_id][context_id] != COMMIT_EVENT_STATE_NOT_YET_EVENT)) and 1008 1070 (reg_EVENT_LAST_NUM_BANK [front_end_id][context_id] == num_bank ) and 1009 1071 (reg_EVENT_LAST_NUM_PTR [front_end_id][context_id] == entry->ptr )) … … 1044 1106 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_STATE : %s - %s",toString(reg_EVENT_STATE [i][j]).c_str(),toString(commit_event_state_to_event_state(reg_EVENT_STATE [i][j])).c_str()); 1045 1107 // log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_FLUSH : %d",reg_EVENT_FLUSH [i][j]); 1046 1047 // 1048 1108 // log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_STOP : %d",reg_EVENT_STOP [i][j]); 1109 // log_printf(TRACE,Commit_unit,FUNCTION," * EVENT : %d (bank %d, ptr %d)",((reg_EVENT_NUM_PTR [i][j] << _param->_shift_num_slot) | reg_EVENT_NUM_BANK [i][j]), reg_EVENT_NUM_BANK [i][j],reg_EVENT_NUM_PTR [i][j]); 1110 // log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_CAN_RESTART : %d",reg_EVENT_CAN_RESTART [i][j]); 1049 1111 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_PACKET : %d",reg_EVENT_PACKET[i][j]); 1050 1112 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_LAST : %d",reg_EVENT_LAST [i][j]); 1051 1113 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_LAST : %d (bank %d, ptr %d)",((reg_EVENT_LAST_NUM_PTR [i][j] << _param->_shift_num_slot) | reg_EVENT_LAST_NUM_BANK [i][j]), reg_EVENT_LAST_NUM_BANK [i][j],reg_EVENT_LAST_NUM_PTR [i][j]); 1114 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_NEXT_STOP : %d",reg_EVENT_NEXT_STOP [i][j]); 1115 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_NEXT_PACKET : %d",reg_EVENT_NEXT_PACKET[i][j]); 1052 1116 log_printf(TRACE,Commit_unit,FUNCTION," * NB_INST_ALL : %d",reg_NB_INST_COMMIT_ALL[i][j]); 1053 1117 log_printf(TRACE,Commit_unit,FUNCTION," * NB_INST_MEM : %d",reg_NB_INST_COMMIT_MEM[i][j]); … … 1065 1129 } 1066 1130 1067 bool all_empty = false; 1131 bool all_empty = false; 1132 uint32_t nb_write_rd = 0; 1133 uint32_t nb_write_re = 0; 1134 1068 1135 while (not all_empty) 1069 1136 { … … 1078 1145 { 1079 1146 all_empty = false; 1147 1148 nb_write_rd += ((*it)->write_rd)?1:0; 1149 nb_write_re += ((*it)->write_re)?1:0; 1080 1150 1081 1151 log_printf(TRACE,Commit_unit,FUNCTION," [%.4d][%.4d] (%.4d) %.4d %.4d %.4d %.4d, %.3d %.3d, %.1d, %.1d %.4d, %.1d %.4d, %s", … … 1130 1200 } 1131 1201 } 1202 1203 log_printf(TRACE,Commit_unit,FUNCTION," * nb_write_rd : %d",nb_write_rd); 1204 log_printf(TRACE,Commit_unit,FUNCTION," * nb_write_re : %d",nb_write_re); 1132 1205 } 1133 1206 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue.cpp
r111 r123 39 39 usage_environment(_usage); 40 40 41 #if DEBUG_Issue_queue == true42 log_printf(INFO,Issue_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());41 // #if DEBUG_Issue_queue == true 42 // log_printf(INFO,Issue_queue,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,Issue_queue,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_function_in_order_genMealy_issue_out.cpp
r122 r123 24 24 log_function(Issue_queue,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 26 27 // =================================================================== 27 28 // =====[ ISSUE_OUT ]================================================= 28 29 // =================================================================== 29 {30 { 30 31 Tcontrol_t val [_param->_nb_inst_issue]; 31 32 … … 175 176 } 176 177 } 178 else 179 { 180 for (uint32_t i=0; i<_param->_nb_inst_issue; i++) 181 internal_ISSUE_OUT_VAL [i] = 0; 182 } 183 184 for (uint32_t i=0; i<_param->_nb_inst_issue; i++) 185 PORT_WRITE(out_ISSUE_OUT_VAL [i], internal_ISSUE_OUT_VAL [i]); 177 186 178 187 log_end(Issue_queue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_function_in_order_genMoore.cpp
r111 r123 38 38 internal_ISSUE_IN_ACK [i][j] = false; 39 39 40 if (PORT_READ(in_NRESET)) 41 { 40 42 std::list<generic::priority::select_t> * select_in = _priority_in ->select(); // same select for all issue 41 43 std::list<generic::priority::select_t>::iterator it=select_in ->begin(); … … 62 64 nb_insert ++; 63 65 } 64 66 } 67 65 68 for (uint32_t i=0; i<_param->_nb_rename_unit; i++) 66 69 for (uint32_t j=0; j<_param->_nb_inst_rename[i]; j++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_function_out_of_order_genMoore.cpp
r122 r123 24 24 log_function(Issue_queue,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 // =================================================================== 27 29 // =====[ REEXECUTE_UNIT ]============================================ … … 217 219 { 218 220 internal_ISSUE_OUT_VAL [i] = val [i]; 221 } 222 } 223 } 224 else 225 { 226 // Reset 227 for (uint32_t i=0; i<_param->_nb_bank; i++) 228 { 229 internal_BANK_IN_ACK [i] = 0; 230 // internal_BANK_IN_NUM_RENAME_UNIT [num_bank] = num_rename_unit; 231 // internal_BANK_IN_NUM_INST [num_bank] = num_inst_rename; 232 } 233 for (uint32_t i=0; i<_param->_nb_rename_unit; i++) 234 for (uint32_t j=0; j<_param->_nb_inst_rename[i]; j++) 235 PORT_WRITE(out_ISSUE_IN_ACK [i][j],0); 236 237 for (uint32_t i=0; i<_param->_nb_inst_issue; i++) 238 { 239 internal_ISSUE_OUT_VAL [i] = 0; 240 // internal_ISSUE_OUT_FROM_REEXECUTE [i] = true; 241 // internal_ISSUE_OUT_NUM_BANK [i] = num_bank; 242 // internal_ISSUE_OUT_ENTRY [i] = entry; 243 } 244 } 245 246 // Write output 247 for (uint32_t i=0; i<_param->_nb_inst_issue; i++) 248 { 219 249 PORT_WRITE(out_ISSUE_OUT_VAL [i], internal_ISSUE_OUT_VAL [i]); 220 250 } 221 }222 251 223 252 log_end(Issue_queue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_genMoore.cpp
r111 r123 24 24 log_function(Issue_queue,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 // =================================================================== 27 29 // =====[ REEXECUTE_UNIT ]============================================ … … 35 37 36 38 log_printf(TRACE,Issue_queue,FUNCTION," * ACK : %d",internal_REEXECUTE_ACK [i]); 39 } 37 40 38 PORT_WRITE(out_REEXECUTE_ACK [i], internal_REEXECUTE_ACK [i]);39 41 } 42 else 43 { 44 // Reset 45 for (uint32_t i=0; i<_param->_nb_inst_reexecute; ++i) 46 internal_REEXECUTE_ACK [i] = 0; 47 } 48 49 // Write Output 50 for (uint32_t i=0; i<_param->_nb_inst_reexecute; ++i) 51 PORT_WRITE(out_REEXECUTE_ACK [i], internal_REEXECUTE_ACK [i]); 40 52 41 53 (this->*function_genMoore) (); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue.cpp
r122 r123 39 39 usage_environment(_usage); 40 40 41 #if DEBUG_OOO_Engine_Glue == true42 log_printf(INFO,OOO_Engine_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());43 44 std::cout << *param << std::endl;45 #endif41 // #if DEBUG_OOO_Engine_Glue == true 42 // log_printf(INFO,OOO_Engine_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 // std::cout << *param << std::endl; 45 // #endif 46 46 47 47 log_printf(INFO,OOO_Engine_Glue,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_insert.cpp
r122 r123 24 24 log_function(OOO_Engine_Glue,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 uint32_t x=0; 27 29 for (uint32_t i=0; i<_param->_nb_rename_unit; ++i) … … 112 114 x ++; 113 115 } 116 } 117 // else 118 // { 119 // } 114 120 115 121 log_end(OOO_Engine_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_insert_valack.cpp
r110 r123 24 24 log_function(OOO_Engine_Glue,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 uint32_t x=0; 27 29 for (uint32_t i=0; i<_param->_nb_rename_unit; ++i) … … 79 81 } 80 82 } 83 } 84 else 85 { 86 uint32_t x=0; 87 for (uint32_t i=0; i<_param->_nb_rename_unit; ++i) 88 for (uint32_t j=0; j<_param->_nb_inst_insert[i]; ++j) 89 { 90 PORT_WRITE(out_INSERT_VAL [x] ,0); 91 PORT_WRITE(out_INSERT_RENAME_UNIT_ACK [i][j],0); 92 PORT_WRITE(out_INSERT_COMMIT_UNIT_VAL [i][j],0); 93 PORT_WRITE(out_INSERT_ISSUE_QUEUE_VAL [i][j],0); 94 x ++; 95 } 96 } 81 97 82 98 log_end(OOO_Engine_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_rename.cpp
r120 r123 24 24 log_function(OOO_Engine_Glue,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 27 29 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; ++j) … … 30 32 PORT_WRITE(out_RENAME_RENAME_UNIT_FRONT_END_ID [i][j],_param->_translate_front_end_id_to_rename_unit [PORT_READ(in_RENAME_FRONT_END_ID [i][j])]); 31 33 } 34 } 32 35 33 36 log_end(OOO_Engine_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_retire.cpp
r88 r123 24 24 log_function(OOO_Engine_Glue,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 uint32_t x=0; 27 29 for (uint32_t i=0; i<_param->_nb_rename_unit; ++i) … … 61 63 x ++; 62 64 } 63 65 } 64 66 log_end(OOO_Engine_Glue,FUNCTION); 65 67 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_retire_valack.cpp
r88 r123 24 24 log_function(OOO_Engine_Glue,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 uint32_t x=0; 27 29 for (uint32_t i=0; i<_param->_nb_rename_unit; ++i) … … 47 49 x ++; 48 50 } 49 51 } 50 52 log_end(OOO_Engine_Glue,FUNCTION); 51 53 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_spr.cpp
r88 r123 24 24 log_begin(OOO_Engine_Glue,FUNCTION); 25 25 26 // if (PORT_READ(in_NRESET)) 27 { 26 28 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 27 29 for (uint32_t j=0; j<_param->_nb_context[i]; ++j) … … 38 40 delete sr; 39 41 } 42 } 40 43 41 44 log_end(OOO_Engine_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit.cpp
r88 r123 39 39 usage_environment(_usage); 40 40 41 #if DEBUG_Reexecute_unit == true42 log_printf(INFO,Reexecute_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());41 // #if DEBUG_Reexecute_unit == true 42 // log_printf(INFO,Reexecute_unit,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,Reexecute_unit,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_genMealy_commit.cpp
r117 r123 23 23 log_function(Reexecute_unit,FUNCTION,_name.c_str()); 24 24 25 if (PORT_READ(in_NRESET)) 26 { 25 27 // Initialisation 26 28 Tcontrol_t execute_loop_ack [_param->_nb_execute_loop][_param->_max_nb_inst_execute]; … … 126 128 for (uint32_t j=0; j<_param->_nb_inst_execute [i]; ++j) 127 129 PORT_WRITE(out_EXECUTE_LOOP_ACK [i][j], execute_loop_ack [i][j]); 130 } 131 else 132 { 133 #ifdef STATISTICS 134 for (uint32_t i=0; i<_param->_nb_inst_commit; ++i) 135 internal_COMMIT_VAL [i] = 0; 136 #endif 137 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 138 for (uint32_t j=0; j<_param->_nb_inst_execute [i]; ++j) 139 PORT_WRITE(out_EXECUTE_LOOP_ACK [i][j], 0); 140 } 128 141 129 142 log_end(Reexecute_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_genMealy_reexecute.cpp
r122 r123 24 24 log_function(Reexecute_unit,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 // =================================================================== 27 29 // =====[ REEXECUTE ]================================================= … … 94 96 internal_REEXECUTE_VAL [i] = val; 95 97 internal_REEXECUTE_ROB_ACK [i] = ack; 98 } 99 } 100 else 101 { 102 for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++) 103 { 104 internal_REEXECUTE_VAL [i] = 0; 105 internal_REEXECUTE_ROB_ACK [i] = 0; 106 } 107 } 96 108 109 for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++) 110 { 97 111 PORT_WRITE(out_REEXECUTE_VAL [i], internal_REEXECUTE_VAL [i]); 98 112 PORT_WRITE(out_REEXECUTE_ROB_ACK [i], internal_REEXECUTE_ROB_ACK [i]); 99 113 } 100 101 114 log_end(Reexecute_unit,FUNCTION); 102 115 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_genMoore.cpp
r98 r123 24 24 log_function(Reexecute_unit,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 // =================================================================== 27 29 // =====[ SPR ]======================================================= … … 47 49 48 50 internal_SPR_VAL [i] = val; 51 } 52 } 53 else 54 { 55 //Reset 56 for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++) 57 internal_SPR_VAL [i] = 0; 58 } 59 60 // Write output 61 for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++) 62 { 49 63 PORT_WRITE(out_SPR_VAL [i], internal_SPR_VAL [i]); 50 64 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit.cpp
r122 r123 38 38 log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Load_Store_pointer_unit == true41 log_printf(INFO,Load_Store_pointer_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());42 43 std::cout << *param << std::endl;44 #endif40 // #if DEBUG_Load_Store_pointer_unit == true 41 // log_printf(INFO,Load_Store_pointer_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Load_Store_pointer_unit,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_insert.cpp
r122 r123 25 25 log_function(Load_Store_pointer_unit,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 // TODO : limité à nb_inst_memory le nombre d'accès par lsq !!! 28 30 … … 134 136 // Write output 135 137 internal_INSERT_ACK [i] = ack; 136 PORT_WRITE(out_INSERT_ACK [i], ack);137 138 } 139 } 140 else 141 { 142 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 143 internal_INSERT_ACK [i] = 0; 144 145 } 146 147 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 148 PORT_WRITE(out_INSERT_ACK [i], internal_INSERT_ACK [i]); 138 149 139 150 log_end(Load_Store_pointer_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_retire.cpp
r110 r123 24 24 log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin"); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 // bool use_lsq [_param->_nb_load_store_queue]; 27 29 // for (uint32_t i=0; i<_param->_nb_load_store_queue; i++) … … 77 79 // Write output 78 80 internal_RETIRE_ACK [i] = ack; 79 PORT_WRITE(out_RETIRE_ACK [i], ack);80 81 } 82 } 83 else 84 { 85 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 86 internal_RETIRE_ACK [i] = 0; 87 } 88 89 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 90 PORT_WRITE(out_RETIRE_ACK [i], internal_RETIRE_ACK [i]); 91 81 92 82 93 log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit.cpp
r121 r123 39 39 log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin"); 40 40 41 #if DEBUG_Dependency_checking_unit == true42 log_printf(INFO,Dependency_checking_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());43 44 std::cout << *param << std::endl;45 #endif41 // #if DEBUG_Dependency_checking_unit == true 42 // log_printf(INFO,Dependency_checking_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 // std::cout << *param << std::endl; 45 // #endif 46 46 47 47 log_printf(INFO,Dependency_checking_unit,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_genMealy.cpp
r121 r123 26 26 log_function(Dependency_checking_unit,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 // Tcontrol_t val [_param->_nb_inst_insert]; 29 31 // Tcontrol_t ack [_param->_nb_inst_insert]; … … 223 225 PORT_WRITE(out_RENAME_OUT_NUM_REG_RE_PHY_NEW [i], num_reg_re_phy_new [i]); 224 226 } 227 } 225 228 226 229 log_end(Dependency_checking_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h
r110 r123 91 91 public : SC_IN (Tspecial_address_t) ** in_PUSH_SPR_NUM_REG; 92 92 93 // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 94 #ifdef DEBUG_TEST 95 public : SC_OUT(uint32_t ) * out_INFO_NB_GPR_FREE; 96 public : SC_OUT(uint32_t ) * out_INFO_NB_SPR_FREE; 97 #endif 98 93 99 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 94 100 private : generic::priority::Priority * _priority_gpr; … … 141 147 #ifdef SYSTEMC 142 148 public : void transition (void); 149 #ifdef DEBUG_TEST 150 public : void genMoore (void); 151 #endif 143 152 public : void genMealy_pop (void); 144 153 public : void genMealy_push_gpr (void); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp
r110 r123 39 39 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); 40 40 41 #if DEBUG_Free_List_unit == true42 log_printf(INFO,Free_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());41 // #if DEBUG_Free_List_unit == true 42 // log_printf(INFO,Free_List_unit,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,Free_List_unit,FUNCTION,"Allocation"); … … 85 85 # endif 86 86 87 #ifdef DEBUG_TEST 88 log_printf(INFO,Free_List_unit,FUNCTION,"Method - genMoore"); 89 90 SC_METHOD (genMoore); 91 dont_initialize (); 92 sensitive << (*(in_CLOCK)).neg(); 93 94 # ifdef SYSTEMCASS_SPECIFIC 95 // List dependency information 96 # endif 97 #endif 87 98 log_printf(INFO,Free_List_unit,FUNCTION,"Method - genMealy_pop"); 88 99 -
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
r112 r123 92 92 } 93 93 94 // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 95 #ifdef DEBUG_TEST 96 { 97 ALLOC0_INTERFACE_BEGIN("info",OUT, NORTH, _("Information")); 98 99 ALLOC0_SIGNAL_OUT(out_INFO_NB_GPR_FREE,"nb_gpr_free",uint32_t,_param->_size_general_register+1); 100 ALLOC0_SIGNAL_OUT(out_INFO_NB_SPR_FREE,"nb_spr_free",uint32_t,_param->_size_special_register+1); 101 102 ALLOC0_INTERFACE_END(); 103 } 104 #endif 105 94 106 if (usage_is_set(_usage,USE_SYSTEMC)) 95 107 { -
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
r112 r123 45 45 DELETE1_SIGNAL( in_PUSH_SPR_NUM_REG,_param->_nb_push,_param->_size_special_register); 46 46 47 #ifdef DEBUG_TEST 48 DELETE0_SIGNAL(out_INFO_NB_GPR_FREE,_param->_size_general_register+1); 49 DELETE0_SIGNAL(out_INFO_NB_SPR_FREE,_param->_size_special_register+1); 50 #endif 51 47 52 DELETE1(_gpr_list ,_param->_nb_bank); 48 53 DELETE1(_spr_list ,_param->_nb_bank); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_pop.cpp
r109 r123 26 26 log_function(Free_List_unit,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 std::list<generic::priority::select_t> * select_gpr = _priority_gpr->select(); 29 31 std::list<generic::priority::select_t>::iterator it_gpr=select_gpr->begin(); … … 32 34 std::list<generic::priority::select_t>::iterator it_spr=select_spr->begin(); 33 35 34 for (uint32_t i=0; i<_param->_nb_pop; i++)36 for (uint32_t i=0; i<_param->_nb_pop; i++) 35 37 { 36 38 log_printf(TRACE,Free_List_unit,FUNCTION," * POP [%d]",i); … … 104 106 105 107 internal_POP_ACK [i] = gpr_ack and spr_ack; 106 PORT_WRITE(out_POP_ACK [i], internal_POP_ACK [i]);107 108 } 108 109 … … 177 178 // PORT_WRITE(out_POP_ACK [i], internal_POP_ACK [i]); 178 179 // } 179 180 } 181 else 182 { 183 for (uint32_t i=0; i<_param->_nb_pop; i++) 184 internal_POP_ACK [i] = 0; 185 } 186 187 for (uint32_t i=0; i<_param->_nb_pop; i++) 188 PORT_WRITE(out_POP_ACK [i], internal_POP_ACK [i]); 189 180 190 181 191 log_end(Free_List_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_gpr.cpp
r108 r123 26 26 log_function(Free_List_unit,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 // bank conflit 29 31 bool bank_use [_param->_nb_bank]; … … 59 61 60 62 internal_PUSH_GPR_ACK [i] = gpr_ack; 61 PORT_WRITE(out_PUSH_GPR_ACK [i], internal_PUSH_GPR_ACK [i]);62 63 } 64 } 65 else 66 { 67 for (uint32_t i=0; i<_param->_nb_push; i++) 68 internal_PUSH_GPR_ACK [i] = 0; 69 } 70 71 for (uint32_t i=0; i<_param->_nb_push; i++) 72 PORT_WRITE(out_PUSH_GPR_ACK [i], internal_PUSH_GPR_ACK [i]); 63 73 64 74 log_end(Free_List_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_spr.cpp
r108 r123 26 26 log_function(Free_List_unit,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 bool bank_use [_param->_nb_bank]; 29 31 for (uint32_t i=0; i<_param->_nb_bank; i++) … … 51 53 52 54 internal_PUSH_SPR_ACK [i] = spr_ack; 53 PORT_WRITE(out_PUSH_SPR_ACK [i], internal_PUSH_SPR_ACK [i]);54 55 } 55 56 } 57 else 58 { 59 for (uint32_t i=0; i<_param->_nb_push; i++) 60 internal_PUSH_SPR_ACK [i] = 0; 61 } 62 63 for (uint32_t i=0; i<_param->_nb_push; i++) 64 PORT_WRITE(out_PUSH_SPR_ACK [i], internal_PUSH_SPR_ACK [i]); 65 56 66 log_end(Free_List_unit,FUNCTION); 57 67 }; -
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.cpp
r122 r123 39 39 log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin"); 40 40 41 #if DEBUG_Register_Address_Translation_unit == true42 log_printf(INFO,Register_Address_Translation_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());43 44 std::cout << *param << std::endl;45 #endif41 // #if DEBUG_Register_Address_Translation_unit == true 42 // log_printf(INFO,Register_Address_Translation_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 // std::cout << *param << std::endl; 45 // #endif 46 46 47 47 log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Allocation"); -
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_rename.cpp
r122 r123 29 29 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 30 30 if (PORT_READ(in_RENAME_VAL [i])) // not in sensitive list : it's to have valide value to array access 31 {31 { 32 32 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * RENAME [%d]",i); 33 33 -
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
r122 r123 40 40 { 41 41 rat_gpr_not_speculative [i][j][k] = gpr++; 42 // rat_gpr_speculative [i][j][k] = gpr++;43 42 rat_gpr_speculative_valid [i][j][k] = false; 44 // rat_gpr_update_table [i][j][k] = false; 43 rat_gpr_speculative [i][j][k] = 0 ; // not necessary 44 rat_gpr_update_table [i][j][k] = false; // not necessary 45 45 } 46 46 for (uint32_t k=0; k<_param->_nb_special_register_logic; k++) 47 47 { 48 48 rat_spr_not_speculative [i][j][k] = spr++; 49 // rat_spr_speculative [i][j][k] = spr++;50 49 rat_spr_speculative_valid [i][j][k] = false; 51 // rat_spr_update_table [i][j][k] = false; 50 rat_spr_speculative [i][j][k] = 0 ; // not necessary 51 rat_spr_update_table [i][j][k] = false; // not necessary 52 52 } 53 53 } -
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.cpp
r110 r123 39 39 log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin"); 40 40 41 #if DEBUG_Register_translation_unit_Glue == true42 log_printf(INFO,Register_translation_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());43 44 std::cout << *param << std::endl;45 #endif41 // #if DEBUG_Register_translation_unit_Glue == true 42 // log_printf(INFO,Register_translation_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 // std::cout << *param << std::endl; 45 // #endif 46 46 47 47 log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Allocation"); -
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_genMealy_insert.cpp
r117 r123 26 26 log_function(Register_translation_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 29 31 { … … 84 86 PORT_WRITE(out_INSERT_NUM_REG_RE_PHY_NEW [i], NUM_REG_RE_PHY_NEW); 85 87 } 88 } 89 // else 90 // { 91 // } 86 92 87 93 log_end(Register_translation_unit_Glue,FUNCTION); -
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_genMealy_insert_valack.cpp
r110 r123 25 25 log_begin(Register_translation_unit_Glue,FUNCTION); 26 26 log_function(Register_translation_unit_Glue,FUNCTION,_name.c_str()); 27 28 if (PORT_READ(in_NRESET)) 29 { 27 30 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 28 31 { … … 86 89 87 90 } 91 } 92 else 93 { 94 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 95 { 96 #ifdef STATISTICS 97 internal_INSERT_RENAME_ACK [i] = 0; 98 #endif 99 100 PORT_WRITE(out_INSERT_RENAME_ACK [i], 0); 101 PORT_WRITE(out_INSERT_INSERT_VAL [i], 0); 102 PORT_WRITE(out_INSERT_RAT_INSERT_VAL [i], 0); 103 PORT_WRITE(out_INSERT_FREE_LIST_VAL [i], 0); 104 PORT_WRITE(out_INSERT_STAT_LIST_VAL [i], 0); 105 } 106 } 88 107 89 108 log_end(Register_translation_unit_Glue,FUNCTION); -
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_genMealy_retire.cpp
r110 r123 26 26 log_function(Register_translation_unit_Glue,FUNCTION,_name.c_str()); 27 27 28 if (PORT_READ(in_NRESET)) 29 { 28 30 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 29 31 { … … 60 62 log_printf(TRACE,Register_translation_unit_Glue,FUNCTION," * stat_list_ack (r): %d",stat_list_ack ); 61 63 } 64 } 65 else 66 { 67 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 68 { 69 PORT_WRITE(out_RETIRE_ACK [i], 0); 70 PORT_WRITE(out_RETIRE_RAT_VAL [i], 0); 71 PORT_WRITE(out_RETIRE_STAT_LIST_VAL [i], 0); 72 } 73 } 62 74 63 75 log_end(Register_translation_unit_Glue,FUNCTION); -
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
r121 r123 82 82 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_ACK ;//[nb_inst_retire] 83 83 public : SC_IN (Tcontrol_t ) ** in_RETIRE_RESTORE ;//[nb_inst_retire] 84 // 85 // 86 // 87 // 88 // 89 // 84 //public : SC_IN (Tcontrol_t ) ** in_RETIRE_READ_RA ;//[nb_inst_retire] 85 //public : SC_IN (Tgeneral_address_t) ** in_RETIRE_NUM_REG_RA_PHY ;//[nb_inst_retire] 86 //public : SC_IN (Tcontrol_t ) ** in_RETIRE_READ_RB ;//[nb_inst_retire] 87 //public : SC_IN (Tgeneral_address_t) ** in_RETIRE_NUM_REG_RB_PHY ;//[nb_inst_retire] 88 //public : SC_IN (Tcontrol_t ) ** in_RETIRE_READ_RC ;//[nb_inst_retire] 89 //public : SC_IN (Tspecial_address_t) ** in_RETIRE_NUM_REG_RC_PHY ;//[nb_inst_retire] 90 90 public : SC_IN (Tcontrol_t ) ** in_RETIRE_WRITE_RD ;//[nb_inst_retire] 91 91 public : SC_IN (Tcontrol_t ) ** in_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire] … … 106 106 public : SC_IN (Tcontrol_t) ** in_PUSH_SPR_ACK ;//[nb_reg_free] 107 107 public : SC_OUT(Tspecial_address_t) ** out_PUSH_SPR_NUM_REG ;//[nb_reg_free] 108 109 // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 110 #ifdef DEBUG_TEST 111 public : SC_IN (bool ) * in_INFO_ROB_EMPTY ; 112 public : SC_IN (uint32_t ) * in_INFO_NB_GPR_FREE; 113 public : SC_IN (uint32_t ) * in_INFO_NB_SPR_FREE; 114 #endif 108 115 109 116 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h
r117 r123 66 66 else 67 67 { 68 // _is_link = 0; // already unset 68 _is_link = 0; 69 69 _is_use = 0; 70 70 } -
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
r112 r123 38 38 log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Stat_List_unit == true41 log_printf(INFO,Stat_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_Stat_List_unit == true 41 // log_printf(INFO,Stat_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Stat_List_unit,FUNCTION,"Allocation"); -
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
r121 r123 125 125 } 126 126 127 // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 128 #ifdef DEBUG_TEST 129 { 130 ALLOC0_INTERFACE_BEGIN("info",IN, NORTH, _("Information")); 131 132 ALLOC0_SIGNAL_IN ( in_INFO_ROB_EMPTY ,"rob_empty" ,bool ,1); 133 ALLOC0_SIGNAL_IN ( in_INFO_NB_GPR_FREE,"nb_gpr_free",uint32_t,_param->_size_general_register+1); 134 ALLOC0_SIGNAL_IN ( in_INFO_NB_SPR_FREE,"nb_spr_free",uint32_t,_param->_size_special_register+1); 135 136 ALLOC0_INTERFACE_END(); 137 } 138 #endif 139 127 140 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 128 141 if (usage_is_set(_usage,USE_SYSTEMC)) -
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
r121 r123 71 71 DELETE1_SIGNAL(out_PUSH_SPR_NUM_REG,_param->_nb_reg_free,_param->_size_special_register); 72 72 73 #ifdef DEBUG_TEST 74 DELETE0_SIGNAL( in_INFO_ROB_EMPTY ,1); 75 DELETE0_SIGNAL( in_INFO_NB_GPR_FREE,_param->_size_general_register+1); 76 DELETE0_SIGNAL( in_INFO_NB_SPR_FREE,_param->_size_special_register+1); 77 #endif 78 73 79 DELETE2(gpr_stat_list ,_param->_nb_bank,_param->_nb_general_register_by_bank); 74 80 DELETE2(spr_stat_list ,_param->_nb_bank,_param->_nb_special_register_by_bank); -
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
r118 r123 28 28 log_function(Stat_List_unit,FUNCTION,_name.c_str()); 29 29 30 if (PORT_READ(in_NRESET)) 31 { 30 32 uint32_t gpr_ptr = reg_GPR_PTR_FREE; 31 33 uint32_t spr_ptr = reg_SPR_PTR_FREE; … … 81 83 internal_PUSH_GPR_NUM_REG [i] = gpr_ptr ; 82 84 83 PORT_WRITE(out_PUSH_GPR_VAL [i], val);84 85 if (val) 85 86 PORT_WRITE(out_PUSH_GPR_NUM_REG[i], ((bank_gpr<<_param->_shift_gpr) | gpr_ptr)); … … 126 127 internal_PUSH_SPR_NUM_REG [i] = spr_ptr ; 127 128 128 PORT_WRITE(out_PUSH_SPR_VAL [i], val);129 129 if (val) 130 130 PORT_WRITE(out_PUSH_SPR_NUM_REG[i], ((bank_spr<<_param->_shift_spr) | spr_ptr)); … … 133 133 134 134 } 135 135 } 136 else 137 { 138 for (uint32_t i=0; i<_param->_nb_reg_free; i++) 139 { 140 internal_PUSH_GPR_VAL [i] = 0; 141 // internal_PUSH_GPR_NUM_BANK [i] = bank_gpr; 142 // internal_PUSH_GPR_NUM_REG [i] = gpr_ptr ; 143 internal_PUSH_SPR_VAL [i] = 0; 144 // internal_PUSH_SPR_NUM_BANK [i] = bank_spr; 145 // internal_PUSH_SPR_NUM_REG [i] = spr_ptr ; 146 } 147 } 148 149 for (uint32_t i=0; i<_param->_nb_reg_free; i++) 150 { 151 PORT_WRITE(out_PUSH_GPR_VAL [i], internal_PUSH_GPR_VAL [i]); 152 PORT_WRITE(out_PUSH_SPR_VAL [i], internal_PUSH_SPR_VAL [i]); 153 } 154 136 155 log_end(Stat_List_unit,FUNCTION); 137 156 }; -
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
r118 r123 43 43 else 44 44 { 45 #ifdef DEBUG_TEST 46 { 47 uint32_t free_list_nb_gpr_free = PORT_READ(in_INFO_NB_GPR_FREE); 48 uint32_t free_list_nb_spr_free = PORT_READ(in_INFO_NB_SPR_FREE); 49 uint32_t stat_list_nb_gpr_free = 0; 50 uint32_t stat_list_nb_spr_free = 0; 51 uint32_t stat_list_nb_gpr_can_free = 0; 52 uint32_t stat_list_nb_spr_can_free = 0; 53 uint32_t stat_list_nb_gpr_link = 0; 54 uint32_t stat_list_nb_spr_link = 0; 55 uint32_t stat_list_nb_gpr_use = 0; 56 uint32_t stat_list_nb_spr_use = 0; 57 58 for (uint32_t i=0; i<_param->_nb_bank; i++) 59 { 60 for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++) 61 { 62 if (gpr_stat_list [i][j]._is_free) 63 stat_list_nb_gpr_free ++; 64 if (gpr_stat_list [i][j]._is_link) 65 stat_list_nb_gpr_link ++; 66 if (gpr_stat_list [i][j]._is_use) 67 stat_list_nb_gpr_use ++; 68 if (gpr_stat_list [i][j].can_free()) 69 stat_list_nb_gpr_can_free ++; 70 } 71 for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++) 72 { 73 if (spr_stat_list [i][j]._is_free) 74 stat_list_nb_spr_free ++; 75 if (spr_stat_list [i][j]._is_link) 76 stat_list_nb_spr_link ++; 77 if (spr_stat_list [i][j]._is_use) 78 stat_list_nb_spr_use ++; 79 if (spr_stat_list [i][j].can_free()) 80 stat_list_nb_spr_can_free ++; 81 } 82 } 83 84 uint32_t nb_gpr_free = stat_list_nb_gpr_free+stat_list_nb_gpr_can_free; 85 uint32_t nb_spr_free = stat_list_nb_spr_free+stat_list_nb_spr_can_free; 86 uint32_t _nb_gpr_free = (_param->_nb_general_register - _param->_nb_gpr_use_init); 87 uint32_t _nb_spr_free = (_param->_nb_special_register - _param->_nb_spr_use_init); 88 uint32_t nb_gpr_link = stat_list_nb_gpr_link - _param->_nb_gpr_use_init; 89 uint32_t nb_spr_link = stat_list_nb_spr_link - _param->_nb_spr_use_init; 90 uint32_t nb_gpr_use = stat_list_nb_gpr_use - _param->_nb_gpr_use_init; 91 uint32_t nb_spr_use = stat_list_nb_spr_use - _param->_nb_spr_use_init; 92 93 log_printf(TRACE,Stat_List_unit,FUNCTION," * nb_gpr_free : stat_list %d - free_list %d - free %d, link %d (%d), use %d (%d)",stat_list_nb_gpr_free,free_list_nb_gpr_free,nb_gpr_free,nb_gpr_link,stat_list_nb_gpr_link,nb_gpr_use,stat_list_nb_gpr_use); 94 log_printf(TRACE,Stat_List_unit,FUNCTION," * nb_spr_free : stat_list %d - free_list %d - free %d, link %d (%d), use %d (%d)",stat_list_nb_spr_free,free_list_nb_spr_free,nb_spr_free,nb_spr_link,stat_list_nb_spr_link,nb_spr_use,stat_list_nb_spr_use); 95 96 if (free_list_nb_gpr_free != stat_list_nb_gpr_free) 97 throw ERRORMORPHEO(FUNCTION,toString(_("Number of free general register is not valid. %d in Stat_List and %d in Free_list.\n"),stat_list_nb_gpr_free,free_list_nb_gpr_free)); 98 if (free_list_nb_spr_free != stat_list_nb_spr_free) 99 throw ERRORMORPHEO(FUNCTION,toString(_("Number of free general register is not valid. %d in Stat_List and %d in Free_list.\n"),stat_list_nb_spr_free,free_list_nb_spr_free)); 100 101 if (PORT_READ(in_INFO_ROB_EMPTY) and (nb_gpr_free != _nb_gpr_free)) 102 throw ERRORMORPHEO(FUNCTION,toString(_("Rob is empty but they have %d general registers free or can_free and must be %d registers."),nb_gpr_free,_nb_gpr_free)); 103 104 if (PORT_READ(in_INFO_ROB_EMPTY) and (nb_spr_free != _nb_spr_free)) 105 throw ERRORMORPHEO(FUNCTION,toString(_("Rob is empty but they have %d special registers free or can_free and must be %d registers."),nb_spr_free,_nb_spr_free)); 106 } 107 #endif 108 45 109 // ===================================================== 46 110 // =====[ INSERT ]====================================== … … 256 320 for (uint32_t i=0; i<_param->_nb_bank; i++) 257 321 for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++) 258 log_printf(TRACE,Stat_List_unit,FUNCTION," * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d ",322 log_printf(TRACE,Stat_List_unit,FUNCTION," * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, use %.1d", 259 323 i, 260 324 j, 261 325 (i<<_param->_shift_gpr)|j, 262 326 gpr_stat_list[i][j]._is_free, 263 gpr_stat_list[i][j]._is_link// , 327 gpr_stat_list[i][j]._is_link, 328 gpr_stat_list[i][j]._is_use// , 264 329 // gpr_stat_list[i][j]._is_valid, 265 330 // gpr_stat_list[i][j]._counter … … 267 332 for (uint32_t i=0; i<_param->_nb_bank; i++) 268 333 for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++) 269 log_printf(TRACE,Stat_List_unit,FUNCTION," * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d ",334 log_printf(TRACE,Stat_List_unit,FUNCTION," * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, use %.1d", 270 335 i, 271 336 j, 272 337 (i<<_param->_shift_spr)|j, 273 338 spr_stat_list[i][j]._is_free, 274 spr_stat_list[i][j]._is_link// , 339 spr_stat_list[i][j]._is_link, 340 spr_stat_list[i][j]._is_use// , 275 341 // spr_stat_list[i][j]._is_valid, 276 342 // spr_stat_list[i][j]._counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Register_translation_unit.h
r121 r123 137 137 public : SC_IN (Tevent_state_t ) *** in_RETIRE_EVENT_STATE ;//[nb_front_end][nb_context] 138 138 139 // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 140 #ifdef DEBUG_TEST 141 public : SC_IN (bool ) * in_INFO_ROB_EMPTY ; 142 #endif 143 139 144 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 140 145 public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::dependency_checking_unit::Dependency_checking_unit * _component_dependency_checking_unit; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit.cpp
r88 r123 38 38 log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Register_translation_unit == true41 log_printf(INFO,Register_translation_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_Register_translation_unit == true 41 // log_printf(INFO,Register_translation_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Register_translation_unit,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp
r122 r123 149 149 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 150 150 } 151 152 // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 153 #ifdef DEBUG_TEST 154 { 155 ALLOC0_INTERFACE_BEGIN("info",IN, NORTH, _("Information")); 156 157 ALLOC0_SIGNAL_IN ( in_INFO_ROB_EMPTY ,"rob_empty" ,bool ,1); 158 159 ALLOC0_INTERFACE_END(); 160 } 161 #endif 151 162 152 163 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 472 483 dest,"out_PUSH_SPR_"+toString(i)+"_NUM_REG"); 473 484 } 485 486 // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 487 #ifdef DEBUG_TEST 488 { 489 dest = _name+"_stat_list_unit"; 490 #ifdef POSITION 491 _component->interface_map (src ,"info" 492 dest,"info"); 493 #endif 494 495 COMPONENT_MAP(_component,src ,"out_INFO_NB_GPR_FREE", 496 dest, "in_INFO_NB_GPR_FREE"); 497 COMPONENT_MAP(_component,src ,"out_INFO_NB_SPR_FREE", 498 dest, "in_INFO_NB_SPR_FREE"); 499 } 500 #endif 474 501 } 475 476 502 477 503 // =================================================================== … … 726 752 //out_PUSH_SPR_NUM_REG - free_list_unit 727 753 } 754 755 #ifdef DEBUG_TEST 756 { 757 dest = _name; 758 #ifdef POSITION 759 _component->interface_map (src ,"info" 760 dest,"info"); 761 #endif 762 763 PORT_MAP(_component,src , "in_INFO_ROB_EMPTY", 764 dest, "in_INFO_ROB_EMPTY"); 765 } 766 #endif 767 728 768 } 729 769 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp
r121 r123 94 94 DELETE2_SIGNAL(out_RETIRE_EVENT_ACK ,_param->_nb_front_end, _param->_nb_context[it1],1); 95 95 DELETE2_SIGNAL( in_RETIRE_EVENT_STATE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state); 96 97 #ifdef DEBUG_TEST 98 DELETE0_SIGNAL( in_INFO_ROB_EMPTY ,1); 99 #endif 96 100 } 97 101 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Rename_select.h
r122 r123 75 75 public : SC_IN (Toperation_t ) *** in_RENAME_IN_OPERATION ;//[nb_front_end][nb_inst_decod] 76 76 public : SC_IN (Tcontrol_t ) *** in_RENAME_IN_NO_EXECUTE ;//[nb_front_end][nb_inst_decod] 77 //public : SC_IN (Tcontrol_t ) *** in_RENAME_IN_HAVE_EVENT ;//[nb_front_end][nb_inst_decod] 78 public : SC_IN (Tcontrol_t ) *** in_RENAME_IN_LAST_EVENT ;//[nb_front_end][nb_inst_decod] 77 79 public : SC_IN (Tcontrol_t ) *** in_RENAME_IN_IS_DELAY_SLOT ;//[nb_front_end][nb_inst_decod] 78 80 #ifdef DEBUG … … 104 106 public : SC_OUT(Toperation_t ) ** out_RENAME_OUT_OPERATION ;//[nb_inst_rename] 105 107 public : SC_OUT(Tcontrol_t ) ** out_RENAME_OUT_NO_EXECUTE ;//[nb_inst_rename] 108 public : SC_OUT(Tcontrol_t ) ** out_RENAME_OUT_LAST_EVENT ;//[nb_inst_rename] 106 109 public : SC_OUT(Tcontrol_t ) ** out_RENAME_OUT_IS_DELAY_SLOT;//[nb_inst_rename] 107 110 #ifdef DEBUG … … 125 128 126 129 // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 127 public : SC_IN (Tcontrol_t ) *** in_RETIRE_EVENT_FLUSH ;//[nb_front_end][nb_context]130 // public : SC_IN (Tcontrol_t ) *** in_RETIRE_EVENT_FLUSH ;//[nb_front_end][nb_context] 128 131 public : SC_IN (Tcontrol_t ) *** in_RETIRE_EVENT_STOP ;//[nb_front_end][nb_context] 129 132 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select.cpp
r122 r123 38 38 log_printf(FUNC,Rename_select,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Core == true41 log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str());42 43 std::cout << *param << std::endl;44 #endif40 // #if DEBUG_Core == true 41 // log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,Rename_select,FUNCTION,"Allocation"); … … 96 96 << (*(in_RENAME_IN_OPERATION [i][j])) 97 97 << (*(in_RENAME_IN_NO_EXECUTE [i][j])) 98 // << (*(in_RENAME_IN_HAVE_EVENT [i][j])) 99 << (*(in_RENAME_IN_LAST_EVENT [i][j])) 98 100 << (*(in_RENAME_IN_IS_DELAY_SLOT [i][j])) 99 101 #ifdef DEBUG … … 125 127 for (uint32_t i=0; i<_param->_nb_front_end; i++) 126 128 for (uint32_t j=0; j<_param->_nb_context [i]; j++) 127 sensitive << (*(in_RETIRE_EVENT_FLUSH [i][j]))129 sensitive // << (*(in_RETIRE_EVENT_FLUSH [i][j])) 128 130 << (*(in_RETIRE_EVENT_STOP [i][j])); 129 131 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_allocation.cpp
r122 r123 68 68 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 69 69 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NO_EXECUTE ,"no_execute" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 70 // _ALLOC2_SIGNAL_IN ( in_RENAME_IN_HAVE_EVENT ,"have_event" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 71 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_LAST_EVENT ,"last_event" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 70 72 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 71 73 #ifdef DEBUG … … 103 105 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 104 106 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NO_EXECUTE ,"no_execute" ,Tcontrol_t ,1 ); 107 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_LAST_EVENT ,"last_event" ,Tcontrol_t ,1 ); 105 108 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t ,1 ); 106 109 #ifdef DEBUG … … 130 133 ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]); 131 134 132 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_FLUSH ,"flush" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_context[it1]);135 // _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_FLUSH ,"flush" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_context[it1]); 133 136 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STOP ,"stop" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_context[it1]); 134 137 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_deallocation.cpp
r122 r123 37 37 DELETE2_SIGNAL( in_RENAME_IN_OPERATION ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_operation ); 38 38 DELETE2_SIGNAL( in_RENAME_IN_NO_EXECUTE ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 39 // DELETE2_SIGNAL( in_RENAME_IN_HAVE_EVENT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 40 DELETE2_SIGNAL( in_RENAME_IN_LAST_EVENT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 39 41 DELETE2_SIGNAL( in_RENAME_IN_IS_DELAY_SLOT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 40 42 #ifdef DEBUG … … 65 67 DELETE1_SIGNAL(out_RENAME_OUT_OPERATION ,_param->_nb_inst_rename,_param->_size_operation ); 66 68 DELETE1_SIGNAL(out_RENAME_OUT_NO_EXECUTE ,_param->_nb_inst_rename,1 ); 69 DELETE1_SIGNAL(out_RENAME_OUT_LAST_EVENT ,_param->_nb_inst_rename,1 ); 67 70 DELETE1_SIGNAL(out_RENAME_OUT_IS_DELAY_SLOT ,_param->_nb_inst_rename,1 ); 68 71 #ifdef DEBUG … … 85 88 DELETE1_SIGNAL(out_RENAME_OUT_EXCEPTION ,_param->_nb_inst_rename,_param->_size_exception ); 86 89 87 DELETE2_SIGNAL( in_RETIRE_EVENT_FLUSH ,_param->_nb_front_end, _param->_nb_context[it1],1);90 // DELETE2_SIGNAL( in_RETIRE_EVENT_FLUSH ,_param->_nb_front_end, _param->_nb_context[it1],1); 88 91 DELETE2_SIGNAL( in_RETIRE_EVENT_STOP ,_param->_nb_front_end, _param->_nb_context[it1],1); 89 92 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp
r122 r123 17 17 namespace rename_select { 18 18 19 // #define CONTINUE_ON_EVENT_STOP20 21 19 #undef FUNCTION 22 20 #define FUNCTION "Rename_select::genMealy" … … 28 26 Tcontrol_t val [_param->_nb_inst_rename]; 29 27 Tcontrol_t ack [_param->_nb_front_end][_param->_max_nb_inst_decod]; 30 Tcontrol_t previous_transaction [_param->_nb_front_end];31 28 32 29 for (uint32_t i=0; i<_param->_nb_inst_rename; ++i) 33 30 val [i] = false; 34 31 for (uint32_t i=0; i<_param->_nb_front_end; i++) 32 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 33 ack [i][j] = false; 34 35 if (PORT_READ(in_NRESET)) 35 36 { 36 previous_transaction [i] = true; 37 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 38 ack [i][j] = false; 39 } 37 Tcontrol_t previous_transaction [_param->_nb_front_end]; 38 for (uint32_t i=0; i<_param->_nb_front_end; i++) 39 previous_transaction [i] = true; 40 40 41 41 std::list<generic::priority::select_t> * select = _priority->select(); … … 71 71 72 72 // Test if ROB is Flushed 73 #ifndef CONTINUE_ON_EVENT_STOP74 73 if (not stop) 75 #endif76 74 { 77 75 // Find !!! … … 79 77 ack [x][y] = PORT_READ(in_RENAME_OUT_ACK [i]); 80 78 81 Tcontrol_t have_event = (PORT_READ(in_RETIRE_EVENT_FLUSH [x][context_id]) 82 #ifdef CONTINUE_ON_EVENT_STOP 83 or stop 84 #endif 85 );86 Tcontrol_t can_register_access = not have_event;87 Tcontrol_t no_execute = (PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y]) or have_event);88 Tcontrol_t read_ra = (PORT_READ(in_RENAME_IN_READ_RA[x][y]) and can_register_access);89 Tcontrol_t read_rb = (PORT_READ(in_RENAME_IN_READ_RB[x][y]) and can_register_access);90 Tcontrol_t read_rc = (PORT_READ(in_RENAME_IN_READ_RC[x][y]) and can_register_access);91 Tcontrol_t write_rd = (PORT_READ(in_RENAME_IN_WRITE_RD[x][y]) and can_register_access);92 Tcontrol_t write_re = (PORT_READ(in_RENAME_IN_WRITE_RE [x][y]) and can_register_access);93 //Tcontrol_t read_ra = (PORT_READ(in_RENAME_IN_READ_RA [x][y]));94 //Tcontrol_t read_rb = (PORT_READ(in_RENAME_IN_READ_RB [x][y]));95 //Tcontrol_t read_rc = (PORT_READ(in_RENAME_IN_READ_RC [x][y]));96 //Tcontrol_t write_rd = (PORT_READ(in_RENAME_IN_WRITE_RD [x][y]));97 //Tcontrol_t write_re = (PORT_READ(in_RENAME_IN_WRITE_RE [x][y]));79 // Tcontrol_t have_event = (PORT_READ(in_RETIRE_EVENT_FLUSH [x][context_id]) // or 80 // ); 81 // log_printf(TRACE,Rename_select,FUNCTION," * have_event : %d",have_event); 82 83 // Tcontrol_t can_register_access = not have_event; 84 // Tcontrol_t no_execute = (PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y]) or have_event); 85 // Tcontrol_t read_ra = (PORT_READ(in_RENAME_IN_READ_RA [x][y]) and can_register_access); 86 // Tcontrol_t read_rb = (PORT_READ(in_RENAME_IN_READ_RB [x][y]) and can_register_access); 87 // Tcontrol_t read_rc = (PORT_READ(in_RENAME_IN_READ_RC [x][y]) and can_register_access); 88 // Tcontrol_t write_rd = (PORT_READ(in_RENAME_IN_WRITE_RD [x][y]) and can_register_access); 89 // Tcontrol_t write_re = (PORT_READ(in_RENAME_IN_WRITE_RE [x][y]) and can_register_access); 90 Tcontrol_t no_execute = (PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y])); 91 Tcontrol_t read_ra = (PORT_READ(in_RENAME_IN_READ_RA [x][y])); 92 Tcontrol_t read_rb = (PORT_READ(in_RENAME_IN_READ_RB [x][y])); 93 Tcontrol_t read_rc = (PORT_READ(in_RENAME_IN_READ_RC [x][y])); 94 Tcontrol_t write_rd = (PORT_READ(in_RENAME_IN_WRITE_RD [x][y])); 95 Tcontrol_t write_re = (PORT_READ(in_RENAME_IN_WRITE_RE [x][y])); 98 96 99 log_printf(TRACE,Rename_select,FUNCTION," * have_event : %d",have_event); 100 log_printf(TRACE,Rename_select,FUNCTION," * no_execute (before) : %d",PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y])); 101 log_printf(TRACE,Rename_select,FUNCTION," * no_execute (after) : %d",no_execute); 97 log_printf(TRACE,Rename_select,FUNCTION," * no_execute : %d",no_execute); 102 98 103 99 if (_param->_have_port_front_end_id) … … 110 106 PORT_WRITE(out_RENAME_OUT_OPERATION [i],PORT_READ(in_RENAME_IN_OPERATION [x][y])); 111 107 PORT_WRITE(out_RENAME_OUT_NO_EXECUTE [i],no_execute); 108 PORT_WRITE(out_RENAME_OUT_LAST_EVENT [i],PORT_READ(in_RENAME_IN_LAST_EVENT [x][y])); 112 109 PORT_WRITE(out_RENAME_OUT_IS_DELAY_SLOT[i],PORT_READ(in_RENAME_IN_IS_DELAY_SLOT [x][y])); 113 110 #ifdef DEBUG … … 140 137 } 141 138 139 } 140 // else 141 // { 142 // } 143 142 144 for (uint32_t i=0; i<_param->_nb_inst_rename; ++i) 143 145 PORT_WRITE(out_RENAME_OUT_VAL [i], val [i]); … … 146 148 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 147 149 PORT_WRITE(out_RENAME_IN_ACK [i][j], ack [i][j]); 150 148 151 149 152 log_end(Rename_select,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue.cpp
r122 r123 40 40 usage_environment(_usage); 41 41 42 #if DEBUG_Rename_unit_Glue == true43 log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());44 45 std::cout << *param << std::endl;46 #endif42 // #if DEBUG_Rename_unit_Glue == true 43 // log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 44 45 // std::cout << *param << std::endl; 46 // #endif 47 47 48 48 log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_insert.cpp
r88 r123 25 25 log_function(Rename_unit_Glue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 28 30 { … … 104 106 PORT_WRITE(out_INSERT_LOAD_STORE_QUEUE_POINTER_OPERATION [i],OPERATION ); 105 107 } 108 } 106 109 107 110 log_end(Rename_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_insert_valack.cpp
r115 r123 25 25 log_function(Rename_unit_Glue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 // // Transaction must be in-order - made in rename_select 28 30 // Tcontrol_t previous_transaction = true; … … 75 77 // previous_transaction = RENAME_SELECT_VAL and RENAME_SELECT_ACK; 76 78 } 79 } 80 else 81 { 82 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 83 { 84 // PORT_WRITE(out_INSERT_VAL [i], 0); 85 PORT_WRITE(out_INSERT_RENAME_SELECT_ACK [i], 0); 86 PORT_WRITE(out_INSERT_REGISTER_TRANSLATION_VAL [i], 0); 87 PORT_WRITE(out_INSERT_LOAD_STORE_QUEUE_POINTER_VAL [i], 0); 88 } 89 } 77 90 78 91 log_end(Rename_unit_Glue,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_retire_event_valack.cpp
r122 r123 25 25 log_function(Rename_unit_Glue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 for (uint32_t i=0; i<_param->_nb_front_end; i++) 28 30 for (uint32_t j=0; j<_param->_nb_context[i]; j++) … … 59 61 log_printf(TRACE,Rename_unit_Glue,FUNCTION," * load_store_queue_pointer_ack (r) : %d",LOAD_STORE_QUEUE_POINTER_ACK); 60 62 } 61 63 } 64 else 65 { 66 for (uint32_t i=0; i<_param->_nb_front_end; i++) 67 for (uint32_t j=0; j<_param->_nb_context[i]; j++) 68 { 69 PORT_WRITE(out_RETIRE_EVENT_ACK [i][j], 0); 70 PORT_WRITE(out_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_VAL [i][j], 0); 71 PORT_WRITE(out_RETIRE_EVENT_REGISTER_TRANSLATION_VAL [i][j], 0); 72 } 73 } 74 62 75 log_end(Rename_unit_Glue,FUNCTION); 63 76 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_retire_valack.cpp
r110 r123 25 25 log_function(Rename_unit_Glue,FUNCTION,_name.c_str()); 26 26 27 if (PORT_READ(in_NRESET)) 28 { 27 29 // Transaction must be in-order - made in commit_unit 28 30 // Tcontrol_t previous_transaction = true; … … 58 60 log_printf(TRACE,Rename_unit_Glue,FUNCTION," * load_store_queue_pointer_ack (r) : %d",LOAD_STORE_QUEUE_POINTER_ACK); 59 61 } 60 62 } 63 else 64 { 65 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 66 { 67 PORT_WRITE(out_RETIRE_ACK [i], 0); 68 PORT_WRITE(out_RETIRE_LOAD_STORE_QUEUE_POINTER_VAL [i], 0); 69 PORT_WRITE(out_RETIRE_REGISTER_TRANSLATION_VAL [i], 0); 70 } 71 } 61 72 log_end(Rename_unit_Glue,FUNCTION); 62 73 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Rename_unit.h
r122 r123 77 77 public : SC_IN (Toperation_t ) *** in_RENAME_IN_OPERATION ;//[nb_front_end][nb_inst_decod] 78 78 public : SC_IN (Tcontrol_t ) *** in_RENAME_IN_NO_EXECUTE ;//[nb_front_end][nb_inst_decod] 79 //public : SC_IN (Tcontrol_t ) *** in_RENAME_IN_HAVE_EVENT ;//[nb_front_end][nb_inst_decod] 80 public : SC_IN (Tcontrol_t ) *** in_RENAME_IN_LAST_EVENT ;//[nb_front_end][nb_inst_decod] 79 81 public : SC_IN (Tcontrol_t ) *** in_RENAME_IN_IS_DELAY_SLOT ;//[nb_front_end][nb_inst_decod] 80 82 #ifdef DEBUG … … 106 108 public : SC_OUT(Toperation_t ) ** out_INSERT_OPERATION ;//[nb_inst_insert] 107 109 public : SC_OUT(Tcontrol_t ) ** out_INSERT_NO_EXECUTE ;//[nb_inst_insert] 110 public : SC_OUT(Tcontrol_t ) ** out_INSERT_LAST_EVENT ;//[nb_inst_insert] 108 111 public : SC_OUT(Tcontrol_t ) ** out_INSERT_IS_DELAY_SLOT ;//[nb_inst_insert] 109 112 #ifdef DEBUG … … 173 176 public : SC_OUT(Tcontrol_t ) *** out_RETIRE_EVENT_ACK ;//[nb_front_end][nb_context] 174 177 public : SC_IN (Tevent_state_t ) *** in_RETIRE_EVENT_STATE ;//[nb_front_end][nb_context] 175 178 //public : SC_IN (Tcontrol_t ) *** in_RETIRE_EVENT_FLUSH ;//[nb_front_end][nb_context] 176 179 public : SC_IN (Tcontrol_t ) *** in_RETIRE_EVENT_STOP ;//[nb_front_end][nb_context] 177 180 178 181 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 179 182 public : SC_IN (Tspr_t ) *** in_SPR_READ_SR ;//[nb_front_end][nb_context] 183 184 // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 185 #ifdef DEBUG_TEST 186 public : SC_IN (bool ) * in_INFO_ROB_EMPTY ; 187 #endif 180 188 181 189 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit.cpp
r88 r123 39 39 usage_environment(_usage); 40 40 41 #if DEBUG_Rename_unit == true42 log_printf(INFO,Rename_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());41 // #if DEBUG_Rename_unit == true 42 // log_printf(INFO,Rename_unit,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,Rename_unit,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_allocation.cpp
r122 r123 68 68 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 69 69 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NO_EXECUTE ,"no_execute" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 70 // _ALLOC2_SIGNAL_IN ( in_RENAME_IN_HAVE_EVENT ,"have_event" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 71 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_LAST_EVENT ,"last_event" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 70 72 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 71 73 #ifdef DEBUG … … 103 105 ALLOC1_SIGNAL_OUT(out_INSERT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 104 106 ALLOC1_SIGNAL_OUT(out_INSERT_NO_EXECUTE ,"no_execute" ,Tcontrol_t ,1 ); 107 ALLOC1_SIGNAL_OUT(out_INSERT_LAST_EVENT ,"last_event" ,Tcontrol_t ,1 ); 105 108 ALLOC1_SIGNAL_OUT(out_INSERT_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1 ); 106 109 #ifdef DEBUG … … 182 185 _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK ,ACK,_param->_nb_front_end, _param->_nb_context[it1]); 183 186 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]); 184 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_FLUSH ,"flush" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_context[it1]);187 // _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_FLUSH ,"flush" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_context[it1]); 185 188 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STOP ,"stop" ,Tcontrol_t ,1 , _param->_nb_front_end, _param->_nb_context[it1]); 186 189 … … 196 199 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 197 200 } 201 202 // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 203 #ifdef DEBUG_TEST 204 { 205 ALLOC0_INTERFACE_BEGIN("info",IN, NORTH, _("Information")); 206 207 ALLOC0_SIGNAL_IN ( in_INFO_ROB_EMPTY ,"rob_empty" ,bool ,1); 208 209 ALLOC0_INTERFACE_END(); 210 } 211 #endif 198 212 199 213 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 325 339 PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NO_EXECUTE" , 326 340 dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NO_EXECUTE" ); 341 // PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_HAVE_EVENT" , 342 // dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_HAVE_EVENT" ); 343 PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_LAST_EVENT" , 344 dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_LAST_EVENT" ); 327 345 PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_IS_DELAY_SLOT", 328 346 dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_IS_DELAY_SLOT"); … … 387 405 PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_EXCEPTION_USE", 388 406 dest,"out_INSERT_" +toString(i)+"_EXCEPTION_USE"); 407 PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_LAST_EVENT", 408 dest,"out_INSERT_" +toString(i)+"_LAST_EVENT"); 389 409 390 410 dest = _name+"_register_translation_unit"; … … 456 476 dest,"retire_event_"+toString(i)+"_"+toString(j)); 457 477 #endif 458 PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_FLUSH",459 dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_FLUSH");478 // PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_FLUSH", 479 // dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_FLUSH"); 460 480 PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STOP", 461 481 dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STOP"); … … 663 683 dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE"); 664 684 } 685 686 687 #ifdef DEBUG_TEST 688 { 689 dest = _name; 690 #ifdef POSITION 691 _component->interface_map (src ,"info" 692 dest,"info"); 693 #endif 694 695 PORT_MAP(_component,src , "in_INFO_ROB_EMPTY", 696 dest, "in_INFO_ROB_EMPTY"); 697 } 698 #endif 665 699 } 666 700 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_deallocation.cpp
r122 r123 36 36 DELETE2_SIGNAL( in_RENAME_IN_OPERATION ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_operation ); 37 37 DELETE2_SIGNAL( in_RENAME_IN_NO_EXECUTE ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 38 // DELETE2_SIGNAL( in_RENAME_IN_HAVE_EVENT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 39 DELETE2_SIGNAL( in_RENAME_IN_LAST_EVENT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 38 40 DELETE2_SIGNAL( in_RENAME_IN_IS_DELAY_SLOT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 39 41 #ifdef DEBUG … … 64 66 DELETE1_SIGNAL(out_INSERT_OPERATION ,_param->_nb_inst_insert,_param->_size_operation ); 65 67 DELETE1_SIGNAL(out_INSERT_NO_EXECUTE ,_param->_nb_inst_insert,1 ); 68 DELETE1_SIGNAL(out_INSERT_LAST_EVENT ,_param->_nb_inst_insert,1 ); 66 69 DELETE1_SIGNAL(out_INSERT_IS_DELAY_SLOT ,_param->_nb_inst_insert,1 ); 67 70 #ifdef DEBUG … … 129 132 DELETE2_SIGNAL(out_RETIRE_EVENT_ACK ,_param->_nb_front_end, _param->_nb_context[it1],1); 130 133 DELETE2_SIGNAL( in_RETIRE_EVENT_STATE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state); 131 DELETE2_SIGNAL( in_RETIRE_EVENT_FLUSH ,_param->_nb_front_end, _param->_nb_context[it1],1);134 // DELETE2_SIGNAL( in_RETIRE_EVENT_FLUSH ,_param->_nb_front_end, _param->_nb_context[it1],1); 132 135 DELETE2_SIGNAL( in_RETIRE_EVENT_STOP ,_param->_nb_front_end, _param->_nb_context[it1],1); 133 136 134 137 DELETE2_SIGNAL(in_SPR_READ_SR ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_spr); 138 139 #ifdef DEBUG_TEST 140 DELETE0_SIGNAL( in_INFO_ROB_EMPTY ,1); 141 #endif 135 142 } 136 143 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit.cpp
r88 r123 39 39 usage_environment(_usage); 40 40 41 #if DEBUG_Core == true42 log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str());41 // #if DEBUG_Core == true 42 // log_printf(INFO,Core,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,Special_Register_unit,FUNCTION,_("<%s> : Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_genMealy_spr_access.cpp
r98 r123 24 24 log_function(Special_Register_unit,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 // =================================================================== 27 29 // =====[ SPR_ACCESS ]================================================ … … 72 74 PORT_WRITE(out_SPR_ACCESS_INVALID [i], not valid); 73 75 } 76 } 77 // else 78 // { 79 80 // } 74 81 75 82 log_end(Special_Register_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_genMoore.cpp
r98 r123 24 24 log_function(Special_Register_unit,FUNCTION,_name.c_str()); 25 25 26 // if (PORT_READ(in_NRESET)) 27 { 26 28 // =================================================================== 27 29 // =====[ SPR_READ ]================================================== … … 34 36 // PORT_WRITE(out_SPR_READ_SR [i][j],sr->read()); 35 37 // } 38 } 36 39 37 40 log_end(Special_Register_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/OOO_Engine.h
r122 r123 76 76 public : SC_IN (Toperation_t ) *** in_RENAME_OPERATION ;//[nb_front_end][nb_inst_decod] 77 77 public : SC_IN (Tcontrol_t ) *** in_RENAME_NO_EXECUTE ;//[nb_front_end][nb_inst_decod] 78 //public : SC_IN (Tcontrol_t ) *** in_RENAME_HAVE_EVENT ;//[nb_front_end][nb_inst_decod] 79 public : SC_IN (Tcontrol_t ) *** in_RENAME_LAST_EVENT ;//[nb_front_end][nb_inst_decod] 78 80 public : SC_IN (Tcontrol_t ) *** in_RENAME_IS_DELAY_SLOT ;//[nb_front_end][nb_inst_decod] 79 81 #ifdef DEBUG -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine.cpp
r88 r123 38 38 usage_environment(_usage); 39 39 40 #if DEBUG_OOO_Engine == true41 log_printf(TRACE,OOO_Engine,FUNCTION,_("<%s> Parameters"),_name.c_str());40 // #if DEBUG_OOO_Engine == true 41 // log_printf(TRACE,OOO_Engine,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 42 43 std::cout << *param << std::endl;44 #endif43 // std::cout << *param << std::endl; 44 // #endif 45 45 46 46 log_printf(INFO,OOO_Engine,FUNCTION,_("<%s> Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp
r122 r123 65 65 _ALLOC2_SIGNAL_IN ( in_RENAME_OPERATION ,"OPERATION" ,Toperation_t ,_param->_size_operation ,_param->_nb_front_end,_param->_nb_inst_decod[it1]); 66 66 _ALLOC2_SIGNAL_IN ( in_RENAME_NO_EXECUTE ,"NO_EXECUTE" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_inst_decod[it1]); 67 // _ALLOC2_SIGNAL_IN ( in_RENAME_HAVE_EVENT ,"HAVE_EVENT" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_inst_decod[it1]); 68 _ALLOC2_SIGNAL_IN ( in_RENAME_LAST_EVENT ,"LAST_EVENT" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_inst_decod[it1]); 67 69 _ALLOC2_SIGNAL_IN ( in_RENAME_IS_DELAY_SLOT ,"IS_DELAY_SLOT" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_inst_decod[it1]); 68 70 #ifdef DEBUG … … 441 443 PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_NO_EXECUTE" , 442 444 dest, "in_RENAME_" +toString(j)+"_"+toString(k)+"_NO_EXECUTE" ); 445 // PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_HAVE_EVENT" , 446 // dest, "in_RENAME_" +toString(j)+"_"+toString(k)+"_HAVE_EVENT" ); 447 PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_LAST_EVENT" , 448 dest, "in_RENAME_" +toString(j)+"_"+toString(k)+"_LAST_EVENT" ); 443 449 PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_IS_DELAY_SLOT", 444 450 dest, "in_RENAME_" +toString(j)+"_"+toString(k)+"_IS_DELAY_SLOT"); … … 511 517 COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j) +"_IS_DELAY_SLOT" , 512 518 dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_IS_DELAY_SLOT" ); 519 // COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j) +"_HAVE_EVENT" , 520 // dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_HAVE_EVENT" ); 521 COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j) +"_LAST_EVENT" , 522 dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_LAST_EVENT" ); 513 523 #ifdef DEBUG 514 524 COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j) +"_ADDRESS" , … … 682 692 COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_STATE", 683 693 dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_STATE"); 684 COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_FLUSH",685 dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_FLUSH");694 // COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_FLUSH", 695 // dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_FLUSH"); 686 696 COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_STOP", 687 697 dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_STOP"); … … 715 725 } 716 726 } 727 728 // ~~~~~[ Interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 729 #ifdef DEBUG_TEST 730 { 731 dest = _name+"_commit_unit"; 732 733 #ifdef POSITION 734 _component->interface_map (src ,"info", 735 dest,"info"); 736 #endif 737 COMPONENT_MAP(_component,src , "in_INFO_ROB_EMPTY", 738 dest,"out_INFO_ROB_EMPTY"); 739 } 740 #endif 717 741 } 718 742 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_deallocation.cpp
r122 r123 35 35 DELETE2_SIGNAL( in_RENAME_OPERATION ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_operation ); 36 36 DELETE2_SIGNAL( in_RENAME_NO_EXECUTE ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1 ); 37 // DELETE2_SIGNAL( in_RENAME_HAVE_EVENT ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1 ); 38 DELETE2_SIGNAL( in_RENAME_LAST_EVENT ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1 ); 37 39 DELETE2_SIGNAL( in_RENAME_IS_DELAY_SLOT ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1 ); 38 40 #ifdef DEBUG -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core.cpp
r88 r123 36 36 usage_environment(_usage); 37 37 38 #if DEBUG_Core == true39 log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str());38 // #if DEBUG_Core == true 39 // log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str()); 40 40 41 std::cout << *param << std::endl;42 #endif41 // std::cout << *param << std::endl; 42 // #endif 43 43 44 44 log_printf(INFO,Core,FUNCTION,_("<%s> Allocation"),_name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core_allocation.cpp
r122 r123 468 468 COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_NO_EXECUTE" , 469 469 dest,"out_DECOD_" +toString(k)+"_NO_EXECUTE" ); 470 // COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_HAVE_EVENT" , 471 // dest,"out_DECOD_" +toString(k)+"_HAVE_EVENT" ); 472 COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_LAST_EVENT" , 473 dest,"out_DECOD_" +toString(k)+"_LAST_EVENT" ); 470 474 COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_IS_DELAY_SLOT", 471 475 dest,"out_DECOD_" +toString(k)+"_IS_DELAY_SLOT"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core_deallocation.cpp
r122 r123 59 59 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 61 delete _component_glue; 62 delete _component_dcache_access; 63 delete _component_icache_access; 64 for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 65 delete _component_execute_loop [i]; 66 delete [] _component_execute_loop; 67 for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i) 68 delete _component_ooo_engine [i]; 69 delete [] _component_ooo_engine; 70 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 71 delete _component_front_end [i]; 72 delete [] _component_front_end; 61 delete _component; 73 62 74 delete _component; 63 // delete _component_glue; 64 // delete _component_dcache_access; 65 // delete _component_icache_access; 66 // for (uint32_t i=0; i<_param->_nb_execute_loop; ++i) 67 // delete _component_execute_loop [i]; 68 // delete [] _component_execute_loop; 69 // for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i) 70 // delete _component_ooo_engine [i]; 71 // delete [] _component_ooo_engine; 72 // for (uint32_t i=0; i<_param->_nb_front_end; ++i) 73 // delete _component_front_end [i]; 74 // delete [] _component_front_end; 75 75 76 76 log_end(Core,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp
r122 r123 2181 2181 log_begin(Core,FUNCTION); 2182 2182 2183 for (uint32_t i=0; i<_nb_front_end; ++i)2184 delete _param_front_end [i];2185 delete [] _param_front_end;2186 for (uint32_t i=0; i<_nb_ooo_engine; ++i)2187 delete _param_ooo_engine [i];2188 delete [] _param_ooo_engine;2189 for (uint32_t i=0; i<_nb_execute_loop; ++i)2190 delete _param_execute_loop [i];2191 delete [] _param_execute_loop;2192 delete _param_icache_access;2193 delete _param_dcache_access;2194 delete _param_glue;2183 // for (uint32_t i=0; i<_nb_front_end; ++i) 2184 // delete _param_front_end [i]; 2185 // delete [] _param_front_end; 2186 // for (uint32_t i=0; i<_nb_ooo_engine; ++i) 2187 // delete _param_ooo_engine [i]; 2188 // delete [] _param_ooo_engine; 2189 // for (uint32_t i=0; i<_nb_execute_loop; ++i) 2190 // delete _param_execute_loop [i]; 2191 // delete [] _param_execute_loop; 2192 // delete _param_icache_access; 2193 // delete _param_dcache_access; 2194 // delete _param_glue; 2195 2195 2196 2196 DELETE3(_dcache_access_translate_load_store_unit_to_thread ,_nb_execute_loop,_execute_loop_nb_load_store_unit[it1],_dcache_access_nb_context[it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_genMealy.cpp
r113 r123 21 21 log_begin(Comparator,FUNCTION); 22 22 23 if (PORT_READ(in_NRESET)) 24 { 23 25 Tcontrol_t test; 24 26 Tdata_t data_0 = PORT_READ(in_COMPARE_DATA_0); … … 71 73 72 74 PORT_WRITE(out_COMPARE_TEST,test); 75 } 73 76 74 77 log_end(Comparator,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_genMealy.cpp
r113 r123 18 18 log_printf(FUNC,Counter,"genMealy","Begin"); 19 19 20 if (PORT_READ(in_NRESET)) 20 21 for (uint32_t i=0; i<_param->_nb_port; i++) 21 22 { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_genMoore.cpp
r101 r123 20 20 log_printf(FUNC,Queue,FUNCTION,"Begin"); 21 21 22 if (PORT_READ(in_NRESET)) 23 { 22 24 //--------------------------------------------- 23 25 // Output … … 26 28 internal_RETIRE_VAL = not _queue_control->empty(); 27 29 28 PORT_WRITE(out_INSERT_ACK , internal_INSERT_ACK);29 PORT_WRITE(out_RETIRE_VAL , internal_RETIRE_VAL);30 30 PORT_WRITE(out_RETIRE_DATA,_queue_data[(*_queue_control)[0]]); 31 31 … … 49 49 if (_param->_have_port_ptr_read ) 50 50 PORT_WRITE(out_PTR_READ , _queue_control->ptr_pop ()); 51 } 52 else 53 { 54 // Reset 55 internal_INSERT_ACK = 0; 56 internal_RETIRE_VAL = 0; 57 58 for (uint32_t i=0; i<_param->_nb_port_slot; ++i) 59 PORT_WRITE(out_SLOT_VAL [i], 0); 60 } 61 62 // Write output 63 PORT_WRITE(out_INSERT_ACK , internal_INSERT_ACK); 64 PORT_WRITE(out_RETIRE_VAL , internal_RETIRE_VAL); 65 51 66 52 67 log_printf(FUNC,Queue,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp
r98 r123 33 33 log_printf(FUNC,RegisterFile_Monolithic,"RegisterFile_Monolithic","Begin"); 34 34 35 #if DEBUG_RegisterFile_Monolithic == true36 log_printf(INFO,RegisterFile_Monolithic,FUNCTION,_("<%s> Parameters"),_name.c_str());35 // #if DEBUG_RegisterFile_Monolithic == true 36 // log_printf(INFO,RegisterFile_Monolithic,FUNCTION,_("<%s> Parameters"),_name.c_str()); 37 37 38 std::cout << *param << std::endl;39 #endif38 // std::cout << *param << std::endl; 39 // #endif 40 40 41 41 log_printf(INFO,RegisterFile_Monolithic,"RegisterFile_Monolithic","Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp
r106 r123 22 22 log_function(RegisterFile_Monolithic,FUNCTION,_name.c_str()); 23 23 24 if (PORT_READ(in_NRESET)) 25 { 24 26 for (uint32_t i=0; i<_param->_nb_port_read; i++) 25 27 { … … 73 75 PORT_WRITE(out_READ_WRITE_RDATA[i],data); 74 76 } 77 } 75 78 76 79 log_end(RegisterFile_Monolithic,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp
r88 r123 34 34 log_printf(FUNC,RegisterFile_Multi_Banked,FUNCTION,"Begin"); 35 35 36 #if DEBUG_RegisterFile_Multi_Banked == true37 log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,_("<%s> Parameters"),_name.c_str());36 // #if DEBUG_RegisterFile_Multi_Banked == true 37 // log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,_("<%s> Parameters"),_name.c_str()); 38 38 39 std::cout << *param << std::endl;40 #endif39 // std::cout << *param << std::endl; 40 // #endif 41 41 42 42 log_printf(INFO,RegisterFile_Multi_Banked,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_read.cpp
r106 r123 23 23 log_begin(RegisterFile_Multi_Banked,FUNCTION); 24 24 log_function(RegisterFile_Multi_Banked,FUNCTION,_name.c_str()); 25 26 if (PORT_READ(in_NRESET)) 27 { 25 28 26 29 bool read_port_use [_param->_nb_bank][_param->_nb_port_read_by_bank]; … … 79 82 PORT_WRITE(out_READ_ACK [i], ack); 80 83 } 84 } 85 else 86 for (uint32_t i=0; i<_param->_nb_port_read; i++) 87 PORT_WRITE(out_READ_ACK [i], false); 81 88 82 89 log_end(RegisterFile_Multi_Banked,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_write.cpp
r106 r123 24 24 log_function(RegisterFile_Multi_Banked,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 bool write_port_use [_param->_nb_bank][_param->_nb_port_write_by_bank]; 27 29 … … 79 81 PORT_WRITE(out_WRITE_ACK [i], ack); 80 82 } 83 } 84 else 85 { 86 for (uint32_t i=0; i<_param->_nb_port_write; i++) 87 { 88 internal_WRITE_VAL [i] = 0; 89 PORT_WRITE(out_WRITE_ACK [i], 0); 90 } 91 } 81 92 82 93 log_end(RegisterFile_Multi_Banked,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_read.cpp
r106 r123 24 24 log_function(RegisterFile_Multi_Banked,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 bool read_port_use [_param->_nb_bank][_param->_nb_port_read_by_bank]; 27 29 … … 81 83 PORT_WRITE(out_READ_ACK [i], ack); 82 84 } 83 85 } 86 else 87 { 88 for (uint32_t i=0; i<_param->_nb_port_read; i++) 89 PORT_WRITE(out_READ_ACK [i],0); 90 } 84 91 log_end(RegisterFile_Multi_Banked,FUNCTION); 85 92 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_write.cpp
r106 r123 24 24 log_function(RegisterFile_Multi_Banked,FUNCTION,_name.c_str()); 25 25 26 if (PORT_READ(in_NRESET)) 27 { 26 28 bool write_port_use [_param->_nb_bank][_param->_nb_port_write_by_bank]; 27 29 for (uint32_t i=0; i<_param->_nb_bank; i++) … … 81 83 PORT_WRITE(out_WRITE_ACK [i], ack); 82 84 } 85 } 86 else 87 { 88 for (uint32_t i=0; i<_param->_nb_port_write; i++) 89 { 90 internal_WRITE_VAL [i] = 0; 91 PORT_WRITE(out_WRITE_ACK [i], 0); 92 } 93 } 83 94 84 95 log_end(RegisterFile_Multi_Banked,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter.cpp
r88 r123 32 32 { 33 33 34 #if DEBUG_Shifter == true35 log_printf(INFO,Shifter,FUNCTION,_("<%s> Parameters"),_name.c_str());34 // #if DEBUG_Shifter == true 35 // log_printf(INFO,Shifter,FUNCTION,_("<%s> Parameters"),_name.c_str()); 36 36 37 std::cout << *param << std::endl;38 #endif37 // std::cout << *param << std::endl; 38 // #endif 39 39 40 40 allocation (); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_genMealy_shift.cpp
r82 r123 18 18 void Shifter::genMealy_shift (void) 19 19 { 20 if (PORT_READ(in_NRESET)) 20 21 for (uint32_t i=0; i<_param->_nb_port; i++) 21 22 { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/src/Sort.cpp
r88 r123 35 35 log_printf(FUNC,Sort,FUNCTION,"Begin"); 36 36 37 #if DEBUG_Sort == true38 log_printf(INFO,Sort,FUNCTION,_("<%s> Parameters"),_name.c_str());37 // #if DEBUG_Sort == true 38 // log_printf(INFO,Sort,FUNCTION,_("<%s> Parameters"),_name.c_str()); 39 39 40 std::cout << *param << std::endl;41 #endif40 // std::cout << *param << std::endl; 41 // #endif 42 42 43 43 log_printf(INFO,Sort,FUNCTION,"Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/src/Sort_genMealy.cpp
r81 r123 21 21 log_printf(FUNC,Sort,FUNCTION,"Begin"); 22 22 23 if (PORT_READ(in_NRESET)) 24 { 23 25 sort_t array [_param->_nb_input]; 24 26 … … 44 46 PORT_WRITE (out_OUTPUT_DATA [i],array[i].data ); 45 47 } 48 } 46 49 47 50 log_printf(FUNC,Sort,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp
r88 r123 32 32 log_printf(FUNC,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Begin"); 33 33 34 #if DEBUG_Victim_Pseudo_LRU == true35 log_printf(INFO,Victim_Pseudo_LRU,FUNCTION,_("<%s> Parameters"),_name.c_str());34 // #if DEBUG_Victim_Pseudo_LRU == true 35 // log_printf(INFO,Victim_Pseudo_LRU,FUNCTION,_("<%s> Parameters"),_name.c_str()); 36 36 37 std::cout << *param << std::endl;38 #endif37 // std::cout << *param << std::endl; 38 // #endif 39 39 40 40 log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_genMealy.cpp
r88 r123 17 17 void Victim_Pseudo_LRU::genMealy (void) 18 18 { 19 if (PORT_READ(in_NRESET)) 19 20 for (uint32_t i=0; i<_param->_nb_access; i++) 20 21 { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_transition.cpp
r81 r123 22 22 { 23 23 Taddress_t address = (_param->_size_table>1)?PORT_READ(in_ACCESS_ADDRESS[i]):0; 24 Tentity_t entity ;24 Tentity_t entity = 0; 25 25 26 26 if (PORT_READ(in_ACCESS_HIT [i])) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h
r118 r123 112 112 PREDICTOR_CUSTOM // Not predefined scheme 113 113 } Tpredictor_t; 114 115 typedef enum 116 { 117 MANAGE_EVENT_WAIT_ALL, 118 MANAGE_EVENT_WAIT_DECODE, 119 MANAGE_EVENT_NO_WAIT 120 } Tmanage_event_t; 114 121 115 122 //--------------------------------------------------[ instruction ]----- -
trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h
r122 r123 10 10 #define MORPHEO_MAJOR_VERSION "0" 11 11 #define MORPHEO_MINOR_VERSION "2" 12 #define MORPHEO_REVISION "12 2"12 #define MORPHEO_REVISION "123" 13 13 #define MORPHEO_CODENAME "Castor" 14 14 15 #define MORPHEO_DATE_DAY "0 3"15 #define MORPHEO_DATE_DAY "08" 16 16 #define MORPHEO_DATE_MONTH "06" 17 17 #define MORPHEO_DATE_YEAR "2009" -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_1.cfg
r118 r123 80 80 <parameter name="nb_inst_branch_decod" value="1" /> 81 81 <parameter name="nb_inst_branch_update" value="1" /> 82 <parameter name="btb_size_queue" value=" 32"/>82 <parameter name="btb_size_queue" value="256"/> 83 83 <parameter name="btb_associativity" value="1" /> 84 84 <parameter name="btb_size_counter" value="2" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_2.cfg
r120 r123 80 80 <parameter name="nb_inst_branch_decod" value="1" /> 81 81 <parameter name="nb_inst_branch_update" value="1" /> 82 <parameter name="btb_size_queue" value=" 32"/>82 <parameter name="btb_size_queue" value="256"/> 83 83 <parameter name="btb_associativity" value="1" /> 84 84 <parameter name="btb_size_counter" value="2" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_3.cfg
r120 r123 80 80 <parameter name="nb_inst_branch_decod" value="1" /> 81 81 <parameter name="nb_inst_branch_update" value="1" /> 82 <parameter name="btb_size_queue" value=" 32"/>82 <parameter name="btb_size_queue" value="256"/> 83 83 <parameter name="btb_associativity" value="1" /> 84 84 <parameter name="btb_size_counter" value="2" /> … … 181 181 182 182 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> 183 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest=" 1" />183 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest="0" /> 184 184 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="1" /> 185 185 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_4.cfg
r120 r123 94 94 <parameter name="nb_inst_branch_decod" value="1" /> 95 95 <parameter name="nb_inst_branch_update" value="1" /> 96 <parameter name="btb_size_queue" value=" 32"/>96 <parameter name="btb_size_queue" value="256"/> 97 97 <parameter name="btb_associativity" value="1" /> 98 98 <parameter name="btb_size_counter" value="2" /> … … 194 194 195 195 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> 196 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest=" 1" />197 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest=" 1" />198 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest=" 1" />199 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest=" 1" />196 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest="0" /> 197 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest="0" /> 198 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="0" /> 199 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest="0" /> 200 200 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 201 201 <link name="link_write_bloc_and_functionnal_unit" src="1.1" dest="1" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_1.cfg
r120 r123 80 80 <parameter name="nb_inst_branch_decod" value="1" /> 81 81 <parameter name="nb_inst_branch_update" value="1" /> 82 <parameter name="btb_size_queue" value=" 32"/>82 <parameter name="btb_size_queue" value="512"/> 83 83 <parameter name="btb_associativity" value="1" /> 84 84 <parameter name="btb_size_counter" value="2" /> … … 171 171 172 172 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> 173 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest=" 1" />174 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest=" 1" />173 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest="0" /> 174 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="0" /> 175 175 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 176 176 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_2.cfg
r120 r123 94 94 <parameter name="nb_inst_branch_decod" value="1" /> 95 95 <parameter name="nb_inst_branch_update" value="1" /> 96 <parameter name="btb_size_queue" value=" 64"/>96 <parameter name="btb_size_queue" value="512"/> 97 97 <parameter name="btb_associativity" value="2" /> 98 98 <parameter name="btb_size_counter" value="2" /> … … 197 197 198 198 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> 199 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest=" 1" />200 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest=" 1" />201 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest=" 1" />202 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest=" 1" />199 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest="0" /> 200 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest="0" /> 201 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="0" /> 202 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest="0" /> 203 203 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 204 204 <link name="link_write_bloc_and_functionnal_unit" src="1.1" dest="1" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_3.cfg
r120 r123 94 94 <parameter name="nb_inst_branch_decod" value="1" /> 95 95 <parameter name="nb_inst_branch_update" value="1" /> 96 <parameter name="btb_size_queue" value=" 64"/>96 <parameter name="btb_size_queue" value="512"/> 97 97 <parameter name="btb_associativity" value="2" /> 98 98 <parameter name="btb_size_counter" value="2" /> 99 99 <parameter name="btb_victim_scheme" value="3" /> 100 100 <parameter name="dir_predictor_scheme" value="2" /> 101 102 <predictor id="0"> 103 <parameter name="dir_have_bht" value="0" /> 104 <parameter name="dir_bht_size_shifter" value="1" /> 105 <parameter name="dir_bht_nb_shifter" value="64" /> 106 <parameter name="dir_have_pht" value="1" /> 107 <parameter name="dir_pht_size_counter" value="2" /> 108 <parameter name="dir_pht_nb_counter" value="16" /> 109 <parameter name="dir_pht_size_address_share" value="0" /> 110 </predictor> 111 <predictor id="1"> 112 <parameter name="dir_have_bht" value="1" /> 113 <parameter name="dir_bht_size_shifter" value="4" /> 114 <parameter name="dir_bht_nb_shifter" value="1" /> 115 <parameter name="dir_have_pht" value="1" /> 116 <parameter name="dir_pht_size_counter" value="2" /> 117 <parameter name="dir_pht_nb_counter" value="64" /> 118 <parameter name="dir_pht_size_address_share" value="0" /> 119 </predictor> 120 <predictor id="2"> 121 <parameter name="dir_have_bht" value="0" /> 122 <parameter name="dir_have_pht" value="1" /> 123 <parameter name="dir_pht_size_counter" value="2" /> 124 <parameter name="dir_pht_nb_counter" value="128" /> 125 <parameter name="dir_pht_size_address_share" value="0" /> 126 </predictor> 127 101 128 </front_end> 102 129 … … 198 225 199 226 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> 200 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest=" 1" />201 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest=" 1" />202 203 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest=" 1" />204 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest=" 1" />227 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest="0" /> 228 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest="0" /> 229 230 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="0" /> 231 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest="0" /> 205 232 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 206 233 <link name="link_write_bloc_and_functionnal_unit" src="1.1" dest="1" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_4.cfg
r120 r123 94 94 <parameter name="nb_inst_branch_decod" value="1" /> 95 95 <parameter name="nb_inst_branch_update" value="1" /> 96 <parameter name="btb_size_queue" value=" 64"/>96 <parameter name="btb_size_queue" value="512"/> 97 97 <parameter name="btb_associativity" value="2" /> 98 98 <parameter name="btb_size_counter" value="2" /> … … 110 110 <parameter name="nb_execute_loop_select" value="1" /> 111 111 <parameter name="size_re_order_buffer" value="64"/> 112 <parameter name="nb_re_order_buffer_bank" value=" 32"/>112 <parameter name="nb_re_order_buffer_bank" value="16"/> 113 113 <parameter name="commit_priority" value="1" /> 114 114 <parameter name="commit_load_balancing" value="1" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_1.cfg
r122 r123 85 85 <parameter name="nb_inst_branch_decod" value="1" /> 86 86 <parameter name="nb_inst_branch_update" value="1" /> 87 <parameter name="btb_size_queue" value=" 256" />87 <parameter name="btb_size_queue" value="1024" /> 88 88 <parameter name="btb_associativity" value="8" /> 89 89 <parameter name="btb_size_counter" value="2" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_2.cfg
r122 r123 85 85 <parameter name="nb_inst_branch_decod" value="1" /> 86 86 <parameter name="nb_inst_branch_update" value="1" /> 87 <parameter name="btb_size_queue" value=" 256" />87 <parameter name="btb_size_queue" value="1024" /> 88 88 <parameter name="btb_associativity" value="8" /> 89 89 <parameter name="btb_size_counter" value="2" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_3.cfg
r120 r123 85 85 <parameter name="nb_inst_branch_decod" value="1" /> 86 86 <parameter name="nb_inst_branch_update" value="1" /> 87 <parameter name="btb_size_queue" value=" 512" />87 <parameter name="btb_size_queue" value="1024" /> 88 88 <parameter name="btb_associativity" value="8" /> 89 89 <parameter name="btb_size_counter" value="2" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w8_1.cfg
r120 r123 91 91 <parameter name="nb_inst_branch_decod" value="1" /> 92 92 <parameter name="nb_inst_branch_update" value="1" /> 93 <parameter name="btb_size_queue" value=" 256" />93 <parameter name="btb_size_queue" value="1024" /> 94 94 <parameter name="btb_associativity" value="8" /> 95 95 <parameter name="btb_size_counter" value="2" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w8_2.cfg
r120 r123 91 91 <parameter name="nb_inst_branch_decod" value="1" /> 92 92 <parameter name="nb_inst_branch_update" value="1" /> 93 <parameter name="btb_size_queue" value=" 256" />93 <parameter name="btb_size_queue" value="1024" /> 94 94 <parameter name="btb_associativity" value="8" /> 95 95 <parameter name="btb_size_counter" value="2" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x2_w1_3.cfg
r118 r123 186 186 187 187 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> 188 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest=" 1" />189 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest=" 1" />188 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest="0" /> 189 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="0" /> 190 190 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 191 191 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x2_w1_4.cfg
r118 r123 200 200 201 201 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> 202 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest=" 1" />203 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest=" 1" />204 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest=" 1" />205 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest=" 1" />202 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest="0" /> 203 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest="0" /> 204 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="0" /> 205 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest="0" /> 206 206 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 207 207 <link name="link_write_bloc_and_functionnal_unit" src="1.1" dest="1" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x2_w1_5.cfg
r120 r123 205 205 206 206 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> 207 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest=" 1" />208 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest=" 1" />209 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest=" 1" />210 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest=" 1" />207 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest="0" /> 208 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest="0" /> 209 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="0" /> 210 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest="0" /> 211 211 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 212 212 <link name="link_write_bloc_and_functionnal_unit" src="1.1" dest="1" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_x2_w1_6.cfg
r120 r123 213 213 214 214 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> 215 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest=" 1" />216 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest=" 1" />215 <link name="link_write_bloc_and_load_store_unit" src="1.0" dest="0" /> 216 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest="0" /> 217 217 218 218 <link name="link_write_bloc_and_load_store_unit" src="0.1" dest="1" /> 219 <link name="link_write_bloc_and_load_store_unit" src="1.1" dest=" 1" />220 <link name="link_write_bloc_and_load_store_unit" src="2.1" dest=" 1" />221 222 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest=" 1" />219 <link name="link_write_bloc_and_load_store_unit" src="1.1" dest="0" /> 220 <link name="link_write_bloc_and_load_store_unit" src="2.1" dest="0" /> 221 222 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="0" /> 223 223 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 224 224 <link name="link_write_bloc_and_functionnal_unit" src="2.0" dest="1" /> 225 225 226 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest=" 1" />226 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest="0" /> 227 227 <link name="link_write_bloc_and_functionnal_unit" src="1.1" dest="1" /> 228 228 <link name="link_write_bloc_and_functionnal_unit" src="2.1" dest="1" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.gen
r120 r123 18 18 <parameter name="nb_inst_fetch" min="1" max="16" step="* 2" default="1" level="..." description="..." /> 19 19 <parameter name="implement_group" default="0" level="..." description="..." /> 20 <parameter name="ras_size_queue" min="2" max=" 16" step="* 2" default="2" level="..." description="..." />20 <parameter name="ras_size_queue" min="2" max="32" step="* 2" default="2" level="..." description="..." /> 21 21 <parameter name="upt_size_queue" min="1" max="32" step="* 2" default="2" level="..." description="..." /> 22 22 <parameter name="ufpt_size_queue" min="1" max="16" step="* 2" default="2" level="..." description="..." /> … … 71 71 <parameter name="nb_inst_branch_decod" min="1" max="16" step="* 2" default="1" level="..." description="..." /> 72 72 <parameter name="nb_inst_branch_update" min="1" max="16" step="* 2" default="1" level="..." description="..." /> 73 <parameter name="btb_size_queue" min="1" max=" 512"step="* 2" default="2" level="..." description="..." />73 <parameter name="btb_size_queue" min="1" max="1024" step="* 2" default="2" level="..." description="..." /> 74 74 <parameter name="btb_associativity" min="1" max="16" step="* 2" default="1" level="..." description="..." /> 75 75 <parameter name="btb_size_counter" min="2" max="16" step="* 2" default="2" level="..." description="..." /> -
trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.sim
r122 r123 10 10 <parameter name="use_statistics" value="1" /> 11 11 <parameter name="use_information" value="0" /> 12 <parameter name="use_header" value=" 1" />12 <parameter name="use_header" value="0" /> 13 13 14 14 <parameter name="directory_statistics" value="." /> … … 20 20 <parameter name="statistics_period" value="0" /> 21 21 22 <parameter name="simulation_nb_cycle" value="1000000 " />22 <parameter name="simulation_nb_cycle" value="10000000" /> 23 23 <parameter name="simulation_nb_instruction" value="0" /> 24 24 25 25 <parameter name="debug_level" value="0" /> 26 <parameter name="debug_cycle_start" value=" 4250"/>27 <parameter name="debug_cycle_stop" value=" 4400"/>26 <parameter name="debug_cycle_start" value="0" /> 27 <parameter name="debug_cycle_stop" value="2000000" /> 28 28 29 29 <parameter name="debug_log_file_generate" value="0" /> 30 30 <parameter name="debug_log_file_with_pid" value="0" /> 31 31 <parameter name="debug_idle_cycle" value="1000" /> 32 <parameter name="debug_idle_time" value=" 10"/>32 <parameter name="debug_idle_time" value="3" /> 33 33 34 34 <component name="Comparator" model="systemc" debug="0" /> -
trunk/IPs/systemC/processor/Morpheo/Files/debug.cfg
r120 r123 1 1 <?xml version="1.0" encoding="ISO-8859-1" ?> 2 2 3 <core name=" debug">3 <core name="Instance_x1_w4_1"> 4 4 5 5 <thread id="0"> … … 7 7 <parameter name="nb_inst_fetch" value="8" /> 8 8 <parameter name="ras_size_queue" value="8" /> 9 <parameter name="upt_size_queue" value=" 32" />9 <parameter name="upt_size_queue" value="16" /> 10 10 <parameter name="ufpt_size_queue" value="4" /> 11 11 … … 36 36 </rename_bloc> 37 37 38 <read_bloc id="0,1,2,3 ,4,5">38 <read_bloc id="0,1,2,3"> 39 39 <parameter name="size_read_queue" value="4" /> 40 40 <parameter name="size_reservation_station" value="4" /> … … 42 42 </read_bloc> 43 43 44 <write_bloc id="0,1,2,3 ,4,5">44 <write_bloc id="0,1,2,3"> 45 45 <parameter name="size_write_queue" value="4" /> 46 46 <parameter name="size_execute_queue" value="4" /> … … 51 51 <load_store_unit id="0"> 52 52 <parameter name="size_store_queue" value="16" /> 53 <parameter name="size_load_queue" value=" 32" />53 <parameter name="size_load_queue" value="16" /> 54 54 <parameter name="size_speculative_access_queue" value="4" /> 55 55 <parameter name="nb_port_check" value="4" /> … … 60 60 </load_store_unit> 61 61 62 <functionnal_unit id="0"> 63 <parameter name="nb_inst_functionnal_unit" value="1" /> 64 65 <timing type="8" latence="1" delay="1" /> 66 <timing type="10" latence="1" delay="1" /> 67 </functionnal_unit> 68 69 <functionnal_unit id="1,2,3,4" > 62 <functionnal_unit id="0,1" > 70 63 <parameter name="nb_inst_functionnal_unit" value="1" /> 71 64 … … 79 72 </functionnal_unit> 80 73 74 <functionnal_unit id="2"> 75 <parameter name="nb_inst_functionnal_unit" value="1" /> 76 77 <timing type="8" latence="1" delay="1" /> 78 <timing type="10" latence="1" delay="1" /> 79 </functionnal_unit> 80 81 81 <front_end id="0"> 82 82 <parameter name="nb_context" value="1" /> … … 85 85 <parameter name="nb_inst_branch_decod" value="1" /> 86 86 <parameter name="nb_inst_branch_update" value="1" /> 87 <parameter name="btb_size_queue" value=" 256" />87 <parameter name="btb_size_queue" value="1024" /> 88 88 <parameter name="btb_associativity" value="8" /> 89 89 <parameter name="btb_size_counter" value="2" /> 90 90 <parameter name="btb_victim_scheme" value="3" /> 91 <parameter name="dir_predictor_scheme" value=" 4" />91 <parameter name="dir_predictor_scheme" value="2" /> 92 92 93 93 <predictor id="0"> 94 <parameter name="dir_have_bht" value=" 1" />95 <parameter name="dir_bht_size_shifter" value=" 4" />94 <parameter name="dir_have_bht" value="0" /> 95 <parameter name="dir_bht_size_shifter" value="1" /> 96 96 <parameter name="dir_bht_nb_shifter" value="64" /> 97 97 <parameter name="dir_have_pht" value="1" /> 98 98 <parameter name="dir_pht_size_counter" value="2" /> 99 <parameter name="dir_pht_nb_counter" value=" 64" />99 <parameter name="dir_pht_nb_counter" value="16" /> 100 100 <parameter name="dir_pht_size_address_share" value="0" /> 101 101 </predictor> … … 106 106 <parameter name="dir_have_pht" value="1" /> 107 107 <parameter name="dir_pht_size_counter" value="2" /> 108 <parameter name="dir_pht_nb_counter" value=" 128" />108 <parameter name="dir_pht_nb_counter" value="64" /> 109 109 <parameter name="dir_pht_size_address_share" value="0" /> 110 110 </predictor> … … 126 126 <parameter name="nb_rename_unit_select" value="1" /> 127 127 <parameter name="nb_execute_loop_select" value="1" /> 128 <parameter name="size_re_order_buffer" value=" 128"/>129 <parameter name="nb_re_order_buffer_bank" value=" 64" />128 <parameter name="size_re_order_buffer" value="64"/> 129 <parameter name="nb_re_order_buffer_bank" value="16" /> 130 130 <parameter name="commit_priority" value="1" /> 131 131 <parameter name="commit_load_balancing" value="1" /> … … 141 141 142 142 <execute_loop id="0"> 143 <parameter name="nb_read_unit" value=" 6" />144 <parameter name="nb_write_unit" value=" 6" />145 <parameter name="nb_execute_unit" value=" 6" />143 <parameter name="nb_read_unit" value="4" /> 144 <parameter name="nb_write_unit" value="4" /> 145 <parameter name="nb_execute_unit" value="4" /> 146 146 <parameter name="nb_gpr_bank" value="1" /> 147 <parameter name="nb_gpr_port_read_by_bank" value=" 12" />148 <parameter name="nb_gpr_port_write_by_bank" value=" 6" />147 <parameter name="nb_gpr_port_read_by_bank" value="8" /> 148 <parameter name="nb_gpr_port_write_by_bank" value="4" /> 149 149 <parameter name="nb_spr_bank" value="1" /> 150 <parameter name="nb_spr_port_read_by_bank" value=" 5" />151 <parameter name="nb_spr_port_write_by_bank" value=" 5" />150 <parameter name="nb_spr_port_read_by_bank" value="4" /> 151 <parameter name="nb_spr_port_write_by_bank" value="4" /> 152 152 <parameter name="execution_unit_to_write_unit_priority" value="1" /> 153 153 <parameter name="read_unit_to_execution_unit_priority" value="1" /> … … 170 170 <link name="link_decod_unit_with_decod_bloc" src="0" dest="0.0" /> 171 171 <link name="link_rename_unit_with_rename_bloc" src="0" dest="0.0" /> 172 173 172 <link name="link_read_unit_with_read_bloc" src="0" dest="0.0" /> 174 173 <link name="link_read_unit_with_read_bloc" src="1" dest="0.1" /> 175 174 <link name="link_read_unit_with_read_bloc" src="2" dest="0.2" /> 176 175 <link name="link_read_unit_with_read_bloc" src="3" dest="0.3" /> 177 <link name="link_read_unit_with_read_bloc" src="4" dest="0.4" />178 <link name="link_read_unit_with_read_bloc" src="5" dest="0.5" />179 180 176 <link name="link_write_unit_with_write_bloc" src="0" dest="0.0" /> 181 177 <link name="link_write_unit_with_write_bloc" src="1" dest="0.1" /> 182 178 <link name="link_write_unit_with_write_bloc" src="2" dest="0.2" /> 183 179 <link name="link_write_unit_with_write_bloc" src="3" dest="0.3" /> 184 <link name="link_write_unit_with_write_bloc" src="4" dest="0.4" />185 <link name="link_write_unit_with_write_bloc" src="5" dest="0.5" />186 187 180 <link name="link_decod_bloc_with_thread" src="0" dest="0" /> 188 181 <link name="link_rename_bloc_with_front_end" src="0" dest="0" /> … … 193 186 <link name="link_execute_unit_with_functionnal_unit" src="1" dest="0.2"/> 194 187 <link name="link_execute_unit_with_functionnal_unit" src="2" dest="0.3"/> 195 <link name="link_execute_unit_with_functionnal_unit" src="3" dest="0.4"/>196 <link name="link_execute_unit_with_functionnal_unit" src="4" dest="0.5"/>197 188 198 189 <link name="link_icache_port_with_thread" src="0" dest="0" /> … … 200 191 201 192 <link name="table_dispatch" src="0.0.0" dest="1" /> 202 <link name="table_dispatch" src="0.1.0" dest=" 1" />203 <link name="table_dispatch" src="0.2.0" dest=" 1" />204 <link name="table_dispatch" src="0.3.0" dest=" 1" />205 206 <link name="table_dispatch" src="0.0.1" dest=" 1" />193 <link name="table_dispatch" src="0.1.0" dest="0" /> 194 <link name="table_dispatch" src="0.2.0" dest="0" /> 195 <link name="table_dispatch" src="0.3.0" dest="0" /> 196 197 <link name="table_dispatch" src="0.0.1" dest="0" /> 207 198 <link name="table_dispatch" src="0.1.1" dest="1" /> 208 <link name="table_dispatch" src="0.2.1" dest=" 1" />209 <link name="table_dispatch" src="0.3.1" dest=" 1" />210 211 <link name="table_dispatch" src="0.0.2" dest=" 1" />212 <link name="table_dispatch" src="0.1.2" dest=" 1" />199 <link name="table_dispatch" src="0.2.1" dest="0" /> 200 <link name="table_dispatch" src="0.3.1" dest="0" /> 201 202 <link name="table_dispatch" src="0.0.2" dest="0" /> 203 <link name="table_dispatch" src="0.1.2" dest="0" /> 213 204 <link name="table_dispatch" src="0.2.2" dest="1" /> 214 <link name="table_dispatch" src="0.3.2" dest=" 1" />215 216 <link name="table_dispatch" src="0.0.3" dest=" 1" />217 <link name="table_dispatch" src="0.1.3" dest=" 1" />218 <link name="table_dispatch" src="0.2.3" dest=" 1" />205 <link name="table_dispatch" src="0.3.2" dest="0" /> 206 207 <link name="table_dispatch" src="0.0.3" dest="0" /> 208 <link name="table_dispatch" src="0.1.3" dest="0" /> 209 <link name="table_dispatch" src="0.2.3" dest="0" /> 219 210 <link name="table_dispatch" src="0.3.3" dest="1" /> 220 221 <link name="table_dispatch" src="0.0.4" dest="1" />222 <link name="table_dispatch" src="0.1.4" dest="1" />223 <link name="table_dispatch" src="0.2.4" dest="1" />224 <link name="table_dispatch" src="0.3.4" dest="1" />225 226 <link name="table_dispatch" src="0.0.5" dest="1" />227 <link name="table_dispatch" src="0.1.5" dest="1" />228 <link name="table_dispatch" src="0.2.5" dest="1" />229 <link name="table_dispatch" src="0.3.5" dest="1" />230 211 231 212 <link name="link_read_bloc_and_load_store_unit" src="0.0" dest="1" /> … … 233 214 <link name="link_read_bloc_and_load_store_unit" src="2.0" dest="0" /> 234 215 <link name="link_read_bloc_and_load_store_unit" src="3.0" dest="0" /> 235 <link name="link_read_bloc_and_load_store_unit" src="4.0" dest="0" />236 <link name="link_read_bloc_and_load_store_unit" src="5.0" dest="0" />237 238 216 <link name="link_read_bloc_and_functionnal_unit" src="0.0" dest="0" /> 239 217 <link name="link_read_bloc_and_functionnal_unit" src="1.0" dest="1" /> 240 <link name="link_read_bloc_and_functionnal_unit" src="2.0" dest=" 0" />218 <link name="link_read_bloc_and_functionnal_unit" src="2.0" dest="1" /> 241 219 <link name="link_read_bloc_and_functionnal_unit" src="3.0" dest="0" /> 242 <link name="link_read_bloc_and_functionnal_unit" src="4.0" dest="0" />243 <link name="link_read_bloc_and_functionnal_unit" src="5.0" dest="0" />244 220 <link name="link_read_bloc_and_functionnal_unit" src="0.1" dest="0" /> 245 <link name="link_read_bloc_and_functionnal_unit" src="1.1" dest=" 0" />221 <link name="link_read_bloc_and_functionnal_unit" src="1.1" dest="1" /> 246 222 <link name="link_read_bloc_and_functionnal_unit" src="2.1" dest="1" /> 247 <link name="link_read_bloc_and_functionnal_unit" src="3.1" dest="1" /> 248 <link name="link_read_bloc_and_functionnal_unit" src="4.1" dest="1" /> 249 <link name="link_read_bloc_and_functionnal_unit" src="5.1" dest="1" /> 223 <link name="link_read_bloc_and_functionnal_unit" src="3.1" dest="0" /> 250 224 <link name="link_read_bloc_and_functionnal_unit" src="0.2" dest="0" /> 251 225 <link name="link_read_bloc_and_functionnal_unit" src="1.2" dest="0" /> 252 <link name="link_read_bloc_and_functionnal_unit" src="2.2" dest=" 1" />226 <link name="link_read_bloc_and_functionnal_unit" src="2.2" dest="0" /> 253 227 <link name="link_read_bloc_and_functionnal_unit" src="3.2" dest="1" /> 254 <link name="link_read_bloc_and_functionnal_unit" src="4.2" dest="1" />255 <link name="link_read_bloc_and_functionnal_unit" src="5.2" dest="1" />256 <link name="link_read_bloc_and_functionnal_unit" src="0.3" dest="0" />257 <link name="link_read_bloc_and_functionnal_unit" src="1.3" dest="0" />258 <link name="link_read_bloc_and_functionnal_unit" src="2.3" dest="1" />259 <link name="link_read_bloc_and_functionnal_unit" src="3.3" dest="1" />260 <link name="link_read_bloc_and_functionnal_unit" src="4.3" dest="1" />261 <link name="link_read_bloc_and_functionnal_unit" src="5.3" dest="1" />262 <link name="link_read_bloc_and_functionnal_unit" src="0.4" dest="0" />263 <link name="link_read_bloc_and_functionnal_unit" src="1.4" dest="0" />264 <link name="link_read_bloc_and_functionnal_unit" src="2.4" dest="1" />265 <link name="link_read_bloc_and_functionnal_unit" src="3.4" dest="1" />266 <link name="link_read_bloc_and_functionnal_unit" src="4.4" dest="1" />267 <link name="link_read_bloc_and_functionnal_unit" src="5.4" dest="1" />268 228 269 229 <link name="link_write_bloc_and_load_store_unit" src="0.0" dest="1" /> … … 271 231 <link name="link_write_bloc_and_load_store_unit" src="2.0" dest="0" /> 272 232 <link name="link_write_bloc_and_load_store_unit" src="3.0" dest="0" /> 273 <link name="link_write_bloc_and_load_store_unit" src="4.0" dest="0" />274 <link name="link_write_bloc_and_load_store_unit" src="5.0" dest="0" />275 233 276 234 <link name="link_write_bloc_and_functionnal_unit" src="0.0" dest="0" /> 277 235 <link name="link_write_bloc_and_functionnal_unit" src="1.0" dest="1" /> 278 <link name="link_write_bloc_and_functionnal_unit" src="2.0" dest=" 0" />236 <link name="link_write_bloc_and_functionnal_unit" src="2.0" dest="1" /> 279 237 <link name="link_write_bloc_and_functionnal_unit" src="3.0" dest="0" /> 280 <link name="link_write_bloc_and_functionnal_unit" src="4.0" dest="0" />281 <link name="link_write_bloc_and_functionnal_unit" src="5.0" dest="0" />282 238 283 239 <link name="link_write_bloc_and_functionnal_unit" src="0.1" dest="0" /> 284 <link name="link_write_bloc_and_functionnal_unit" src="1.1" dest=" 0" />240 <link name="link_write_bloc_and_functionnal_unit" src="1.1" dest="1" /> 285 241 <link name="link_write_bloc_and_functionnal_unit" src="2.1" dest="1" /> 286 <link name="link_write_bloc_and_functionnal_unit" src="3.1" dest="1" /> 287 <link name="link_write_bloc_and_functionnal_unit" src="4.1" dest="1" /> 288 <link name="link_write_bloc_and_functionnal_unit" src="5.1" dest="1" /> 242 <link name="link_write_bloc_and_functionnal_unit" src="3.1" dest="0" /> 289 243 290 244 <link name="link_write_bloc_and_functionnal_unit" src="0.2" dest="0" /> 291 245 <link name="link_write_bloc_and_functionnal_unit" src="1.2" dest="0" /> 292 <link name="link_write_bloc_and_functionnal_unit" src="2.2" dest=" 1" />246 <link name="link_write_bloc_and_functionnal_unit" src="2.2" dest="0" /> 293 247 <link name="link_write_bloc_and_functionnal_unit" src="3.2" dest="1" /> 294 <link name="link_write_bloc_and_functionnal_unit" src="4.2" dest="1" />295 <link name="link_write_bloc_and_functionnal_unit" src="5.2" dest="1" />296 297 <link name="link_write_bloc_and_functionnal_unit" src="0.3" dest="0" />298 <link name="link_write_bloc_and_functionnal_unit" src="1.3" dest="0" />299 <link name="link_write_bloc_and_functionnal_unit" src="2.3" dest="1" />300 <link name="link_write_bloc_and_functionnal_unit" src="3.3" dest="1" />301 <link name="link_write_bloc_and_functionnal_unit" src="4.3" dest="1" />302 <link name="link_write_bloc_and_functionnal_unit" src="5.3" dest="1" />303 304 <link name="link_write_bloc_and_functionnal_unit" src="0.4" dest="0" />305 <link name="link_write_bloc_and_functionnal_unit" src="1.4" dest="0" />306 <link name="link_write_bloc_and_functionnal_unit" src="2.4" dest="1" />307 <link name="link_write_bloc_and_functionnal_unit" src="3.4" dest="1" />308 <link name="link_write_bloc_and_functionnal_unit" src="4.4" dest="1" />309 <link name="link_write_bloc_and_functionnal_unit" src="5.4" dest="1" />310 248 311 249 <link name="link_thread_and_functionnal_unit" src="0.0" dest="1" /> 312 250 <link name="link_thread_and_functionnal_unit" src="0.1" dest="1" /> 313 251 <link name="link_thread_and_functionnal_unit" src="0.2" dest="1" /> 314 <link name="link_thread_and_functionnal_unit" src="0.3" dest="1" />315 <link name="link_thread_and_functionnal_unit" src="0.4" dest="1" />316 252 317 253 </core> -
trunk/IPs/systemC/processor/Morpheo/Files/debug.sim
r122 r123 20 20 <parameter name="statistics_period" value="0" /> 21 21 22 <parameter name="simulation_nb_cycle" value=" 100" />22 <parameter name="simulation_nb_cycle" value="500000" /> 23 23 <parameter name="simulation_nb_instruction" value="0" /> 24 24 25 25 <parameter name="debug_level" value="0" /> 26 <parameter name="debug_cycle_start" value=" 8000"/>27 <parameter name="debug_cycle_stop" value=" 9000"/>26 <parameter name="debug_cycle_start" value="0" /> 27 <parameter name="debug_cycle_stop" value="20000" /> 28 28 29 29 <parameter name="debug_log_file_generate" value="0" /> … … 80 80 <component name="Context_State" model="systemc" debug="1" /> 81 81 <component name="Decod" model="systemc" debug="0" /> 82 <component name="Decod_queue" model="systemc" debug=" 0" />82 <component name="Decod_queue" model="systemc" debug="1" /> 83 83 <component name="Decod_unit" model="systemc" debug="0" /> 84 84 <component name="Front_end_Glue" model="systemc" debug="0" /> 85 <component name="Address_management" model="systemc" debug=" 0" />86 <component name="Ifetch_queue" model="systemc" debug=" 0" />85 <component name="Address_management" model="systemc" debug="1" /> 86 <component name="Ifetch_queue" model="systemc" debug="1" /> 87 87 <component name="Ifetch_unit_Glue" model="systemc" debug="0" /> 88 88 <component name="Ifetch_unit" model="systemc" debug="0" /> … … 90 90 <component name="Branch_Target_Buffer_Register" model="systemc" debug="0" /> 91 91 <component name="Branch_Target_Buffer" model="systemc" debug="0" /> 92 <component name="Direction_Glue" model="systemc" debug=" 0" />92 <component name="Direction_Glue" model="systemc" debug="1" /> 93 93 <component name="Direction" model="systemc" debug="0" /> 94 <component name="Two_Level_Branch_Predictor" model="systemc" debug=" 0" />95 <component name="Meta_Predictor_Glue" model="systemc" debug=" 0" />94 <component name="Two_Level_Branch_Predictor" model="systemc" debug="1" /> 95 <component name="Meta_Predictor_Glue" model="systemc" debug="1" /> 96 96 <component name="Meta_Predictor" model="systemc" debug="0" /> 97 <component name="Prediction_unit_Glue" model="systemc" debug=" 0" />98 <component name="Return_Address_Stack" model="systemc" debug=" 0" />97 <component name="Prediction_unit_Glue" model="systemc" debug="1" /> 98 <component name="Return_Address_Stack" model="systemc" debug="1" /> 99 99 <component name="Update_Prediction_Table" model="systemc" debug="1" /> 100 100 <component name="Prediction_unit" model="systemc" debug="0" /> -
trunk/IPs/systemC/processor/Morpheo/TopLevel/src/Morpheo_deallocation.cpp
r88 r123 57 57 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 58 59 delete _component_core; 59 60 delete _component; 60 delete _component_core;61 61 62 62 log_end(Morpheo,FUNCTION); -
trunk/IPs/systemC/shared/mapping_memory.h
r101 r123 6 6 7 7 # define DATA_CACHED_BASE 0x10000000 8 # define DATA_CACHED_SIZE 0x 100000008 # define DATA_CACHED_SIZE 0x05000000 9 9 10 10 # define DATA_STACK_BASE 0x40000000
Note: See TracChangeset
for help on using the changeset viewer.