Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop
- Timestamp:
- Mar 18, 2009, 11:36:26 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop
- Files:
-
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/src/Execute_loop_Glue_allocation.cpp
r88 r112 58 58 // -----[ Interface "gpr_write_write_unit" ]-------------------------- 59 59 { 60 ALLOC1_INTERFACE ("gpr_write_write_unit", IN, EAST, _("General register write (from write_unit)"), _param->_nb_gpr_write);60 ALLOC1_INTERFACE_BEGIN("gpr_write_write_unit", IN, EAST, _("General register write (from write_unit)"), _param->_nb_gpr_write); 61 61 62 62 ALLOC1_VALACK_IN ( in_GPR_WRITE_WRITE_UNIT_VAL ,VAL); … … 65 65 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_WRITE_UNIT_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 66 66 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_WRITE_UNIT_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 67 68 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 67 69 } 68 70 69 71 // -----[ Interface "gpr_write_register_file" ]----------------------- 70 72 { 71 ALLOC1_INTERFACE ("gpr_write_register_file",OUT,SOUTH, _("General register write (to register file)"), _param->_nb_gpr_write);73 ALLOC1_INTERFACE_BEGIN("gpr_write_register_file",OUT,SOUTH, _("General register write (to register file)"), _param->_nb_gpr_write); 72 74 73 75 ALLOC1_VALACK_OUT(out_GPR_WRITE_REGISTER_FILE_VAL ,VAL); … … 76 78 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_REGISTER_FILE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 77 79 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_REGISTER_FILE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 80 81 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 78 82 } 79 83 80 84 // -----[ Interface "gpr_write_read_unit" ]--------------------------- 81 85 { 82 ALLOC1_INTERFACE ("gpr_write_read_unit",OUT,SOUTH, _("General register write (to read unit)"), _param->_nb_gpr_write);86 ALLOC1_INTERFACE_BEGIN("gpr_write_read_unit",OUT,SOUTH, _("General register write (to read unit)"), _param->_nb_gpr_write); 83 87 84 88 ALLOC1_VALACK_OUT(out_GPR_WRITE_READ_UNIT_VAL ,VAL); … … 86 90 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_READ_UNIT_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 87 91 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_READ_UNIT_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 92 93 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 88 94 } 89 95 90 96 // -----[ Interface "spr_write_write_unit" ]-------------------------- 91 97 { 92 ALLOC1_INTERFACE ("spr_write_write_unit", IN, EAST, _("Special register write (from write_unit)"), _param->_nb_spr_write);98 ALLOC1_INTERFACE_BEGIN("spr_write_write_unit", IN, EAST, _("Special register write (from write_unit)"), _param->_nb_spr_write); 93 99 94 100 ALLOC1_VALACK_IN ( in_SPR_WRITE_WRITE_UNIT_VAL ,VAL); … … 97 103 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_WRITE_UNIT_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 98 104 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_WRITE_UNIT_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 105 106 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 99 107 } 100 108 101 109 // -----[ Interface "spr_write_register_file" ]----------------------- 102 110 { 103 ALLOC1_INTERFACE ("spr_write_register_file",OUT,SOUTH, _("Special register write (to register file)"), _param->_nb_spr_write);111 ALLOC1_INTERFACE_BEGIN("spr_write_register_file",OUT,SOUTH, _("Special register write (to register file)"), _param->_nb_spr_write); 104 112 105 113 ALLOC1_VALACK_OUT(out_SPR_WRITE_REGISTER_FILE_VAL ,VAL); … … 108 116 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_REGISTER_FILE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 109 117 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_REGISTER_FILE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 118 119 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 110 120 } 111 121 112 122 // -----[ Interface "spr_write_read_unit" ]--------------------------- 113 123 { 114 ALLOC1_INTERFACE ("spr_write_read_unit",OUT,SOUTH, _("Special register write (to read unit)"), _param->_nb_spr_write);124 ALLOC1_INTERFACE_BEGIN("spr_write_read_unit",OUT,SOUTH, _("Special register write (to read unit)"), _param->_nb_spr_write); 115 125 116 126 ALLOC1_VALACK_OUT(out_SPR_WRITE_READ_UNIT_VAL ,VAL); … … 118 128 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_READ_UNIT_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 119 129 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_READ_UNIT_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 130 131 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 120 132 } 121 133 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp
r101 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 50 51 // ~~~~~[ Interface : "execute_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 52 52 { 53 Interface_fifo * interface = _interfaces->set_interface("execute_in" 54 #ifdef POSITION 55 ,IN 56 ,WEST, 57 "Input of Functionnal Unit" 58 #endif 59 ); 60 61 in_EXECUTE_IN_VAL = interface->set_signal_valack_in (VAL); 62 out_EXECUTE_IN_ACK = interface->set_signal_valack_out (ACK); 63 if (_param->_have_port_context_id) 64 in_EXECUTE_IN_CONTEXT_ID = interface->set_signal_in <Tcontext_t > ("context_id" , _param->_size_context_id ); 65 if (_param->_have_port_front_end_id) 66 in_EXECUTE_IN_FRONT_END_ID = interface->set_signal_in <Tcontext_t > ("front_end_id" , _param->_size_front_end_id ); 67 if (_param->_have_port_ooo_engine_id) 68 in_EXECUTE_IN_OOO_ENGINE_ID = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 69 if (_param->_have_port_rob_ptr) 70 in_EXECUTE_IN_PACKET_ID = interface->set_signal_in <Tpacket_t > ("packet_id" , _param->_size_rob_ptr ); 71 in_EXECUTE_IN_OPERATION = interface->set_signal_in <Toperation_t > ("operation" , _param->_size_operation ); 72 in_EXECUTE_IN_TYPE = interface->set_signal_in <Ttype_t > ("type" , _param->_size_type ); 73 in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write",_param->_size_store_queue_ptr); 74 if (_param->_have_port_load_queue_ptr) 75 in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr); 76 in_EXECUTE_IN_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat" , 1); 77 in_EXECUTE_IN_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" , _param->_size_general_data); 78 in_EXECUTE_IN_DATA_RA = interface->set_signal_in <Tgeneral_data_t > ("data_ra" , _param->_size_general_data); 79 in_EXECUTE_IN_DATA_RB = interface->set_signal_in <Tgeneral_data_t > ("data_rb" , _param->_size_general_data); 80 in_EXECUTE_IN_DATA_RC = interface->set_signal_in <Tspecial_data_t > ("data_rc" , _param->_size_special_data); 81 in_EXECUTE_IN_WRITE_RD = interface->set_signal_in <Tcontrol_t > ("write_rd" , 1); 82 in_EXECUTE_IN_NUM_REG_RD = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd" , _param->_size_general_register); 83 in_EXECUTE_IN_WRITE_RE = interface->set_signal_in <Tcontrol_t > ("write_re" , 1); 84 in_EXECUTE_IN_NUM_REG_RE = interface->set_signal_in <Tspecial_address_t> ("num_reg_re" , _param->_size_special_register); 53 { 54 ALLOC0_INTERFACE_BEGIN("execute_in",IN,WEST,"Input of Functionnal Unit"); 55 56 ALLOC0_VALACK_IN ( in_EXECUTE_IN_VAL ,VAL); 57 ALLOC0_VALACK_OUT(out_EXECUTE_IN_ACK ,ACK); 58 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t , _param->_size_context_id ); 59 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t , _param->_size_front_end_id ); 60 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t , _param->_size_ooo_engine_id); 61 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_PACKET_ID ,"packet_id" ,Tpacket_t , _param->_size_rob_ptr ); 62 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_OPERATION ,"operation" ,Toperation_t , _param->_size_operation ); 63 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_TYPE ,"type" ,Ttype_t , _param->_size_type ); 64 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 65 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 66 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t , 1); 67 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t , _param->_size_general_data); 68 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_DATA_RA ,"data_ra" ,Tgeneral_data_t , _param->_size_general_data); 69 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_DATA_RB ,"data_rb" ,Tgeneral_data_t , _param->_size_general_data); 70 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_DATA_RC ,"data_rc" ,Tspecial_data_t , _param->_size_special_data); 71 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_WRITE_RD ,"write_rd" ,Tcontrol_t , 1); 72 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t, _param->_size_general_register); 73 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_WRITE_RE ,"write_re" ,Tcontrol_t , 1); 74 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t, _param->_size_special_register); 75 76 ALLOC0_INTERFACE_END(); 85 77 } 86 78 // ~~~~~[ Interface : "execute_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87 79 { 88 Interface_fifo * interface = _interfaces->set_interface("execute_out" 89 #ifdef POSITION 90 ,IN 91 ,EAST, 92 "Output of Functionnal Unit" 93 #endif 94 ); 95 96 out_EXECUTE_OUT_VAL = interface->set_signal_valack_out (VAL); 97 in_EXECUTE_OUT_ACK = interface->set_signal_valack_in (ACK); 98 if (_param->_have_port_context_id) 99 out_EXECUTE_OUT_CONTEXT_ID = interface->set_signal_out<Tcontext_t > ("context_id" ,_param->_size_context_id ); 100 if (_param->_have_port_front_end_id) 101 out_EXECUTE_OUT_FRONT_END_ID = interface->set_signal_out<Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 102 if (_param->_have_port_ooo_engine_id) 103 out_EXECUTE_OUT_OOO_ENGINE_ID = interface->set_signal_out<Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 104 if (_param->_have_port_rob_ptr) 105 out_EXECUTE_OUT_PACKET_ID = interface->set_signal_out<Tpacket_t > ("packet_id" ,_param->_size_rob_ptr ); 106 //out_EXECUTE_OUT_OPERATION = interface->set_signal_out<Toperation_t > ("operation" ,_param->_size_operation ); 107 //out_EXECUTE_OUT_TYPE = interface->set_signal_out<Ttype_t > ("type" ,_param->_size_type ); 108 out_EXECUTE_OUT_WRITE_RD = interface->set_signal_out<Tcontrol_t > ("write_rd" ,1); 109 out_EXECUTE_OUT_NUM_REG_RD = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register); 110 out_EXECUTE_OUT_DATA_RD = interface->set_signal_out<Tgeneral_data_t > ("data_rd" ,_param->_size_general_data); 111 out_EXECUTE_OUT_WRITE_RE = interface->set_signal_out<Tcontrol_t > ("write_re" ,1); 112 out_EXECUTE_OUT_NUM_REG_RE = interface->set_signal_out<Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register); 113 out_EXECUTE_OUT_DATA_RE = interface->set_signal_out<Tspecial_data_t > ("data_re" ,_param->_size_special_data); 114 out_EXECUTE_OUT_EXCEPTION = interface->set_signal_out<Texception_t > ("exception" ,_param->_size_exception); 115 out_EXECUTE_OUT_NO_SEQUENCE = interface->set_signal_out<Tcontrol_t > ("no_sequence" ,1); 116 out_EXECUTE_OUT_ADDRESS = interface->set_signal_out<Taddress_t > ("address" ,_param->_size_instruction_address); 80 ALLOC0_INTERFACE_BEGIN("execute_out",IN,EAST,"Output of Functionnal Unit"); 81 82 ALLOC0_VALACK_OUT(out_EXECUTE_OUT_VAL ,VAL); 83 ALLOC0_VALACK_IN ( in_EXECUTE_OUT_ACK ,ACK); 84 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 85 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 86 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 87 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 88 //ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 89 //ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 90 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 91 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 92 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_DATA_RD ,"data_rd" ,Tgeneral_data_t ,_param->_size_general_data); 93 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 94 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 95 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_DATA_RE ,"data_re" ,Tspecial_data_t ,_param->_size_special_data); 96 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception); 97 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1); 98 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 99 100 ALLOC0_INTERFACE_END(); 117 101 } 118 102 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp
r97 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 delete in_EXECUTE_IN_VAL ; 32 delete out_EXECUTE_IN_ACK ; 33 if (_param->_have_port_context_id) 34 delete in_EXECUTE_IN_CONTEXT_ID ; 35 if (_param->_have_port_front_end_id) 36 delete in_EXECUTE_IN_FRONT_END_ID ; 37 if (_param->_have_port_ooo_engine_id) 38 delete in_EXECUTE_IN_OOO_ENGINE_ID ; 39 if (_param->_have_port_rob_ptr) 40 delete in_EXECUTE_IN_PACKET_ID ; 41 delete in_EXECUTE_IN_OPERATION ; 42 delete in_EXECUTE_IN_TYPE ; 43 delete in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE; 44 if (_param->_have_port_load_queue_ptr) 45 delete in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE ; 46 delete in_EXECUTE_IN_HAS_IMMEDIAT ; 47 delete in_EXECUTE_IN_IMMEDIAT ; 48 delete in_EXECUTE_IN_DATA_RA ; 49 delete in_EXECUTE_IN_DATA_RB ; 50 delete in_EXECUTE_IN_DATA_RC ; 51 delete in_EXECUTE_IN_WRITE_RD ; 52 delete in_EXECUTE_IN_NUM_REG_RD ; 53 delete in_EXECUTE_IN_WRITE_RE ; 54 delete in_EXECUTE_IN_NUM_REG_RE ; 32 DELETE0_SIGNAL( in_EXECUTE_IN_VAL ,1); 33 DELETE0_SIGNAL(out_EXECUTE_IN_ACK ,1); 34 DELETE0_SIGNAL( in_EXECUTE_IN_CONTEXT_ID , _param->_size_context_id ); 35 DELETE0_SIGNAL( in_EXECUTE_IN_FRONT_END_ID , _param->_size_front_end_id ); 36 DELETE0_SIGNAL( in_EXECUTE_IN_OOO_ENGINE_ID , _param->_size_ooo_engine_id); 37 DELETE0_SIGNAL( in_EXECUTE_IN_PACKET_ID , _param->_size_rob_ptr ); 38 DELETE0_SIGNAL( in_EXECUTE_IN_OPERATION , _param->_size_operation ); 39 DELETE0_SIGNAL( in_EXECUTE_IN_TYPE , _param->_size_type ); 40 DELETE0_SIGNAL( in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE ,_param->_size_store_queue_ptr); 41 DELETE0_SIGNAL( in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr); 42 DELETE0_SIGNAL( in_EXECUTE_IN_HAS_IMMEDIAT , 1); 43 DELETE0_SIGNAL( in_EXECUTE_IN_IMMEDIAT , _param->_size_general_data); 44 DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RA , _param->_size_general_data); 45 DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RB , _param->_size_general_data); 46 DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RC , _param->_size_special_data); 47 DELETE0_SIGNAL( in_EXECUTE_IN_WRITE_RD , 1); 48 DELETE0_SIGNAL( in_EXECUTE_IN_NUM_REG_RD , _param->_size_general_register); 49 DELETE0_SIGNAL( in_EXECUTE_IN_WRITE_RE , 1); 50 DELETE0_SIGNAL( in_EXECUTE_IN_NUM_REG_RE , _param->_size_special_register); 55 51 56 delete out_EXECUTE_OUT_VAL ; 57 delete in_EXECUTE_OUT_ACK ; 58 if (_param->_have_port_context_id) 59 delete out_EXECUTE_OUT_CONTEXT_ID ; 60 if (_param->_have_port_front_end_id) 61 delete out_EXECUTE_OUT_FRONT_END_ID ; 62 if (_param->_have_port_ooo_engine_id) 63 delete out_EXECUTE_OUT_OOO_ENGINE_ID ; 64 if (_param->_have_port_rob_ptr) 65 delete out_EXECUTE_OUT_PACKET_ID ; 66 // delete out_EXECUTE_OUT_OPERATION ; 67 // delete out_EXECUTE_OUT_TYPE ; 68 delete out_EXECUTE_OUT_WRITE_RD ; 69 delete out_EXECUTE_OUT_NUM_REG_RD ; 70 delete out_EXECUTE_OUT_DATA_RD ; 71 delete out_EXECUTE_OUT_WRITE_RE ; 72 delete out_EXECUTE_OUT_NUM_REG_RE ; 73 delete out_EXECUTE_OUT_DATA_RE ; 74 delete out_EXECUTE_OUT_EXCEPTION ; 75 delete out_EXECUTE_OUT_NO_SEQUENCE ; 76 delete out_EXECUTE_OUT_ADDRESS ; 52 DELETE0_SIGNAL(out_EXECUTE_OUT_VAL ,1); 53 DELETE0_SIGNAL( in_EXECUTE_OUT_ACK ,1); 54 DELETE0_SIGNAL(out_EXECUTE_OUT_CONTEXT_ID ,_param->_size_context_id ); 55 DELETE0_SIGNAL(out_EXECUTE_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 56 DELETE0_SIGNAL(out_EXECUTE_OUT_OOO_ENGINE_ID ,_param->_size_ooo_engine_id); 57 DELETE0_SIGNAL(out_EXECUTE_OUT_PACKET_ID ,_param->_size_rob_ptr ); 58 //DELETE0_SIGNAL(out_EXECUTE_OUT_OPERATION ,_param->_size_operation ); 59 //DELETE0_SIGNAL(out_EXECUTE_OUT_TYPE ,_param->_size_type ); 60 DELETE0_SIGNAL(out_EXECUTE_OUT_WRITE_RD ,1); 61 DELETE0_SIGNAL(out_EXECUTE_OUT_NUM_REG_RD ,_param->_size_general_register); 62 DELETE0_SIGNAL(out_EXECUTE_OUT_DATA_RD ,_param->_size_general_data); 63 DELETE0_SIGNAL(out_EXECUTE_OUT_WRITE_RE ,1); 64 DELETE0_SIGNAL(out_EXECUTE_OUT_NUM_REG_RE ,_param->_size_special_register); 65 DELETE0_SIGNAL(out_EXECUTE_OUT_DATA_RE ,_param->_size_special_data); 66 DELETE0_SIGNAL(out_EXECUTE_OUT_EXCEPTION ,_param->_size_exception); 67 DELETE0_SIGNAL(out_EXECUTE_OUT_NO_SEQUENCE ,1); 68 DELETE0_SIGNAL(out_EXECUTE_OUT_ADDRESS ,_param->_size_instruction_address); 77 69 78 70 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp
r97 r112 54 54 // ~~~~~[ Interface "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 55 55 { 56 ALLOC1_INTERFACE ("memory_in",IN,WEST,_("Instruction from Reservations station"),_param->_nb_inst_memory);56 ALLOC1_INTERFACE_BEGIN("memory_in",IN,WEST,_("Instruction from Reservations station"),_param->_nb_inst_memory); 57 57 58 58 ALLOC1_VALACK_IN ( in_MEMORY_IN_VAL ,VAL); … … 75 75 ALLOC1_SIGNAL_IN ( in_MEMORY_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 76 76 ALLOC1_SIGNAL_IN ( in_MEMORY_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 77 78 ALLOC1_INTERFACE_END(_param->_nb_inst_memory); 77 79 } 78 80 79 81 // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 80 82 { 81 ALLOC1_INTERFACE ("memory_out",OUT,EAST,_("Instruction to write queue"),_param->_nb_inst_memory);83 ALLOC1_INTERFACE_BEGIN("memory_out",OUT,EAST,_("Instruction to write queue"),_param->_nb_inst_memory); 82 84 83 85 ALLOC1_VALACK_OUT(out_MEMORY_OUT_VAL ,VAL); … … 98 100 ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 99 101 ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 102 103 ALLOC1_INTERFACE_END(_param->_nb_inst_memory); 100 104 } 101 105 102 106 // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 103 107 { 104 ALLOC1_INTERFACE ("dcache_req",OUT,NORTH,_("Request port to dcache"),_param->_nb_cache_port);108 ALLOC1_INTERFACE_BEGIN("dcache_req",OUT,NORTH,_("Request port to dcache"),_param->_nb_cache_port); 105 109 106 110 ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL ,VAL); … … 111 115 ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE ,"type" ,Tdcache_type_t ,_param->_size_dcache_type ); 112 116 ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA ,"wdata" ,Tdcache_data_t ,_param->_size_general_data); 117 118 ALLOC1_INTERFACE_END(_param->_nb_cache_port); 113 119 } 114 120 115 121 // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 116 122 { 117 ALLOC1_INTERFACE ("dcache_rsp",IN,NORTH,_("Respons port from dcache"),_param->_nb_cache_port);123 ALLOC1_INTERFACE_BEGIN("dcache_rsp",IN,NORTH,_("Respons port from dcache"),_param->_nb_cache_port); 118 124 119 125 ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL ,VAL); … … 123 129 ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA ,"rdata" ,Tdcache_data_t ,_param->_size_general_data); 124 130 ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR ,"error" ,Tdcache_error_t,_param->_size_dcache_error); 131 132 ALLOC1_INTERFACE_END(_param->_nb_cache_port); 125 133 } 126 134 // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 127 135 128 136 { 129 ALLOC1_INTERFACE ("bypass_memory",OUT,NORTH,_("Bypass between the load queue and the reservation station"),_param->_nb_bypass_memory);137 ALLOC1_INTERFACE_BEGIN("bypass_memory",OUT,NORTH,_("Bypass between the load queue and the reservation station"),_param->_nb_bypass_memory); 130 138 131 139 ALLOC1_VALACK_OUT(out_BYPASS_MEMORY_VAL ,VAL); … … 133 141 ALLOC1_SIGNAL_OUT(out_BYPASS_MEMORY_NUM_REG ,"num_reg" ,Tgeneral_address_t, _param->_size_general_register); 134 142 ALLOC1_SIGNAL_OUT(out_BYPASS_MEMORY_DATA ,"data" ,Tgeneral_data_t , _param->_size_general_data ); 143 144 ALLOC1_INTERFACE_END(_param->_nb_bypass_memory); 135 145 } 136 146 -
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_transition.cpp
r110 r112 596 596 597 597 // check find a bypass. A speculative load have been committed : report a speculation miss. 598 if ((_load_queue[index_load]._check_hit != 0) //and599 // (_load_queue[index_load]._write_rd == 0) 598 if ((_load_queue[index_load]._check_hit != 0) and 599 (_load_queue[index_load]._write_rd == 0) // is commit 600 600 ) 601 601 { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp
r88 r112 8 8 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h" 10 #include "Behavioural/include/Allocation.h" 10 11 11 12 namespace morpheo { … … 50 51 // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 52 { 52 Interface_fifo * interface = _interfaces->set_interface("read_queue_in" 53 #ifdef POSITION 54 ,IN 55 ,EAST 56 ,"Input of read_queue" 57 #endif 58 ); 53 ALLOC0_INTERFACE_BEGIN("read_queue_in",IN,EAST,"Input of read_queue"); 59 54 60 in_READ_QUEUE_IN_VAL = interface->set_signal_valack_in ("val" , VAL); 61 out_READ_QUEUE_IN_ACK = interface->set_signal_valack_out ("ack" , ACK); 62 if(_param->_have_port_context_id ) 63 in_READ_QUEUE_IN_CONTEXT_ID = interface->set_signal_in <Tcontext_t > ("context_id" ,_param->_size_context_id ); 64 if(_param->_have_port_front_end_id) 65 in_READ_QUEUE_IN_FRONT_END_ID = interface->set_signal_in <Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 66 if(_param->_have_port_ooo_engine_id) 67 in_READ_QUEUE_IN_OOO_ENGINE_ID = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id ); 68 if(_param->_have_port_rob_ptr ) 69 in_READ_QUEUE_IN_ROB_ID = interface->set_signal_in <Tpacket_t > ("rob_id" ,_param->_size_rob_ptr ); 70 in_READ_QUEUE_IN_OPERATION = interface->set_signal_in <Toperation_t > ("operation" ,_param->_size_operation ); 71 in_READ_QUEUE_IN_TYPE = interface->set_signal_in <Ttype_t > ("type" ,_param->_size_type ); 72 in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr); 73 if (_param->_have_port_load_queue_ptr) 74 in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr); 75 in_READ_QUEUE_IN_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat",1 ); 76 in_READ_QUEUE_IN_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 77 in_READ_QUEUE_IN_READ_RA = interface->set_signal_in <Tcontrol_t > ("read_ra" ,1 ); 78 in_READ_QUEUE_IN_NUM_REG_RA = interface->set_signal_in <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 79 in_READ_QUEUE_IN_READ_RB = interface->set_signal_in <Tcontrol_t > ("read_rb" ,1 ); 80 in_READ_QUEUE_IN_NUM_REG_RB = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 81 in_READ_QUEUE_IN_READ_RC = interface->set_signal_in <Tcontrol_t > ("read_rc" ,1 ); 82 in_READ_QUEUE_IN_NUM_REG_RC = interface->set_signal_in <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 83 in_READ_QUEUE_IN_WRITE_RD = interface->set_signal_in <Tcontrol_t > ("write_rd" ,1 ); 84 in_READ_QUEUE_IN_NUM_REG_RD = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 85 in_READ_QUEUE_IN_WRITE_RE = interface->set_signal_in <Tcontrol_t > ("write_re" ,1 ); 86 in_READ_QUEUE_IN_NUM_REG_RE = interface->set_signal_in <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 87 } 55 ALLOC0_VALACK_IN ( in_READ_QUEUE_IN_VAL ,VAL); 56 ALLOC0_VALACK_OUT(out_READ_QUEUE_IN_ACK ,ACK); 57 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 58 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 59 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id ); 60 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr ); 61 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 62 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 63 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 64 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 65 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 66 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 67 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 68 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 69 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 70 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 71 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 72 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 73 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 74 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 76 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 77 78 ALLOC0_INTERFACE_END(); 79 } 88 80 89 81 // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 82 { 91 Interface_fifo * interface = _interfaces->set_interface("read_queue_out" 92 #ifdef POSITION 93 ,OUT 94 ,EAST 95 ,"Input of read_queue" 96 #endif 97 ); 83 ALLOC0_INTERFACE_BEGIN("read_queue_out",OUT,EAST,"Input of read_queue"); 98 84 99 out_READ_QUEUE_OUT_VAL = interface->set_signal_valack_out ("val" , VAL); 100 in_READ_QUEUE_OUT_ACK = interface->set_signal_valack_in ("ack" , ACK); 101 102 if(_param->_have_port_context_id ) 103 out_READ_QUEUE_OUT_CONTEXT_ID = interface->set_signal_out <Tcontext_t > ("context_id" ,_param->_size_context_id ); 104 if(_param->_have_port_front_end_id) 105 out_READ_QUEUE_OUT_FRONT_END_ID = interface->set_signal_out <Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 106 if(_param->_have_port_ooo_engine_id) 107 out_READ_QUEUE_OUT_OOO_ENGINE_ID = interface->set_signal_out <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id ); 108 if(_param->_have_port_rob_ptr ) 109 out_READ_QUEUE_OUT_ROB_ID = interface->set_signal_out <Tpacket_t > ("rob_id" ,_param->_size_rob_ptr ); 110 out_READ_QUEUE_OUT_OPERATION = interface->set_signal_out <Toperation_t > ("operation" ,_param->_size_operation ); 111 out_READ_QUEUE_OUT_TYPE = interface->set_signal_out <Ttype_t > ("type" ,_param->_size_type ); 112 out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr); 113 if (_param->_have_port_load_queue_ptr) 114 out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr); 115 out_READ_QUEUE_OUT_HAS_IMMEDIAT = interface->set_signal_out <Tcontrol_t > ("has_immediat",1 ); 116 out_READ_QUEUE_OUT_IMMEDIAT = interface->set_signal_out <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 117 // out_READ_QUEUE_OUT_READ_RA = interface->set_signal_out <Tcontrol_t > ("read_ra" ,1 ); 118 out_READ_QUEUE_OUT_NUM_REG_RA = interface->set_signal_out <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 119 out_READ_QUEUE_OUT_DATA_RA_VAL = interface->set_signal_out <Tcontrol_t > ("data_ra_val" ,1 ); 120 out_READ_QUEUE_OUT_DATA_RA = interface->set_signal_out <Tgeneral_data_t > ("data_ra" ,_param->_size_general_data ); 121 // out_READ_QUEUE_OUT_READ_RB = interface->set_signal_out <Tcontrol_t > ("read_rb" ,1 ); 122 out_READ_QUEUE_OUT_NUM_REG_RB = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 123 out_READ_QUEUE_OUT_DATA_RB_VAL = interface->set_signal_out <Tcontrol_t > ("data_rb_val" ,1 ); 124 out_READ_QUEUE_OUT_DATA_RB = interface->set_signal_out <Tgeneral_data_t > ("data_rb" ,_param->_size_general_data ); 125 // out_READ_QUEUE_OUT_READ_RC = interface->set_signal_out <Tcontrol_t > ("read_rc" ,1 ); 126 out_READ_QUEUE_OUT_NUM_REG_RC = interface->set_signal_out <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 127 out_READ_QUEUE_OUT_DATA_RC_VAL = interface->set_signal_out <Tcontrol_t > ("data_rc_val" ,1 ); 128 out_READ_QUEUE_OUT_DATA_RC = interface->set_signal_out <Tspecial_data_t > ("data_rc" ,_param->_size_special_data ); 129 out_READ_QUEUE_OUT_WRITE_RD = interface->set_signal_out <Tcontrol_t > ("write_rd" ,1 ); 130 out_READ_QUEUE_OUT_NUM_REG_RD = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 131 out_READ_QUEUE_OUT_WRITE_RE = interface->set_signal_out <Tcontrol_t > ("write_re" ,1 ); 132 out_READ_QUEUE_OUT_NUM_REG_RE = interface->set_signal_out <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 133 } 85 ALLOC0_VALACK_OUT(out_READ_QUEUE_OUT_VAL ,VAL); 86 ALLOC0_VALACK_IN ( in_READ_QUEUE_OUT_ACK ,ACK); 87 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 88 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 89 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id ); 90 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr ); 91 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 92 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 93 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t , _param->_size_store_queue_ptr ); 94 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t , _param->_size_load_queue_ptr ); 95 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 96 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 97 // ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 98 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register ); 99 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RA_VAL ,"data_ra_val" ,Tcontrol_t ,1 ); 100 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RA ,"data_ra" ,Tgeneral_data_t ,_param->_size_general_data ); 101 // ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 102 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register ); 103 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RB_VAL ,"data_rb_val" ,Tcontrol_t ,1 ); 104 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RB ,"data_rb" ,Tgeneral_data_t ,_param->_size_general_data ); 105 // ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 106 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register ); 107 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RC_VAL ,"data_rc_val" ,Tcontrol_t ,1 ); 108 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RC ,"data_rc" ,Tspecial_data_t ,_param->_size_special_data ); 109 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 110 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 111 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 112 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 113 114 ALLOC0_INTERFACE_END(); 115 } 134 116 135 117 // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 { 119 ALLOC1_INTERFACE_BEGIN("gpr_read",IN,SOUTH,_("Interface with the General RegisterFile"),_param->_nb_gpr_read); 120 121 ALLOC1_VALACK_OUT(out_GPR_READ_VAL ,VAL); 122 ALLOC1_VALACK_IN ( in_GPR_READ_ACK ,ACK); 123 ALLOC1_SIGNAL_OUT(out_GPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 124 ALLOC1_SIGNAL_OUT(out_GPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 125 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 126 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 127 128 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 129 } 136 130 137 out_GPR_READ_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 138 in_GPR_READ_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 139 if(_param->_have_port_ooo_engine_id) 140 out_GPR_READ_OOO_ENGINE_ID= new SC_OUT(Tcontext_t ) * [_param->_nb_gpr_read]; 141 out_GPR_READ_NUM_REG = new SC_OUT(Tgeneral_address_t) * [_param->_nb_gpr_read]; 142 in_GPR_READ_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_read]; 143 in_GPR_READ_DATA_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 131 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 132 { 133 ALLOC1_INTERFACE_BEGIN("spr_read",IN,SOUTH,_("Interface with the General RegisterFile"),_param->_nb_spr_read); 144 134 145 for (uint32_t i=0; i<_param->_nb_gpr_read; i++) 146 { 147 Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(i) 148 #ifdef POSITION 149 , IN 150 ,SOUTH 151 , "Interface with the General RegisterFile." 152 #endif 153 ); 135 ALLOC1_VALACK_OUT(out_SPR_READ_VAL ,VAL); 136 ALLOC1_VALACK_IN ( in_SPR_READ_ACK ,ACK); 137 ALLOC1_SIGNAL_OUT(out_SPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 138 ALLOC1_SIGNAL_OUT(out_SPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 139 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 140 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 154 141 155 out_GPR_READ_VAL [i] = interface->set_signal_valack_out ("val" , VAL); 156 in_GPR_READ_ACK [i] = interface->set_signal_valack_in ("ack" , ACK); 157 if(_param->_have_port_ooo_engine_id) 158 out_GPR_READ_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 159 out_GPR_READ_NUM_REG [i] = interface->set_signal_out <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 160 in_GPR_READ_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 161 in_GPR_READ_DATA_VAL [i] = interface->set_signal_in <Tcontrol_t > ("data_val" ,1); 162 } 163 164 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 165 166 out_SPR_READ_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 167 in_SPR_READ_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 168 if(_param->_have_port_ooo_engine_id) 169 out_SPR_READ_OOO_ENGINE_ID= new SC_OUT(Tcontext_t ) * [_param->_nb_spr_read]; 170 out_SPR_READ_NUM_REG = new SC_OUT(Tspecial_address_t) * [_param->_nb_spr_read]; 171 in_SPR_READ_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_read]; 172 in_SPR_READ_DATA_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 173 174 for (uint32_t i=0; i<_param->_nb_spr_read; i++) 175 { 176 Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(i) 177 #ifdef POSITION 178 , IN 179 ,SOUTH 180 , "Interface with the Special RegisterFile." 181 #endif 182 ); 183 184 out_SPR_READ_VAL [i] = interface->set_signal_valack_out ("val" , VAL); 185 in_SPR_READ_ACK [i] = interface->set_signal_valack_in ("ack" , ACK); 186 if(_param->_have_port_ooo_engine_id) 187 out_SPR_READ_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 188 out_SPR_READ_NUM_REG [i] = interface->set_signal_out <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 189 in_SPR_READ_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 190 in_SPR_READ_DATA_VAL [i] = interface->set_signal_in <Tcontrol_t > ("data_val" ,1); 191 } 142 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 143 } 192 144 193 145 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 194 195 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 196 if(_param->_have_port_ooo_engine_id) 197 in_GPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 198 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 199 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 146 { 147 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile"),_param->_nb_gpr_write); 200 148 201 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 202 { 203 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i) 204 #ifdef POSITION 205 , IN 206 ,SOUTH 207 , "Interface with write queue to bypass the write in the RegisterFile." 208 #endif 209 ); 210 211 in_GPR_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 212 if(_param->_have_port_ooo_engine_id) 213 in_GPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 214 in_GPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 215 in_GPR_WRITE_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 216 } 149 ALLOC1_VALACK_IN (in_GPR_WRITE_VAL ,VAL); 150 ALLOC1_SIGNAL_IN (in_GPR_WRITE_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 151 ALLOC1_SIGNAL_IN (in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 152 ALLOC1_SIGNAL_IN (in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 153 154 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 155 } 217 156 218 157 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 219 220 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 221 if(_param->_have_port_ooo_engine_id) 222 in_SPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 223 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 224 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 158 { 159 ALLOC1_INTERFACE_BEGIN("spr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile"),_param->_nb_spr_write); 225 160 226 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 227 { 228 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i) 229 #ifdef POSITION 230 , IN 231 ,SOUTH 232 , "Interface with write queue to bypass the write in the RegisterFile." 233 #endif 234 ); 235 236 in_SPR_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 237 if(_param->_have_port_ooo_engine_id) 238 in_SPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 239 in_SPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 240 in_SPR_WRITE_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 241 } 161 ALLOC1_VALACK_IN (in_SPR_WRITE_VAL ,VAL); 162 ALLOC1_SIGNAL_IN (in_SPR_WRITE_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 163 ALLOC1_SIGNAL_IN (in_SPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 164 ALLOC1_SIGNAL_IN (in_SPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 165 166 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 167 } 242 168 243 169 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp
r88 r112 8 8 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h" 10 #include "Behavioural/include/Allocation.h" 10 11 11 12 namespace morpheo { … … 25 26 if (usage_is_set(_usage,USE_SYSTEMC)) 26 27 { 27 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 28 delete in_CLOCK ; 29 delete in_NRESET; 28 delete in_CLOCK ; 29 delete in_NRESET; 30 30 31 // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 delete in_READ_QUEUE_IN_VAL ; 33 delete out_READ_QUEUE_IN_ACK ; 31 DELETE0_SIGNAL( in_READ_QUEUE_IN_VAL ,1 ); 32 DELETE0_SIGNAL(out_READ_QUEUE_IN_ACK ,1 ); 33 DELETE0_SIGNAL( in_READ_QUEUE_IN_CONTEXT_ID ,_param->_size_context_id ); 34 DELETE0_SIGNAL( in_READ_QUEUE_IN_FRONT_END_ID ,_param->_size_front_end_id ); 35 DELETE0_SIGNAL( in_READ_QUEUE_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 36 DELETE0_SIGNAL( in_READ_QUEUE_IN_ROB_ID ,_param->_size_rob_ptr ); 37 DELETE0_SIGNAL( in_READ_QUEUE_IN_OPERATION ,_param->_size_operation ); 38 DELETE0_SIGNAL( in_READ_QUEUE_IN_TYPE ,_param->_size_type ); 39 DELETE0_SIGNAL( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE ,_param->_size_store_queue_ptr ); 40 DELETE0_SIGNAL( in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr ); 41 DELETE0_SIGNAL( in_READ_QUEUE_IN_HAS_IMMEDIAT ,1 ); 42 DELETE0_SIGNAL( in_READ_QUEUE_IN_IMMEDIAT ,_param->_size_general_data ); 43 DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RA ,1 ); 44 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RA ,_param->_size_general_register); 45 DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RB ,1 ); 46 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RB ,_param->_size_general_register); 47 DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RC ,1 ); 48 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RC ,_param->_size_special_register); 49 DELETE0_SIGNAL( in_READ_QUEUE_IN_WRITE_RD ,1 ); 50 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RD ,_param->_size_general_register); 51 DELETE0_SIGNAL( in_READ_QUEUE_IN_WRITE_RE ,1 ); 52 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RE ,_param->_size_special_register); 53 54 DELETE0_SIGNAL(out_READ_QUEUE_OUT_VAL ,1 ); 55 DELETE0_SIGNAL( in_READ_QUEUE_OUT_ACK ,1 ); 56 DELETE0_SIGNAL(out_READ_QUEUE_OUT_CONTEXT_ID ,_param->_size_context_id ); 57 DELETE0_SIGNAL(out_READ_QUEUE_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 58 DELETE0_SIGNAL(out_READ_QUEUE_OUT_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 59 DELETE0_SIGNAL(out_READ_QUEUE_OUT_ROB_ID ,_param->_size_rob_ptr ); 60 DELETE0_SIGNAL(out_READ_QUEUE_OUT_OPERATION ,_param->_size_operation ); 61 DELETE0_SIGNAL(out_READ_QUEUE_OUT_TYPE ,_param->_size_type ); 62 DELETE0_SIGNAL(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE, _param->_size_store_queue_ptr ); 63 DELETE0_SIGNAL(out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE , _param->_size_load_queue_ptr ); 64 DELETE0_SIGNAL(out_READ_QUEUE_OUT_HAS_IMMEDIAT ,1 ); 65 DELETE0_SIGNAL(out_READ_QUEUE_OUT_IMMEDIAT ,_param->_size_general_data ); 66 // DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RA ,1 ); 67 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RA ,_param->_size_general_register ); 68 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RA_VAL ,1 ); 69 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RA ,_param->_size_general_data ); 70 // DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RB ,1 ); 71 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RB ,_param->_size_general_register ); 72 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RB_VAL ,1 ); 73 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RB ,_param->_size_general_data ); 74 // DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RC ,1 ); 75 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RC ,_param->_size_special_register ); 76 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RC_VAL ,1 ); 77 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RC ,_param->_size_special_data ); 78 DELETE0_SIGNAL(out_READ_QUEUE_OUT_WRITE_RD ,1 ); 79 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RD ,_param->_size_general_register ); 80 DELETE0_SIGNAL(out_READ_QUEUE_OUT_WRITE_RE ,1 ); 81 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RE ,_param->_size_special_register ); 34 82 35 if(_param->_have_port_context_id ) 36 delete in_READ_QUEUE_IN_CONTEXT_ID ; 37 if(_param->_have_port_front_end_id ) 38 delete in_READ_QUEUE_IN_FRONT_END_ID ; 39 if(_param->_have_port_ooo_engine_id) 40 delete in_READ_QUEUE_IN_OOO_ENGINE_ID ; 41 if(_param->_have_port_rob_ptr ) 42 delete in_READ_QUEUE_IN_ROB_ID ; 43 delete in_READ_QUEUE_IN_OPERATION ; 44 delete in_READ_QUEUE_IN_TYPE ; 45 delete in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE; 46 if (_param->_have_port_load_queue_ptr) 47 delete in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ; 48 delete in_READ_QUEUE_IN_HAS_IMMEDIAT ; 49 delete in_READ_QUEUE_IN_IMMEDIAT ; 50 delete in_READ_QUEUE_IN_READ_RA ; 51 delete in_READ_QUEUE_IN_NUM_REG_RA ; 52 delete in_READ_QUEUE_IN_READ_RB ; 53 delete in_READ_QUEUE_IN_NUM_REG_RB ; 54 delete in_READ_QUEUE_IN_READ_RC ; 55 delete in_READ_QUEUE_IN_NUM_REG_RC ; 56 delete in_READ_QUEUE_IN_WRITE_RD ; 57 delete in_READ_QUEUE_IN_NUM_REG_RD ; 58 delete in_READ_QUEUE_IN_WRITE_RE ; 59 delete in_READ_QUEUE_IN_NUM_REG_RE ; 83 DELETE1_SIGNAL(out_GPR_READ_VAL ,_param->_nb_gpr_read,1); 84 DELETE1_SIGNAL( in_GPR_READ_ACK ,_param->_nb_gpr_read,1); 85 DELETE1_SIGNAL(out_GPR_READ_OOO_ENGINE_ID ,_param->_nb_gpr_read,_param->_size_ooo_engine_id); 86 DELETE1_SIGNAL(out_GPR_READ_NUM_REG ,_param->_nb_gpr_read,_param->_size_general_register); 87 DELETE1_SIGNAL( in_GPR_READ_DATA ,_param->_nb_gpr_read,_param->_size_general_data); 88 DELETE1_SIGNAL( in_GPR_READ_DATA_VAL ,_param->_nb_gpr_read,1); 60 89 61 // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 62 delete out_READ_QUEUE_OUT_VAL ; 63 delete in_READ_QUEUE_OUT_ACK ; 90 DELETE1_SIGNAL(out_SPR_READ_VAL ,_param->_nb_spr_read,1); 91 DELETE1_SIGNAL( in_SPR_READ_ACK ,_param->_nb_spr_read,1); 92 DELETE1_SIGNAL(out_SPR_READ_OOO_ENGINE_ID ,_param->_nb_spr_read,_param->_size_ooo_engine_id); 93 DELETE1_SIGNAL(out_SPR_READ_NUM_REG ,_param->_nb_spr_read,_param->_size_general_register); 94 DELETE1_SIGNAL( in_SPR_READ_DATA ,_param->_nb_spr_read,_param->_size_general_data); 95 DELETE1_SIGNAL( in_SPR_READ_DATA_VAL ,_param->_nb_spr_read,1); 96 97 DELETE1_SIGNAL(in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1); 98 DELETE1_SIGNAL(in_GPR_WRITE_OOO_ENGINE_ID ,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 99 DELETE1_SIGNAL(in_GPR_WRITE_NUM_REG ,_param->_nb_gpr_write,_param->_size_general_register); 100 DELETE1_SIGNAL(in_GPR_WRITE_DATA ,_param->_nb_gpr_write,_param->_size_general_data); 64 101 65 if(_param->_have_port_context_id ) 66 delete out_READ_QUEUE_OUT_CONTEXT_ID ; 67 if(_param->_have_port_front_end_id ) 68 delete out_READ_QUEUE_OUT_FRONT_END_ID ; 69 if(_param->_have_port_ooo_engine_id) 70 delete out_READ_QUEUE_OUT_OOO_ENGINE_ID ; 71 if(_param->_have_port_rob_ptr ) 72 delete out_READ_QUEUE_OUT_ROB_ID ; 73 delete out_READ_QUEUE_OUT_OPERATION ; 74 delete out_READ_QUEUE_OUT_TYPE ; 75 delete out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE; 76 if (_param->_have_port_load_queue_ptr) 77 delete out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ; 78 delete out_READ_QUEUE_OUT_HAS_IMMEDIAT ; 79 delete out_READ_QUEUE_OUT_IMMEDIAT ; 80 // delete out_READ_QUEUE_OUT_READ_RA ; 81 delete out_READ_QUEUE_OUT_NUM_REG_RA ; 82 delete out_READ_QUEUE_OUT_DATA_RA_VAL ; 83 delete out_READ_QUEUE_OUT_DATA_RA ; 84 // delete out_READ_QUEUE_OUT_READ_RB ; 85 delete out_READ_QUEUE_OUT_NUM_REG_RB ; 86 delete out_READ_QUEUE_OUT_DATA_RB_VAL ; 87 delete out_READ_QUEUE_OUT_DATA_RB ; 88 // delete out_READ_QUEUE_OUT_READ_RC ; 89 delete out_READ_QUEUE_OUT_NUM_REG_RC ; 90 delete out_READ_QUEUE_OUT_DATA_RC_VAL ; 91 delete out_READ_QUEUE_OUT_DATA_RC ; 92 delete out_READ_QUEUE_OUT_WRITE_RD ; 93 delete out_READ_QUEUE_OUT_NUM_REG_RD ; 94 delete out_READ_QUEUE_OUT_WRITE_RE ; 95 delete out_READ_QUEUE_OUT_NUM_REG_RE ; 96 97 // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 99 delete [] out_GPR_READ_VAL ; 100 delete [] in_GPR_READ_ACK ; 101 if(_param->_have_port_ooo_engine_id) 102 delete [] out_GPR_READ_OOO_ENGINE_ID; 103 delete [] out_GPR_READ_NUM_REG ; 104 delete [] in_GPR_READ_DATA ; 105 delete [] in_GPR_READ_DATA_VAL ; 106 107 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 108 109 delete [] out_SPR_READ_VAL ; 110 delete [] in_SPR_READ_ACK ; 111 if(_param->_have_port_ooo_engine_id) 112 delete [] out_SPR_READ_OOO_ENGINE_ID; 113 delete [] out_SPR_READ_NUM_REG ; 114 delete [] in_SPR_READ_DATA ; 115 delete [] in_SPR_READ_DATA_VAL ; 116 117 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 119 delete [] in_GPR_WRITE_VAL ; 120 if(_param->_have_port_ooo_engine_id) 121 delete [] in_GPR_WRITE_OOO_ENGINE_ID; 122 delete [] in_GPR_WRITE_NUM_REG ; 123 delete [] in_GPR_WRITE_DATA ; 124 125 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 126 127 delete [] in_SPR_WRITE_VAL ; 128 if(_param->_have_port_ooo_engine_id) 129 delete [] in_SPR_WRITE_OOO_ENGINE_ID; 130 delete [] in_SPR_WRITE_NUM_REG ; 131 delete [] in_SPR_WRITE_DATA ; 102 DELETE1_SIGNAL(in_SPR_WRITE_VAL ,_param->_nb_spr_write,1); 103 DELETE1_SIGNAL(in_SPR_WRITE_OOO_ENGINE_ID ,_param->_nb_spr_write,_param->_size_ooo_engine_id); 104 DELETE1_SIGNAL(in_SPR_WRITE_NUM_REG ,_param->_nb_spr_write,_param->_size_general_register); 105 DELETE1_SIGNAL(in_SPR_WRITE_DATA ,_param->_nb_spr_write,_param->_size_general_data); 132 106 } 133 107 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
r111 r112 34 34 // > 2) flush all slot in one cycle 35 35 36 _queue->clear(); 36 while (_queue->empty() == false) 37 { 38 delete _queue->front(); 39 _queue->pop_front(); 40 } 41 // _queue->clear(); 37 42 38 43 // Init, else error in registerfile -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp
r97 r112 7 7 */ 8 8 #define NB_ITERATION 1 9 #define CYCLE_MAX ( 2048*NB_ITERATION)9 #define CYCLE_MAX (10000*NB_ITERATION) 10 10 11 11 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h" -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp
r97 r112 8 8 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h" 10 #include "Behavioural/include/Allocation.h" 10 11 11 12 namespace morpheo { … … 43 44 ,IN 44 45 ,SOUTH, 45 "Generalist interface"46 _("Generalist interface") 46 47 #endif 47 48 ); … … 50 51 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_YES); 51 52 52 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53 { 54 Interface_fifo * interface = _interfaces->set_interface("insert" 55 #ifdef POSITION 56 ,IN 57 ,EAST 58 ,"Input of reservation_station" 59 #endif 60 ); 61 62 in_INSERT_VAL = interface->set_signal_valack_in (VAL); 63 out_INSERT_ACK = interface->set_signal_valack_out (ACK); 64 if (_param->_have_port_context_id) 65 in_INSERT_CONTEXT_ID = interface->set_signal_in <Tcontext_t > ("context_id" ,_param->_size_context_id ); 66 if (_param->_have_port_front_end_id) 67 in_INSERT_FRONT_END_ID = interface->set_signal_in <Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 68 if (_param->_have_port_ooo_engine_id) 69 in_INSERT_OOO_ENGINE_ID = interface->set_signal_in <Tcontext_t > ("ooo_engine_id" ,_param->_size_ooo_engine_id ); 70 if (_param->_have_port_rob_ptr) 71 in_INSERT_ROB_ID = interface->set_signal_in <Tpacket_t > ("rob_id" ,_param->_size_rob_ptr ); 72 in_INSERT_OPERATION = interface->set_signal_in <Toperation_t > ("operation" ,_param->_size_operation ); 73 in_INSERT_TYPE = interface->set_signal_in <Ttype_t > ("type" ,_param->_size_type ); 74 in_INSERT_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr); 75 if (_param->_have_port_load_queue_ptr) 76 in_INSERT_LOAD_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr ); 77 in_INSERT_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat" ,1 ); 78 in_INSERT_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 79 // in_INSERT_READ_RA = interface->set_signal_in <Tcontrol_t > ("read_ra" ,1 ); 80 in_INSERT_NUM_REG_RA = interface->set_signal_in <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 81 in_INSERT_DATA_RA_VAL = interface->set_signal_in <Tcontrol_t > ("data_ra_val" ,1 ); 82 in_INSERT_DATA_RA = interface->set_signal_in <Tgeneral_data_t > ("data_ra" ,_param->_size_general_data ); 83 // in_INSERT_READ_RB = interface->set_signal_in <Tcontrol_t > ("read_rb" ,1 ); 84 in_INSERT_NUM_REG_RB = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 85 in_INSERT_DATA_RB_VAL = interface->set_signal_in <Tcontrol_t > ("data_rb_val" ,1 ); 86 in_INSERT_DATA_RB = interface->set_signal_in <Tgeneral_data_t > ("data_rb" ,_param->_size_general_data ); 87 // in_INSERT_READ_RC = interface->set_signal_in <Tcontrol_t > ("read_rc" ,1 ); 88 in_INSERT_NUM_REG_RC = interface->set_signal_in <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 89 in_INSERT_DATA_RC_VAL = interface->set_signal_in <Tcontrol_t > ("data_rc_val" ,1 ); 90 in_INSERT_DATA_RC = interface->set_signal_in <Tspecial_data_t > ("data_rc" ,_param->_size_special_data ); 91 in_INSERT_WRITE_RD = interface->set_signal_in <Tcontrol_t > ("write_rd" ,1 ); 92 in_INSERT_NUM_REG_RD = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 93 in_INSERT_WRITE_RE = interface->set_signal_in <Tcontrol_t > ("write_re" ,1 ); 94 in_INSERT_NUM_REG_RE = interface->set_signal_in <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 53 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 { 55 ALLOC0_INTERFACE_BEGIN("insert",IN,EAST,_("Input of reservation_station")); 56 57 ALLOC0_VALACK_IN ( in_INSERT_VAL ,VAL); 58 ALLOC0_VALACK_OUT(out_INSERT_ACK ,ACK); 59 ALLOC0_SIGNAL_IN ( in_INSERT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 60 ALLOC0_SIGNAL_IN ( in_INSERT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 61 ALLOC0_SIGNAL_IN ( in_INSERT_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id ); 62 ALLOC0_SIGNAL_IN ( in_INSERT_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr ); 63 ALLOC0_SIGNAL_IN ( in_INSERT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 64 ALLOC0_SIGNAL_IN ( in_INSERT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 65 ALLOC0_SIGNAL_IN ( in_INSERT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr ); 66 ALLOC0_SIGNAL_IN ( in_INSERT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 67 ALLOC0_SIGNAL_IN ( in_INSERT_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 68 ALLOC0_SIGNAL_IN ( in_INSERT_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 69 // ALLOC0_SIGNAL_IN ( in_INSERT_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 70 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 71 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RA_VAL ,"data_ra_val" ,Tcontrol_t ,1 ); 72 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RA ,"data_ra" ,Tgeneral_data_t ,_param->_size_general_data ); 73 // ALLOC0_SIGNAL_IN ( in_INSERT_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 74 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RB_VAL ,"data_rb_val" ,Tcontrol_t ,1 ); 76 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RB ,"data_rb" ,Tgeneral_data_t ,_param->_size_general_data ); 77 // ALLOC0_SIGNAL_IN ( in_INSERT_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 78 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 79 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RC_VAL ,"data_rc_val" ,Tcontrol_t ,1 ); 80 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RC ,"data_rc" ,Tspecial_data_t ,_param->_size_special_data ); 81 ALLOC0_SIGNAL_IN ( in_INSERT_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 82 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 83 ALLOC0_SIGNAL_IN ( in_INSERT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 84 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 85 86 ALLOC0_INTERFACE_END(); 87 } 88 89 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 { 91 ALLOC1_INTERFACE_BEGIN("retire",OUT,WEST,_("Output of reservation_station"),_param->_nb_inst_retire); 92 93 ALLOC1_VALACK_OUT(out_RETIRE_VAL ,VAL); 94 ALLOC1_VALACK_IN ( in_RETIRE_ACK ,ACK); 95 ALLOC1_SIGNAL_OUT(out_RETIRE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 96 ALLOC1_SIGNAL_OUT(out_RETIRE_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id); 97 ALLOC1_SIGNAL_OUT(out_RETIRE_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id); 98 ALLOC1_SIGNAL_OUT(out_RETIRE_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr); 99 ALLOC1_SIGNAL_OUT(out_RETIRE_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation); 100 ALLOC1_SIGNAL_OUT(out_RETIRE_TYPE ,"type" ,Ttype_t ,_param->_size_type); 101 ALLOC1_SIGNAL_OUT(out_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 102 ALLOC1_SIGNAL_OUT(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 103 ALLOC1_SIGNAL_OUT(out_RETIRE_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); 104 ALLOC1_SIGNAL_OUT(out_RETIRE_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data); 105 ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RA ,"data_ra" ,Tgeneral_data_t ,_param->_size_general_data); 106 ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RB ,"data_rb" ,Tgeneral_data_t ,_param->_size_general_data); 107 ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RC ,"data_rc" ,Tspecial_data_t ,_param->_size_special_data); 108 ALLOC1_SIGNAL_OUT(out_RETIRE_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 109 ALLOC1_SIGNAL_OUT(out_RETIRE_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 110 ALLOC1_SIGNAL_OUT(out_RETIRE_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 111 ALLOC1_SIGNAL_OUT(out_RETIRE_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 112 113 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 114 } 115 116 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 117 { 118 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_gpr_write); 119 120 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL ,VAL); 121 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 122 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 123 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 124 125 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 95 126 } 96 127 97 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 out_RETIRE_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 99 in_RETIRE_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_inst_retire]; 100 if (_param->_have_port_context_id) 101 out_RETIRE_CONTEXT_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 102 if (_param->_have_port_front_end_id) 103 out_RETIRE_FRONT_END_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 104 if (_param->_have_port_ooo_engine_id) 105 out_RETIRE_OOO_ENGINE_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 106 if (_param->_have_port_rob_ptr) 107 out_RETIRE_ROB_ID = new SC_OUT(Tpacket_t ) * [_param->_nb_inst_retire]; 108 out_RETIRE_OPERATION = new SC_OUT(Toperation_t ) * [_param->_nb_inst_retire]; 109 out_RETIRE_TYPE = new SC_OUT(Ttype_t ) * [_param->_nb_inst_retire]; 110 out_RETIRE_STORE_QUEUE_PTR_WRITE = new SC_OUT(Tlsq_ptr_t ) * [_param->_nb_inst_retire]; 111 if (_param->_have_port_load_queue_ptr) 112 out_RETIRE_LOAD_QUEUE_PTR_WRITE = new SC_OUT(Tlsq_ptr_t ) * [_param->_nb_inst_retire]; 113 out_RETIRE_HAS_IMMEDIAT = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 114 out_RETIRE_IMMEDIAT = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 115 out_RETIRE_DATA_RA = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 116 out_RETIRE_DATA_RB = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 117 out_RETIRE_DATA_RC = new SC_OUT(Tspecial_data_t ) * [_param->_nb_inst_retire]; 118 out_RETIRE_WRITE_RD = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 119 out_RETIRE_NUM_REG_RD = new SC_OUT(Tgeneral_address_t) * [_param->_nb_inst_retire]; 120 out_RETIRE_WRITE_RE = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 121 out_RETIRE_NUM_REG_RE = new SC_OUT(Tspecial_address_t) * [_param->_nb_inst_retire]; 122 123 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 124 { 125 Interface_fifo * interface = _interfaces->set_interface("retire_"+toString(i) 126 #ifdef POSITION 127 ,OUT 128 ,WEST 129 ,"Output of reservation_station" 130 #endif 131 ); 132 out_RETIRE_VAL [i] = interface->set_signal_valack_out(VAL); 133 in_RETIRE_ACK [i] = interface->set_signal_valack_in (ACK); 134 if (_param->_have_port_context_id) 135 out_RETIRE_CONTEXT_ID [i] = interface->set_signal_out<Tcontext_t > ("context_id" ,_param->_size_context_id); 136 if (_param->_have_port_front_end_id) 137 out_RETIRE_FRONT_END_ID [i] = interface->set_signal_out<Tcontext_t > ("front_end_id" ,_param->_size_front_end_id); 138 if (_param->_have_port_ooo_engine_id) 139 out_RETIRE_OOO_ENGINE_ID[i] = interface->set_signal_out<Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 140 if (_param->_have_port_rob_ptr) 141 out_RETIRE_ROB_ID [i] = interface->set_signal_out<Tpacket_t > ("rob_id" ,_param->_size_rob_ptr); 142 out_RETIRE_OPERATION [i] = interface->set_signal_out<Toperation_t > ("operation" ,_param->_size_operation); 143 out_RETIRE_TYPE [i] = interface->set_signal_out<Ttype_t > ("type" ,_param->_size_type); 144 out_RETIRE_STORE_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr); 145 if (_param->_have_port_load_queue_ptr) 146 out_RETIRE_LOAD_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr ); 128 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 129 { 130 ALLOC1_INTERFACE_BEGIN("spr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_spr_write); 131 132 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL ,VAL); 133 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 134 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 135 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 147 136 148 out_RETIRE_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t > ("has_immediat" ,1); 149 out_RETIRE_IMMEDIAT [i] = interface->set_signal_out<Tgeneral_data_t > ("immediat" ,_param->_size_general_data); 150 out_RETIRE_DATA_RA [i] = interface->set_signal_out<Tgeneral_data_t > ("data_ra" ,_param->_size_general_data); 151 out_RETIRE_DATA_RB [i] = interface->set_signal_out<Tgeneral_data_t > ("data_rb" ,_param->_size_general_data); 152 out_RETIRE_DATA_RC [i] = interface->set_signal_out<Tspecial_data_t > ("data_rc" ,_param->_size_special_data); 153 out_RETIRE_WRITE_RD [i] = interface->set_signal_out<Tcontrol_t > ("write_rd" ,1); 154 out_RETIRE_NUM_REG_RD [i] = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register); 155 out_RETIRE_WRITE_RE [i] = interface->set_signal_out<Tcontrol_t > ("write_re" ,1); 156 out_RETIRE_NUM_REG_RE [i] = interface->set_signal_out<Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register); 157 } 137 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 138 } 158 139 159 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 160 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 161 if (_param->_have_port_ooo_engine_id) 162 in_GPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 163 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 164 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 140 // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 141 { 142 ALLOC1_INTERFACE_BEGIN("bypass_write",IN,NORTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_bypass_write); 165 143 166 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 167 { 168 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i) 169 #ifdef POSITION 170 , IN 171 ,SOUTH 172 , "Interface with write queue to bypass the write in the RegisterFile." 173 #endif 174 ); 144 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 145 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_VAL ,"gpr_val" ,Tcontrol_t ,1); 146 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_NUM_REG ,"gpr_num_reg" ,Tgeneral_address_t,_param->_size_general_register); 147 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_DATA ,"gpr_data" ,Tgeneral_data_t ,_param->_size_general_data); 148 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_VAL ,"spr_val" ,Tcontrol_t ,1); 149 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 150 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data); 151 152 ALLOC1_INTERFACE_END(_param->_nb_bypass_write); 153 } 154 155 // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 156 { 157 ALLOC1_INTERFACE_BEGIN("bypass_memory",IN,NORTH,_("Interface with load/store unit to bypass the write in the RegisterFile."),_param->_nb_bypass_memory); 175 158 176 in_GPR_WRITE_VAL [i] = interface->set_signal_valack_in (VAL); 177 if (_param->_have_port_ooo_engine_id) 178 in_GPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 179 in_GPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 180 in_GPR_WRITE_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 181 } 182 183 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 184 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 185 if (_param->_have_port_ooo_engine_id) 186 in_SPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 187 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 188 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 189 190 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 191 { 192 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i) 193 #ifdef POSITION 194 , IN 195 ,SOUTH 196 , "Interface with write queue to bypass the write in the RegisterFile." 197 #endif 198 ); 199 200 in_SPR_WRITE_VAL [i] = interface->set_signal_valack_in (VAL); 201 if (_param->_have_port_ooo_engine_id) 202 in_SPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 203 in_SPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 204 in_SPR_WRITE_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 205 } 206 207 // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 208 if (_param->_have_port_ooo_engine_id) 209 in_BYPASS_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_bypass_write]; 210 in_BYPASS_WRITE_GPR_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_write]; 211 in_BYPASS_WRITE_GPR_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_write]; 212 in_BYPASS_WRITE_GPR_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_bypass_write]; 213 in_BYPASS_WRITE_SPR_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_write]; 214 in_BYPASS_WRITE_SPR_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_bypass_write]; 215 in_BYPASS_WRITE_SPR_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_bypass_write]; 216 217 for (uint32_t i=0; i<_param->_nb_bypass_write; i++) 218 { 219 Interface_fifo * interface = _interfaces->set_interface("bypass_write_"+toString(i) 220 #ifdef POSITION 221 , IN 222 ,NORTH 223 , "Interface with write queue to bypass the write in the RegisterFile." 224 #endif 225 ); 226 227 if (_param->_have_port_ooo_engine_id) 228 in_BYPASS_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id" ,_param->_size_ooo_engine_id); 229 in_BYPASS_WRITE_GPR_VAL [i] = interface->set_signal_valack_in ("gpr_val",VAL); 230 in_BYPASS_WRITE_GPR_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("gpr_num_reg" ,_param->_size_general_register); 231 in_BYPASS_WRITE_GPR_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("gpr_data" ,_param->_size_general_data); 232 in_BYPASS_WRITE_SPR_VAL [i] = interface->set_signal_valack_in ("spr_val",VAL); 233 in_BYPASS_WRITE_SPR_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("spr_num_reg" ,_param->_size_special_register); 234 in_BYPASS_WRITE_SPR_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("spr_data" ,_param->_size_special_data); 235 } 236 237 // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 238 in_BYPASS_MEMORY_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_memory]; 239 if (_param->_have_port_ooo_engine_id) 240 in_BYPASS_MEMORY_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_bypass_memory]; 241 in_BYPASS_MEMORY_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_memory]; 242 in_BYPASS_MEMORY_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_bypass_memory]; 243 244 for (uint32_t i=0; i<_param->_nb_bypass_memory; i++) 245 { 246 Interface_fifo * interface = _interfaces->set_interface("bypass_memory_"+toString(i) 247 #ifdef POSITION 248 , IN 249 , NORTH 250 , "Interface with load/store unit to bypass the write in the RegisterFile." 251 #endif 252 ); 253 254 in_BYPASS_MEMORY_VAL [i] = interface->set_signal_valack_in (VAL); 255 if (_param->_have_port_ooo_engine_id) 256 in_BYPASS_MEMORY_OOO_ENGINE_ID[i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 257 in_BYPASS_MEMORY_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 258 in_BYPASS_MEMORY_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 259 } 260 159 ALLOC1_VALACK_IN ( in_BYPASS_MEMORY_VAL ,VAL); 160 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 161 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 162 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 163 164 ALLOC1_INTERFACE_END(_param->_nb_bypass_memory); 165 } 261 166 262 167 if (usage_is_set(_usage,USE_SYSTEMC)) 263 168 { 264 169 // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 265 internal_RETIRE_VAL = new Tcontrol_t [_param->_nb_inst_retire];266 internal_RETIRE_SLOT = new uint32_t [_param->_nb_inst_retire];170 ALLOC1(internal_RETIRE_VAL ,Tcontrol_t,_param->_nb_inst_retire); 171 ALLOC1(internal_RETIRE_SLOT,uint32_t ,_param->_nb_inst_retire); 267 172 } 268 173 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp
r88 r112 11 11 12 12 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h" 13 #include "Behavioural/include/Allocation.h" 13 14 14 15 namespace morpheo { … … 30 31 if (usage_is_set(_usage,USE_SYSTEMC)) 31 32 { 32 delete in_CLOCK ;33 delete in_NRESET;33 delete in_CLOCK ; 34 delete in_NRESET; 34 35 35 delete in_INSERT_VAL ; 36 delete out_INSERT_ACK ; 37 if (_param->_have_port_context_id) 38 delete in_INSERT_CONTEXT_ID ; 39 if (_param->_have_port_front_end_id) 40 delete in_INSERT_FRONT_END_ID ; 41 if (_param->_have_port_ooo_engine_id) 42 delete in_INSERT_OOO_ENGINE_ID ; 43 if (_param->_have_port_rob_ptr) 44 delete in_INSERT_ROB_ID ; 45 delete in_INSERT_OPERATION ; 46 delete in_INSERT_TYPE ; 47 delete in_INSERT_STORE_QUEUE_PTR_WRITE; 48 if (_param->_have_port_load_queue_ptr) 49 delete in_INSERT_LOAD_QUEUE_PTR_WRITE ; 50 delete in_INSERT_HAS_IMMEDIAT ; 51 delete in_INSERT_IMMEDIAT ; 52 // delete in_INSERT_READ_RA ; 53 delete in_INSERT_NUM_REG_RA ; 54 delete in_INSERT_DATA_RA_VAL ; 55 delete in_INSERT_DATA_RA ; 56 // delete in_INSERT_READ_RB ; 57 delete in_INSERT_NUM_REG_RB ; 58 delete in_INSERT_DATA_RB_VAL ; 59 delete in_INSERT_DATA_RB ; 60 // delete in_INSERT_READ_RC ; 61 delete in_INSERT_NUM_REG_RC ; 62 delete in_INSERT_DATA_RC_VAL ; 63 delete in_INSERT_DATA_RC ; 64 delete in_INSERT_WRITE_RD ; 65 delete in_INSERT_NUM_REG_RD ; 66 delete in_INSERT_WRITE_RE ; 67 delete in_INSERT_NUM_REG_RE ; 68 69 delete [] out_RETIRE_VAL ; 70 delete [] in_RETIRE_ACK ; 71 if (_param->_have_port_context_id) 72 delete [] out_RETIRE_CONTEXT_ID ; 73 if (_param->_have_port_front_end_id) 74 delete [] out_RETIRE_FRONT_END_ID ; 75 if (_param->_have_port_ooo_engine_id) 76 delete [] out_RETIRE_OOO_ENGINE_ID ; 77 if (_param->_have_port_rob_ptr) 78 delete [] out_RETIRE_ROB_ID ; 79 delete [] out_RETIRE_OPERATION ; 80 delete [] out_RETIRE_TYPE ; 81 delete [] out_RETIRE_STORE_QUEUE_PTR_WRITE; 82 if (_param->_have_port_load_queue_ptr) 83 delete [] out_RETIRE_LOAD_QUEUE_PTR_WRITE ; 84 delete [] out_RETIRE_HAS_IMMEDIAT ; 85 delete [] out_RETIRE_IMMEDIAT ; 86 delete [] out_RETIRE_DATA_RA ; 87 delete [] out_RETIRE_DATA_RB ; 88 delete [] out_RETIRE_DATA_RC ; 89 delete [] out_RETIRE_WRITE_RD ; 90 delete [] out_RETIRE_NUM_REG_RD ; 91 delete [] out_RETIRE_WRITE_RE ; 92 delete [] out_RETIRE_NUM_REG_RE ; 93 94 delete [] in_GPR_WRITE_VAL ; 95 if (_param->_have_port_ooo_engine_id) 96 delete [] in_GPR_WRITE_OOO_ENGINE_ID; 97 delete [] in_GPR_WRITE_NUM_REG ; 98 delete [] in_GPR_WRITE_DATA ; 99 100 delete [] in_SPR_WRITE_VAL ; 101 if (_param->_have_port_ooo_engine_id) 102 delete [] in_SPR_WRITE_OOO_ENGINE_ID; 103 delete [] in_SPR_WRITE_NUM_REG ; 104 delete [] in_SPR_WRITE_DATA ; 105 106 if (_param->_have_port_ooo_engine_id) 107 delete [] in_BYPASS_WRITE_OOO_ENGINE_ID; 108 delete [] in_BYPASS_WRITE_GPR_VAL ; 109 delete [] in_BYPASS_WRITE_GPR_NUM_REG; 110 delete [] in_BYPASS_WRITE_GPR_DATA ; 111 delete [] in_BYPASS_WRITE_SPR_VAL ; 112 delete [] in_BYPASS_WRITE_SPR_NUM_REG; 113 delete [] in_BYPASS_WRITE_SPR_DATA ; 114 115 delete [] in_BYPASS_MEMORY_VAL ; 116 if (_param->_have_port_ooo_engine_id) 117 delete [] in_BYPASS_MEMORY_OOO_ENGINE_ID; 118 delete [] in_BYPASS_MEMORY_NUM_REG ; 119 delete [] in_BYPASS_MEMORY_DATA ; 120 121 // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 122 delete [] internal_RETIRE_VAL; 123 delete [] internal_RETIRE_SLOT; 36 DELETE0_SIGNAL( in_INSERT_VAL ,1); 37 DELETE0_SIGNAL(out_INSERT_ACK ,1); 38 DELETE0_SIGNAL( in_INSERT_CONTEXT_ID ,_param->_size_context_id ); 39 DELETE0_SIGNAL( in_INSERT_FRONT_END_ID ,_param->_size_front_end_id ); 40 DELETE0_SIGNAL( in_INSERT_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 41 DELETE0_SIGNAL( in_INSERT_ROB_ID ,_param->_size_rob_ptr ); 42 DELETE0_SIGNAL( in_INSERT_OPERATION ,_param->_size_operation ); 43 DELETE0_SIGNAL( in_INSERT_TYPE ,_param->_size_type ); 44 DELETE0_SIGNAL( in_INSERT_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr ); 45 DELETE0_SIGNAL( in_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr ); 46 DELETE0_SIGNAL( in_INSERT_HAS_IMMEDIAT ,1 ); 47 DELETE0_SIGNAL( in_INSERT_IMMEDIAT ,_param->_size_general_data ); 48 // DELETE0_SIGNAL( in_INSERT_READ_RA ,1 ); 49 DELETE0_SIGNAL( in_INSERT_NUM_REG_RA ,_param->_size_general_register); 50 DELETE0_SIGNAL( in_INSERT_DATA_RA_VAL ,1 ); 51 DELETE0_SIGNAL( in_INSERT_DATA_RA ,_param->_size_general_data ); 52 // DELETE0_SIGNAL( in_INSERT_READ_RB ,1 ); 53 DELETE0_SIGNAL( in_INSERT_NUM_REG_RB ,_param->_size_general_register); 54 DELETE0_SIGNAL( in_INSERT_DATA_RB_VAL ,1 ); 55 DELETE0_SIGNAL( in_INSERT_DATA_RB ,_param->_size_general_data ); 56 // DELETE0_SIGNAL( in_INSERT_READ_RC ,1 ); 57 DELETE0_SIGNAL( in_INSERT_NUM_REG_RC ,_param->_size_special_register); 58 DELETE0_SIGNAL( in_INSERT_DATA_RC_VAL ,1 ); 59 DELETE0_SIGNAL( in_INSERT_DATA_RC ,_param->_size_special_data ); 60 DELETE0_SIGNAL( in_INSERT_WRITE_RD ,1 ); 61 DELETE0_SIGNAL( in_INSERT_NUM_REG_RD ,_param->_size_general_register); 62 DELETE0_SIGNAL( in_INSERT_WRITE_RE ,1 ); 63 DELETE0_SIGNAL( in_INSERT_NUM_REG_RE ,_param->_size_special_register); 64 65 DELETE1_SIGNAL(out_RETIRE_VAL ,_param->_nb_inst_retire,1); 66 DELETE1_SIGNAL( in_RETIRE_ACK ,_param->_nb_inst_retire,1); 67 DELETE1_SIGNAL(out_RETIRE_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id); 68 DELETE1_SIGNAL(out_RETIRE_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id); 69 DELETE1_SIGNAL(out_RETIRE_OOO_ENGINE_ID ,_param->_nb_inst_retire,_param->_size_ooo_engine_id); 70 DELETE1_SIGNAL(out_RETIRE_ROB_ID ,_param->_nb_inst_retire,_param->_size_rob_ptr); 71 DELETE1_SIGNAL(out_RETIRE_OPERATION ,_param->_nb_inst_retire,_param->_size_operation); 72 DELETE1_SIGNAL(out_RETIRE_TYPE ,_param->_nb_inst_retire,_param->_size_type); 73 DELETE1_SIGNAL(out_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr); 74 DELETE1_SIGNAL(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr ); 75 DELETE1_SIGNAL(out_RETIRE_HAS_IMMEDIAT ,_param->_nb_inst_retire,1); 76 DELETE1_SIGNAL(out_RETIRE_IMMEDIAT ,_param->_nb_inst_retire,_param->_size_general_data); 77 DELETE1_SIGNAL(out_RETIRE_DATA_RA ,_param->_nb_inst_retire,_param->_size_general_data); 78 DELETE1_SIGNAL(out_RETIRE_DATA_RB ,_param->_nb_inst_retire,_param->_size_general_data); 79 DELETE1_SIGNAL(out_RETIRE_DATA_RC ,_param->_nb_inst_retire,_param->_size_special_data); 80 DELETE1_SIGNAL(out_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1); 81 DELETE1_SIGNAL(out_RETIRE_NUM_REG_RD ,_param->_nb_inst_retire,_param->_size_general_register); 82 DELETE1_SIGNAL(out_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1); 83 DELETE1_SIGNAL(out_RETIRE_NUM_REG_RE ,_param->_nb_inst_retire,_param->_size_special_register); 84 85 DELETE1_SIGNAL( in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1); 86 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 87 DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG ,_param->_nb_gpr_write,_param->_size_general_register); 88 DELETE1_SIGNAL( in_GPR_WRITE_DATA ,_param->_nb_gpr_write,_param->_size_general_data); 89 90 DELETE1_SIGNAL( in_SPR_WRITE_VAL ,_param->_nb_spr_write,1); 91 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id); 92 DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG ,_param->_nb_spr_write,_param->_size_general_register); 93 DELETE1_SIGNAL( in_SPR_WRITE_DATA ,_param->_nb_spr_write,_param->_size_general_data); 94 95 DELETE1_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID,_param->_nb_bypass_write,_param->_size_ooo_engine_id); 96 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_VAL ,_param->_nb_bypass_write,1); 97 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG ,_param->_nb_bypass_write,_param->_size_general_register); 98 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_DATA ,_param->_nb_bypass_write,_param->_size_general_data); 99 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_VAL ,_param->_nb_bypass_write,1); 100 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG ,_param->_nb_bypass_write,_param->_size_special_register); 101 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_DATA ,_param->_nb_bypass_write,_param->_size_special_data); 102 103 DELETE1_SIGNAL( in_BYPASS_MEMORY_VAL ,_param->_nb_bypass_memory,1); 104 DELETE1_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID,_param->_nb_bypass_memory,_param->_size_ooo_engine_id); 105 DELETE1_SIGNAL( in_BYPASS_MEMORY_NUM_REG ,_param->_nb_bypass_memory,_param->_size_general_register); 106 DELETE1_SIGNAL( in_BYPASS_MEMORY_DATA ,_param->_nb_bypass_memory,_param->_size_general_data); 107 108 DELETE1(internal_RETIRE_VAL ,_param->_nb_inst_retire); 109 DELETE1(internal_RETIRE_SLOT,_param->_nb_inst_retire); 124 110 } 111 125 112 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 126 113 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/test.cpp
r88 r112 64 64 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 65 65 66 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_VAL ," in_READ_UNIT_IN_VAL ",Tcontrol_t );67 ALLOC _SC_SIGNAL(out_READ_UNIT_IN_ACK ,"out_READ_UNIT_IN_ACK ",Tcontrol_t );68 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID ," in_READ_UNIT_IN_CONTEXT_ID ",Tcontext_t );69 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID ," in_READ_UNIT_IN_FRONT_END_ID ",Tcontext_t );70 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID ," in_READ_UNIT_IN_OOO_ENGINE_ID ",Tcontext_t );71 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_PACKET_ID ," in_READ_UNIT_IN_PACKET_ID ",Tpacket_t );72 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_OPERATION ," in_READ_UNIT_IN_OPERATION ",Toperation_t );73 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_TYPE ," in_READ_UNIT_IN_TYPE ",Ttype_t );74 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ",Tlsq_ptr_t );75 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ",Tlsq_ptr_t );76 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT ," in_READ_UNIT_IN_HAS_IMMEDIAT ",Tcontrol_t );77 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_IMMEDIAT ," in_READ_UNIT_IN_IMMEDIAT ",Tgeneral_data_t );78 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_READ_RA ," in_READ_UNIT_IN_READ_RA ",Tcontrol_t );79 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA ," in_READ_UNIT_IN_NUM_REG_RA ",Tgeneral_address_t);80 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_READ_RB ," in_READ_UNIT_IN_READ_RB ",Tcontrol_t );81 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB ," in_READ_UNIT_IN_NUM_REG_RB ",Tgeneral_address_t);82 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_READ_RC ," in_READ_UNIT_IN_READ_RC ",Tcontrol_t );83 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC ," in_READ_UNIT_IN_NUM_REG_RC ",Tspecial_address_t);84 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_WRITE_RD ," in_READ_UNIT_IN_WRITE_RD ",Tcontrol_t );85 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD ," in_READ_UNIT_IN_NUM_REG_RD ",Tgeneral_address_t);86 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_WRITE_RE ," in_READ_UNIT_IN_WRITE_RE ",Tcontrol_t );87 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE ," in_READ_UNIT_IN_NUM_REG_RE ",Tspecial_address_t);66 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_VAL ," in_READ_UNIT_IN_VAL ",Tcontrol_t ); 67 ALLOC0_SC_SIGNAL(out_READ_UNIT_IN_ACK ,"out_READ_UNIT_IN_ACK ",Tcontrol_t ); 68 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID ," in_READ_UNIT_IN_CONTEXT_ID ",Tcontext_t ); 69 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID ," in_READ_UNIT_IN_FRONT_END_ID ",Tcontext_t ); 70 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID ," in_READ_UNIT_IN_OOO_ENGINE_ID ",Tcontext_t ); 71 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_PACKET_ID ," in_READ_UNIT_IN_PACKET_ID ",Tpacket_t ); 72 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_OPERATION ," in_READ_UNIT_IN_OPERATION ",Toperation_t ); 73 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_TYPE ," in_READ_UNIT_IN_TYPE ",Ttype_t ); 74 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ",Tlsq_ptr_t ); 75 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ",Tlsq_ptr_t ); 76 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT ," in_READ_UNIT_IN_HAS_IMMEDIAT ",Tcontrol_t ); 77 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_IMMEDIAT ," in_READ_UNIT_IN_IMMEDIAT ",Tgeneral_data_t ); 78 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RA ," in_READ_UNIT_IN_READ_RA ",Tcontrol_t ); 79 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA ," in_READ_UNIT_IN_NUM_REG_RA ",Tgeneral_address_t); 80 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RB ," in_READ_UNIT_IN_READ_RB ",Tcontrol_t ); 81 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB ," in_READ_UNIT_IN_NUM_REG_RB ",Tgeneral_address_t); 82 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RC ," in_READ_UNIT_IN_READ_RC ",Tcontrol_t ); 83 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC ," in_READ_UNIT_IN_NUM_REG_RC ",Tspecial_address_t); 84 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_WRITE_RD ," in_READ_UNIT_IN_WRITE_RD ",Tcontrol_t ); 85 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD ," in_READ_UNIT_IN_NUM_REG_RD ",Tgeneral_address_t); 86 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_WRITE_RE ," in_READ_UNIT_IN_WRITE_RE ",Tcontrol_t ); 87 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE ," in_READ_UNIT_IN_NUM_REG_RE ",Tspecial_address_t); 88 88 ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_VAL ,"out_READ_UNIT_OUT_VAL ",Tcontrol_t ,_param->_nb_inst_retire); 89 89 ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_ACK ," in_READ_UNIT_OUT_ACK ",Tcontrol_t ,_param->_nb_inst_retire); … … 146 146 (*(_Read_unit->in_NRESET)) (*(in_NRESET)); 147 147 148 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_VAL );149 INSTANCE _SC_SIGNAL(_Read_unit,out_READ_UNIT_IN_ACK );148 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_VAL ); 149 INSTANCE0_SC_SIGNAL(_Read_unit,out_READ_UNIT_IN_ACK ); 150 150 if (_param->_have_port_context_id) 151 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_CONTEXT_ID );151 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_CONTEXT_ID ); 152 152 if (_param->_have_port_front_end_id) 153 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_FRONT_END_ID );153 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_FRONT_END_ID ); 154 154 if (_param->_have_port_ooo_engine_id) 155 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OOO_ENGINE_ID );155 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OOO_ENGINE_ID ); 156 156 if (_param->_have_port_rob_ptr) 157 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_PACKET_ID );158 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OPERATION );159 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_TYPE );160 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE );157 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_PACKET_ID ); 158 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OPERATION ); 159 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_TYPE ); 160 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ); 161 161 if (_param->_have_port_load_queue_ptr) 162 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE );163 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_HAS_IMMEDIAT );164 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_IMMEDIAT );165 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RA );166 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RA );167 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RB );168 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RB );169 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RC );170 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RC );171 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RD );172 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RD );173 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RE );174 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RE );162 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ); 163 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_HAS_IMMEDIAT ); 164 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_IMMEDIAT ); 165 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RA ); 166 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RA ); 167 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RB ); 168 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RB ); 169 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RC ); 170 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RC ); 171 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RD ); 172 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RD ); 173 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RE ); 174 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RE ); 175 175 INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_VAL ,_param->_nb_inst_retire); 176 176 INSTANCE1_SC_SIGNAL(_Read_unit, in_READ_UNIT_OUT_ACK ,_param->_nb_inst_retire); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp
r97 r112 57 57 // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 58 { 59 ALLOC_INTERFACE("read_unit_in", IN, WEST, _("Enter of new operation")); 60 61 ALLOC_VALACK_IN ( in_READ_UNIT_IN_VAL,VAL); 62 ALLOC_VALACK_OUT (out_READ_UNIT_IN_ACK,ACK); 63 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 64 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id); 66 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 69 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 70 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 71 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); 72 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data); 73 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RA ,"read_ra" ,Tcontrol_t ,1); 74 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RB ,"read_rb" ,Tcontrol_t ,1); 76 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 77 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RC ,"read_rc" ,Tcontrol_t ,1); 78 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 79 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 80 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 81 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 82 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 59 ALLOC0_INTERFACE_BEGIN("read_unit_in", IN, WEST, _("Enter of new operation")); 60 61 ALLOC0_VALACK_IN ( in_READ_UNIT_IN_VAL,VAL); 62 ALLOC0_VALACK_OUT (out_READ_UNIT_IN_ACK,ACK); 63 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 64 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id); 66 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 69 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 70 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 71 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); 72 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data); 73 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RA ,"read_ra" ,Tcontrol_t ,1); 74 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RB ,"read_rb" ,Tcontrol_t ,1); 76 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 77 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RC ,"read_rc" ,Tcontrol_t ,1); 78 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 79 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 80 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 81 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 82 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 83 84 ALLOC0_INTERFACE_END(); 83 85 } 84 86 85 87 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 88 { 87 ALLOC1_INTERFACE ("read_unit_out", OUT, EAST, _("Output of operation. All operand is valid."), _param->_nb_inst_retire);89 ALLOC1_INTERFACE_BEGIN("read_unit_out", OUT, EAST, _("Output of operation. All operand is valid."), _param->_nb_inst_retire); 88 90 89 91 ALLOC1_VALACK_OUT (out_READ_UNIT_OUT_VAL,VAL); … … 106 108 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 107 109 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 110 111 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 108 112 } 109 113 110 114 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 115 { 112 ALLOC1_INTERFACE ("gpr_read", OUT, SOUTH, _("Read port."), _param->_nb_gpr_read);116 ALLOC1_INTERFACE_BEGIN("gpr_read", OUT, SOUTH, _("Read port."), _param->_nb_gpr_read); 113 117 114 118 ALLOC1_VALACK_OUT (out_GPR_READ_VAL,VAL); … … 118 122 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 119 123 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 124 125 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 120 126 } 121 127 122 128 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 123 129 { 124 ALLOC1_INTERFACE ("spr_read", OUT, SOUTH, _("Read port."), _param->_nb_spr_read);130 ALLOC1_INTERFACE_BEGIN("spr_read", OUT, SOUTH, _("Read port."), _param->_nb_spr_read); 125 131 126 132 ALLOC1_VALACK_OUT (out_SPR_READ_VAL,VAL); … … 130 136 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data ); 131 137 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 138 139 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 132 140 } 133 141 134 142 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 135 143 { 136 ALLOC1_INTERFACE ("gpr_write", IN , SOUTH, _("Write port."), _param->_nb_gpr_write);144 ALLOC1_INTERFACE_BEGIN("gpr_write", IN , SOUTH, _("Write port."), _param->_nb_gpr_write); 137 145 138 146 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL,VAL); … … 140 148 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 141 149 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 150 151 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 142 152 } 143 153 144 154 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 145 155 { 146 ALLOC1_INTERFACE ("spr_write", IN , SOUTH, _("Write port."), _param->_nb_spr_write);156 ALLOC1_INTERFACE_BEGIN("spr_write", IN , SOUTH, _("Write port."), _param->_nb_spr_write); 147 157 148 158 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL,VAL); … … 150 160 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 151 161 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 162 163 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 152 164 } 153 165 154 166 // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 167 { 156 ALLOC1_INTERFACE ("bypass_write", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_write);168 ALLOC1_INTERFACE_BEGIN("bypass_write", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_write); 157 169 158 170 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); … … 163 175 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 164 176 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data ); 177 178 ALLOC1_INTERFACE_END(_param->_nb_bypass_write); 165 179 } 166 180 167 181 // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 168 182 { 169 ALLOC1_INTERFACE ("bypass_memory", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_memory);183 ALLOC1_INTERFACE_BEGIN("bypass_memory", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_memory); 170 184 171 185 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_VAL ,"val" ,Tcontrol_t ,1); … … 173 187 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 174 188 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 189 190 ALLOC1_INTERFACE_END(_param->_nb_bypass_memory); 175 191 } 176 192 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 28 29 delete in_NRESET; 29 30 30 // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 delete in_READ_UNIT_IN_VAL ; 32 delete out_READ_UNIT_IN_ACK ; 33 if (_param->_have_port_context_id) 34 delete in_READ_UNIT_IN_CONTEXT_ID ; 35 if (_param->_have_port_front_end_id) 36 delete in_READ_UNIT_IN_FRONT_END_ID ; 37 if (_param->_have_port_ooo_engine_id) 38 delete in_READ_UNIT_IN_OOO_ENGINE_ID ; 39 if (_param->_have_port_rob_ptr) 40 delete in_READ_UNIT_IN_PACKET_ID ; 41 delete in_READ_UNIT_IN_OPERATION ; 42 delete in_READ_UNIT_IN_TYPE ; 43 delete in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE; 44 if (_param->_have_port_load_queue_ptr) 45 delete in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ; 46 delete in_READ_UNIT_IN_HAS_IMMEDIAT ; 47 delete in_READ_UNIT_IN_IMMEDIAT ; 48 delete in_READ_UNIT_IN_READ_RA ; 49 delete in_READ_UNIT_IN_NUM_REG_RA ; 50 delete in_READ_UNIT_IN_READ_RB ; 51 delete in_READ_UNIT_IN_NUM_REG_RB ; 52 delete in_READ_UNIT_IN_READ_RC ; 53 delete in_READ_UNIT_IN_NUM_REG_RC ; 54 delete in_READ_UNIT_IN_WRITE_RD ; 55 delete in_READ_UNIT_IN_NUM_REG_RD ; 56 delete in_READ_UNIT_IN_WRITE_RE ; 57 delete in_READ_UNIT_IN_NUM_REG_RE ; 31 DELETE0_SIGNAL( in_READ_UNIT_IN_VAL ,1); 32 DELETE0_SIGNAL(out_READ_UNIT_IN_ACK ,1); 33 DELETE0_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID ,_param->_size_context_id ); 34 DELETE0_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID ,_param->_size_front_end_id ); 35 DELETE0_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id); 36 DELETE0_SIGNAL( in_READ_UNIT_IN_PACKET_ID ,_param->_size_rob_ptr ); 37 DELETE0_SIGNAL( in_READ_UNIT_IN_OPERATION ,_param->_size_operation ); 38 DELETE0_SIGNAL( in_READ_UNIT_IN_TYPE ,_param->_size_type ); 39 DELETE0_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr); 40 DELETE0_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr); 41 DELETE0_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT ,1); 42 DELETE0_SIGNAL( in_READ_UNIT_IN_IMMEDIAT ,_param->_size_general_data); 43 DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RA ,1); 44 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA ,_param->_size_general_register); 45 DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RB ,1); 46 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB ,_param->_size_general_register); 47 DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RC ,1); 48 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC ,_param->_size_special_register); 49 DELETE0_SIGNAL( in_READ_UNIT_IN_WRITE_RD ,1); 50 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD ,_param->_size_general_register); 51 DELETE0_SIGNAL( in_READ_UNIT_IN_WRITE_RE ,1); 52 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE ,_param->_size_special_register); 58 53 59 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 delete [] out_READ_UNIT_OUT_VAL ; 61 delete [] in_READ_UNIT_OUT_ACK ; 62 if (_param->_have_port_context_id) 63 delete [] out_READ_UNIT_OUT_CONTEXT_ID ; 64 if (_param->_have_port_front_end_id) 65 delete [] out_READ_UNIT_OUT_FRONT_END_ID ; 66 if (_param->_have_port_ooo_engine_id) 67 delete [] out_READ_UNIT_OUT_OOO_ENGINE_ID ; 68 if (_param->_have_port_rob_ptr) 69 delete [] out_READ_UNIT_OUT_PACKET_ID ; 70 delete [] out_READ_UNIT_OUT_OPERATION ; 71 delete [] out_READ_UNIT_OUT_TYPE ; 72 delete [] out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE; 73 if (_param->_have_port_load_queue_ptr) 74 delete [] out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ; 75 delete [] out_READ_UNIT_OUT_HAS_IMMEDIAT ; 76 delete [] out_READ_UNIT_OUT_IMMEDIAT ; 77 delete [] out_READ_UNIT_OUT_DATA_RA ; 78 delete [] out_READ_UNIT_OUT_DATA_RB ; 79 delete [] out_READ_UNIT_OUT_DATA_RC ; 80 delete [] out_READ_UNIT_OUT_WRITE_RD ; 81 delete [] out_READ_UNIT_OUT_NUM_REG_RD ; 82 delete [] out_READ_UNIT_OUT_WRITE_RE ; 83 delete [] out_READ_UNIT_OUT_NUM_REG_RE ; 54 DELETE1_SIGNAL(out_READ_UNIT_OUT_VAL ,_param->_nb_inst_retire,1); 55 DELETE1_SIGNAL( in_READ_UNIT_OUT_ACK ,_param->_nb_inst_retire,1); 56 DELETE1_SIGNAL(out_READ_UNIT_OUT_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id ); 57 DELETE1_SIGNAL(out_READ_UNIT_OUT_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id ); 58 DELETE1_SIGNAL(out_READ_UNIT_OUT_OOO_ENGINE_ID ,_param->_nb_inst_retire,_param->_size_ooo_engine_id ); 59 DELETE1_SIGNAL(out_READ_UNIT_OUT_PACKET_ID ,_param->_nb_inst_retire,_param->_size_rob_ptr ); 60 DELETE1_SIGNAL(out_READ_UNIT_OUT_OPERATION ,_param->_nb_inst_retire,_param->_size_operation ); 61 DELETE1_SIGNAL(out_READ_UNIT_OUT_TYPE ,_param->_nb_inst_retire,_param->_size_type ); 62 DELETE1_SIGNAL(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr); 63 DELETE1_SIGNAL(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr); 64 DELETE1_SIGNAL(out_READ_UNIT_OUT_HAS_IMMEDIAT ,_param->_nb_inst_retire,1 ); 65 DELETE1_SIGNAL(out_READ_UNIT_OUT_IMMEDIAT ,_param->_nb_inst_retire,_param->_size_general_data ); 66 DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RA ,_param->_nb_inst_retire,_param->_size_general_data ); 67 DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RB ,_param->_nb_inst_retire,_param->_size_general_data ); 68 DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RC ,_param->_nb_inst_retire,_param->_size_special_data ); 69 DELETE1_SIGNAL(out_READ_UNIT_OUT_WRITE_RD ,_param->_nb_inst_retire,1 ); 70 DELETE1_SIGNAL(out_READ_UNIT_OUT_NUM_REG_RD ,_param->_nb_inst_retire,_param->_size_general_register); 71 DELETE1_SIGNAL(out_READ_UNIT_OUT_WRITE_RE ,_param->_nb_inst_retire,1 ); 72 DELETE1_SIGNAL(out_READ_UNIT_OUT_NUM_REG_RE ,_param->_nb_inst_retire,_param->_size_special_register); 84 73 85 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 delete [] out_GPR_READ_VAL ; 87 delete [] in_GPR_READ_ACK ; 88 if (_param->_have_port_ooo_engine_id) 89 delete [] out_GPR_READ_OOO_ENGINE_ID; 90 delete [] out_GPR_READ_NUM_REG ; 91 delete [] in_GPR_READ_DATA ; 92 delete [] in_GPR_READ_DATA_VAL ; 74 DELETE1_SIGNAL(out_GPR_READ_VAL , _param->_nb_gpr_read,1); 75 DELETE1_SIGNAL( in_GPR_READ_ACK , _param->_nb_gpr_read,1); 76 DELETE1_SIGNAL(out_GPR_READ_OOO_ENGINE_ID, _param->_nb_gpr_read,_param->_size_ooo_engine_id ); 77 DELETE1_SIGNAL(out_GPR_READ_NUM_REG , _param->_nb_gpr_read,_param->_size_general_register); 78 DELETE1_SIGNAL( in_GPR_READ_DATA , _param->_nb_gpr_read,_param->_size_general_data ); 79 DELETE1_SIGNAL( in_GPR_READ_DATA_VAL , _param->_nb_gpr_read,1); 93 80 94 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 95 delete [] out_SPR_READ_VAL ; 96 delete [] in_SPR_READ_ACK ; 97 if (_param->_have_port_ooo_engine_id) 98 delete [] out_SPR_READ_OOO_ENGINE_ID; 99 delete [] out_SPR_READ_NUM_REG ; 100 delete [] in_SPR_READ_DATA ; 101 delete [] in_SPR_READ_DATA_VAL ; 81 DELETE1_SIGNAL(out_SPR_READ_VAL , _param->_nb_spr_read,1); 82 DELETE1_SIGNAL( in_SPR_READ_ACK , _param->_nb_spr_read,1); 83 DELETE1_SIGNAL(out_SPR_READ_OOO_ENGINE_ID, _param->_nb_spr_read,_param->_size_ooo_engine_id ); 84 DELETE1_SIGNAL(out_SPR_READ_NUM_REG , _param->_nb_spr_read,_param->_size_special_register); 85 DELETE1_SIGNAL( in_SPR_READ_DATA , _param->_nb_spr_read,_param->_size_special_data ); 86 DELETE1_SIGNAL( in_SPR_READ_DATA_VAL , _param->_nb_spr_read,1); 102 87 103 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 104 delete [] in_GPR_WRITE_VAL ; 105 if (_param->_have_port_ooo_engine_id) 106 delete [] in_GPR_WRITE_OOO_ENGINE_ID; 107 delete [] in_GPR_WRITE_NUM_REG ; 108 delete [] in_GPR_WRITE_DATA ; 88 DELETE1_SIGNAL( in_GPR_WRITE_VAL , _param->_nb_gpr_write,1); 89 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID, _param->_nb_gpr_write,_param->_size_ooo_engine_id ); 90 DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG , _param->_nb_gpr_write,_param->_size_general_register); 91 DELETE1_SIGNAL( in_GPR_WRITE_DATA , _param->_nb_gpr_write,_param->_size_general_data); 109 92 110 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 delete [] in_SPR_WRITE_VAL ; 112 if (_param->_have_port_ooo_engine_id) 113 delete [] in_SPR_WRITE_OOO_ENGINE_ID; 114 delete [] in_SPR_WRITE_NUM_REG ; 115 delete [] in_SPR_WRITE_DATA ; 93 DELETE1_SIGNAL( in_SPR_WRITE_VAL , _param->_nb_spr_write,1); 94 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID, _param->_nb_spr_write,_param->_size_ooo_engine_id ); 95 DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG , _param->_nb_spr_write,_param->_size_special_register); 96 DELETE1_SIGNAL( in_SPR_WRITE_DATA , _param->_nb_spr_write,_param->_size_special_data); 116 97 117 // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 if (_param->_have_port_ooo_engine_id) 119 delete [] in_BYPASS_WRITE_OOO_ENGINE_ID ; 120 delete [] in_BYPASS_WRITE_GPR_VAL ; 121 delete [] in_BYPASS_WRITE_GPR_NUM_REG ; 122 delete [] in_BYPASS_WRITE_GPR_DATA ; 123 delete [] in_BYPASS_WRITE_SPR_VAL ; 124 delete [] in_BYPASS_WRITE_SPR_NUM_REG ; 125 delete [] in_BYPASS_WRITE_SPR_DATA ; 98 DELETE1_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID, _param->_nb_bypass_write,_param->_size_ooo_engine_id ); 99 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_VAL , _param->_nb_bypass_write,1); 100 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG , _param->_nb_bypass_write,_param->_size_general_register); 101 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_DATA , _param->_nb_bypass_write,_param->_size_general_data ); 102 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_VAL , _param->_nb_bypass_write,1); 103 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG , _param->_nb_bypass_write,_param->_size_special_register); 104 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_DATA , _param->_nb_bypass_write,_param->_size_special_data ); 126 105 127 // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 128 delete [] in_BYPASS_MEMORY_VAL ; 129 if (_param->_have_port_ooo_engine_id) 130 delete [] in_BYPASS_MEMORY_OOO_ENGINE_ID; 131 delete [] in_BYPASS_MEMORY_NUM_REG ; 132 delete [] in_BYPASS_MEMORY_DATA ; 106 DELETE1_SIGNAL( in_BYPASS_MEMORY_VAL , _param->_nb_bypass_memory,1); 107 DELETE1_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID, _param->_nb_bypass_memory,_param->_size_ooo_engine_id ); 108 DELETE1_SIGNAL( in_BYPASS_MEMORY_NUM_REG , _param->_nb_bypass_memory,_param->_size_general_register); 109 DELETE1_SIGNAL( in_BYPASS_MEMORY_DATA , _param->_nb_bypass_memory,_param->_size_general_data ); 133 110 } 134 111 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/src/test.cpp
r98 r112 112 112 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 113 113 114 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_VAL ," in_EXECUTE_QUEUE_IN_VAL" , Tcontrol_t );115 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_IN_ACK ,"out_EXECUTE_QUEUE_IN_ACK" , Tcontrol_t );116 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_CONTEXT_ID ," in_EXECUTE_QUEUE_IN_CONTEXT_ID" , Tcontext_t );117 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_FRONT_END_ID ," in_EXECUTE_QUEUE_IN_FRONT_END_ID" , Tcontext_t );118 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ," in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t );119 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_PACKET_ID ," in_EXECUTE_QUEUE_IN_PACKET_ID" , Tpacket_t );120 //ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_OPERATION ," in_EXECUTE_QUEUE_IN_OPERATION" , Toperation_t );121 //ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_TYPE ," in_EXECUTE_QUEUE_IN_TYPE" , Ttype_t );122 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_FLAGS ," in_EXECUTE_QUEUE_IN_FLAGS" , Tspecial_data_t );123 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_EXCEPTION ," in_EXECUTE_QUEUE_IN_EXCEPTION" , Texception_t );124 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ," in_EXECUTE_QUEUE_IN_NO_SEQUENCE" , Tcontrol_t );125 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_ADDRESS ," in_EXECUTE_QUEUE_IN_ADDRESS" , Taddress_t );126 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_DATA ," in_EXECUTE_QUEUE_IN_DATA" , Tgeneral_data_t );127 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_VAL ,"out_EXECUTE_QUEUE_OUT_VAL" , Tcontrol_t );128 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_OUT_ACK ," in_EXECUTE_QUEUE_OUT_ACK" , Tcontrol_t );129 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID" , Tcontext_t );130 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t );131 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t );132 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_PACKET_ID ,"out_EXECUTE_QUEUE_OUT_PACKET_ID" , Tpacket_t );133 //ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OPERATION ,"out_EXECUTE_QUEUE_OUT_OPERATION" , Toperation_t );134 //ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_TYPE ,"out_EXECUTE_QUEUE_OUT_TYPE" , Ttype_t );135 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FLAGS ,"out_EXECUTE_QUEUE_OUT_FLAGS" , Tspecial_data_t );136 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_EXCEPTION ,"out_EXECUTE_QUEUE_OUT_EXCEPTION" , Texception_t );137 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE" , Tcontrol_t );138 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_ADDRESS ,"out_EXECUTE_QUEUE_OUT_ADDRESS" , Taddress_t );139 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_DATA ,"out_EXECUTE_QUEUE_OUT_DATA" , Tgeneral_data_t );114 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_VAL ," in_EXECUTE_QUEUE_IN_VAL" , Tcontrol_t ); 115 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_IN_ACK ,"out_EXECUTE_QUEUE_IN_ACK" , Tcontrol_t ); 116 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_CONTEXT_ID ," in_EXECUTE_QUEUE_IN_CONTEXT_ID" , Tcontext_t ); 117 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_FRONT_END_ID ," in_EXECUTE_QUEUE_IN_FRONT_END_ID" , Tcontext_t ); 118 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ," in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t ); 119 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_PACKET_ID ," in_EXECUTE_QUEUE_IN_PACKET_ID" , Tpacket_t ); 120 //ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_OPERATION ," in_EXECUTE_QUEUE_IN_OPERATION" , Toperation_t ); 121 //ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_TYPE ," in_EXECUTE_QUEUE_IN_TYPE" , Ttype_t ); 122 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_FLAGS ," in_EXECUTE_QUEUE_IN_FLAGS" , Tspecial_data_t ); 123 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_EXCEPTION ," in_EXECUTE_QUEUE_IN_EXCEPTION" , Texception_t ); 124 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ," in_EXECUTE_QUEUE_IN_NO_SEQUENCE" , Tcontrol_t ); 125 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_ADDRESS ," in_EXECUTE_QUEUE_IN_ADDRESS" , Taddress_t ); 126 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_DATA ," in_EXECUTE_QUEUE_IN_DATA" , Tgeneral_data_t ); 127 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_VAL ,"out_EXECUTE_QUEUE_OUT_VAL" , Tcontrol_t ); 128 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_OUT_ACK ," in_EXECUTE_QUEUE_OUT_ACK" , Tcontrol_t ); 129 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID" , Tcontext_t ); 130 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t ); 131 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t ); 132 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_PACKET_ID ,"out_EXECUTE_QUEUE_OUT_PACKET_ID" , Tpacket_t ); 133 //ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OPERATION ,"out_EXECUTE_QUEUE_OUT_OPERATION" , Toperation_t ); 134 //ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_TYPE ,"out_EXECUTE_QUEUE_OUT_TYPE" , Ttype_t ); 135 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FLAGS ,"out_EXECUTE_QUEUE_OUT_FLAGS" , Tspecial_data_t ); 136 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_EXCEPTION ,"out_EXECUTE_QUEUE_OUT_EXCEPTION" , Texception_t ); 137 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE" , Tcontrol_t ); 138 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_ADDRESS ,"out_EXECUTE_QUEUE_OUT_ADDRESS" , Taddress_t ); 139 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_DATA ,"out_EXECUTE_QUEUE_OUT_DATA" , Tgeneral_data_t ); 140 140 141 141 … … 149 149 (*(_Execute_queue->in_NRESET)) (*(in_NRESET)); 150 150 151 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_VAL );152 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_IN_ACK );151 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_VAL ); 152 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_IN_ACK ); 153 153 if (_param->_have_port_context_id) 154 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_CONTEXT_ID );154 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_CONTEXT_ID ); 155 155 if (_param->_have_port_front_end_id) 156 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_FRONT_END_ID );156 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_FRONT_END_ID ); 157 157 if (_param->_have_port_ooo_engine_id) 158 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID );158 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ); 159 159 if (_param->_have_port_rob_ptr) 160 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_PACKET_ID );161 //INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_OPERATION );162 //INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_TYPE );163 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_FLAGS );164 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_EXCEPTION );165 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_NO_SEQUENCE );166 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_ADDRESS );167 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_DATA );168 169 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_VAL );170 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_OUT_ACK );160 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_PACKET_ID ); 161 //INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_OPERATION ); 162 //INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_TYPE ); 163 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_FLAGS ); 164 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_EXCEPTION ); 165 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_NO_SEQUENCE ); 166 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_ADDRESS ); 167 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_DATA ); 168 169 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_VAL ); 170 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_OUT_ACK ); 171 171 if (_param->_have_port_context_id) 172 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_CONTEXT_ID );172 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_CONTEXT_ID ); 173 173 if (_param->_have_port_front_end_id) 174 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_FRONT_END_ID );174 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_FRONT_END_ID ); 175 175 if (_param->_have_port_ooo_engine_id) 176 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID);176 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID); 177 177 if (_param->_have_port_rob_ptr) 178 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_PACKET_ID );179 //INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_OPERATION );180 //INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_TYPE );181 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_FLAGS );182 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_EXCEPTION );183 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_NO_SEQUENCE );184 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_ADDRESS );185 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_DATA );178 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_PACKET_ID ); 179 //INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_OPERATION ); 180 //INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_TYPE ); 181 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_FLAGS ); 182 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_EXCEPTION ); 183 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ); 184 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_ADDRESS ); 185 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_DATA ); 186 186 187 187 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_allocation.cpp
r101 r112 50 50 // -----[ Interface "execute_queue_in" ]-------------------------------- 51 51 { 52 ALLOC _INTERFACE("execute_queue_in", IN, WEST, "Input of execute_queue");52 ALLOC0_INTERFACE_BEGIN("execute_queue_in", IN, WEST, "Input of execute_queue"); 53 53 54 ALLOC_VALACK_IN ( in_EXECUTE_QUEUE_IN_VAL,VAL); 55 ALLOC_VALACK_OUT(out_EXECUTE_QUEUE_IN_ACK,ACK); 56 if(_param->_have_port_context_id) 57 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 58 if(_param->_have_port_front_end_id) 59 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 60 if(_param->_have_port_ooo_engine_id) 61 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 62 if(_param->_have_port_rob_ptr) 63 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 64 // ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 65 // ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 66 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FLAGS ,"flags" ,Tspecial_data_t ,_param->_size_special_data ); 67 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 68 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 69 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 70 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 54 ALLOC0_VALACK_IN ( in_EXECUTE_QUEUE_IN_VAL,VAL); 55 ALLOC0_VALACK_OUT(out_EXECUTE_QUEUE_IN_ACK,ACK); 56 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 57 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 58 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 59 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 60 // ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 61 // ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 62 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FLAGS ,"flags" ,Tspecial_data_t ,_param->_size_special_data ); 63 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 64 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 65 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 66 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 67 68 ALLOC0_INTERFACE_END(); 71 69 } 72 70 73 71 // -----[ Interface "execute_queue_out" ]------------------------------- 74 72 { 75 ALLOC _INTERFACE("execute_queue_out", OUT, EAST, "Output of execute_queue");73 ALLOC0_INTERFACE_BEGIN("execute_queue_out", OUT, EAST, "Output of execute_queue"); 76 74 77 ALLOC_VALACK_OUT(out_EXECUTE_QUEUE_OUT_VAL,VAL); 78 ALLOC_VALACK_IN ( in_EXECUTE_QUEUE_OUT_ACK,ACK); 79 if(_param->_have_port_context_id) 80 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 81 if(_param->_have_port_front_end_id) 82 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 83 if(_param->_have_port_ooo_engine_id) 84 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 85 if(_param->_have_port_rob_ptr) 86 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 87 // ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 88 // ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 89 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 90 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 91 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 92 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 93 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 75 ALLOC0_VALACK_OUT(out_EXECUTE_QUEUE_OUT_VAL,VAL); 76 ALLOC0_VALACK_IN ( in_EXECUTE_QUEUE_OUT_ACK,ACK); 77 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 78 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 79 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 80 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 81 // ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 82 // ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 83 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 84 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 85 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 86 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 87 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 88 89 ALLOC0_INTERFACE_END(); 94 90 } 95 91 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_deallocation.cpp
r101 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 // -----[ Interface "execute_queue_in" ]-------------------------------- 32 delete in_EXECUTE_QUEUE_IN_VAL ; 33 delete out_EXECUTE_QUEUE_IN_ACK ; 34 if (_param->_have_port_context_id) 35 delete in_EXECUTE_QUEUE_IN_CONTEXT_ID ; 36 if (_param->_have_port_front_end_id) 37 delete in_EXECUTE_QUEUE_IN_FRONT_END_ID ; 38 if (_param->_have_port_ooo_engine_id) 39 delete in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID; 40 if (_param->_have_port_rob_ptr) 41 delete in_EXECUTE_QUEUE_IN_PACKET_ID ; 42 // delete in_EXECUTE_QUEUE_IN_OPERATION ; 43 // delete in_EXECUTE_QUEUE_IN_TYPE ; 44 delete in_EXECUTE_QUEUE_IN_FLAGS ; 45 delete in_EXECUTE_QUEUE_IN_EXCEPTION ; 46 delete in_EXECUTE_QUEUE_IN_NO_SEQUENCE ; 47 delete in_EXECUTE_QUEUE_IN_ADDRESS ; 48 delete in_EXECUTE_QUEUE_IN_DATA ; 49 50 // -----[ Interface "execute_queue_out" ]------------------------------- 51 delete out_EXECUTE_QUEUE_OUT_VAL ; 52 delete in_EXECUTE_QUEUE_OUT_ACK ; 53 if (_param->_have_port_context_id) 54 delete out_EXECUTE_QUEUE_OUT_CONTEXT_ID ; 55 if (_param->_have_port_front_end_id) 56 delete out_EXECUTE_QUEUE_OUT_FRONT_END_ID ; 57 if (_param->_have_port_ooo_engine_id) 58 delete out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID; 59 if (_param->_have_port_rob_ptr) 60 delete out_EXECUTE_QUEUE_OUT_PACKET_ID ; 61 // delete out_EXECUTE_QUEUE_OUT_OPERATION ; 62 // delete out_EXECUTE_QUEUE_OUT_TYPE ; 63 delete out_EXECUTE_QUEUE_OUT_FLAGS ; 64 delete out_EXECUTE_QUEUE_OUT_EXCEPTION ; 65 delete out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ; 66 delete out_EXECUTE_QUEUE_OUT_ADDRESS ; 67 delete out_EXECUTE_QUEUE_OUT_DATA ; 32 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_VAL ,1); 33 DELETE0_SIGNAL(out_EXECUTE_QUEUE_IN_ACK ,1); 34 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_CONTEXT_ID ,_param->_size_context_id ); 35 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,_param->_size_front_end_id ); 36 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 37 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_PACKET_ID ,_param->_size_rob_ptr ); 38 // DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_OPERATION ,_param->_size_operation ); 39 // DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_TYPE ,_param->_size_type ); 40 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_FLAGS ,_param->_size_special_data ); 41 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_EXCEPTION ,_param->_size_exception ); 42 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ,1 ); 43 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_ADDRESS ,_param->_size_instruction_address); 44 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_DATA ,_param->_size_general_data ); 45 46 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_VAL ,1); 47 DELETE0_SIGNAL( in_EXECUTE_QUEUE_OUT_ACK ,1); 48 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,_param->_size_context_id ); 49 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 50 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,_param->_size_ooo_engine_id); 51 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_PACKET_ID ,_param->_size_rob_ptr ); 52 // DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_OPERATION ,_param->_size_operation ); 53 // DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_TYPE ,_param->_size_type ); 54 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_FLAGS ,_param->_size_special_data ); 55 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_EXCEPTION ,_param->_size_exception ); 56 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,1 ); 57 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_ADDRESS ,_param->_size_instruction_address); 58 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_DATA ,_param->_size_general_data ); 68 59 } 69 60 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/test.cpp
r97 r112 126 126 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 127 127 128 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_VAL ," in_WRITE_UNIT_IN_VAL" , Tcontrol_t );129 ALLOC _SC_SIGNAL(out_WRITE_UNIT_IN_ACK ,"out_WRITE_UNIT_IN_ACK" , Tcontrol_t );130 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_CONTEXT_ID ," in_WRITE_UNIT_IN_CONTEXT_ID" , Tcontext_t );131 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_FRONT_END_ID ," in_WRITE_UNIT_IN_FRONT_END_ID" , Tcontext_t );132 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_OOO_ENGINE_ID ," in_WRITE_UNIT_IN_OOO_ENGINE_ID" , Tcontext_t );133 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_PACKET_ID ," in_WRITE_UNIT_IN_PACKET_ID" , Tpacket_t );134 //ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_OPERATION ," in_WRITE_UNIT_IN_OPERATION" , Toperation_t );135 //ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_TYPE ," in_WRITE_UNIT_IN_TYPE" , Ttype_t );136 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_WRITE_RD ," in_WRITE_UNIT_IN_WRITE_RD" , Tcontrol_t );137 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RD ," in_WRITE_UNIT_IN_NUM_REG_RD" , Tgeneral_address_t);138 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_DATA_RD ," in_WRITE_UNIT_IN_DATA_RD" , Tgeneral_data_t );139 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_WRITE_RE ," in_WRITE_UNIT_IN_WRITE_RE" , Tcontrol_t );140 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RE ," in_WRITE_UNIT_IN_NUM_REG_RE" , Tspecial_address_t);141 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_DATA_RE ," in_WRITE_UNIT_IN_DATA_RE" , Tspecial_data_t );142 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_EXCEPTION ," in_WRITE_UNIT_IN_EXCEPTION" , Texception_t );143 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_NO_SEQUENCE ," in_WRITE_UNIT_IN_NO_SEQUENCE" , Tcontrol_t );144 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_ADDRESS ," in_WRITE_UNIT_IN_ADDRESS" , Taddress_t );145 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_VAL ,"out_WRITE_UNIT_OUT_VAL" , Tcontrol_t );146 ALLOC _SC_SIGNAL( in_WRITE_UNIT_OUT_ACK ," in_WRITE_UNIT_OUT_ACK" , Tcontrol_t );147 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_CONTEXT_ID ,"out_WRITE_UNIT_OUT_CONTEXT_ID" , Tcontext_t );148 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_FRONT_END_ID ,"out_WRITE_UNIT_OUT_FRONT_END_ID" , Tcontext_t );149 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID", Tcontext_t );150 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_PACKET_ID ,"out_WRITE_UNIT_OUT_PACKET_ID" , Tpacket_t );151 //ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_OPERATION ,"out_WRITE_UNIT_OUT_OPERATION" , Toperation_t );152 //ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_TYPE ,"out_WRITE_UNIT_OUT_TYPE" , Ttype_t );153 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_FLAGS ,"out_WRITE_UNIT_OUT_FLAGS" , Tspecial_data_t );154 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_EXCEPTION ,"out_WRITE_UNIT_OUT_EXCEPTION" , Texception_t );155 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_NO_SEQUENCE ,"out_WRITE_UNIT_OUT_NO_SEQUENCE" , Tcontrol_t );156 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_ADDRESS ,"out_WRITE_UNIT_OUT_ADDRESS" , Taddress_t );157 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_DATA ,"out_WRITE_UNIT_OUT_DATA" , Tgeneral_data_t );128 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_VAL ," in_WRITE_UNIT_IN_VAL" , Tcontrol_t ); 129 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_IN_ACK ,"out_WRITE_UNIT_IN_ACK" , Tcontrol_t ); 130 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_CONTEXT_ID ," in_WRITE_UNIT_IN_CONTEXT_ID" , Tcontext_t ); 131 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_FRONT_END_ID ," in_WRITE_UNIT_IN_FRONT_END_ID" , Tcontext_t ); 132 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_OOO_ENGINE_ID ," in_WRITE_UNIT_IN_OOO_ENGINE_ID" , Tcontext_t ); 133 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_PACKET_ID ," in_WRITE_UNIT_IN_PACKET_ID" , Tpacket_t ); 134 //ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_OPERATION ," in_WRITE_UNIT_IN_OPERATION" , Toperation_t ); 135 //ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_TYPE ," in_WRITE_UNIT_IN_TYPE" , Ttype_t ); 136 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_WRITE_RD ," in_WRITE_UNIT_IN_WRITE_RD" , Tcontrol_t ); 137 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RD ," in_WRITE_UNIT_IN_NUM_REG_RD" , Tgeneral_address_t); 138 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_DATA_RD ," in_WRITE_UNIT_IN_DATA_RD" , Tgeneral_data_t ); 139 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_WRITE_RE ," in_WRITE_UNIT_IN_WRITE_RE" , Tcontrol_t ); 140 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RE ," in_WRITE_UNIT_IN_NUM_REG_RE" , Tspecial_address_t); 141 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_DATA_RE ," in_WRITE_UNIT_IN_DATA_RE" , Tspecial_data_t ); 142 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_EXCEPTION ," in_WRITE_UNIT_IN_EXCEPTION" , Texception_t ); 143 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_NO_SEQUENCE ," in_WRITE_UNIT_IN_NO_SEQUENCE" , Tcontrol_t ); 144 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_ADDRESS ," in_WRITE_UNIT_IN_ADDRESS" , Taddress_t ); 145 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_VAL ,"out_WRITE_UNIT_OUT_VAL" , Tcontrol_t ); 146 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_OUT_ACK ," in_WRITE_UNIT_OUT_ACK" , Tcontrol_t ); 147 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_CONTEXT_ID ,"out_WRITE_UNIT_OUT_CONTEXT_ID" , Tcontext_t ); 148 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_FRONT_END_ID ,"out_WRITE_UNIT_OUT_FRONT_END_ID" , Tcontext_t ); 149 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID", Tcontext_t ); 150 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_PACKET_ID ,"out_WRITE_UNIT_OUT_PACKET_ID" , Tpacket_t ); 151 //ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_OPERATION ,"out_WRITE_UNIT_OUT_OPERATION" , Toperation_t ); 152 //ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_TYPE ,"out_WRITE_UNIT_OUT_TYPE" , Ttype_t ); 153 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_FLAGS ,"out_WRITE_UNIT_OUT_FLAGS" , Tspecial_data_t ); 154 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_EXCEPTION ,"out_WRITE_UNIT_OUT_EXCEPTION" , Texception_t ); 155 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_NO_SEQUENCE ,"out_WRITE_UNIT_OUT_NO_SEQUENCE" , Tcontrol_t ); 156 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_ADDRESS ,"out_WRITE_UNIT_OUT_ADDRESS" , Taddress_t ); 157 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_DATA ,"out_WRITE_UNIT_OUT_DATA" , Tgeneral_data_t ); 158 158 ALLOC1_SC_SIGNAL(out_GPR_WRITE_VAL ,"out_GPR_WRITE_VAL" , Tcontrol_t , _param->_nb_gpr_write); 159 159 ALLOC1_SC_SIGNAL( in_GPR_WRITE_ACK ," in_GPR_WRITE_ACK" , Tcontrol_t , _param->_nb_gpr_write); … … 184 184 (*(_Write_unit->in_NRESET)) (*(in_NRESET)); 185 185 186 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_VAL );187 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_IN_ACK );186 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_VAL ); 187 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_IN_ACK ); 188 188 if (_param->_have_port_context_id) 189 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_CONTEXT_ID );189 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_CONTEXT_ID ); 190 190 if (_param->_have_port_front_end_id) 191 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_FRONT_END_ID );191 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_FRONT_END_ID ); 192 192 if (_param->_have_port_ooo_engine_id) 193 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_OOO_ENGINE_ID );193 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_OOO_ENGINE_ID ); 194 194 if (_param->_have_port_rob_ptr) 195 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_PACKET_ID );196 //INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_OPERATION );197 //INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_TYPE );198 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_WRITE_RD );199 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NUM_REG_RD );200 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_DATA_RD );201 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_WRITE_RE );202 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NUM_REG_RE );203 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_DATA_RE );204 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_EXCEPTION );205 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NO_SEQUENCE );206 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_ADDRESS );207 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_VAL );208 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_OUT_ACK );195 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_PACKET_ID ); 196 //INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_OPERATION ); 197 //INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_TYPE ); 198 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_WRITE_RD ); 199 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NUM_REG_RD ); 200 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_DATA_RD ); 201 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_WRITE_RE ); 202 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NUM_REG_RE ); 203 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_DATA_RE ); 204 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_EXCEPTION ); 205 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NO_SEQUENCE ); 206 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_ADDRESS ); 207 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_VAL ); 208 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_OUT_ACK ); 209 209 if (_param->_have_port_context_id) 210 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_CONTEXT_ID );210 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_CONTEXT_ID ); 211 211 if (_param->_have_port_front_end_id) 212 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_FRONT_END_ID );212 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_FRONT_END_ID ); 213 213 if (_param->_have_port_ooo_engine_id) 214 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_OOO_ENGINE_ID);214 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_OOO_ENGINE_ID); 215 215 if (_param->_have_port_rob_ptr) 216 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_PACKET_ID );217 //INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_OPERATION );218 //INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_TYPE );219 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_FLAGS );220 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_EXCEPTION );221 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_NO_SEQUENCE );222 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_ADDRESS );223 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_DATA );216 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_PACKET_ID ); 217 //INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_OPERATION ); 218 //INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_TYPE ); 219 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_FLAGS ); 220 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_EXCEPTION ); 221 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_NO_SEQUENCE ); 222 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_ADDRESS ); 223 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_DATA ); 224 224 INSTANCE1_SC_SIGNAL(_Write_unit, out_GPR_WRITE_VAL , _param->_nb_gpr_write); 225 225 INSTANCE1_SC_SIGNAL(_Write_unit, in_GPR_WRITE_ACK , _param->_nb_gpr_write); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/test.cpp
r97 r112 125 125 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 126 126 127 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_VAL ," in_WRITE_QUEUE_IN_VAL" , Tcontrol_t );128 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_IN_ACK ,"out_WRITE_QUEUE_IN_ACK" , Tcontrol_t );129 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_CONTEXT_ID ," in_WRITE_QUEUE_IN_CONTEXT_ID" , Tcontext_t );130 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_FRONT_END_ID ," in_WRITE_QUEUE_IN_FRONT_END_ID" , Tcontext_t );131 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_OOO_ENGINE_ID ," in_WRITE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t );132 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_PACKET_ID ," in_WRITE_QUEUE_IN_PACKET_ID" , Tpacket_t );133 //ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_OPERATION ," in_WRITE_QUEUE_IN_OPERATION" , Toperation_t );134 //ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_TYPE ," in_WRITE_QUEUE_IN_TYPE" , Ttype_t );135 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RD ," in_WRITE_QUEUE_IN_WRITE_RD" , Tcontrol_t );136 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RD ," in_WRITE_QUEUE_IN_NUM_REG_RD" , Tgeneral_address_t);137 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_DATA_RD ," in_WRITE_QUEUE_IN_DATA_RD" , Tgeneral_data_t );138 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RE ," in_WRITE_QUEUE_IN_WRITE_RE" , Tcontrol_t );139 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RE ," in_WRITE_QUEUE_IN_NUM_REG_RE" , Tspecial_address_t);140 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_DATA_RE ," in_WRITE_QUEUE_IN_DATA_RE" , Tspecial_data_t );141 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_EXCEPTION ," in_WRITE_QUEUE_IN_EXCEPTION" , Texception_t );142 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_NO_SEQUENCE ," in_WRITE_QUEUE_IN_NO_SEQUENCE" , Tcontrol_t );143 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_ADDRESS ," in_WRITE_QUEUE_IN_ADDRESS" , Taddress_t );144 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_VAL ,"out_WRITE_QUEUE_OUT_VAL" , Tcontrol_t );145 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_OUT_ACK ," in_WRITE_QUEUE_OUT_ACK" , Tcontrol_t );146 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_CONTEXT_ID ,"out_WRITE_QUEUE_OUT_CONTEXT_ID" , Tcontext_t );147 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"out_WRITE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t );148 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"out_WRITE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t );149 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_PACKET_ID ,"out_WRITE_QUEUE_OUT_PACKET_ID" , Tpacket_t );150 //ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_OPERATION ,"out_WRITE_QUEUE_OUT_OPERATION" , Toperation_t );151 //ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_TYPE ,"out_WRITE_QUEUE_OUT_TYPE" , Ttype_t );152 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_FLAGS ,"out_WRITE_QUEUE_OUT_FLAGS" , Tspecial_data_t );153 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_EXCEPTION ,"out_WRITE_QUEUE_OUT_EXCEPTION" , Texception_t );154 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_NO_SEQUENCE ,"out_WRITE_QUEUE_OUT_NO_SEQUENCE" , Tcontrol_t );155 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_ADDRESS ,"out_WRITE_QUEUE_OUT_ADDRESS" , Tgeneral_data_t );156 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_DATA ,"out_WRITE_QUEUE_OUT_DATA" , Taddress_t );127 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_VAL ," in_WRITE_QUEUE_IN_VAL" , Tcontrol_t ); 128 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_IN_ACK ,"out_WRITE_QUEUE_IN_ACK" , Tcontrol_t ); 129 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_CONTEXT_ID ," in_WRITE_QUEUE_IN_CONTEXT_ID" , Tcontext_t ); 130 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_FRONT_END_ID ," in_WRITE_QUEUE_IN_FRONT_END_ID" , Tcontext_t ); 131 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_OOO_ENGINE_ID ," in_WRITE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t ); 132 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_PACKET_ID ," in_WRITE_QUEUE_IN_PACKET_ID" , Tpacket_t ); 133 //ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_OPERATION ," in_WRITE_QUEUE_IN_OPERATION" , Toperation_t ); 134 //ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_TYPE ," in_WRITE_QUEUE_IN_TYPE" , Ttype_t ); 135 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RD ," in_WRITE_QUEUE_IN_WRITE_RD" , Tcontrol_t ); 136 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RD ," in_WRITE_QUEUE_IN_NUM_REG_RD" , Tgeneral_address_t); 137 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_DATA_RD ," in_WRITE_QUEUE_IN_DATA_RD" , Tgeneral_data_t ); 138 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RE ," in_WRITE_QUEUE_IN_WRITE_RE" , Tcontrol_t ); 139 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RE ," in_WRITE_QUEUE_IN_NUM_REG_RE" , Tspecial_address_t); 140 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_DATA_RE ," in_WRITE_QUEUE_IN_DATA_RE" , Tspecial_data_t ); 141 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_EXCEPTION ," in_WRITE_QUEUE_IN_EXCEPTION" , Texception_t ); 142 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_NO_SEQUENCE ," in_WRITE_QUEUE_IN_NO_SEQUENCE" , Tcontrol_t ); 143 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_ADDRESS ," in_WRITE_QUEUE_IN_ADDRESS" , Taddress_t ); 144 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_VAL ,"out_WRITE_QUEUE_OUT_VAL" , Tcontrol_t ); 145 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_OUT_ACK ," in_WRITE_QUEUE_OUT_ACK" , Tcontrol_t ); 146 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_CONTEXT_ID ,"out_WRITE_QUEUE_OUT_CONTEXT_ID" , Tcontext_t ); 147 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"out_WRITE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t ); 148 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"out_WRITE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t ); 149 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_PACKET_ID ,"out_WRITE_QUEUE_OUT_PACKET_ID" , Tpacket_t ); 150 //ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_OPERATION ,"out_WRITE_QUEUE_OUT_OPERATION" , Toperation_t ); 151 //ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_TYPE ,"out_WRITE_QUEUE_OUT_TYPE" , Ttype_t ); 152 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_FLAGS ,"out_WRITE_QUEUE_OUT_FLAGS" , Tspecial_data_t ); 153 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_EXCEPTION ,"out_WRITE_QUEUE_OUT_EXCEPTION" , Texception_t ); 154 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_NO_SEQUENCE ,"out_WRITE_QUEUE_OUT_NO_SEQUENCE" , Tcontrol_t ); 155 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_ADDRESS ,"out_WRITE_QUEUE_OUT_ADDRESS" , Tgeneral_data_t ); 156 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_DATA ,"out_WRITE_QUEUE_OUT_DATA" , Taddress_t ); 157 157 ALLOC1_SC_SIGNAL(out_GPR_WRITE_VAL ,"out_GPR_WRITE_VAL" , Tcontrol_t , _param->_nb_gpr_write); 158 158 ALLOC1_SC_SIGNAL( in_GPR_WRITE_ACK ," in_GPR_WRITE_ACK" , Tcontrol_t , _param->_nb_gpr_write); … … 182 182 (*(_Write_queue->in_NRESET)) (*(in_NRESET)); 183 183 184 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_VAL );185 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_IN_ACK );184 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_VAL ); 185 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_IN_ACK ); 186 186 if (_param->_have_port_context_id) 187 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_CONTEXT_ID );187 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_CONTEXT_ID ); 188 188 if (_param->_have_port_front_end_id) 189 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_FRONT_END_ID );189 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_FRONT_END_ID ); 190 190 if (_param->_have_port_ooo_engine_id) 191 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_OOO_ENGINE_ID );191 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_OOO_ENGINE_ID ); 192 192 if (_param->_have_port_rob_ptr ) 193 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_PACKET_ID );194 //INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_OPERATION );195 //INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_TYPE );196 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_WRITE_RD );197 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NUM_REG_RD );198 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_DATA_RD );199 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_WRITE_RE );200 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NUM_REG_RE );201 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_DATA_RE );202 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_EXCEPTION );203 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NO_SEQUENCE );204 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_ADDRESS );205 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_VAL );206 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_OUT_ACK );193 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_PACKET_ID ); 194 //INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_OPERATION ); 195 //INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_TYPE ); 196 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_WRITE_RD ); 197 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NUM_REG_RD ); 198 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_DATA_RD ); 199 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_WRITE_RE ); 200 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NUM_REG_RE ); 201 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_DATA_RE ); 202 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_EXCEPTION ); 203 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NO_SEQUENCE ); 204 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_ADDRESS ); 205 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_VAL ); 206 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_OUT_ACK ); 207 207 if (_param->_have_port_context_id) 208 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_CONTEXT_ID );208 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_CONTEXT_ID ); 209 209 if (_param->_have_port_front_end_id) 210 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_FRONT_END_ID );210 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_FRONT_END_ID ); 211 211 if (_param->_have_port_ooo_engine_id) 212 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_OOO_ENGINE_ID);212 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_OOO_ENGINE_ID); 213 213 if (_param->_have_port_rob_ptr ) 214 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_PACKET_ID );215 //INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_OPERATION );216 //INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_TYPE );217 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_FLAGS );218 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_EXCEPTION );219 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_NO_SEQUENCE );220 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_ADDRESS );221 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_DATA );214 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_PACKET_ID ); 215 //INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_OPERATION ); 216 //INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_TYPE ); 217 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_FLAGS ); 218 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_EXCEPTION ); 219 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_NO_SEQUENCE ); 220 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_ADDRESS ); 221 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_DATA ); 222 222 INSTANCE1_SC_SIGNAL(_Write_queue, out_GPR_WRITE_VAL , _param->_nb_gpr_write); 223 223 INSTANCE1_SC_SIGNAL(_Write_queue, in_GPR_WRITE_ACK , _param->_nb_gpr_write); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp
r97 r112 51 51 // -----[ Interface "Write_queue_in" ]-------------------------------- 52 52 { 53 ALLOC _INTERFACE("write_queue_in", IN, WEST, "Input of write_queue");53 ALLOC0_INTERFACE_BEGIN ("write_queue_in", IN, WEST, "Input of write_queue"); 54 54 55 ALLOC_VALACK_IN ( in_WRITE_QUEUE_IN_VAL,VAL); 56 ALLOC_VALACK_OUT(out_WRITE_QUEUE_IN_ACK,ACK); 57 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 58 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 59 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 60 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 61 // ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 62 // ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 63 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 64 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 65 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RD ,"data_rd" ,Tgeneral_data_t ,_param->_size_general_data ); 66 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 67 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 68 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RE ,"data_re" ,Tspecial_data_t ,_param->_size_special_data ); 69 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 70 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 71 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 55 ALLOC0_VALACK_IN ( in_WRITE_QUEUE_IN_VAL,VAL); 56 ALLOC0_VALACK_OUT(out_WRITE_QUEUE_IN_ACK,ACK); 57 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 58 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 59 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 60 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 61 // ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 62 // ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 63 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 64 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 65 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RD ,"data_rd" ,Tgeneral_data_t ,_param->_size_general_data ); 66 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 67 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 68 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RE ,"data_re" ,Tspecial_data_t ,_param->_size_special_data ); 69 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 70 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 71 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 72 73 ALLOC0_INTERFACE_END(); 72 74 } 73 75 74 76 // -----[ Interface "Write_queue_out" ]------------------------------- 75 77 { 76 ALLOC _INTERFACE("write_queue_out", OUT, EAST, "Output of write_queue");78 ALLOC0_INTERFACE_BEGIN("write_queue_out", OUT, EAST, "Output of write_queue"); 77 79 78 ALLOC_VALACK_OUT(out_WRITE_QUEUE_OUT_VAL,VAL); 79 ALLOC_VALACK_IN ( in_WRITE_QUEUE_OUT_ACK,ACK); 80 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 81 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 82 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 83 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 84 // ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 85 // ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 86 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 87 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 88 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 89 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 90 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 80 ALLOC0_VALACK_OUT(out_WRITE_QUEUE_OUT_VAL,VAL); 81 ALLOC0_VALACK_IN ( in_WRITE_QUEUE_OUT_ACK,ACK); 82 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 83 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 84 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 85 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 86 // ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 87 // ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 88 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 89 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 90 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 91 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 92 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 93 94 ALLOC0_INTERFACE_END(); 91 95 } 92 96 93 97 // -----[ Interface "gpr_write" ]------------------------------------- 94 98 { 95 ALLOC1_INTERFACE ("gpr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_gpr_write);99 ALLOC1_INTERFACE_BEGIN("gpr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_gpr_write); 96 100 97 101 ALLOC1_VALACK_OUT(out_GPR_WRITE_VAL,VAL); … … 100 104 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 101 105 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 106 107 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 102 108 } 103 109 104 110 // -----[ Interface "spr_write" ]------------------------------------- 105 111 { 106 ALLOC1_INTERFACE ("spr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_spr_write);112 ALLOC1_INTERFACE_BEGIN("spr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_spr_write); 107 113 108 114 ALLOC1_VALACK_OUT(out_SPR_WRITE_VAL,VAL); … … 111 117 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 112 118 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data ); 119 120 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 113 121 } 114 122 115 123 // -----[ Interface "bypass_write" ]---------------------------------- 116 124 { 117 ALLOC1_INTERFACE ("bypass_write", OUT, NORTH ,"Output of internal write_queue", _param->_nb_bypass_write);125 ALLOC1_INTERFACE_BEGIN("bypass_write", OUT, NORTH ,"Output of internal write_queue", _param->_nb_bypass_write); 118 126 119 127 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); … … 124 132 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 125 133 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data ); 134 135 ALLOC1_INTERFACE_END(_param->_nb_bypass_write); 126 136 } 137 127 138 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 128 139 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp
r97 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 // -----[ Interface "Write_queue_in" ]-------------------------------- 32 delete in_WRITE_QUEUE_IN_VAL ; 33 delete out_WRITE_QUEUE_IN_ACK ; 34 if (_param->_have_port_context_id) 35 delete in_WRITE_QUEUE_IN_CONTEXT_ID ; 36 if (_param->_have_port_front_end_id) 37 delete in_WRITE_QUEUE_IN_FRONT_END_ID ; 38 if (_param->_have_port_ooo_engine_id) 39 delete in_WRITE_QUEUE_IN_OOO_ENGINE_ID; 40 if (_param->_have_port_rob_ptr ) 41 delete in_WRITE_QUEUE_IN_PACKET_ID ; 42 // delete in_WRITE_QUEUE_IN_OPERATION ; 43 // delete in_WRITE_QUEUE_IN_TYPE ; 44 delete in_WRITE_QUEUE_IN_WRITE_RD ; 45 delete in_WRITE_QUEUE_IN_NUM_REG_RD ; 46 delete in_WRITE_QUEUE_IN_DATA_RD ; 47 delete in_WRITE_QUEUE_IN_WRITE_RE ; 48 delete in_WRITE_QUEUE_IN_NUM_REG_RE ; 49 delete in_WRITE_QUEUE_IN_DATA_RE ; 50 delete in_WRITE_QUEUE_IN_EXCEPTION ; 51 delete in_WRITE_QUEUE_IN_NO_SEQUENCE ; 52 delete in_WRITE_QUEUE_IN_ADDRESS ; 53 54 // -----[ Interface "Write_queue_out" ]------------------------------- 55 delete out_WRITE_QUEUE_OUT_VAL ; 56 delete in_WRITE_QUEUE_OUT_ACK ; 57 if (_param->_have_port_context_id) 58 delete out_WRITE_QUEUE_OUT_CONTEXT_ID ; 59 if (_param->_have_port_front_end_id) 60 delete out_WRITE_QUEUE_OUT_FRONT_END_ID ; 61 if (_param->_have_port_ooo_engine_id) 62 delete out_WRITE_QUEUE_OUT_OOO_ENGINE_ID; 63 if (_param->_have_port_rob_ptr ) 64 delete out_WRITE_QUEUE_OUT_PACKET_ID ; 65 // delete out_WRITE_QUEUE_OUT_OPERATION ; 66 // delete out_WRITE_QUEUE_OUT_TYPE ; 67 delete out_WRITE_QUEUE_OUT_FLAGS ; 68 delete out_WRITE_QUEUE_OUT_EXCEPTION ; 69 delete out_WRITE_QUEUE_OUT_NO_SEQUENCE ; 70 delete out_WRITE_QUEUE_OUT_ADDRESS ; 71 delete out_WRITE_QUEUE_OUT_DATA ; 72 73 // -----[ Interface "gpr_write" ]------------------------------------- 74 delete [] out_GPR_WRITE_VAL ; 75 delete [] in_GPR_WRITE_ACK ; 76 if (_param->_have_port_ooo_engine_id) 77 delete [] out_GPR_WRITE_OOO_ENGINE_ID ; 78 delete [] out_GPR_WRITE_NUM_REG ; 79 delete [] out_GPR_WRITE_DATA ; 80 81 // -----[ Interface "spr_write" ]------------------------------------- 82 delete [] out_SPR_WRITE_VAL ; 83 delete [] in_SPR_WRITE_ACK ; 84 if (_param->_have_port_ooo_engine_id) 85 delete [] out_SPR_WRITE_OOO_ENGINE_ID ; 86 delete [] out_SPR_WRITE_NUM_REG ; 87 delete [] out_SPR_WRITE_DATA ; 88 89 // -----[ Interface "bypass_write" ]---------------------------------- 90 if (_param->_have_port_ooo_engine_id) 91 delete [] out_BYPASS_WRITE_OOO_ENGINE_ID ; 92 delete [] out_BYPASS_WRITE_GPR_VAL ; 93 delete [] out_BYPASS_WRITE_GPR_NUM_REG ; 94 delete [] out_BYPASS_WRITE_GPR_DATA ; 95 delete [] out_BYPASS_WRITE_SPR_VAL ; 96 delete [] out_BYPASS_WRITE_SPR_NUM_REG ; 97 delete [] out_BYPASS_WRITE_SPR_DATA ; 32 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_VAL ,1); 33 DELETE0_SIGNAL(out_WRITE_QUEUE_IN_ACK ,1); 34 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_CONTEXT_ID ,_param->_size_context_id ); 35 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_FRONT_END_ID ,_param->_size_front_end_id ); 36 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 37 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_PACKET_ID ,_param->_size_rob_ptr ); 38 // DELETE0_SIGNAL( in_WRITE_QUEUE_IN_OPERATION ,_param->_size_operation ); 39 // DELETE0_SIGNAL( in_WRITE_QUEUE_IN_TYPE ,_param->_size_type ); 40 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RD ,1 ); 41 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RD ,_param->_size_general_register ); 42 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_DATA_RD ,_param->_size_general_data ); 43 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RE ,1 ); 44 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RE ,_param->_size_special_register ); 45 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_DATA_RE ,_param->_size_special_data ); 46 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_EXCEPTION ,_param->_size_exception ); 47 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_NO_SEQUENCE ,1 ); 48 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_ADDRESS ,_param->_size_instruction_address); 49 50 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_VAL ,1); 51 DELETE0_SIGNAL( in_WRITE_QUEUE_OUT_ACK ,1); 52 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_CONTEXT_ID ,_param->_size_context_id ); 53 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 54 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,_param->_size_ooo_engine_id); 55 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_PACKET_ID ,_param->_size_rob_ptr ); 56 // DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_OPERATION ,_param->_size_operation ); 57 // DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_TYPE ,_param->_size_type ); 58 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_FLAGS ,_param->_size_special_data ); 59 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_EXCEPTION ,_param->_size_exception ); 60 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_NO_SEQUENCE ,1 ); 61 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_ADDRESS ,_param->_size_instruction_address); 62 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_DATA ,_param->_size_general_data ); 63 64 DELETE1_SIGNAL(out_GPR_WRITE_VAL , _param->_nb_gpr_write,1); 65 DELETE1_SIGNAL( in_GPR_WRITE_ACK , _param->_nb_gpr_write,1); 66 DELETE1_SIGNAL(out_GPR_WRITE_OOO_ENGINE_ID, _param->_nb_gpr_write,_param->_size_ooo_engine_id ); 67 DELETE1_SIGNAL(out_GPR_WRITE_NUM_REG , _param->_nb_gpr_write,_param->_size_general_register); 68 DELETE1_SIGNAL(out_GPR_WRITE_DATA , _param->_nb_gpr_write,_param->_size_general_data ); 69 70 DELETE1_SIGNAL(out_SPR_WRITE_VAL , _param->_nb_spr_write,1); 71 DELETE1_SIGNAL( in_SPR_WRITE_ACK , _param->_nb_spr_write,1); 72 DELETE1_SIGNAL(out_SPR_WRITE_OOO_ENGINE_ID, _param->_nb_spr_write,_param->_size_ooo_engine_id ); 73 DELETE1_SIGNAL(out_SPR_WRITE_NUM_REG , _param->_nb_spr_write,_param->_size_special_register); 74 DELETE1_SIGNAL(out_SPR_WRITE_DATA , _param->_nb_spr_write,_param->_size_special_data ); 75 76 DELETE1_SIGNAL(out_BYPASS_WRITE_OOO_ENGINE_ID,_param->_nb_bypass_write,_param->_size_ooo_engine_id ); 77 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_VAL ,_param->_nb_bypass_write,1 ); 78 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_NUM_REG ,_param->_nb_bypass_write,_param->_size_general_register); 79 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_DATA ,_param->_nb_bypass_write,_param->_size_general_data ); 80 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_VAL ,_param->_nb_bypass_write,1 ); 81 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_NUM_REG ,_param->_nb_bypass_write,_param->_size_special_register); 82 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_DATA ,_param->_nb_bypass_write,_param->_size_special_data ); 98 83 } 99 84 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp
r97 r112 57 57 // -----[ Interface "write_unit_in" ]-------------------------------- 58 58 { 59 ALLOC_INTERFACE ("write_unit_in", IN, WEST, "Input of write_unit"); 60 61 ALLOC_VALACK_IN ( in_WRITE_UNIT_IN_VAL,VAL); 62 ALLOC_VALACK_OUT(out_WRITE_UNIT_IN_ACK,ACK); 63 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 64 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 66 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 // ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 // ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 69 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 70 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 71 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RD ,"data_rd" ,Tgeneral_data_t ,_param->_size_general_data ); 72 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 73 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 74 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RE ,"data_re" ,Tspecial_data_t ,_param->_size_special_data ); 75 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 76 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 77 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 59 ALLOC0_INTERFACE_BEGIN("write_unit_in", IN, WEST, "Input of write_unit"); 60 61 ALLOC0_VALACK_IN ( in_WRITE_UNIT_IN_VAL,VAL); 62 ALLOC0_VALACK_OUT(out_WRITE_UNIT_IN_ACK,ACK); 63 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 64 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 66 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 // ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 // ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 69 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 70 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 71 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RD ,"data_rd" ,Tgeneral_data_t ,_param->_size_general_data ); 72 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 73 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 74 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RE ,"data_re" ,Tspecial_data_t ,_param->_size_special_data ); 75 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 76 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 77 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 78 79 ALLOC0_INTERFACE_END(); 78 80 } 79 81 80 82 // -----[ Interface "write_unit_out" ]------------------------------- 81 83 { 82 ALLOC_INTERFACE ("write_unit_out", OUT, EAST, "Output of write_unit"); 83 84 ALLOC_VALACK_OUT(out_WRITE_UNIT_OUT_VAL,VAL); 85 ALLOC_VALACK_IN ( in_WRITE_UNIT_OUT_ACK,ACK); 86 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 87 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 88 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 89 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 90 // ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 91 // ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 92 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 93 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 94 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 95 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 96 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 84 ALLOC0_INTERFACE_BEGIN("write_unit_out", OUT, EAST, "Output of write_unit"); 85 86 ALLOC0_VALACK_OUT(out_WRITE_UNIT_OUT_VAL,VAL); 87 ALLOC0_VALACK_IN ( in_WRITE_UNIT_OUT_ACK,ACK); 88 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 89 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 90 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 91 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 92 // ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 93 // ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 94 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 95 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 96 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 97 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 98 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 99 100 ALLOC0_INTERFACE_END(); 97 101 } 98 102 99 103 // -----[ Interface "gpr_write" ]------------------------------------- 100 104 { 101 ALLOC1_INTERFACE ("gpr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_gpr_write);105 ALLOC1_INTERFACE_BEGIN("gpr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_gpr_write); 102 106 103 107 ALLOC1_VALACK_OUT(out_GPR_WRITE_VAL,VAL); … … 106 110 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 107 111 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 112 113 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 108 114 } 109 115 110 116 // -----[ Interface "spr_write" ]------------------------------------- 111 117 { 112 ALLOC1_INTERFACE ("spr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_spr_write);118 ALLOC1_INTERFACE_BEGIN("spr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_spr_write); 113 119 114 120 ALLOC1_VALACK_OUT(out_SPR_WRITE_VAL,VAL); … … 117 123 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 118 124 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data ); 125 126 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 119 127 } 120 128 121 129 // -----[ Interface "bypass_write" ]---------------------------------- 122 130 { 123 ALLOC1_INTERFACE ("bypass_write", OUT, NORTH ,"Output of internal write_unit", _param->_nb_bypass_write);131 ALLOC1_INTERFACE_BEGIN("bypass_write", OUT, NORTH ,"Output of internal write_unit", _param->_nb_bypass_write); 124 132 125 133 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); … … 130 138 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 131 139 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data ); 132 } 133 140 141 ALLOC1_INTERFACE_END(_param->_nb_bypass_write); 142 } 134 143 135 144 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_deallocation.cpp
r97 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 28 29 delete in_NRESET; 29 30 30 // -----[ Interface "write_unit_in" ]-------------------------------- 31 delete in_WRITE_UNIT_IN_VAL ; 32 delete out_WRITE_UNIT_IN_ACK ; 33 if (_param->_have_port_context_id) 34 delete in_WRITE_UNIT_IN_CONTEXT_ID ; 35 if (_param->_have_port_front_end_id) 36 delete in_WRITE_UNIT_IN_FRONT_END_ID ; 37 if (_param->_have_port_ooo_engine_id) 38 delete in_WRITE_UNIT_IN_OOO_ENGINE_ID; 39 if (_param->_have_port_rob_ptr) 40 delete in_WRITE_UNIT_IN_PACKET_ID ; 41 // delete in_WRITE_UNIT_IN_OPERATION ; 42 // delete in_WRITE_UNIT_IN_TYPE ; 43 delete in_WRITE_UNIT_IN_WRITE_RD ; 44 delete in_WRITE_UNIT_IN_NUM_REG_RD ; 45 delete in_WRITE_UNIT_IN_DATA_RD ; 46 delete in_WRITE_UNIT_IN_WRITE_RE ; 47 delete in_WRITE_UNIT_IN_NUM_REG_RE ; 48 delete in_WRITE_UNIT_IN_DATA_RE ; 49 delete in_WRITE_UNIT_IN_EXCEPTION ; 50 delete in_WRITE_UNIT_IN_NO_SEQUENCE ; 51 delete in_WRITE_UNIT_IN_ADDRESS ; 31 DELETE0_SIGNAL( in_WRITE_UNIT_IN_VAL ,1); 32 DELETE0_SIGNAL(out_WRITE_UNIT_IN_ACK ,1); 33 DELETE0_SIGNAL( in_WRITE_UNIT_IN_CONTEXT_ID ,_param->_size_context_id ); 34 DELETE0_SIGNAL( in_WRITE_UNIT_IN_FRONT_END_ID ,_param->_size_front_end_id ); 35 DELETE0_SIGNAL( in_WRITE_UNIT_IN_OOO_ENGINE_ID,_param->_size_ooo_engine_id ); 36 DELETE0_SIGNAL( in_WRITE_UNIT_IN_PACKET_ID ,_param->_size_rob_ptr ); 37 // DELETE0_SIGNAL( in_WRITE_UNIT_IN_OPERATION ,_param->_size_operation ); 38 // DELETE0_SIGNAL( in_WRITE_UNIT_IN_TYPE ,_param->_size_type ); 39 DELETE0_SIGNAL( in_WRITE_UNIT_IN_WRITE_RD ,1 ); 40 DELETE0_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RD ,_param->_size_general_register ); 41 DELETE0_SIGNAL( in_WRITE_UNIT_IN_DATA_RD ,_param->_size_general_data ); 42 DELETE0_SIGNAL( in_WRITE_UNIT_IN_WRITE_RE ,1 ); 43 DELETE0_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RE ,_param->_size_special_register ); 44 DELETE0_SIGNAL( in_WRITE_UNIT_IN_DATA_RE ,_param->_size_special_data ); 45 DELETE0_SIGNAL( in_WRITE_UNIT_IN_EXCEPTION ,_param->_size_exception ); 46 DELETE0_SIGNAL( in_WRITE_UNIT_IN_NO_SEQUENCE ,1 ); 47 DELETE0_SIGNAL( in_WRITE_UNIT_IN_ADDRESS ,_param->_size_instruction_address); 48 49 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_VAL ,1); 50 DELETE0_SIGNAL( in_WRITE_UNIT_OUT_ACK ,1); 51 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_CONTEXT_ID ,_param->_size_context_id ); 52 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 53 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,_param->_size_ooo_engine_id); 54 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_PACKET_ID ,_param->_size_rob_ptr ); 55 // DELETE0_SIGNAL(out_WRITE_UNIT_OUT_OPERATION ,_param->_size_operation ); 56 // DELETE0_SIGNAL(out_WRITE_UNIT_OUT_TYPE ,_param->_size_type ); 57 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_FLAGS ,_param->_size_special_data ); 58 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_EXCEPTION ,_param->_size_exception ); 59 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_NO_SEQUENCE ,1 ); 60 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_ADDRESS ,_param->_size_instruction_address); 61 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_DATA ,_param->_size_general_data ); 62 63 DELETE1_SIGNAL(out_GPR_WRITE_VAL , _param->_nb_gpr_write,1); 64 DELETE1_SIGNAL( in_GPR_WRITE_ACK , _param->_nb_gpr_write,1); 65 DELETE1_SIGNAL(out_GPR_WRITE_OOO_ENGINE_ID, _param->_nb_gpr_write,_param->_size_ooo_engine_id ); 66 DELETE1_SIGNAL(out_GPR_WRITE_NUM_REG , _param->_nb_gpr_write,_param->_size_general_register); 67 DELETE1_SIGNAL(out_GPR_WRITE_DATA , _param->_nb_gpr_write,_param->_size_general_data ); 68 69 DELETE1_SIGNAL(out_SPR_WRITE_VAL , _param->_nb_spr_write,1); 70 DELETE1_SIGNAL( in_SPR_WRITE_ACK , _param->_nb_spr_write,1); 71 DELETE1_SIGNAL(out_SPR_WRITE_OOO_ENGINE_ID, _param->_nb_spr_write,_param->_size_ooo_engine_id ); 72 DELETE1_SIGNAL(out_SPR_WRITE_NUM_REG , _param->_nb_spr_write,_param->_size_special_register); 73 DELETE1_SIGNAL(out_SPR_WRITE_DATA , _param->_nb_spr_write,_param->_size_special_data ); 74 75 DELETE1_SIGNAL(out_BYPASS_WRITE_OOO_ENGINE_ID, _param->_nb_bypass_write,_param->_size_ooo_engine_id ); 76 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_VAL , _param->_nb_bypass_write,1 ); 77 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_NUM_REG , _param->_nb_bypass_write,_param->_size_general_register); 78 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_DATA , _param->_nb_bypass_write,_param->_size_general_data ); 79 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_VAL , _param->_nb_bypass_write,1 ); 80 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_NUM_REG , _param->_nb_bypass_write,_param->_size_special_register); 81 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_DATA , _param->_nb_bypass_write,_param->_size_special_data ); 82 } 52 83 53 // -----[ Interface "write_unit_out" ]-------------------------------54 delete out_WRITE_UNIT_OUT_VAL ;55 delete in_WRITE_UNIT_OUT_ACK ;56 if (_param->_have_port_context_id)57 delete out_WRITE_UNIT_OUT_CONTEXT_ID ;58 if (_param->_have_port_front_end_id)59 delete out_WRITE_UNIT_OUT_FRONT_END_ID ;60 if (_param->_have_port_ooo_engine_id)61 delete out_WRITE_UNIT_OUT_OOO_ENGINE_ID;62 if (_param->_have_port_rob_ptr)63 delete out_WRITE_UNIT_OUT_PACKET_ID ;64 // delete out_WRITE_UNIT_OUT_OPERATION ;65 // delete out_WRITE_UNIT_OUT_TYPE ;66 delete out_WRITE_UNIT_OUT_FLAGS ;67 delete out_WRITE_UNIT_OUT_EXCEPTION ;68 delete out_WRITE_UNIT_OUT_NO_SEQUENCE ;69 delete out_WRITE_UNIT_OUT_ADDRESS ;70 delete out_WRITE_UNIT_OUT_DATA ;71 72 // -----[ Interface "gpr_write" ]-------------------------------------73 delete [] out_GPR_WRITE_VAL ;74 delete [] in_GPR_WRITE_ACK ;75 if (_param->_have_port_ooo_engine_id)76 delete [] out_GPR_WRITE_OOO_ENGINE_ID ;77 delete [] out_GPR_WRITE_NUM_REG ;78 delete [] out_GPR_WRITE_DATA ;79 80 // -----[ Interface "spr_write" ]-------------------------------------81 delete [] out_SPR_WRITE_VAL ;82 delete [] in_SPR_WRITE_ACK ;83 if (_param->_have_port_ooo_engine_id)84 delete [] out_SPR_WRITE_OOO_ENGINE_ID ;85 delete [] out_SPR_WRITE_NUM_REG ;86 delete [] out_SPR_WRITE_DATA ;87 88 // -----[ Interface "bypass_write" ]----------------------------------89 if (_param->_have_port_ooo_engine_id)90 delete [] out_BYPASS_WRITE_OOO_ENGINE_ID ;91 delete [] out_BYPASS_WRITE_GPR_VAL ;92 delete [] out_BYPASS_WRITE_GPR_NUM_REG ;93 delete [] out_BYPASS_WRITE_GPR_DATA ;94 delete [] out_BYPASS_WRITE_SPR_VAL ;95 delete [] out_BYPASS_WRITE_SPR_NUM_REG ;96 delete [] out_BYPASS_WRITE_SPR_DATA ;97 98 }99 84 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 85 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_allocation.cpp
r97 r112 58 58 // ~~~~~[ Interface "execute_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE ("execute_unit_out", IN, EAST, "Output of execution_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);60 ALLOC2_INTERFACE_BEGIN("execute_unit_out", IN, EAST, "Output of execution_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]); 61 61 62 62 _ALLOC2_VALACK_IN ( in_EXECUTE_UNIT_OUT_VAL,VAL, _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]); … … 77 77 _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]); 78 78 _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address, _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]); 79 80 ALLOC2_INTERFACE_END(_param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]); 79 81 } 80 82 81 83 // ~~~~~[ Interface "write_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 84 { 83 ALLOC1_INTERFACE ("write_unit_in", OUT, WEST, "Input of write_unit", _param->_nb_write_unit);85 ALLOC1_INTERFACE_BEGIN("write_unit_in", OUT, WEST, "Input of write_unit", _param->_nb_write_unit); 84 86 85 87 ALLOC1_VALACK_OUT(out_WRITE_UNIT_IN_VAL,VAL); … … 100 102 ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 101 103 ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 104 105 ALLOC1_INTERFACE_END(_param->_nb_write_unit); 102 106 } 103 107 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 105 109 if (usage_is_set(_usage,USE_SYSTEMC)) 106 110 { 107 _destination = new std::list<uint32_t> ** [_param->_nb_execute_unit]; 108 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 109 { 110 _destination [i] = new std::list<uint32_t> * [_param->_nb_execute_unit_port[i]]; 111 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 112 { 113 _destination [i][j] = new std::list<uint32_t> [_param->_nb_thread]; 114 } 115 } 111 ALLOC3(_destination,std::list<uint32_t>,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1],_param->_nb_thread); 116 112 } 117 113 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_deallocation.cpp
r97 r112 65 65 DELETE1_SIGNAL(out_WRITE_UNIT_IN_ADDRESS , _param->_nb_write_unit,_param->_size_general_data ); 66 66 67 delete [] _destination;67 DELETE3(_destination,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1],_param->_nb_thread); 68 68 } 69 69 70 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 70 71 -
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
r88 r112 57 57 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 58 { 59 ALLOC2_INTERFACE ("read_unit_out", IN, EAST, "Output of read_unit",_param->_nb_read_unit,_param->_nb_read_unit_port[it1]);59 ALLOC2_INTERFACE_BEGIN("read_unit_out", IN, EAST, "Output of read_unit",_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 60 60 61 61 _ALLOC2_VALACK_IN ( in_READ_UNIT_OUT_VAL,VAL,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); … … 78 78 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_WRITE_RE ,"WRITE_RE" ,Tcontrol_t ,1 ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 79 79 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_NUM_REG_RE ,"NUM_REG_RE" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 80 81 ALLOC2_INTERFACE_END(_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 80 82 } 81 83 // ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 84 { 83 ALLOC2_INTERFACE ("execute_unit_in", OUT, WEST, "Input of execute_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]);85 ALLOC2_INTERFACE_BEGIN("execute_unit_in", OUT, WEST, "Input of execute_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 84 86 85 87 _ALLOC2_VALACK_OUT(out_EXECUTE_UNIT_IN_VAL,VAL, _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); … … 102 104 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RB ,"DATA_RB" ,Tgeneral_data_t ,_param->_size_general_data , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 103 105 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RD ,"NUM_REG_RD" ,Tgeneral_address_t,_param->_size_general_register , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 106 107 ALLOC2_INTERFACE_END(_param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 104 108 } 105 109 … … 107 111 if (usage_is_set(_usage,USE_SYSTEMC)) 108 112 { 109 _destination = new std::list<destination_t> ** [_param->_nb_read_unit]; 110 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 111 { 112 _destination [i] = new std::list<destination_t> * [_param->_nb_thread]; 113 for (uint32_t j=0; j<_param->_nb_thread; j++) 114 { 115 _destination [i][j] = new std::list<destination_t> [_param->_nb_type]; 116 } 117 } 113 ALLOC3(_destination,std::list<destination_t>,_param->_nb_read_unit,_param->_nb_thread,_param->_nb_type);; 118 114 } 119 115 -
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
r88 r112 69 69 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_general_register ); 70 70 71 delete [] _destination;71 DELETE3(_destination,_param->_nb_read_unit,_param->_nb_thread,_param->_nb_type);; 72 72 } 73 73 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 50 51 out_CONST_1 = interface->set_signal_out <Tcontrol_t> ("const_1",1); 51 52 52 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53 in_GPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 54 out_GPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 55 if (_param->_have_port_ooo_engine_id == true) 56 in_GPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_read]; 57 out_GPR_READ_DATA = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_gpr_read]; 58 out_GPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 59 60 out_GPR_READ_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 61 in_GPR_READ_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 62 in_GPR_READ_REGISTERFILE_DATA = new SC_IN (Tgeneral_data_t ) ** [_param->_nb_ooo_engine]; 63 64 out_GPR_READ_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 65 in_GPR_READ_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 66 in_GPR_READ_STATUS_DATA_VAL = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 67 68 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 69 { 70 out_GPR_READ_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 71 in_GPR_READ_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 72 in_GPR_READ_REGISTERFILE_DATA [i] = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_read]; 73 74 out_GPR_READ_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 75 in_GPR_READ_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 76 in_GPR_READ_STATUS_DATA_VAL [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 77 } 78 79 for (uint32_t j=0; j<_param->_nb_gpr_read; j++) 80 { 81 Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(j) 82 #ifdef POSITION 83 ,IN 84 ,NORTH, 85 "Interface to read generalist register" 86 #endif 87 ); 88 89 in_GPR_READ_VAL [j] = interface->set_signal_valack_in (VAL); 90 out_GPR_READ_ACK [j] = interface->set_signal_valack_out (ACK); 91 if (_param->_have_port_ooo_engine_id == true) 92 in_GPR_READ_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 93 out_GPR_READ_DATA [j] = interface->set_signal_out<Tgeneral_data_t> ("data" , _param->_size_general_data); 94 out_GPR_READ_DATA_VAL [j] = interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 95 96 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 97 { 98 { 99 Interface_fifo * interface = _interfaces->set_interface("gpr_read_registerfile_"+toString(i)+"_"+toString(j) 100 #ifdef POSITION 101 ,IN 102 ,NORTH, 103 "Interface to read generalist register - from/to register file" 104 #endif 105 ); 106 107 out_GPR_READ_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 108 in_GPR_READ_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 109 in_GPR_READ_REGISTERFILE_DATA [i][j] = interface->set_signal_in <Tgeneral_data_t> ("data" , _param->_size_general_data); 110 } 111 { 112 Interface_fifo * interface = _interfaces->set_interface("gpr_read_status_"+toString(i)+"_"+toString(j) 113 #ifdef POSITION 114 ,IN 115 ,NORTH, 116 "Interface to read generalist register - from/to status" 117 #endif 118 ); 119 120 121 out_GPR_READ_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 122 in_GPR_READ_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 123 in_GPR_READ_STATUS_DATA_VAL [i][j] = interface->set_signal_in <Tcontrol_t > ("data_val" , 1); 124 } 125 } 126 } 127 128 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 129 in_SPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 130 out_SPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 131 if (_param->_have_port_ooo_engine_id == true) 132 in_SPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_read]; 133 out_SPR_READ_DATA = new SC_OUT(Tspecial_data_t ) * [_param->_nb_spr_read]; 134 out_SPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 135 136 out_SPR_READ_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 137 in_SPR_READ_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 138 in_SPR_READ_REGISTERFILE_DATA = new SC_IN (Tspecial_data_t ) ** [_param->_nb_ooo_engine]; 139 140 out_SPR_READ_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 141 in_SPR_READ_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 142 in_SPR_READ_STATUS_DATA_VAL = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 143 144 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 145 { 146 out_SPR_READ_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 147 in_SPR_READ_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 148 in_SPR_READ_REGISTERFILE_DATA [i] = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_read]; 149 150 out_SPR_READ_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 151 in_SPR_READ_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 152 in_SPR_READ_STATUS_DATA_VAL [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 153 } 154 155 for (uint32_t j=0; j<_param->_nb_spr_read; j++) 156 { 157 Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(j) 158 #ifdef POSITION 159 ,IN 160 ,NORTH, 161 "Interface to read special register" 162 #endif 163 ); 164 165 in_SPR_READ_VAL [j] = interface->set_signal_valack_in (VAL); 166 out_SPR_READ_ACK [j] = interface->set_signal_valack_out (ACK); 167 if (_param->_have_port_ooo_engine_id == true) 168 in_SPR_READ_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 169 out_SPR_READ_DATA [j] = interface->set_signal_out<Tspecial_data_t> ("data" , _param->_size_special_data); 170 out_SPR_READ_DATA_VAL [j] = interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 171 172 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 173 { 174 { 175 Interface_fifo * interface = _interfaces->set_interface("spr_read_registerfile_"+toString(i)+"_"+toString(j) 176 #ifdef POSITION 177 ,IN 178 ,NORTH, 179 "Interface to read special register - from/to register file" 180 #endif 181 ); 182 183 out_SPR_READ_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 184 in_SPR_READ_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 185 in_SPR_READ_REGISTERFILE_DATA [i][j] = interface->set_signal_in <Tspecial_data_t> ("data" , _param->_size_special_data); 186 } 187 { 188 Interface_fifo * interface = _interfaces->set_interface("spr_read_status_"+toString(i)+"_"+toString(j) 189 #ifdef POSITION 190 ,IN 191 ,NORTH, 192 "Interface to read special register - from/to status" 193 #endif 194 ); 195 196 197 out_SPR_READ_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 198 in_SPR_READ_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 199 in_SPR_READ_STATUS_DATA_VAL [i][j] = interface->set_signal_in <Tcontrol_t > ("data_val" , 1); 200 } 201 } 202 } 203 204 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 205 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 206 out_GPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 207 if (_param->_have_port_ooo_engine_id == true) 208 in_GPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 209 210 out_GPR_WRITE_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 211 in_GPR_WRITE_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 212 213 out_GPR_WRITE_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 214 in_GPR_WRITE_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 215 216 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 217 { 218 out_GPR_WRITE_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 219 in_GPR_WRITE_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 220 221 out_GPR_WRITE_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 222 in_GPR_WRITE_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 223 } 224 225 for (uint32_t j=0; j<_param->_nb_gpr_write; j++) 226 { 227 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(j) 228 #ifdef POSITION 229 ,IN 230 ,NORTH, 231 "Interface to write generalist register" 232 #endif 233 ); 234 235 in_GPR_WRITE_VAL [j] = interface->set_signal_valack_in (VAL); 236 out_GPR_WRITE_ACK [j] = interface->set_signal_valack_out (ACK); 237 if (_param->_have_port_ooo_engine_id == true) 238 in_GPR_WRITE_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 239 240 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 241 { 242 { 243 Interface_fifo * interface = _interfaces->set_interface("gpr_write_registerfile_"+toString(i)+"_"+toString(j) 244 #ifdef POSITION 245 ,IN 246 ,NORTH, 247 "Interface to write generalist register - from/to register file" 248 #endif 249 ); 250 251 out_GPR_WRITE_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 252 in_GPR_WRITE_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 253 } 254 { 255 Interface_fifo * interface = _interfaces->set_interface("gpr_write_status_"+toString(i)+"_"+toString(j) 256 #ifdef POSITION 257 ,IN 258 ,NORTH, 259 "Interface to write generalist register - from/to status" 260 #endif 261 ); 262 263 264 out_GPR_WRITE_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 265 in_GPR_WRITE_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 266 } 267 } 268 } 269 270 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 271 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 272 out_SPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 273 if (_param->_have_port_ooo_engine_id == true) 274 in_SPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 275 276 out_SPR_WRITE_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 277 in_SPR_WRITE_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 278 279 out_SPR_WRITE_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 280 in_SPR_WRITE_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 281 282 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 283 { 284 out_SPR_WRITE_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 285 in_SPR_WRITE_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 286 287 out_SPR_WRITE_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 288 in_SPR_WRITE_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 289 } 290 291 for (uint32_t j=0; j<_param->_nb_spr_write; j++) 292 { 293 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(j) 294 #ifdef POSITION 295 ,IN 296 ,NORTH, 297 "Interface to write special register" 298 #endif 299 ); 300 301 in_SPR_WRITE_VAL [j] = interface->set_signal_valack_in (VAL); 302 out_SPR_WRITE_ACK [j] = interface->set_signal_valack_out (ACK); 303 if (_param->_have_port_ooo_engine_id == true) 304 in_SPR_WRITE_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 305 306 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 307 { 308 { 309 Interface_fifo * interface = _interfaces->set_interface("spr_write_registerfile_"+toString(i)+"_"+toString(j) 310 #ifdef POSITION 311 ,IN 312 ,NORTH, 313 "Interface to write special register - from/to register file" 314 #endif 315 ); 316 317 out_SPR_WRITE_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 318 in_SPR_WRITE_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 319 } 320 { 321 Interface_fifo * interface = _interfaces->set_interface("spr_write_status_"+toString(i)+"_"+toString(j) 322 #ifdef POSITION 323 ,IN 324 ,NORTH, 325 "Interface to write special register - from/to status" 326 #endif 327 ); 328 329 330 out_SPR_WRITE_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 331 in_SPR_WRITE_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 332 } 333 } 334 } 335 336 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 337 in_INSERT_ROB_VAL = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 338 out_INSERT_ROB_ACK = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine]; 339 in_INSERT_ROB_RD_USE = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 340 in_INSERT_ROB_RE_USE = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 341 out_INSERT_ROB_GPR_STATUS_VAL = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine]; 342 in_INSERT_ROB_GPR_STATUS_ACK = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 343 out_INSERT_ROB_SPR_STATUS_VAL = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine]; 344 in_INSERT_ROB_SPR_STATUS_ACK = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 345 346 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 347 { 348 uint32_t x=_param->_nb_inst_insert_rob [i]; 349 350 in_INSERT_ROB_VAL [i] = new SC_IN (Tcontrol_t) * [x]; 351 out_INSERT_ROB_ACK [i] = new SC_OUT(Tcontrol_t) * [x]; 352 in_INSERT_ROB_RD_USE [i] = new SC_IN (Tcontrol_t) * [x]; 353 in_INSERT_ROB_RE_USE [i] = new SC_IN (Tcontrol_t) * [x]; 354 out_INSERT_ROB_GPR_STATUS_VAL [i] = new SC_OUT(Tcontrol_t) * [x]; 355 in_INSERT_ROB_GPR_STATUS_ACK [i] = new SC_IN (Tcontrol_t) * [x]; 356 out_INSERT_ROB_SPR_STATUS_VAL [i] = new SC_OUT(Tcontrol_t) * [x]; 357 in_INSERT_ROB_SPR_STATUS_ACK [i] = new SC_IN (Tcontrol_t) * [x]; 358 359 for (uint32_t j=0; j<x; j++) 360 { 361 { 362 Interface_fifo * interface = _interfaces->set_interface("insert_rob_"+toString(i)+"_"+toString(j) 363 #ifdef POSITION 364 ,IN 365 ,WEST 366 ,"Interface to update status (insert)" 367 #endif 368 ); 369 370 in_INSERT_ROB_VAL [i][j] = interface->set_signal_valack_in (VAL); 371 out_INSERT_ROB_ACK [i][j] = interface->set_signal_valack_out(ACK); 372 in_INSERT_ROB_RD_USE [i][j] = interface->set_signal_in <Tcontrol_t> ("rd_use", 1); 373 in_INSERT_ROB_RE_USE [i][j] = interface->set_signal_in <Tcontrol_t> ("re_use", 1); 374 } 375 { 376 Interface_fifo * interface = _interfaces->set_interface("insert_rob_gpr_status_"+toString(i)+"_"+toString(j) 377 #ifdef POSITION 378 ,IN 379 ,EAST 380 ,"Interface to update status (insert)" 381 #endif 382 ); 383 384 out_INSERT_ROB_GPR_STATUS_VAL [i][j] = interface->set_signal_valack_out(VAL); 385 in_INSERT_ROB_GPR_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 386 } 387 { 388 Interface_fifo * interface = _interfaces->set_interface("insert_rob_spr_status_"+toString(i)+"_"+toString(j) 389 #ifdef POSITION 390 ,IN 391 ,EAST 392 ,"Interface to update status (insert)" 393 #endif 394 ); 395 396 out_INSERT_ROB_SPR_STATUS_VAL [i][j] = interface->set_signal_valack_out(VAL); 397 in_INSERT_ROB_SPR_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 398 } 399 } 400 } 53 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 { 55 ALLOC1_INTERFACE_BEGIN("gpr_read",IN,NORTH,_("Interface to read generalist register"),_param->_nb_gpr_read); 56 57 ALLOC1_VALACK_IN ( in_GPR_READ_VAL ,VAL); 58 ALLOC1_VALACK_OUT(out_GPR_READ_ACK ,ACK); 59 ALLOC1_SIGNAL_IN ( in_GPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t , _param->_size_ooo_engine_id); 60 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA ,"data" ,Tgeneral_data_t, _param->_size_general_data); 61 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t , 1); 62 63 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 64 } 65 66 { 67 ALLOC2_INTERFACE_BEGIN("gpr_read_registerfile",IN,NORTH,_("Interface to read generalist register - from/to register file"),_param->_nb_ooo_engine,_param->_nb_gpr_read); 68 69 ALLOC2_VALACK_OUT(out_GPR_READ_REGISTERFILE_VAL ,VAL); 70 ALLOC2_VALACK_IN ( in_GPR_READ_REGISTERFILE_ACK ,ACK); 71 ALLOC2_SIGNAL_IN ( in_GPR_READ_REGISTERFILE_DATA,"data",Tgeneral_data_t,_param->_size_general_data); 72 73 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_read); 74 } 75 76 { 77 ALLOC2_INTERFACE_BEGIN("gpr_read_status",IN,NORTH,_("Interface to read generalist register - from/to register file"),_param->_nb_ooo_engine,_param->_nb_gpr_read); 78 79 ALLOC2_VALACK_OUT(out_GPR_READ_STATUS_VAL ,VAL); 80 ALLOC2_VALACK_IN ( in_GPR_READ_STATUS_ACK ,ACK); 81 ALLOC2_SIGNAL_IN ( in_GPR_READ_STATUS_DATA_VAL,"data_val",Tcontrol_t,1); 82 83 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_read); 84 } 85 86 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87 { 88 ALLOC1_INTERFACE_BEGIN("spr_read",IN,NORTH,_("Interface to read generalist register"),_param->_nb_spr_read); 89 90 ALLOC1_VALACK_IN ( in_SPR_READ_VAL ,VAL); 91 ALLOC1_VALACK_OUT(out_SPR_READ_ACK ,ACK); 92 ALLOC1_SIGNAL_IN ( in_SPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t , _param->_size_ooo_engine_id); 93 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA ,"data" ,Tspecial_data_t, _param->_size_special_data); 94 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t , 1); 95 96 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 97 } 98 99 { 100 ALLOC2_INTERFACE_BEGIN("spr_read_registerfile",IN,NORTH,_("Interface to read generalist register - from/to register file"),_param->_nb_ooo_engine,_param->_nb_spr_read); 101 102 ALLOC2_VALACK_OUT(out_SPR_READ_REGISTERFILE_VAL ,VAL); 103 ALLOC2_VALACK_IN ( in_SPR_READ_REGISTERFILE_ACK ,ACK); 104 ALLOC2_SIGNAL_IN ( in_SPR_READ_REGISTERFILE_DATA,"data",Tspecial_data_t,_param->_size_special_data); 105 106 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_read); 107 } 108 109 { 110 ALLOC2_INTERFACE_BEGIN("spr_read_status",IN,NORTH,_("Interface to read generalist register - from/to status"),_param->_nb_ooo_engine,_param->_nb_spr_read); 111 112 ALLOC2_VALACK_OUT(out_SPR_READ_STATUS_VAL ,VAL); 113 ALLOC2_VALACK_IN ( in_SPR_READ_STATUS_ACK ,ACK); 114 ALLOC2_SIGNAL_IN ( in_SPR_READ_STATUS_DATA_VAL,"data_val",Tcontrol_t,1); 115 116 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_read); 117 } 118 119 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 120 { 121 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,NORTH,_("Interface to write generalist register"),_param->_nb_gpr_write); 122 123 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL ,VAL); 124 ALLOC1_VALACK_OUT(out_GPR_WRITE_ACK ,ACK); 125 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t, _param->_size_ooo_engine_id); 126 127 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 128 } 129 130 { 131 ALLOC2_INTERFACE_BEGIN("gpr_write_registerfile",IN,NORTH,_("Interface to write generalist register - from/to registerfile"),_param->_nb_ooo_engine,_param->_nb_gpr_write); 132 133 ALLOC2_VALACK_OUT(out_GPR_WRITE_REGISTERFILE_VAL,VAL); 134 ALLOC2_VALACK_IN ( in_GPR_WRITE_REGISTERFILE_ACK,ACK); 135 136 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_write); 137 } 138 139 { 140 ALLOC2_INTERFACE_BEGIN("gpr_write_status",IN,NORTH,_("Interface to write generalist register - from/to status"),_param->_nb_ooo_engine,_param->_nb_gpr_write); 141 142 ALLOC2_VALACK_OUT(out_GPR_WRITE_STATUS_VAL,VAL); 143 ALLOC2_VALACK_IN ( in_GPR_WRITE_STATUS_ACK,ACK); 144 145 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_write); 146 } 147 148 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 149 { 150 ALLOC1_INTERFACE_BEGIN("spr_write",IN,NORTH,_("Interface to write generalist register"),_param->_nb_spr_write); 151 152 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL ,VAL); 153 ALLOC1_VALACK_OUT(out_SPR_WRITE_ACK ,ACK); 154 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t, _param->_size_ooo_engine_id); 155 156 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 157 } 158 159 { 160 ALLOC2_INTERFACE_BEGIN("spr_write_registerfile",IN,NORTH,_("Interface to write generalist register - from/to registerfile"),_param->_nb_ooo_engine,_param->_nb_spr_write); 161 162 ALLOC2_VALACK_OUT(out_SPR_WRITE_REGISTERFILE_VAL,VAL); 163 ALLOC2_VALACK_IN ( in_SPR_WRITE_REGISTERFILE_ACK,ACK); 164 165 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_write); 166 } 167 168 { 169 ALLOC2_INTERFACE_BEGIN("spr_write_status",IN,NORTH,_("Interface to write generalist register - from/to status"),_param->_nb_ooo_engine,_param->_nb_spr_write); 170 171 ALLOC2_VALACK_OUT(out_SPR_WRITE_STATUS_VAL,VAL); 172 ALLOC2_VALACK_IN ( in_SPR_WRITE_STATUS_ACK,ACK); 173 174 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_write); 175 } 176 177 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 178 { 179 ALLOC2_INTERFACE_BEGIN("insert_rob",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 180 181 _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL ,VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 182 _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK ,ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 183 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE,"rd_use",Tcontrol_t, 1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 184 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE,"re_use",Tcontrol_t, 1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 185 186 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 187 } 188 189 { 190 ALLOC2_INTERFACE_BEGIN("insert_rob_gpr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 191 192 _ALLOC2_VALACK_OUT(out_INSERT_ROB_GPR_STATUS_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 193 _ALLOC2_VALACK_IN ( in_INSERT_ROB_GPR_STATUS_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 194 195 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 196 } 197 198 { 199 ALLOC2_INTERFACE_BEGIN("insert_rob_spr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 200 201 _ALLOC2_VALACK_OUT(out_INSERT_ROB_SPR_STATUS_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 202 _ALLOC2_VALACK_IN ( in_INSERT_ROB_SPR_STATUS_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 203 204 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 205 } 401 206 402 207 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 26 27 { 27 28 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH) 28 delete 29 delete in_CLOCK ; 29 30 //#endif 30 delete in_NRESET; 31 delete in_NRESET; 32 delete out_CONST_0; 33 delete out_CONST_1; 31 34 32 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 33 delete [] in_GPR_READ_VAL ; 34 delete [] out_GPR_READ_ACK ; 35 if (_param->_have_port_ooo_engine_id == true) 36 delete [] in_GPR_READ_OOO_ENGINE_ID ; 37 delete [] out_GPR_READ_DATA ; 38 delete [] out_GPR_READ_DATA_VAL ; 35 DELETE1_SIGNAL( in_GPR_READ_VAL ,_param->_nb_gpr_read,1 ); 36 DELETE1_SIGNAL(out_GPR_READ_ACK ,_param->_nb_gpr_read,1 ); 37 DELETE1_SIGNAL( in_GPR_READ_OOO_ENGINE_ID ,_param->_nb_gpr_read,_param->_size_ooo_engine_id); 38 DELETE1_SIGNAL(out_GPR_READ_DATA ,_param->_nb_gpr_read,_param->_size_general_data); 39 DELETE1_SIGNAL(out_GPR_READ_DATA_VAL ,_param->_nb_gpr_read,1); 40 41 DELETE2_SIGNAL(out_GPR_READ_REGISTERFILE_VAL ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 42 DELETE2_SIGNAL( in_GPR_READ_REGISTERFILE_ACK ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 43 DELETE2_SIGNAL( in_GPR_READ_REGISTERFILE_DATA,_param->_nb_ooo_engine,_param->_nb_gpr_read,_param->_size_general_data); 39 44 40 delete [] out_GPR_READ_REGISTERFILE_VAL;41 delete [] in_GPR_READ_REGISTERFILE_ACK;42 delete [] in_GPR_READ_REGISTERFILE_DATA;45 DELETE2_SIGNAL(out_GPR_READ_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 46 DELETE2_SIGNAL( in_GPR_READ_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 47 DELETE2_SIGNAL( in_GPR_READ_STATUS_DATA_VAL,_param->_nb_ooo_engine,_param->_nb_gpr_read,1); 43 48 44 delete [] out_GPR_READ_STATUS_VAL ; 45 delete [] in_GPR_READ_STATUS_ACK ; 46 delete [] in_GPR_READ_STATUS_DATA_VAL ; 49 DELETE1_SIGNAL( in_SPR_READ_VAL ,_param->_nb_spr_read,1 ); 50 DELETE1_SIGNAL(out_SPR_READ_ACK ,_param->_nb_spr_read,1 ); 51 DELETE1_SIGNAL( in_SPR_READ_OOO_ENGINE_ID ,_param->_nb_spr_read,_param->_size_ooo_engine_id); 52 DELETE1_SIGNAL(out_SPR_READ_DATA ,_param->_nb_spr_read,_param->_size_special_data); 53 DELETE1_SIGNAL(out_SPR_READ_DATA_VAL ,_param->_nb_spr_read,1); 54 55 DELETE2_SIGNAL(out_SPR_READ_REGISTERFILE_VAL ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 56 DELETE2_SIGNAL( in_SPR_READ_REGISTERFILE_ACK ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 57 DELETE2_SIGNAL( in_SPR_READ_REGISTERFILE_DATA,_param->_nb_ooo_engine,_param->_nb_spr_read,_param->_size_special_data); 58 59 DELETE2_SIGNAL(out_SPR_READ_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 60 DELETE2_SIGNAL( in_SPR_READ_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 61 DELETE2_SIGNAL( in_SPR_READ_STATUS_DATA_VAL,_param->_nb_ooo_engine,_param->_nb_spr_read,1); 62 63 DELETE1_SIGNAL( in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1 ); 64 DELETE1_SIGNAL(out_GPR_WRITE_ACK ,_param->_nb_gpr_write,1 ); 65 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 47 66 67 68 DELETE2_SIGNAL(out_GPR_WRITE_REGISTERFILE_VAL,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 69 DELETE2_SIGNAL( in_GPR_WRITE_REGISTERFILE_ACK,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 48 70 49 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 delete [] in_SPR_READ_VAL ; 51 delete [] out_SPR_READ_ACK ; 52 if (_param->_have_port_ooo_engine_id == true) 53 delete [] in_SPR_READ_OOO_ENGINE_ID ; 54 delete [] out_SPR_READ_DATA ; 55 delete [] out_SPR_READ_DATA_VAL ; 71 DELETE2_SIGNAL(out_GPR_WRITE_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 72 DELETE2_SIGNAL( in_GPR_WRITE_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 56 73 57 delete [] out_SPR_READ_REGISTERFILE_VAL;58 delete [] in_SPR_READ_REGISTERFILE_ACK;59 delete [] in_SPR_READ_REGISTERFILE_DATA;74 DELETE1_SIGNAL( in_SPR_WRITE_VAL ,_param->_nb_spr_write,1 ); 75 DELETE1_SIGNAL(out_SPR_WRITE_ACK ,_param->_nb_spr_write,1 ); 76 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id); 60 77 61 delete [] out_SPR_READ_STATUS_VAL ; 62 delete [] in_SPR_READ_STATUS_ACK ; 63 delete [] in_SPR_READ_STATUS_DATA_VAL ; 78 DELETE2_SIGNAL(out_SPR_WRITE_REGISTERFILE_VAL,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 79 DELETE2_SIGNAL( in_SPR_WRITE_REGISTERFILE_ACK,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 64 80 65 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 66 delete [] in_GPR_WRITE_VAL ; 67 delete [] out_GPR_WRITE_ACK ; 68 if (_param->_have_port_ooo_engine_id == true) 69 delete [] in_GPR_WRITE_OOO_ENGINE_ID ; 81 DELETE2_SIGNAL(out_SPR_WRITE_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 82 DELETE2_SIGNAL( in_SPR_WRITE_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 70 83 71 delete [] out_GPR_WRITE_REGISTERFILE_VAL ; 72 delete [] in_GPR_WRITE_REGISTERFILE_ACK ; 84 DELETE2_SIGNAL( in_INSERT_ROB_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 85 DELETE2_SIGNAL(out_INSERT_ROB_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 86 DELETE2_SIGNAL( in_INSERT_ROB_RD_USE,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 87 DELETE2_SIGNAL( in_INSERT_ROB_RE_USE,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 73 88 74 delete [] out_GPR_WRITE_STATUS_VAL;75 delete [] in_GPR_WRITE_STATUS_ACK;89 DELETE2_SIGNAL(out_INSERT_ROB_GPR_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 90 DELETE2_SIGNAL( in_INSERT_ROB_GPR_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 76 91 77 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 78 delete [] in_SPR_WRITE_VAL ; 79 delete [] out_SPR_WRITE_ACK ; 80 if (_param->_have_port_ooo_engine_id == true) 81 delete [] in_SPR_WRITE_OOO_ENGINE_ID ; 82 83 delete [] out_SPR_WRITE_REGISTERFILE_VAL ; 84 delete [] in_SPR_WRITE_REGISTERFILE_ACK ; 85 86 delete [] out_SPR_WRITE_STATUS_VAL ; 87 delete [] in_SPR_WRITE_STATUS_ACK ; 88 89 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 delete [] in_INSERT_ROB_VAL ; 91 delete [] out_INSERT_ROB_ACK ; 92 delete [] in_INSERT_ROB_RD_USE ; 93 delete [] in_INSERT_ROB_RE_USE ; 94 delete [] out_INSERT_ROB_GPR_STATUS_VAL ; 95 delete [] in_INSERT_ROB_GPR_STATUS_ACK ; 96 delete [] out_INSERT_ROB_SPR_STATUS_VAL ; 97 delete [] in_INSERT_ROB_SPR_STATUS_ACK ; 98 99 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 // delete [] in_RETIRE_ROB_VAL ; 101 // delete [] out_RETIRE_ROB_ACK ; 102 // delete [] in_RETIRE_ROB_RD_OLD_USE ; 103 // delete [] in_RETIRE_ROB_RD_NEW_USE ; 104 // delete [] in_RETIRE_ROB_RE_OLD_USE ; 105 // delete [] in_RETIRE_ROB_RE_NEW_USE ; 106 // delete [] out_RETIRE_ROB_GPR_STATUS_OLD_VAL ; 107 // delete [] out_RETIRE_ROB_GPR_STATUS_NEW_VAL ; 108 // delete [] in_RETIRE_ROB_GPR_STATUS_OLD_ACK ; 109 // delete [] in_RETIRE_ROB_GPR_STATUS_NEW_ACK ; 110 // delete [] out_RETIRE_ROB_SPR_STATUS_OLD_VAL ; 111 // delete [] out_RETIRE_ROB_SPR_STATUS_NEW_VAL ; 112 // delete [] in_RETIRE_ROB_SPR_STATUS_OLD_ACK ; 113 // delete [] in_RETIRE_ROB_SPR_STATUS_NEW_ACK ; 92 DELETE2_SIGNAL(out_INSERT_ROB_SPR_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 93 DELETE2_SIGNAL( in_INSERT_ROB_SPR_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 114 94 } 115 95 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 52 53 53 54 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 in_GPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 55 out_GPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 56 if (_param->_have_port_ooo_engine_id == true) 57 in_GPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_read]; 58 in_GPR_READ_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_read]; 59 out_GPR_READ_DATA = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_gpr_read]; 60 out_GPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 61 62 for (uint32_t i=0; i<_param->_nb_gpr_read; i++) 63 { 64 Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(i) 65 #ifdef POSITION 66 ,IN 67 ,NORTH 68 ,"Interface to read the register file" 69 #endif 70 ); 71 72 in_GPR_READ_VAL [i]= interface->set_signal_valack_in (VAL); 73 out_GPR_READ_ACK [i]= interface->set_signal_valack_out (ACK); 74 if (_param->_have_port_ooo_engine_id == true) 75 in_GPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 76 in_GPR_READ_NUM_REG [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg" , _param->_size_gpr_address); 77 out_GPR_READ_DATA [i]= interface->set_signal_out<Tgeneral_data_t > ("data" , _param->_size_general_data); 78 out_GPR_READ_DATA_VAL [i]= interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 79 } 55 { 56 ALLOC1_INTERFACE_BEGIN("gpr_read",IN,NORTH,_("Interface to read the register file"),_param->_nb_gpr_read); 57 58 ALLOC1_VALACK_IN ( in_GPR_READ_VAL ,VAL); 59 ALLOC1_VALACK_OUT(out_GPR_READ_ACK ,ACK); 60 ALLOC1_SIGNAL_IN ( in_GPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 61 ALLOC1_SIGNAL_IN ( in_GPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_gpr_address); 62 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 63 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 64 65 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 66 } 80 67 81 68 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 83 out_GPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 84 if (_param->_have_port_ooo_engine_id == true) 85 in_GPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 86 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 87 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 88 89 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 90 { 91 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i) 92 #ifdef POSITION 93 ,IN 94 ,NORTH, 95 "Interface to write the register file" 96 #endif 97 ); 98 99 in_GPR_WRITE_VAL [i]= interface->set_signal_valack_in (VAL); 100 out_GPR_WRITE_ACK [i]= interface->set_signal_valack_out (ACK); 101 if (_param->_have_port_ooo_engine_id == true) 102 in_GPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 103 in_GPR_WRITE_NUM_REG [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg" , _param->_size_gpr_address); 104 in_GPR_WRITE_DATA [i]= interface->set_signal_in <Tgeneral_data_t > ("data" , _param->_size_general_data); 105 } 69 { 70 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,NORTH,_("Interface to write the register file"),_param->_nb_gpr_write); 71 72 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL ,VAL); 73 ALLOC1_VALACK_OUT(out_GPR_WRITE_ACK ,ACK); 74 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 75 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_gpr_address); 76 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 77 78 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 79 } 106 80 107 81 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 108 in_SPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 109 out_SPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 110 if (_param->_have_port_ooo_engine_id == true) 111 in_SPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_read]; 112 in_SPR_READ_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_read]; 113 out_SPR_READ_DATA = new SC_OUT(Tspecial_data_t ) * [_param->_nb_spr_read]; 114 out_SPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 115 116 for (uint32_t i=0; i<_param->_nb_spr_read; i++) 117 { 118 Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(i) 119 #ifdef POSITION 120 ,IN 121 ,NORTH, 122 "Interface to read the register file" 123 #endif 124 ); 125 126 in_SPR_READ_VAL [i]= interface->set_signal_valack_in (VAL); 127 out_SPR_READ_ACK [i]= interface->set_signal_valack_out (ACK); 128 if (_param->_have_port_ooo_engine_id == true) 129 in_SPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 130 in_SPR_READ_NUM_REG [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg" , _param->_size_spr_address); 131 out_SPR_READ_DATA [i]= interface->set_signal_out<Tspecial_data_t > ("data" , _param->_size_special_data); 132 out_SPR_READ_DATA_VAL [i]= interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 133 } 82 { 83 ALLOC1_INTERFACE_BEGIN("spr_read",IN,NORTH,_("Interface to read the register file"),_param->_nb_spr_read); 84 85 ALLOC1_VALACK_IN ( in_SPR_READ_VAL ,VAL); 86 ALLOC1_VALACK_OUT(out_SPR_READ_ACK ,ACK); 87 ALLOC1_SIGNAL_IN ( in_SPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 88 ALLOC1_SIGNAL_IN ( in_SPR_READ_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_spr_address); 89 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 90 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 91 92 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 93 } 134 94 135 95 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 136 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 137 out_SPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 138 if (_param->_have_port_ooo_engine_id == true) 139 in_SPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 140 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 141 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 142 143 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 144 { 145 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i) 146 #ifdef POSITION 147 ,IN 148 ,NORTH, 149 "Interface to write the register file" 150 #endif 151 ); 152 153 in_SPR_WRITE_VAL [i]= interface->set_signal_valack_in (VAL); 154 out_SPR_WRITE_ACK [i]= interface->set_signal_valack_out (ACK); 155 if (_param->_have_port_ooo_engine_id == true) 156 in_SPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 157 in_SPR_WRITE_NUM_REG [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg" , _param->_size_spr_address); 158 in_SPR_WRITE_DATA [i]= interface->set_signal_in <Tspecial_data_t > ("data" , _param->_size_special_data); 159 } 160 161 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 162 in_INSERT_ROB_VAL = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 163 out_INSERT_ROB_ACK = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 164 in_INSERT_ROB_RD_USE = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 165 in_INSERT_ROB_RD_NUM_REG = new SC_IN (Tgeneral_address_t) ** [_param->_nb_ooo_engine]; 166 in_INSERT_ROB_RE_USE = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 167 in_INSERT_ROB_RE_NUM_REG = new SC_IN (Tspecial_address_t) ** [_param->_nb_ooo_engine]; 168 169 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 170 { 171 uint32_t x=_param->_nb_inst_insert_rob [i]; 172 173 in_INSERT_ROB_VAL [i] = new SC_IN (Tcontrol_t ) * [x]; 174 out_INSERT_ROB_ACK [i] = new SC_OUT(Tcontrol_t ) * [x]; 175 in_INSERT_ROB_RD_USE [i] = new SC_IN (Tcontrol_t ) * [x]; 176 in_INSERT_ROB_RD_NUM_REG [i] = new SC_IN (Tgeneral_address_t) * [x]; 177 in_INSERT_ROB_RE_USE [i] = new SC_IN (Tcontrol_t ) * [x]; 178 in_INSERT_ROB_RE_NUM_REG [i] = new SC_IN (Tspecial_address_t) * [x]; 179 180 for (uint32_t j=0; j<x; j++) 181 { 182 Interface_fifo * interface = _interfaces->set_interface("insert_rob_"+toString(i)+"_"+toString(j) 183 #ifdef POSITION 184 ,IN 185 ,WEST 186 ,"Interface to update status (insert)" 187 #endif 188 ); 189 190 191 in_INSERT_ROB_VAL [i][j] = interface->set_signal_valack_in (VAL); 192 out_INSERT_ROB_ACK [i][j] = interface->set_signal_valack_out (ACK); 193 in_INSERT_ROB_RD_USE [i][j] = interface->set_signal_in <Tcontrol_t > ("rd_use" , 1); 194 in_INSERT_ROB_RD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_num_reg", _param->_size_gpr_address); 195 in_INSERT_ROB_RE_USE [i][j] = interface->set_signal_in <Tcontrol_t > ("re_use" , 1); 196 in_INSERT_ROB_RE_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_num_reg", _param->_size_spr_address); 197 198 } 199 } 96 { 97 ALLOC1_INTERFACE_BEGIN("spr_write",IN,NORTH,_("Interface to write the register file"),_param->_nb_spr_write); 98 99 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL ,VAL); 100 ALLOC1_VALACK_OUT(out_SPR_WRITE_ACK ,ACK); 101 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 102 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_spr_address); 103 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 104 105 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 106 } 107 108 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 109 { 110 ALLOC2_INTERFACE_BEGIN("insert_rob",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 111 112 _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL ,VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 113 _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK ,ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 114 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE ,"rd_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 115 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_NUM_REG,"rd_num_reg",Tgeneral_address_t,_param->_size_gpr_address,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 116 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE ,"re_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 117 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_NUM_REG,"re_num_reg",Tspecial_address_t,_param->_size_spr_address,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 118 119 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 120 } 200 121 201 122 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 24 25 if (usage_is_set(_usage,USE_SYSTEMC)) 25 26 { 26 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH) 27 delete in_CLOCK ; 28 //#endif 29 delete in_NRESET; 27 delete in_CLOCK ; 28 delete in_NRESET; 30 29 31 delete [] in_GPR_READ_VAL ; 32 delete [] out_GPR_READ_ACK ; 33 if (_param->_have_port_ooo_engine_id == true) 34 delete [] in_GPR_READ_OOO_ENGINE_ID ; 35 delete [] in_GPR_READ_NUM_REG ; 36 delete [] out_GPR_READ_DATA ; 37 delete [] out_GPR_READ_DATA_VAL ; 38 delete [] in_GPR_WRITE_VAL ; 39 delete [] out_GPR_WRITE_ACK ; 40 if (_param->_have_port_ooo_engine_id == true) 41 delete [] in_GPR_WRITE_OOO_ENGINE_ID ; 42 delete [] in_GPR_WRITE_NUM_REG ; 43 delete [] in_GPR_WRITE_DATA ; 44 delete [] in_SPR_READ_VAL ; 45 delete [] out_SPR_READ_ACK ; 46 if (_param->_have_port_ooo_engine_id == true) 47 delete [] in_SPR_READ_OOO_ENGINE_ID ; 48 delete [] in_SPR_READ_NUM_REG ; 49 delete [] out_SPR_READ_DATA ; 50 delete [] out_SPR_READ_DATA_VAL ; 51 delete [] in_SPR_WRITE_VAL ; 52 delete [] out_SPR_WRITE_ACK ; 53 if (_param->_have_port_ooo_engine_id == true) 54 delete [] in_SPR_WRITE_OOO_ENGINE_ID ; 55 delete [] in_SPR_WRITE_NUM_REG ; 56 delete [] in_SPR_WRITE_DATA ; 57 delete [] in_INSERT_ROB_VAL ; 58 delete [] out_INSERT_ROB_ACK ; 59 delete [] in_INSERT_ROB_RD_USE ; 60 delete [] in_INSERT_ROB_RD_NUM_REG ; 61 delete [] in_INSERT_ROB_RE_USE ; 62 delete [] in_INSERT_ROB_RE_NUM_REG ; 30 DELETE1_SIGNAL( in_GPR_READ_VAL ,_param->_nb_gpr_read,1); 31 DELETE1_SIGNAL(out_GPR_READ_ACK ,_param->_nb_gpr_read,1); 32 DELETE1_SIGNAL( in_GPR_READ_OOO_ENGINE_ID ,_param->_nb_gpr_read,_param->_size_ooo_engine_id); 33 DELETE1_SIGNAL( in_GPR_READ_NUM_REG ,_param->_nb_gpr_read,_param->_size_gpr_address); 34 DELETE1_SIGNAL(out_GPR_READ_DATA ,_param->_nb_gpr_read,_param->_size_general_data); 35 DELETE1_SIGNAL(out_GPR_READ_DATA_VAL ,_param->_nb_gpr_read,1); 36 37 DELETE1_SIGNAL( in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1); 38 DELETE1_SIGNAL(out_GPR_WRITE_ACK ,_param->_nb_gpr_write,1); 39 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 40 DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG ,_param->_nb_gpr_write,_param->_size_gpr_address); 41 DELETE1_SIGNAL( in_GPR_WRITE_DATA ,_param->_nb_gpr_write,_param->_size_general_data); 42 43 DELETE1_SIGNAL( in_SPR_READ_VAL ,_param->_nb_spr_read,1); 44 DELETE1_SIGNAL(out_SPR_READ_ACK ,_param->_nb_spr_read,1); 45 DELETE1_SIGNAL( in_SPR_READ_OOO_ENGINE_ID ,_param->_nb_spr_read,_param->_size_ooo_engine_id); 46 DELETE1_SIGNAL( in_SPR_READ_NUM_REG ,_param->_nb_spr_read,_param->_size_spr_address); 47 DELETE1_SIGNAL(out_SPR_READ_DATA ,_param->_nb_spr_read,_param->_size_special_data); 48 DELETE1_SIGNAL(out_SPR_READ_DATA_VAL ,_param->_nb_spr_read,1); 49 50 DELETE1_SIGNAL( in_SPR_WRITE_VAL ,_param->_nb_spr_write,1); 51 DELETE1_SIGNAL(out_SPR_WRITE_ACK ,_param->_nb_spr_write,1); 52 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id); 53 DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG ,_param->_nb_spr_write,_param->_size_spr_address); 54 DELETE1_SIGNAL( in_SPR_WRITE_DATA ,_param->_nb_spr_write,_param->_size_special_data); 55 56 DELETE2_SIGNAL( in_INSERT_ROB_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 57 DELETE2_SIGNAL(out_INSERT_ROB_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 58 DELETE2_SIGNAL( in_INSERT_ROB_RD_USE ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 59 DELETE2_SIGNAL( in_INSERT_ROB_RD_NUM_REG ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],_param->_size_gpr_address); 60 DELETE2_SIGNAL( in_INSERT_ROB_RE_USE ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 61 DELETE2_SIGNAL( in_INSERT_ROB_RE_NUM_REG ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],_param->_size_spr_address); 62 63 63 // delete [] in_RETIRE_ROB_VAL ; 64 64 // delete [] out_RETIRE_ROB_ACK ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Execute_loop_allocation.cpp
r97 r112 55 55 // ~~~~~[ Interface "execute_loop_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 56 56 { 57 ALLOC1_INTERFACE ("execute_loop_in", IN, EAST, "Operation's Input", _param->_nb_read_unit);57 ALLOC1_INTERFACE_BEGIN("execute_loop_in", IN, EAST, "Operation's Input", _param->_nb_read_unit); 58 58 59 59 ALLOC1_VALACK_IN ( in_EXECUTE_LOOP_IN_VAL,VAL); … … 66 66 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type); 67 67 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 68 if (_param->_have_port_load_queue_ptr)69 68 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 70 69 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); … … 80 79 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 81 80 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 81 82 ALLOC1_INTERFACE_END(param->_nb_read_unit); 82 83 } 83 84 // ~~~~~[ Interface "execute_loop_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 84 85 { 85 ALLOC1_INTERFACE ("execute_loop_out",OUT, EAST, "Operation's Output", _param->_nb_write_unit);86 ALLOC1_INTERFACE_BEGIN("execute_loop_out",OUT, EAST, "Operation's Output", _param->_nb_write_unit); 86 87 87 88 ALLOC1_VALACK_OUT(out_EXECUTE_LOOP_OUT_VAL,VAL); … … 98 99 ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 99 100 ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data); 101 102 ALLOC1_INTERFACE_END(_param->_nb_write_unit); 100 103 } 101 104 // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 102 105 { 103 ALLOC2_INTERFACE ("dcache_req",OUT, NORTH, "Data cache port : request", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);106 ALLOC2_INTERFACE_BEGIN("dcache_req",OUT, NORTH, "Data cache port : request", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 104 107 105 108 _ALLOC2_VALACK_OUT(out_DCACHE_REQ_VAL,VAL, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); … … 110 113 _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_TYPE ,"type" ,Tdcache_type_t ,_param->_size_dcache_type , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 111 114 _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_WDATA ,"wdata" ,Tdcache_data_t ,_param->_size_general_data , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 115 116 ALLOC2_INTERFACE_END(_param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 112 117 } 118 113 119 // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 114 120 { 115 ALLOC2_INTERFACE ("dcache_rsp",IN, NORTH, "Data cache port : respons", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);121 ALLOC2_INTERFACE_BEGIN("dcache_rsp",IN, NORTH, "Data cache port : respons", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 116 122 117 123 _ALLOC2_VALACK_IN ( in_DCACHE_RSP_VAL,VAL, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); … … 121 127 _ALLOC2_SIGNAL_IN ( in_DCACHE_RSP_RDATA ,"rdata" ,Tdcache_data_t ,_param->_size_general_data , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 122 128 _ALLOC2_SIGNAL_IN ( in_DCACHE_RSP_ERROR ,"error" ,Tdcache_error_t,_param->_size_dcache_error , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 129 130 ALLOC2_INTERFACE_END(_param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 123 131 } 132 124 133 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 125 134 { 126 ALLOC2_INTERFACE ("insert_rob",IN, EAST, "Rename's stage : insert a new instruction in the Re Order Buffer",_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);135 ALLOC2_INTERFACE_BEGIN("insert_rob",IN, EAST, "Rename's stage : insert a new instruction in the Re Order Buffer",_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 127 136 128 137 _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); … … 133 142 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE ,"re_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 134 143 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_NUM_REG,"re_num_reg",Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 144 145 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 135 146 } 147 136 148 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 137 149 // {
Note: See TracChangeset
for help on using the changeset viewer.