Changeset 78 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src
- Timestamp:
- Mar 27, 2008, 11:04:49 AM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp
r77 r78 60 60 _have_port_ooo_engine_id (_size_ooo_engine_id > 0), 61 61 _have_port_packet_id (_size_packet_id > 0), 62 _have_port_load_queue_ptr(_size_load_queue > 1), 62 63 63 64 _nb_thread (get_nb_thread (nb_context, nb_front_end, nb_ooo_engine)) … … 68 69 _table_execute_type = table_execute_type ; 69 70 _table_execute_thread = table_execute_thread; 70 71 _nb_load_store_unit = 0;71 72 _nb_load_store_unit = 0; 72 73 73 74 for (uint32_t i=0; i<nb_execute_unit; i++) 74 if (table_execute_type[i][TYPE_MEMORY] == true) 75 _nb_load_store_unit ++; 76 75 { 76 if (table_execute_type[i][TYPE_MEMORY] == true) 77 _nb_load_store_unit ++; 78 } 77 79 // a execution_unit can't be a load_store unit and a functionnal unit 78 80 _nb_functionnal_unit = nb_execute_unit-_nb_load_store_unit; … … 111 113 _have_port_ooo_engine_id (param._have_port_ooo_engine_id), 112 114 _have_port_packet_id (param._have_port_packet_id ), 115 _have_port_load_queue_ptr(param._have_port_load_queue_ptr), 113 116 114 117 _nb_thread (param._nb_thread ) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp
r77 r78 21 21 #undef FUNCTION 22 22 #define FUNCTION "Read_unit_to_Execution_unit::msg_error" 23 std::stringParameters::msg_error(void)23 Parameters_test Parameters::msg_error(void) 24 24 { 25 25 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin"); 26 26 27 std::string msg = "";27 Parameters_test test ("Read_unit_to_Execution_unit"); 28 28 29 29 // TYPE | multiple? | Optionnal? | Exclusive? | Comment … … 90 90 // Test uniq type 91 91 if (type_present [j][k] and type_uniq[k]) 92 msg += " - The execute_unit '"+toString(i)+"' can execute operation of type '"+toString_type(k)+"' at the thread '"+toString(j)+"'. But an another execute_unit can be execute the same type for the same thread. And the type must be uniq !.\n";92 test.error("The execute_unit '"+toString(i)+"' can execute operation of type '"+toString_type(k)+"' at the thread '"+toString(j)+"'. But an another execute_unit can be execute the same type for the same thread. And the type must be uniq !."); 93 93 94 94 type_present [j][k] = true; … … 99 99 for (uint32_t i=0; i<_nb_thread; i++) 100 100 if (not type_present [i][j]) 101 msg += " - The thread '"+toString(i)+"' can't access at the execute_unit to execute the type's operation '"+toString_type(j)+"' (and this type is not optionnal !).\n";101 test.error("The thread '"+toString(i)+"' can't access at the execute_unit to execute the type's operation '"+toString_type(j)+"' (and this type is not optionnal !)."); 102 102 103 103 // Test all excluve type … … 108 108 if ((j != k) and (_table_execute_type[i][k] == true)) 109 109 { 110 msg += " - The execute_unit ["+toString(i)+"] implement the type '"+toString_type(j)+"', and this type is exclusive with all others type.\n";110 test.error("The execute_unit ["+toString(i)+"] implement the type '"+toString_type(j)+"', and this type is exclusive with all others type."); 111 111 break; 112 112 } … … 120 120 121 121 if (j == _nb_thread) 122 msg += " - The execute_unit ["+toString(i)+"] have none source's thread.\n";122 test.error("The execute_unit ["+toString(i)+"] have none source's thread."); 123 123 } 124 125 return msg;126 124 125 if ( (_priority != PRIORITY_STATIC ) and 126 (_priority != PRIORITY_ROUND_ROBIN)) 127 test.error("Unsupported priority scheme. It must be Static or Round Robin."); 128 127 129 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End"); 130 131 return test; 128 132 }; 129 133 -
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
r77 r78 89 89 << (*(in_READ_UNIT_OUT_OPERATION [i])) 90 90 << (*(in_READ_UNIT_OUT_TYPE [i])) 91 << (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i]))92 << (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i]))93 91 << (*(in_READ_UNIT_OUT_HAS_IMMEDIAT [i])) 94 92 << (*(in_READ_UNIT_OUT_IMMEDIAT [i])) … … 99 97 << (*(in_READ_UNIT_OUT_NUM_REG_RD [i])) 100 98 << (*(in_READ_UNIT_OUT_WRITE_RE [i])) 101 << (*(in_READ_UNIT_OUT_NUM_REG_RE [i])); 102 99 << (*(in_READ_UNIT_OUT_NUM_REG_RE [i])) 100 << (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i])); 101 102 if (_param->_have_port_load_queue_ptr) 103 sensitive << (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i])); 103 104 if (_param->_have_port_context_id) 104 105 sensitive << (*(in_READ_UNIT_OUT_CONTEXT_ID [i])); … … 260 261 } 261 262 263 if (_param->_have_port_load_queue_ptr) 264 { 262 265 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 263 266 … … 274 277 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 275 278 } 276 279 } 280 277 281 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 278 282 … … 364 368 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 365 369 } 366 370 367 371 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 368 372 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_allocation.cpp
r77 r78 59 59 ALLOC1_INTERFACE("read_unit_out", IN, EAST, "Output of read_unit", _param->_nb_read_unit); 60 60 61 ALLOC1_VAL _IN ( in_READ_UNIT_OUT_VAL);62 ALLOC1_ ACK_OUT(out_READ_UNIT_OUT_ACK);61 ALLOC1_VALACK_IN ( in_READ_UNIT_OUT_VAL,VAL); 62 ALLOC1_VALACK_OUT(out_READ_UNIT_OUT_ACK,ACK); 63 63 64 64 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id); … … 68 68 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_OPERATION ,"OPERATION" ,Toperation_t ,_param->_size_operation); 69 69 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_TYPE ,"TYPE" ,Ttype_t ,_param->_size_type); 70 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t , _param->_size_store_queue);71 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t , _param->_size_load_queue);70 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,log2(_param->_size_store_queue)); 71 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,log2(_param->_size_load_queue)); 72 72 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_HAS_IMMEDIAT ,"HAS_IMMEDIAT" ,Tcontrol_t ,1); 73 73 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_IMMEDIAT ,"IMMEDIAT" ,Tgeneral_data_t ,_param->_size_general_data); … … 82 82 // ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 83 83 { 84 ALLOC1_INTERFACE("execute_unit_ out", IN, EAST, "Output of execute_unit", _param->_nb_execute_unit);85 86 ALLOC1_VAL _OUT(out_EXECUTE_UNIT_IN_VAL);87 ALLOC1_ ACK_IN ( in_EXECUTE_UNIT_IN_ACK);84 ALLOC1_INTERFACE("execute_unit_in", OUT, WEST, "Input of execute_unit", _param->_nb_execute_unit); 85 86 ALLOC1_VALACK_OUT(out_EXECUTE_UNIT_IN_VAL,VAL); 87 ALLOC1_VALACK_IN ( in_EXECUTE_UNIT_IN_ACK,ACK); 88 88 89 89 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id); … … 93 93 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_OPERATION ,"OPERATION" ,Toperation_t ,_param->_size_operation); 94 94 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_TYPE ,"TYPE" ,Ttype_t ,_param->_size_type); 95 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_size_store_queue);96 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_size_load_queue);97 95 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,"HAS_IMMEDIAT" ,Tcontrol_t ,1); 96 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RC ,"DATA_RC" ,Tspecial_data_t ,_param->_size_special_data); 97 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_WRITE_RD ,"WRITE_RD" ,Tcontrol_t ,1); 98 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_WRITE_RE ,"WRITE_RE" ,Tcontrol_t ,1); 99 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RE ,"NUM_REG_RE" ,Tspecial_address_t,_param->_size_special_register); 100 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,log2(_param->_size_store_queue)); 101 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,log2(_param->_size_load_queue)); 98 102 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_IMMEDIAT ,"IMMEDIAT" ,Tgeneral_data_t ,_param->_size_general_data); 99 103 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RA ,"DATA_RA" ,Tgeneral_data_t ,_param->_size_general_data); 100 104 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RB ,"DATA_RB" ,Tgeneral_data_t ,_param->_size_general_data); 101 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RC ,"DATA_RC" ,Tspecial_data_t ,_param->_size_special_data);102 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_WRITE_RD ,"WRITE_RD" ,Tcontrol_t ,1);103 105 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RD ,"NUM_REG_RD" ,Tgeneral_address_t,_param->_size_general_register); 104 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_WRITE_RE ,"WRITE_RE" ,Tcontrol_t ,1);105 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RE ,"NUM_REG_RE" ,Tspecial_address_t,_param->_size_special_register);106 106 } 107 107 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_deallocation.cpp
r77 r78 42 42 delete [] in_READ_UNIT_OUT_TYPE ; 43 43 delete [] in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE; 44 if (_param->_have_port_load_queue_ptr) 44 45 delete [] in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ; 45 46 delete [] in_READ_UNIT_OUT_HAS_IMMEDIAT ; … … 66 67 delete [] out_EXECUTE_UNIT_IN_OPERATION ; 67 68 delete [] out_EXECUTE_UNIT_IN_TYPE ; 69 delete [] out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ; 70 delete [] out_EXECUTE_UNIT_IN_DATA_RC ; 71 delete [] out_EXECUTE_UNIT_IN_WRITE_RD ; 72 delete [] out_EXECUTE_UNIT_IN_WRITE_RE ; 73 delete [] out_EXECUTE_UNIT_IN_NUM_REG_RE ; 68 74 delete [] out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE; 75 if (_param->_have_port_load_queue_ptr) 69 76 delete [] out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ; 70 delete [] out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ;71 77 delete [] out_EXECUTE_UNIT_IN_IMMEDIAT ; 72 78 delete [] out_EXECUTE_UNIT_IN_DATA_RA ; 73 79 delete [] out_EXECUTE_UNIT_IN_DATA_RB ; 74 delete [] out_EXECUTE_UNIT_IN_DATA_RC ;75 delete [] out_EXECUTE_UNIT_IN_WRITE_RD ;76 80 delete [] out_EXECUTE_UNIT_IN_NUM_REG_RD ; 77 delete [] out_EXECUTE_UNIT_IN_WRITE_RE ;78 delete [] out_EXECUTE_UNIT_IN_NUM_REG_RE ;79 81 } 80 82 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
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
r77 r78 78 78 PORT_WRITE(out_EXECUTE_UNIT_IN_OPERATION [dest], PORT_READ(in_READ_UNIT_OUT_OPERATION [i])); 79 79 PORT_WRITE(out_EXECUTE_UNIT_IN_TYPE [dest], PORT_READ(in_READ_UNIT_OUT_TYPE [i])); 80 PORT_WRITE(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [dest], PORT_READ(in_READ_UNIT_OUT_HAS_IMMEDIAT [i])); 81 PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RC [dest], PORT_READ(in_READ_UNIT_OUT_DATA_RC [i])); 82 PORT_WRITE(out_EXECUTE_UNIT_IN_WRITE_RD [dest], PORT_READ(in_READ_UNIT_OUT_WRITE_RD [i])); 83 PORT_WRITE(out_EXECUTE_UNIT_IN_WRITE_RE [dest], PORT_READ(in_READ_UNIT_OUT_WRITE_RE [i])); 84 PORT_WRITE(out_EXECUTE_UNIT_IN_NUM_REG_RE [dest], PORT_READ(in_READ_UNIT_OUT_NUM_REG_RE [i])); 80 85 PORT_WRITE(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [dest], PORT_READ(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i])); 86 if (_param->_have_port_load_queue_ptr) 81 87 PORT_WRITE(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [dest], PORT_READ(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i])); 82 PORT_WRITE(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [dest], PORT_READ(in_READ_UNIT_OUT_HAS_IMMEDIAT [i]));83 88 PORT_WRITE(out_EXECUTE_UNIT_IN_IMMEDIAT [dest], PORT_READ(in_READ_UNIT_OUT_IMMEDIAT [i])); 84 89 PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RA [dest], PORT_READ(in_READ_UNIT_OUT_DATA_RA [i])); 85 90 PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RB [dest], PORT_READ(in_READ_UNIT_OUT_DATA_RB [i])); 86 PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RC [dest], PORT_READ(in_READ_UNIT_OUT_DATA_RC [i]));87 PORT_WRITE(out_EXECUTE_UNIT_IN_WRITE_RD [dest], PORT_READ(in_READ_UNIT_OUT_WRITE_RD [i]));88 91 PORT_WRITE(out_EXECUTE_UNIT_IN_NUM_REG_RD [dest], PORT_READ(in_READ_UNIT_OUT_NUM_REG_RD [i])); 89 PORT_WRITE(out_EXECUTE_UNIT_IN_WRITE_RE [dest], PORT_READ(in_READ_UNIT_OUT_WRITE_RE [i]));90 PORT_WRITE(out_EXECUTE_UNIT_IN_NUM_REG_RE [dest], PORT_READ(in_READ_UNIT_OUT_NUM_REG_RE [i]));91 92 } 92 93 }
Note: See TracChangeset
for help on using the changeset viewer.