Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit
- Timestamp:
- Dec 10, 2008, 7:31:39 PM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit
- Files:
-
- 1 added
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/Makefile
r81 r88 24 24 library_clean : Read_unit_to_Execution_unit_library_clean 25 25 26 local_clean : 27 26 28 include $(DIR_COMPONENT)/Makefile.deps 27 29 include $(DIR_MORPHEO)/Behavioural/Makefile.flags -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_min.cfg
r81 r88 1 1 Read_unit_to_Execution_unit 2 2 1 1 *2 # nb_read_unit 3 2 2 *2 # nb_execute_unit 3 1 1 +1 # nb_read_unit_port [0] [nb_read_unit] 4 2 2 *2 # nb_execute_unit 5 1 1 +1 # nb_execute_unit_port [0] [nb_execute_unit] 6 1 1 +1 # nb_execute_unit_port [1] [nb_execute_unit] 4 7 1 1 *2 # nb_context 5 8 1 1 *2 # nb_front_end … … 13 16 4 4 *2 # size_load_queue 14 17 0 1 +1 # priority 15 1 1 +1 # table_routing [0][0] 16 1 1 +1 # table_routing [0][1] 18 1 1 +1 # table_routing [0][0][0] 19 1 1 +1 # table_routing [0][1][0] 17 20 0 0 +1 # table_execute_type [0][TYPE_ALU ] 18 21 0 0 +1 # table_execute_type [0][TYPE_SHIFT ] 19 22 0 0 +1 # table_execute_type [0][TYPE_MOVE ] 20 23 0 0 +1 # table_execute_type [0][TYPE_TEST ] 21 0 0 +1 # table_execute_type [0][TYPE_MUL_DIV] 24 0 0 +1 # table_execute_type [0][TYPE_MUL ] 25 0 0 +1 # table_execute_type [0][TYPE_DIV ] 22 26 0 0 +1 # table_execute_type [0][TYPE_EXTEND ] 23 27 0 0 +1 # table_execute_type [0][TYPE_FIND ] … … 30 34 1 1 +1 # table_execute_type [1][TYPE_MOVE ] 31 35 1 1 +1 # table_execute_type [1][TYPE_TEST ] 32 1 1 +1 # table_execute_type [1][TYPE_MUL_DIV] 36 1 1 +1 # table_execute_type [1][TYPE_MUL ] 37 1 1 +1 # table_execute_type [1][TYPE_DIV ] 33 38 1 1 +1 # table_execute_type [1][TYPE_EXTEND ] 34 39 1 1 +1 # table_execute_type [1][TYPE_FIND ] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_multi_execute-mono_thread.cfg
r81 r88 1 1 Read_unit_to_Execution_unit 2 2 3 3 *2 # nb_read_unit 3 1 1 +1 # nb_read_unit_port [0] [nb_read_unit] 4 2 2 +1 # nb_read_unit_port [1] [nb_read_unit] 5 4 4 +1 # nb_read_unit_port [2] [nb_read_unit] 3 6 4 4 *2 # nb_execute_unit 7 1 1 +1 # nb_execute_unit_port [0] [nb_execute_unit] 8 1 1 +1 # nb_execute_unit_port [1] [nb_execute_unit] 9 1 1 +1 # nb_execute_unit_port [2] [nb_execute_unit] 10 1 1 +1 # nb_execute_unit_port [3] [nb_execute_unit] 4 11 1 1 *2 # nb_context 5 12 1 1 *2 # nb_front_end … … 13 20 1 4 *4 # size_load_queue 14 21 0 1 +1 # priority 15 1 1 +1 # table_routing [0][0] 16 0 0 +1 # table_routing [0][1] 17 0 0 +1 # table_routing [0][2] 18 0 0 +1 # table_routing [0][3] 19 0 0 +1 # table_routing [1][0] 20 1 1 +1 # table_routing [1][1] 21 1 1 +1 # table_routing [1][2] 22 0 0 +1 # table_routing [1][3] 23 0 0 +1 # table_routing [2][0] 24 0 0 +1 # table_routing [2][1] 25 1 1 +1 # table_routing [2][2] 26 1 1 +1 # table_routing [2][3] 22 1 1 +1 # table_routing [0][0][0] 23 0 0 +1 # table_routing [0][1][0] 24 0 0 +1 # table_routing [0][2][0] 25 0 0 +1 # table_routing [0][3][0] 26 0 0 +1 # table_routing [1][0][0] 27 1 1 +1 # table_routing [1][1][0] 28 1 1 +1 # table_routing [1][2][0] 29 0 0 +1 # table_routing [1][3][0] 30 0 0 +1 # table_routing [2][0][0] 31 0 0 +1 # table_routing [2][1][0] 32 1 1 +1 # table_routing [2][2][0] 33 1 1 +1 # table_routing [2][3][0] 27 34 0 0 +1 # table_execute_type [0][TYPE_ALU ] 28 35 0 0 +1 # table_execute_type [0][TYPE_SHIFT ] 29 36 0 0 +1 # table_execute_type [0][TYPE_MOVE ] 30 37 0 0 +1 # table_execute_type [0][TYPE_TEST ] 31 0 0 +1 # table_execute_type [0][TYPE_MUL_DIV] 38 0 0 +1 # table_execute_type [0][TYPE_MUL ] 39 0 0 +1 # table_execute_type [0][TYPE_DIV ] 32 40 0 0 +1 # table_execute_type [0][TYPE_EXTEND ] 33 41 0 0 +1 # table_execute_type [0][TYPE_FIND ] … … 40 48 1 1 +1 # table_execute_type [1][TYPE_MOVE ] 41 49 1 1 +1 # table_execute_type [1][TYPE_TEST ] 42 1 1 +1 # table_execute_type [1][TYPE_MUL_DIV] 50 1 1 +1 # table_execute_type [1][TYPE_MUL ] 51 1 1 +1 # table_execute_type [1][TYPE_DIV ] 43 52 1 1 +1 # table_execute_type [1][TYPE_EXTEND ] 44 53 1 1 +1 # table_execute_type [1][TYPE_FIND ] … … 51 60 0 0 +1 # table_execute_type [2][TYPE_MOVE ] 52 61 0 0 +1 # table_execute_type [2][TYPE_TEST ] 53 0 0 +1 # table_execute_type [2][TYPE_MUL_DIV] 62 0 0 +1 # table_execute_type [2][TYPE_MUL ] 63 0 0 +1 # table_execute_type [2][TYPE_DIV ] 54 64 0 0 +1 # table_execute_type [2][TYPE_EXTEND ] 55 65 0 0 +1 # table_execute_type [2][TYPE_FIND ] … … 62 72 1 1 +1 # table_execute_type [3][TYPE_MOVE ] 63 73 1 1 +1 # table_execute_type [3][TYPE_TEST ] 64 0 0 +1 # table_execute_type [3][TYPE_MUL_DIV] 74 0 0 +1 # table_execute_type [3][TYPE_MUL ] 75 0 0 +1 # table_execute_type [3][TYPE_DIV ] 65 76 1 1 +1 # table_execute_type [3][TYPE_EXTEND ] 66 77 1 1 +1 # table_execute_type [3][TYPE_FIND ] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_multi_execute-multi_thread.cfg
r81 r88 1 1 Read_unit_to_Execution_unit 2 2 3 3 *2 # nb_read_unit 3 1 1 +1 # nb_read_unit_port [0] [nb_read_unit] 4 1 1 +1 # nb_read_unit_port [1] [nb_read_unit] 5 1 1 +1 # nb_read_unit_port [2] [nb_read_unit] 3 6 4 4 *2 # nb_execute_unit 7 1 1 +1 # nb_execute_unit_port [0] [nb_execute_unit] 8 1 1 +1 # nb_execute_unit_port [1] [nb_execute_unit] 9 1 1 +1 # nb_execute_unit_port [2] [nb_execute_unit] 10 1 1 +1 # nb_execute_unit_port [3] [nb_execute_unit] 4 11 4 4 *2 # nb_context 5 12 1 1 *2 # nb_front_end … … 13 20 4 4 *2 # size_load_queue 14 21 0 1 +1 # priority 15 1 1 +1 # table_routing [0][0] 16 0 0 +1 # table_routing [0][1] 17 0 0 +1 # table_routing [0][2] 18 0 0 +1 # table_routing [0][3] 19 0 0 +1 # table_routing [1][0] 20 1 1 +1 # table_routing [1][1] 21 1 1 +1 # table_routing [1][2] 22 0 0 +1 # table_routing [1][3] 23 0 0 +1 # table_routing [2][0] 24 0 0 +1 # table_routing [2][1] 25 1 1 +1 # table_routing [2][2] 26 1 1 +1 # table_routing [2][3] 22 1 1 +1 # table_routing [0][0][0] 23 0 0 +1 # table_routing [0][1][0] 24 0 0 +1 # table_routing [0][2][0] 25 0 0 +1 # table_routing [0][3][0] 26 0 0 +1 # table_routing [1][0][0] 27 1 1 +1 # table_routing [1][1][0] 28 1 1 +1 # table_routing [1][2][0] 29 0 0 +1 # table_routing [1][3][0] 30 0 0 +1 # table_routing [2][0][0] 31 0 0 +1 # table_routing [2][1][0] 32 1 1 +1 # table_routing [2][2][0] 33 1 1 +1 # table_routing [2][3][0] 27 34 0 0 +1 # table_execute_type [0][TYPE_ALU ] 28 35 0 0 +1 # table_execute_type [0][TYPE_SHIFT ] 29 36 0 0 +1 # table_execute_type [0][TYPE_MOVE ] 30 37 0 0 +1 # table_execute_type [0][TYPE_TEST ] 31 0 0 +1 # table_execute_type [0][TYPE_MUL_DIV] 38 0 0 +1 # table_execute_type [0][TYPE_MUL ] 39 0 0 +1 # table_execute_type [0][TYPE_DIV ] 32 40 0 0 +1 # table_execute_type [0][TYPE_EXTEND ] 33 41 0 0 +1 # table_execute_type [0][TYPE_FIND ] … … 40 48 1 1 +1 # table_execute_type [1][TYPE_MOVE ] 41 49 1 1 +1 # table_execute_type [1][TYPE_TEST ] 42 1 1 +1 # table_execute_type [1][TYPE_MUL_DIV] 50 1 1 +1 # table_execute_type [1][TYPE_MUL ] 51 1 1 +1 # table_execute_type [1][TYPE_DIV ] 43 52 1 1 +1 # table_execute_type [1][TYPE_EXTEND ] 44 53 1 1 +1 # table_execute_type [1][TYPE_FIND ] … … 51 60 0 0 +1 # table_execute_type [2][TYPE_MOVE ] 52 61 0 0 +1 # table_execute_type [2][TYPE_TEST ] 53 0 0 +1 # table_execute_type [2][TYPE_MUL_DIV] 62 0 0 +1 # table_execute_type [2][TYPE_MUL ] 63 0 0 +1 # table_execute_type [2][TYPE_DIV ] 54 64 0 0 +1 # table_execute_type [2][TYPE_EXTEND ] 55 65 0 0 +1 # table_execute_type [2][TYPE_FIND ] … … 62 72 1 1 +1 # table_execute_type [3][TYPE_MOVE ] 63 73 1 1 +1 # table_execute_type [3][TYPE_TEST ] 64 1 1 +1 # table_execute_type [3][TYPE_MUL_DIV] 74 1 1 +1 # table_execute_type [3][TYPE_MUL ] 75 1 1 +1 # table_execute_type [3][TYPE_DIV ] 65 76 0 0 +1 # table_execute_type [3][TYPE_EXTEND ] 66 77 0 0 +1 # table_execute_type [3][TYPE_FIND ] … … 84 95 0 0 +1 # table_execute_thread [3][1] 85 96 0 0 +1 # table_execute_thread [3][2] 86 1 1 +1 # table_execute_thread [3][3] 97 1 1 +1 # table_execute_thread [3][3] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/main.cpp
r81 r88 15 15 err (_("list_params is :\n")); 16 16 err (_(" * nb_read_unit (uint32_t)\n")); 17 err (_(" * nb_read_unit_port [nb_read_unit] (uint32_t)\n")); 17 18 err (_(" * nb_execute_unit (uint32_t)\n")); 19 err (_(" * nb_execute_unit_port [nb_execute_unit] (uint32_t)\n")); 18 20 err (_(" * nb_context (uint32_t)\n")); 19 21 err (_(" * nb_front_end (uint32_t)\n")); … … 33 35 err (_(" * [TYPE_MOVE ]\n")); 34 36 err (_(" * [TYPE_TEST ]\n")); 35 err (_(" * [TYPE_MUL_DIV]\n")); 37 err (_(" * [TYPE_MUL ]\n")); 38 err (_(" * [TYPE_DIV ]\n")); 36 39 err (_(" * [TYPE_EXTEND ]\n")); 37 40 err (_(" * [TYPE_FIND ]\n")); … … 58 61 string name = argv[x++]; 59 62 uint32_t _nb_read_unit = atoi(argv[x++]); 63 64 if (static_cast<uint32_t>(argc) < 2+NB_PARAMS+_nb_read_unit) 65 usage (argc, argv); 66 67 uint32_t * _nb_read_unit_port = new uint32_t [_nb_read_unit]; 68 for (uint32_t i=0; i<_nb_read_unit; i++) 69 _nb_read_unit_port [i] = atoi(argv[x++]); 70 60 71 uint32_t _nb_execute_unit = atoi(argv[x++]); 72 73 if (static_cast<uint32_t>(argc) < 2+NB_PARAMS+_nb_read_unit+_nb_execute_unit) 74 usage (argc, argv); 75 76 uint32_t _sum_execute_unit_port = 0; 77 uint32_t * _nb_execute_unit_port = new uint32_t [_nb_execute_unit]; 78 for (uint32_t i=0; i<_nb_execute_unit; i++) 79 { 80 _nb_execute_unit_port [i] = atoi(argv[x++]); 81 _sum_execute_unit_port += _nb_execute_unit_port [i]; 82 } 83 61 84 uint32_t _nb_context = atoi(argv[x++]); 62 85 uint32_t _nb_front_end = atoi(argv[x++]); … … 70 93 uint32_t _size_load_queue = atoi(argv[x++]); 71 94 Tpriority_t _priority = fromString<Tpriority_t>(argv[x++]); 72 95 73 96 uint32_t _nb_thread = get_nb_thread(_nb_context, _nb_front_end, _nb_ooo_engine); 74 97 75 if (static_cast<uint32_t>(argc) != 2+NB_PARAMS+(_nb_read_unit*_nb_execute_unit)+(_nb_execute_unit*11)+(_nb_execute_unit*_nb_thread)) 76 usage (argc, argv); 77 78 bool ** _table_routing ; 79 bool ** _table_execute_type ; 80 bool ** _table_execute_thread ; 81 82 _table_routing = new bool * [_nb_read_unit]; 98 msg("%d\n",argc); 99 msg("%d\n",2+NB_PARAMS+(_nb_read_unit+_nb_execute_unit+(_nb_read_unit*_sum_execute_unit_port)+(_nb_execute_unit*12)+(_nb_execute_unit*_nb_thread))); 100 101 if (static_cast<uint32_t>(argc) != 2+NB_PARAMS+(_nb_read_unit+_nb_execute_unit+(_nb_read_unit*_sum_execute_unit_port)+(_nb_execute_unit*12)+(_nb_execute_unit*_nb_thread))) 102 usage (argc, argv); 103 104 bool *** _table_routing ; 105 bool ** _table_execute_type ; 106 bool ** _table_execute_thread ; 107 108 _table_routing = new bool ** [_nb_read_unit]; 83 109 for (uint32_t i=0; i<_nb_read_unit; i++) 84 110 { 85 _table_routing [i] = new bool [_nb_execute_unit];111 _table_routing [i] = new bool * [_nb_execute_unit]; 86 112 for (uint32_t j=0; j<_nb_execute_unit; j++) 87 _table_routing [i][j] = atoi(argv[x++]); 88 } 89 113 { 114 _table_routing [i][j] = new bool [_nb_execute_unit_port [j]]; 115 116 for (uint32_t k=0; k<_nb_execute_unit_port [j]; k++) 117 _table_routing [i][j][k] = atoi(argv[x++]); 118 } 119 } 120 90 121 _table_execute_type = new bool * [_nb_execute_unit]; 91 122 for (uint32_t i=0; i<_nb_execute_unit; i++) … … 97 128 _table_execute_type [i][TYPE_MOVE ] = atoi(argv[x++]); 98 129 _table_execute_type [i][TYPE_TEST ] = atoi(argv[x++]); 99 _table_execute_type [i][TYPE_MUL_DIV] = atoi(argv[x++]); 130 _table_execute_type [i][TYPE_MUL ] = atoi(argv[x++]); 131 _table_execute_type [i][TYPE_DIV ] = atoi(argv[x++]); 100 132 _table_execute_type [i][TYPE_EXTEND ] = atoi(argv[x++]); 101 133 _table_execute_type [i][TYPE_FIND ] = atoi(argv[x++]); … … 119 151 morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters 120 152 (_nb_read_unit , 153 _nb_read_unit_port , 121 154 _nb_execute_unit , 155 _nb_execute_unit_port , 122 156 _nb_context , 123 157 _nb_front_end , … … 133 167 _table_routing , 134 168 _table_execute_type , 135 _table_execute_thread 169 _table_execute_thread , 170 true // is_toplevel 136 171 ); 137 172 … … 151 186 } 152 187 153 delete [] _table_routing ; 188 delete [] _nb_read_unit_port; 189 delete [] _nb_execute_unit_port ; 190 191 for (uint32_t i=0; i<_nb_read_unit; i++) 192 { 193 for (uint32_t j=0; j<_nb_execute_unit; j++) 194 delete [] _table_routing [i][j]; 195 delete [] _table_routing [i]; 196 } 197 delete [] _table_routing; 198 199 200 for (uint32_t i=0; i<_nb_execute_unit; i++) 201 delete [] _table_execute_type [i]; 154 202 delete [] _table_execute_type ; 203 204 for (uint32_t i=0; i<_nb_execute_unit; i++) 205 delete [] _table_execute_thread [i]; 155 206 delete [] _table_execute_thread ; 207 156 208 157 209 return (EXIT_SUCCESS); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/test.cpp
r82 r88 84 84 #endif 85 85 86 Tusage_t _usage = USE_ALL; 87 88 // _usage = usage_unset(_usage,USE_SYSTEMC ); 89 // _usage = usage_unset(_usage,USE_VHDL ); 90 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH ); 91 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT); 92 // _usage = usage_unset(_usage,USE_POSITION ); 93 _usage = usage_unset(_usage,USE_STATISTICS ); 94 // _usage = usage_unset(_usage,USE_INFORMATION ); 95 86 96 Read_unit_to_Execution_unit * _Read_unit_to_Execution_unit = new Read_unit_to_Execution_unit 87 97 (name.c_str(), … … 90 100 #endif 91 101 _param, 92 USE_ALL);102 _usage); 93 103 94 104 #ifdef SYSTEMC … … 101 111 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 102 112 103 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_VAL ," in_READ_UNIT_OUT_VAL" ,Tcontrol_t ,_param->_nb_read_unit);104 ALLOC 1_SC_SIGNAL(out_READ_UNIT_OUT_ACK ,"out_READ_UNIT_OUT_ACK" ,Tcontrol_t ,_param->_nb_read_unit);105 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_CONTEXT_ID ," in_READ_UNIT_OUT_CONTEXT_ID" ,Tcontext_t ,_param->_nb_read_unit);106 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_FRONT_END_ID ," in_READ_UNIT_OUT_FRONT_END_ID" ,Tcontext_t ,_param->_nb_read_unit);107 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_OOO_ENGINE_ID ," in_READ_UNIT_OUT_OOO_ENGINE_ID" ,Tcontext_t ,_param->_nb_read_unit);108 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_PACKET_ID ," in_READ_UNIT_OUT_PACKET_ID" ,Tpacket_t ,_param->_nb_read_unit);109 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_OPERATION ," in_READ_UNIT_OUT_OPERATION" ,Toperation_t ,_param->_nb_read_unit);110 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_TYPE ," in_READ_UNIT_OUT_TYPE" ,Ttype_t ,_param->_nb_read_unit);111 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE," in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_nb_read_unit);112 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_nb_read_unit);113 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_HAS_IMMEDIAT ," in_READ_UNIT_OUT_HAS_IMMEDIAT" ,Tcontrol_t ,_param->_nb_read_unit);114 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_IMMEDIAT ," in_READ_UNIT_OUT_IMMEDIAT" ,Tgeneral_data_t ,_param->_nb_read_unit);115 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RA ," in_READ_UNIT_OUT_DATA_RA" ,Tgeneral_data_t ,_param->_nb_read_unit);116 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RB ," in_READ_UNIT_OUT_DATA_RB" ,Tgeneral_data_t ,_param->_nb_read_unit);117 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RC ," in_READ_UNIT_OUT_DATA_RC" ,Tspecial_data_t ,_param->_nb_read_unit);118 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RD ," in_READ_UNIT_OUT_WRITE_RD" ,Tcontrol_t ,_param->_nb_read_unit);119 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RD ," in_READ_UNIT_OUT_NUM_REG_RD" ,Tgeneral_address_t,_param->_nb_read_unit);120 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RE ," in_READ_UNIT_OUT_WRITE_RE" ,Tcontrol_t ,_param->_nb_read_unit);121 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RE ," in_READ_UNIT_OUT_NUM_REG_RE" ,Tspecial_address_t,_param->_nb_read_unit);122 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_VAL ,"out_EXECUTE_UNIT_IN_VAL" ,Tcontrol_t ,_param->_nb_execute_unit);123 ALLOC 1_SC_SIGNAL( in_EXECUTE_UNIT_IN_ACK ," in_EXECUTE_UNIT_IN_ACK" ,Tcontrol_t ,_param->_nb_execute_unit);124 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_CONTEXT_ID ,"out_EXECUTE_UNIT_IN_CONTEXT_ID" ,Tcontext_t ,_param->_nb_execute_unit);125 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_FRONT_END_ID ,"out_EXECUTE_UNIT_IN_FRONT_END_ID" ,Tcontext_t ,_param->_nb_execute_unit);126 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,"out_EXECUTE_UNIT_IN_OOO_ENGINE_ID" ,Tcontext_t ,_param->_nb_execute_unit);127 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_PACKET_ID ,"out_EXECUTE_UNIT_IN_PACKET_ID" ,Tpacket_t ,_param->_nb_execute_unit);128 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_OPERATION ,"out_EXECUTE_UNIT_IN_OPERATION" ,Toperation_t ,_param->_nb_execute_unit);129 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_TYPE ,"out_EXECUTE_UNIT_IN_TYPE" ,Ttype_t ,_param->_nb_execute_unit);130 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,"out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_nb_execute_unit);131 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_nb_execute_unit);132 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,"out_EXECUTE_UNIT_IN_HAS_IMMEDIAT" ,Tcontrol_t ,_param->_nb_execute_unit);133 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_IMMEDIAT ,"out_EXECUTE_UNIT_IN_IMMEDIAT" ,Tgeneral_data_t ,_param->_nb_execute_unit);134 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RA ,"out_EXECUTE_UNIT_IN_DATA_RA" ,Tgeneral_data_t ,_param->_nb_execute_unit);135 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RB ,"out_EXECUTE_UNIT_IN_DATA_RB" ,Tgeneral_data_t ,_param->_nb_execute_unit);136 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RC ,"out_EXECUTE_UNIT_IN_DATA_RC" ,Tspecial_data_t ,_param->_nb_execute_unit);137 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RD ,"out_EXECUTE_UNIT_IN_WRITE_RD" ,Tcontrol_t ,_param->_nb_execute_unit);138 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD ,"out_EXECUTE_UNIT_IN_NUM_REG_RD" ,Tgeneral_address_t,_param->_nb_execute_unit);139 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RE ,"out_EXECUTE_UNIT_IN_WRITE_RE" ,Tcontrol_t ,_param->_nb_execute_unit);140 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RE ,"out_EXECUTE_UNIT_IN_NUM_REG_RE" ,Tspecial_address_t,_param->_nb_execute_unit);113 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_VAL ," in_READ_UNIT_OUT_VAL" ,Tcontrol_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 114 ALLOC2_SC_SIGNAL(out_READ_UNIT_OUT_ACK ,"out_READ_UNIT_OUT_ACK" ,Tcontrol_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 115 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_CONTEXT_ID ," in_READ_UNIT_OUT_CONTEXT_ID" ,Tcontext_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 116 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_FRONT_END_ID ," in_READ_UNIT_OUT_FRONT_END_ID" ,Tcontext_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 117 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_OOO_ENGINE_ID ," in_READ_UNIT_OUT_OOO_ENGINE_ID" ,Tcontext_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 118 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_PACKET_ID ," in_READ_UNIT_OUT_PACKET_ID" ,Tpacket_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 119 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_OPERATION ," in_READ_UNIT_OUT_OPERATION" ,Toperation_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 120 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_TYPE ," in_READ_UNIT_OUT_TYPE" ,Ttype_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 121 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE," in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 122 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 123 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_HAS_IMMEDIAT ," in_READ_UNIT_OUT_HAS_IMMEDIAT" ,Tcontrol_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 124 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_IMMEDIAT ," in_READ_UNIT_OUT_IMMEDIAT" ,Tgeneral_data_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 125 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RA ," in_READ_UNIT_OUT_DATA_RA" ,Tgeneral_data_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 126 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RB ," in_READ_UNIT_OUT_DATA_RB" ,Tgeneral_data_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 127 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RC ," in_READ_UNIT_OUT_DATA_RC" ,Tspecial_data_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 128 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RD ," in_READ_UNIT_OUT_WRITE_RD" ,Tcontrol_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 129 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RD ," in_READ_UNIT_OUT_NUM_REG_RD" ,Tgeneral_address_t,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 130 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RE ," in_READ_UNIT_OUT_WRITE_RE" ,Tcontrol_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 131 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RE ," in_READ_UNIT_OUT_NUM_REG_RE" ,Tspecial_address_t,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 132 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_VAL ,"out_EXECUTE_UNIT_IN_VAL" ,Tcontrol_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 133 ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_IN_ACK ," in_EXECUTE_UNIT_IN_ACK" ,Tcontrol_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 134 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_CONTEXT_ID ,"out_EXECUTE_UNIT_IN_CONTEXT_ID" ,Tcontext_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 135 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_FRONT_END_ID ,"out_EXECUTE_UNIT_IN_FRONT_END_ID" ,Tcontext_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 136 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,"out_EXECUTE_UNIT_IN_OOO_ENGINE_ID" ,Tcontext_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 137 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_PACKET_ID ,"out_EXECUTE_UNIT_IN_PACKET_ID" ,Tpacket_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 138 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_OPERATION ,"out_EXECUTE_UNIT_IN_OPERATION" ,Toperation_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 139 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_TYPE ,"out_EXECUTE_UNIT_IN_TYPE" ,Ttype_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 140 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,"out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 141 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 142 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,"out_EXECUTE_UNIT_IN_HAS_IMMEDIAT" ,Tcontrol_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 143 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_IMMEDIAT ,"out_EXECUTE_UNIT_IN_IMMEDIAT" ,Tgeneral_data_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 144 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RA ,"out_EXECUTE_UNIT_IN_DATA_RA" ,Tgeneral_data_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 145 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RB ,"out_EXECUTE_UNIT_IN_DATA_RB" ,Tgeneral_data_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 146 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RC ,"out_EXECUTE_UNIT_IN_DATA_RC" ,Tspecial_data_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 147 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RD ,"out_EXECUTE_UNIT_IN_WRITE_RD" ,Tcontrol_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 148 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD ,"out_EXECUTE_UNIT_IN_NUM_REG_RD" ,Tgeneral_address_t,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 149 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RE ,"out_EXECUTE_UNIT_IN_WRITE_RE" ,Tcontrol_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 150 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RE ,"out_EXECUTE_UNIT_IN_NUM_REG_RE" ,Tspecial_address_t,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 141 151 142 152 … … 150 160 (*(_Read_unit_to_Execution_unit->in_NRESET)) (*(in_NRESET)); 151 161 152 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_VAL ,_param->_nb_read_unit);153 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_READ_UNIT_OUT_ACK ,_param->_nb_read_unit);162 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_VAL ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 163 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_READ_UNIT_OUT_ACK ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 154 164 if (_param->_have_port_context_id) 155 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_CONTEXT_ID ,_param->_nb_read_unit);165 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_CONTEXT_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 156 166 if (_param->_have_port_front_end_id) 157 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_FRONT_END_ID ,_param->_nb_read_unit);167 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_FRONT_END_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 158 168 if (_param->_have_port_ooo_engine_id) 159 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_OOO_ENGINE_ID ,_param->_nb_read_unit);160 if (_param->_have_port_ packet_id)161 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_PACKET_ID ,_param->_nb_read_unit);162 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_OPERATION ,_param->_nb_read_unit);163 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_TYPE ,_param->_nb_read_unit);164 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_read_unit);169 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_OOO_ENGINE_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 170 if (_param->_have_port_rob_ptr ) 171 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_PACKET_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 172 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_OPERATION ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 173 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_TYPE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 174 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 165 175 if (_param->_have_port_load_queue_ptr) 166 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_read_unit);167 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_HAS_IMMEDIAT ,_param->_nb_read_unit);168 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_IMMEDIAT ,_param->_nb_read_unit);169 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RA ,_param->_nb_read_unit);170 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RB ,_param->_nb_read_unit);171 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RC ,_param->_nb_read_unit);172 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_WRITE_RD ,_param->_nb_read_unit);173 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_NUM_REG_RD ,_param->_nb_read_unit);174 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_WRITE_RE ,_param->_nb_read_unit);175 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_NUM_REG_RE ,_param->_nb_read_unit);176 177 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_VAL ,_param->_nb_execute_unit);178 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_EXECUTE_UNIT_IN_ACK ,_param->_nb_execute_unit);176 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 177 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_HAS_IMMEDIAT ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 178 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_IMMEDIAT ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 179 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RA ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 180 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RB ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 181 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RC ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 182 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_WRITE_RD ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 183 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_NUM_REG_RD ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 184 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_WRITE_RE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 185 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_NUM_REG_RE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 186 187 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_VAL ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 188 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_EXECUTE_UNIT_IN_ACK ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 179 189 if (_param->_have_port_context_id) 180 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_CONTEXT_ID ,_param->_nb_execute_unit);190 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_CONTEXT_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 181 191 if (_param->_have_port_front_end_id) 182 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_FRONT_END_ID ,_param->_nb_execute_unit);192 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_FRONT_END_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 183 193 if (_param->_have_port_ooo_engine_id) 184 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,_param->_nb_execute_unit);185 if (_param->_have_port_ packet_id)186 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_PACKET_ID ,_param->_nb_execute_unit);187 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_OPERATION ,_param->_nb_execute_unit);188 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_TYPE ,_param->_nb_execute_unit);189 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_execute_unit);194 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 195 if (_param->_have_port_rob_ptr ) 196 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_PACKET_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 197 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_OPERATION ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 198 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_TYPE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 199 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 190 200 if (_param->_have_port_load_queue_ptr) 191 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_nb_execute_unit);192 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,_param->_nb_execute_unit);193 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_IMMEDIAT ,_param->_nb_execute_unit);194 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RA ,_param->_nb_execute_unit);195 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RB ,_param->_nb_execute_unit);196 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RC ,_param->_nb_execute_unit);197 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_WRITE_RD ,_param->_nb_execute_unit);198 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_NUM_REG_RD ,_param->_nb_execute_unit);199 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_WRITE_RE ,_param->_nb_execute_unit);200 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_NUM_REG_RE ,_param->_nb_execute_unit);201 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 202 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 203 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_IMMEDIAT ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 204 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RA ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 205 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RB ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 206 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RC ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 207 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_WRITE_RD ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 208 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_NUM_REG_RD ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 209 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_WRITE_RE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 210 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_NUM_REG_RE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 201 211 202 212 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); … … 222 232 223 233 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 224 for (uint32_t j=0; j<_param->_nb_execute_unit; j++) 225 if (_param->_table_routing[i][j]) 226 for (uint32_t k=0; k<_param->_nb_thread; k++) 227 if (_param->_table_execute_thread[j][k]) 228 { 229 read_unit_thread [i].insert(k); 230 231 for (uint32_t l=0; l<_param->_nb_type; l++) 232 if (_param->_table_execute_type[j][l]) 233 read_unit_type [i][k].insert(l); 234 } 234 for (uint32_t x=0; x<_param->_nb_execute_unit; x++) 235 for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++) 236 if (_param->_table_routing[i][x][y]) 237 for (uint32_t k=0; k<_param->_nb_thread; k++) 238 if (_param->_table_execute_thread[x][k]) 239 { 240 read_unit_thread [i].insert(k); 241 242 for (uint32_t l=0; l<_param->_nb_type; l++) 243 if (_param->_table_execute_type[x][l]) 244 read_unit_type [i][k].insert(l); 245 } 235 246 //bool ** _table_routing ; //array [nb_read_unit][nb_execute_unit] 236 247 //bool ** _table_execute_type ; //array [nb_execute_unit][nb_type] … … 251 262 LABEL("Iteration %d",iteration); 252 263 253 list<entry_t> request [_param->_nb_read_unit] ;264 list<entry_t> request [_param->_nb_read_unit][_param->_max_nb_read_unit_port]; 254 265 255 266 uint32_t nb_request_in; 256 267 for (nb_request_in=0; nb_request_in < _param->_nb_packet; ) 257 268 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 258 { 259 if (nb_request_in >= _param->_nb_packet) 260 break; 261 262 Tcontext_t context_id ; 263 Tcontext_t front_end_id ; 264 Tcontext_t ooo_engine_id; 265 Tcontext_t num_thread ; 266 267 // Find compatible thread 268 do 269 { 270 context_id = range<Tcontext_t> (rand(), _param->_size_context_id ); 271 front_end_id = range<Tcontext_t> (rand(), _param->_size_front_end_id ); 272 ooo_engine_id = range<Tcontext_t> (rand(), _param->_size_ooo_engine_id); 273 num_thread = get_num_thread (context_id , _param->_size_context_id , 274 front_end_id , _param->_size_front_end_id , 275 ooo_engine_id, _param->_size_ooo_engine_id); 276 } 277 while (read_unit_thread[i].find(num_thread) == read_unit_thread[i].end()); 278 279 Ttype_t type; 280 281 // Find a compatible type 282 do 283 { 284 type = range<Ttype_t> (rand(), _param->_size_type); 285 } 286 while (read_unit_type[i][num_thread].find(type) == read_unit_type[i][num_thread].end()); 287 288 request[i].push_back(entry_t (context_id , 289 front_end_id , 290 ooo_engine_id, 291 nb_request_in, 292 range<Toperation_t > (rand(), _param->_size_operation ), 293 type, 294 range<Tlsq_ptr_t > (rand(), _param->_size_store_queue ), 295 range<Tlsq_ptr_t > (rand(), _param->_size_load_queue ), 296 range<Tcontrol_t > (rand(), 2 ), 297 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 298 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 299 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 300 range<Tspecial_data_t > (rand(), _param->_size_special_data ), 301 range<Tcontrol_t > (rand(), 2 ), 302 range<Tgeneral_address_t> (rand(), _param->_size_general_register), 303 range<Tcontrol_t > (rand(), 2 ), 304 range<Tspecial_address_t> (rand(), _param->_size_special_register) 305 )); 306 307 nb_request_in++; 308 } 269 for (uint32_t j=0; j<_param->_nb_read_unit_port [i]; j++) 270 { 271 if (nb_request_in >= _param->_nb_packet) 272 break; 273 274 Tcontext_t context_id ; 275 Tcontext_t front_end_id ; 276 Tcontext_t ooo_engine_id; 277 Tcontext_t num_thread ; 278 279 // Find compatible thread 280 do 281 { 282 context_id = range<Tcontext_t> (rand(), _param->_size_context_id ); 283 front_end_id = range<Tcontext_t> (rand(), _param->_size_front_end_id ); 284 ooo_engine_id = range<Tcontext_t> (rand(), _param->_size_ooo_engine_id); 285 num_thread = get_num_thread (context_id , _param->_size_context_id , 286 front_end_id , _param->_size_front_end_id , 287 ooo_engine_id, _param->_size_ooo_engine_id); 288 } 289 while (read_unit_thread[i].find(num_thread) == read_unit_thread[i].end()); 290 291 Ttype_t type; 292 293 // Find a compatible type 294 do 295 { 296 type = range<Ttype_t> (rand(), _param->_size_type); 297 } 298 while (read_unit_type[i][num_thread].find(type) == read_unit_type[i][num_thread].end()); 299 300 request[i][j].push_back(entry_t (context_id , 301 front_end_id , 302 ooo_engine_id, 303 nb_request_in, 304 range<Toperation_t > (rand(), _param->_size_operation ), 305 type, 306 range<Tlsq_ptr_t > (rand(), (1<<_param->_size_store_queue_ptr)), 307 range<Tlsq_ptr_t > (rand(), (1<<_param->_size_load_queue_ptr )), 308 range<Tcontrol_t > (rand(), 2 ), 309 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 310 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 311 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 312 range<Tspecial_data_t > (rand(), _param->_size_special_data ), 313 range<Tcontrol_t > (rand(), 2 ), 314 range<Tgeneral_address_t> (rand(), _param->_size_general_register), 315 range<Tcontrol_t > (rand(), 2 ), 316 range<Tspecial_address_t> (rand(), _param->_size_special_register) 317 )); 318 319 nb_request_in++; 320 } 309 321 310 322 uint32_t nb_request_out = 0; … … 313 325 { 314 326 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 315 { 316 bool val = not request[i].empty() and ((rand()%100) < percent_transaction_in); 327 for (uint32_t j=0; j<_param->_nb_read_unit_port [i]; j++) 328 { 329 bool val = not request[i][j].empty() and ((rand()%100) < percent_transaction_in); 317 330 318 in_READ_UNIT_OUT_VAL [i]->write(val);319 320 331 in_READ_UNIT_OUT_VAL [i][j]->write(val); 332 333 if (val) 321 334 { 322 in_READ_UNIT_OUT_CONTEXT_ID [i] ->write(request[i].front()._context_id );323 in_READ_UNIT_OUT_FRONT_END_ID [i] ->write(request[i].front()._front_end_id );324 in_READ_UNIT_OUT_OOO_ENGINE_ID [i] ->write(request[i].front()._ooo_engine_id );325 in_READ_UNIT_OUT_PACKET_ID [i] ->write(request[i].front()._packet_id );326 in_READ_UNIT_OUT_OPERATION [i] ->write(request[i].front()._operation );327 in_READ_UNIT_OUT_TYPE [i] ->write(request[i].front()._type );328 in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE[i] ->write(request[i].front()._store_queue_ptr_write);335 in_READ_UNIT_OUT_CONTEXT_ID [i][j] ->write(request[i][j].front()._context_id ); 336 in_READ_UNIT_OUT_FRONT_END_ID [i][j] ->write(request[i][j].front()._front_end_id ); 337 in_READ_UNIT_OUT_OOO_ENGINE_ID [i][j] ->write(request[i][j].front()._ooo_engine_id ); 338 in_READ_UNIT_OUT_PACKET_ID [i][j] ->write(request[i][j].front()._packet_id ); 339 in_READ_UNIT_OUT_OPERATION [i][j] ->write(request[i][j].front()._operation ); 340 in_READ_UNIT_OUT_TYPE [i][j] ->write(request[i][j].front()._type ); 341 in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE[i][j] ->write(request[i][j].front()._store_queue_ptr_write); 329 342 if (_param->_have_port_load_queue_ptr) 330 in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i] ->write(request[i].front()._load_queue_ptr_write );331 in_READ_UNIT_OUT_HAS_IMMEDIAT [i] ->write(request[i].front()._has_immediat );332 in_READ_UNIT_OUT_IMMEDIAT [i] ->write(request[i].front()._immediat );333 in_READ_UNIT_OUT_DATA_RA [i] ->write(request[i].front()._data_ra );334 in_READ_UNIT_OUT_DATA_RB [i] ->write(request[i].front()._data_rb );335 in_READ_UNIT_OUT_DATA_RC [i] ->write(request[i].front()._data_rc );336 in_READ_UNIT_OUT_WRITE_RD [i] ->write(request[i].front()._write_rd );337 in_READ_UNIT_OUT_NUM_REG_RD [i] ->write(request[i].front()._num_reg_rd );338 in_READ_UNIT_OUT_WRITE_RE [i] ->write(request[i].front()._write_re );339 in_READ_UNIT_OUT_NUM_REG_RE [i] ->write(request[i].front()._num_reg_re );343 in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i][j] ->write(request[i][j].front()._load_queue_ptr_write ); 344 in_READ_UNIT_OUT_HAS_IMMEDIAT [i][j] ->write(request[i][j].front()._has_immediat ); 345 in_READ_UNIT_OUT_IMMEDIAT [i][j] ->write(request[i][j].front()._immediat ); 346 in_READ_UNIT_OUT_DATA_RA [i][j] ->write(request[i][j].front()._data_ra ); 347 in_READ_UNIT_OUT_DATA_RB [i][j] ->write(request[i][j].front()._data_rb ); 348 in_READ_UNIT_OUT_DATA_RC [i][j] ->write(request[i][j].front()._data_rc ); 349 in_READ_UNIT_OUT_WRITE_RD [i][j] ->write(request[i][j].front()._write_rd ); 350 in_READ_UNIT_OUT_NUM_REG_RD [i][j] ->write(request[i][j].front()._num_reg_rd ); 351 in_READ_UNIT_OUT_WRITE_RE [i][j] ->write(request[i][j].front()._write_re ); 352 in_READ_UNIT_OUT_NUM_REG_RE [i][j] ->write(request[i][j].front()._num_reg_re ); 340 353 } 341 }354 } 342 355 343 356 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 344 in_EXECUTE_UNIT_IN_ACK [i]->write((rand()%100) < percent_transaction_out); 357 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 358 in_EXECUTE_UNIT_IN_ACK [i][j]->write((rand()%100) < percent_transaction_out); 345 359 346 360 SC_START(0); 347 361 348 362 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 349 if (in_READ_UNIT_OUT_VAL [i]->read() and out_READ_UNIT_OUT_ACK [i]->read()) 350 { 351 LABEL("READ_UNIT_OUT [%d] - Transaction accepted",i); 352 } 363 for (uint32_t j=0; j<_param->_nb_read_unit_port [i]; j++) 364 if (in_READ_UNIT_OUT_VAL [i][j]->read() and out_READ_UNIT_OUT_ACK [i][j]->read()) 365 { 366 LABEL("READ_UNIT_OUT [%d][%d] - Transaction accepted",i,j); 367 } 353 368 354 369 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 355 if (out_EXECUTE_UNIT_IN_VAL [i]->read() and in_EXECUTE_UNIT_IN_ACK [i]->read()) 356 { 357 LABEL("EXECUTE_UNIT_IN [%d] - Transaction accepted (%d)",i,nb_request_out); 358 nb_request_out ++; 359 360 Tpacket_t packet = (_param->_have_port_packet_id)?out_EXECUTE_UNIT_IN_PACKET_ID[i]->read():0; 361 LABEL(" * packet : %d",packet); 362 uint32_t read_unit; 363 364 // find read_unit 365 for (read_unit=0; read_unit<_param->_nb_read_unit; read_unit++) 366 if (packet == ((_param->_have_port_packet_id)?request[read_unit].front()._packet_id:0)) 367 break; 368 369 LABEL(" * read_unit source : %d",read_unit); 370 371 if (_param->_have_port_packet_id) 372 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_PACKET_ID [i]->read(), request[read_unit].front()._packet_id ); 373 374 // Authorised link ? read_unit -> execute_unit 375 TEST(bool, _param->_table_routing[read_unit][i], true); 376 377 if (_param->_have_port_context_id) 378 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_CONTEXT_ID [i]->read(), request[read_unit].front()._context_id ); 379 if (_param->_have_port_front_end_id) 380 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_FRONT_END_ID [i]->read(), request[read_unit].front()._front_end_id ); 381 if (_param->_have_port_ooo_engine_id) 382 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i]->read(), request[read_unit].front()._ooo_engine_id ); 383 TEST(Toperation_t ,out_EXECUTE_UNIT_IN_OPERATION [i]->read(), request[read_unit].front()._operation ); 384 TEST(Ttype_t ,out_EXECUTE_UNIT_IN_TYPE [i]->read(), request[read_unit].front()._type ); 385 TEST(Tlsq_ptr_t ,out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE[i]->read(), request[read_unit].front()._store_queue_ptr_write); 386 if (_param->_have_port_load_queue_ptr) 387 TEST(Tlsq_ptr_t ,out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i]->read(), request[read_unit].front()._load_queue_ptr_write ); 388 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i]->read(), request[read_unit].front()._has_immediat ); 389 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_IMMEDIAT [i]->read(), request[read_unit].front()._immediat ); 390 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_DATA_RA [i]->read(), request[read_unit].front()._data_ra ); 391 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_DATA_RB [i]->read(), request[read_unit].front()._data_rb ); 392 TEST(Tspecial_data_t ,out_EXECUTE_UNIT_IN_DATA_RC [i]->read(), request[read_unit].front()._data_rc ); 393 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_WRITE_RD [i]->read(), request[read_unit].front()._write_rd ); 394 TEST(Tgeneral_address_t,out_EXECUTE_UNIT_IN_NUM_REG_RD [i]->read(), request[read_unit].front()._num_reg_rd ); 395 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_WRITE_RE [i]->read(), request[read_unit].front()._write_re ); 396 TEST(Tspecial_address_t,out_EXECUTE_UNIT_IN_NUM_REG_RE [i]->read(), request[read_unit].front()._num_reg_re ); 397 398 request[read_unit].pop_front(); 399 } 370 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 371 if (out_EXECUTE_UNIT_IN_VAL [i][j]->read() and in_EXECUTE_UNIT_IN_ACK [i][j]->read()) 372 { 373 LABEL("EXECUTE_UNIT_IN [%d][%d] - Transaction accepted (%d)",i,j,nb_request_out); 374 nb_request_out ++; 375 376 Tpacket_t packet = (_param->_have_port_rob_ptr )?out_EXECUTE_UNIT_IN_PACKET_ID[i][j]->read():0; 377 LABEL(" * packet : %d",packet); 378 uint32_t x; 379 uint32_t y; 380 381 // find read_unit 382 bool find = false; 383 for (x=0; x<_param->_nb_read_unit; x++) 384 { 385 for (y=0; y<_param->_nb_read_unit_port[x]; y++) 386 if (packet == ((_param->_have_port_rob_ptr )?request[x][y].front()._packet_id:0)) 387 { 388 find = true; 389 break; 390 } 391 if (find) 392 break; 393 } 394 395 LABEL(" * read_unit source : [%d][%d]",x,y); 396 397 if (_param->_have_port_rob_ptr ) 398 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_PACKET_ID [i][j]->read(), request[x][y].front()._packet_id ); 399 400 // Authorised link ? read_unit -> execute_unit 401 TEST(bool, _param->_table_routing[x][i][j], true); 402 403 if (_param->_have_port_context_id) 404 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j]->read(), request[x][y].front()._context_id ); 405 if (_param->_have_port_front_end_id) 406 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j]->read(), request[x][y].front()._front_end_id ); 407 if (_param->_have_port_ooo_engine_id) 408 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j]->read(), request[x][y].front()._ooo_engine_id ); 409 TEST(Toperation_t ,out_EXECUTE_UNIT_IN_OPERATION [i][j]->read(), request[x][y].front()._operation ); 410 TEST(Ttype_t ,out_EXECUTE_UNIT_IN_TYPE [i][j]->read(), request[x][y].front()._type ); 411 TEST(Tlsq_ptr_t ,out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE[i][j]->read(), request[x][y].front()._store_queue_ptr_write); 412 if (_param->_have_port_load_queue_ptr) 413 TEST(Tlsq_ptr_t ,out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j]->read(), request[x][y].front()._load_queue_ptr_write ); 414 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j]->read(), request[x][y].front()._has_immediat ); 415 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_IMMEDIAT [i][j]->read(), request[x][y].front()._immediat ); 416 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_DATA_RA [i][j]->read(), request[x][y].front()._data_ra ); 417 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_DATA_RB [i][j]->read(), request[x][y].front()._data_rb ); 418 TEST(Tspecial_data_t ,out_EXECUTE_UNIT_IN_DATA_RC [i][j]->read(), request[x][y].front()._data_rc ); 419 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_WRITE_RD [i][j]->read(), request[x][y].front()._write_rd ); 420 TEST(Tgeneral_address_t,out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j]->read(), request[x][y].front()._num_reg_rd ); 421 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_WRITE_RE [i][j]->read(), request[x][y].front()._write_re ); 422 TEST(Tspecial_address_t,out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j]->read(), request[x][y].front()._num_reg_re ); 423 424 request[x][y].pop_front(); 425 } 400 426 SC_START(1); 401 427 } 402 403 428 } 404 429 … … 414 439 delete in_CLOCK; 415 440 delete in_NRESET; 416 417 delete [] in_READ_UNIT_OUT_VAL ; 418 delete [] out_READ_UNIT_OUT_ACK ; 419 delete [] in_READ_UNIT_OUT_CONTEXT_ID ; 420 delete [] in_READ_UNIT_OUT_FRONT_END_ID ; 421 delete [] in_READ_UNIT_OUT_OOO_ENGINE_ID ; 422 delete [] in_READ_UNIT_OUT_PACKET_ID ; 423 delete [] in_READ_UNIT_OUT_OPERATION ; 424 delete [] in_READ_UNIT_OUT_TYPE ; 425 delete [] in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE; 426 delete [] in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ; 427 delete [] in_READ_UNIT_OUT_HAS_IMMEDIAT ; 428 delete [] in_READ_UNIT_OUT_IMMEDIAT ; 429 delete [] in_READ_UNIT_OUT_DATA_RA ; 430 delete [] in_READ_UNIT_OUT_DATA_RB ; 431 delete [] in_READ_UNIT_OUT_DATA_RC ; 432 delete [] in_READ_UNIT_OUT_WRITE_RD ; 433 delete [] in_READ_UNIT_OUT_NUM_REG_RD ; 434 delete [] in_READ_UNIT_OUT_WRITE_RE ; 435 delete [] in_READ_UNIT_OUT_NUM_REG_RE ; 436 437 delete [] out_EXECUTE_UNIT_IN_VAL ; 438 delete [] in_EXECUTE_UNIT_IN_ACK ; 439 delete [] out_EXECUTE_UNIT_IN_CONTEXT_ID ; 440 delete [] out_EXECUTE_UNIT_IN_FRONT_END_ID ; 441 delete [] out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ; 442 delete [] out_EXECUTE_UNIT_IN_PACKET_ID ; 443 delete [] out_EXECUTE_UNIT_IN_OPERATION ; 444 delete [] out_EXECUTE_UNIT_IN_TYPE ; 445 delete [] out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE; 446 delete [] out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ; 447 delete [] out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ; 448 delete [] out_EXECUTE_UNIT_IN_IMMEDIAT ; 449 delete [] out_EXECUTE_UNIT_IN_DATA_RA ; 450 delete [] out_EXECUTE_UNIT_IN_DATA_RB ; 451 delete [] out_EXECUTE_UNIT_IN_DATA_RC ; 452 delete [] out_EXECUTE_UNIT_IN_WRITE_RD ; 453 delete [] out_EXECUTE_UNIT_IN_NUM_REG_RD ; 454 delete [] out_EXECUTE_UNIT_IN_WRITE_RE ; 455 delete [] out_EXECUTE_UNIT_IN_NUM_REG_RE ; 441 442 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_VAL ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 443 DELETE2_SC_SIGNAL(out_READ_UNIT_OUT_ACK ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 444 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_CONTEXT_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 445 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_FRONT_END_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 446 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_OOO_ENGINE_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 447 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_PACKET_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 448 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_OPERATION ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 449 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_TYPE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 450 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 451 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 452 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_HAS_IMMEDIAT ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 453 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_IMMEDIAT ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 454 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RA ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 455 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RB ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 456 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RC ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 457 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RD ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 458 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RD ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 459 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 460 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 461 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_VAL ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 462 DELETE2_SC_SIGNAL( in_EXECUTE_UNIT_IN_ACK ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 463 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_CONTEXT_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 464 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_FRONT_END_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 465 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 466 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_PACKET_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 467 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_OPERATION ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 468 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_TYPE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 469 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 470 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 471 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 472 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_IMMEDIAT ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 473 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RA ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 474 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RB ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 475 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RC ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 476 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RD ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 477 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 478 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 479 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 456 480 457 481 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h
r81 r88 26 26 { 27 27 //-----[ fields ]------------------------------------------------------------ 28 public : const uint32_t _nb_read_unit ; 29 public : const uint32_t _nb_execute_unit ; 30 public : const uint32_t _nb_context ; 31 public : const uint32_t _nb_front_end ; 32 public : const uint32_t _nb_ooo_engine ; 33 public : const uint32_t _nb_packet ; 34 public : const uint32_t _size_general_data ; 35 public : const uint32_t _size_special_data ; 36 public : const uint32_t _nb_general_register ; 37 public : const uint32_t _nb_special_register ; 38 public : const uint32_t _size_store_queue ; 39 public : const uint32_t _size_load_queue ; 40 public : const Tpriority_t _priority ; 41 public : bool ** _table_routing ; //[nb_read_unit][nb_execute_unit] 42 public : bool ** _table_execute_type ; //[nb_execute_unit][nb_type] 43 public : bool ** _table_execute_thread ; //[nb_execute_unit][nb_thread] 28 public : uint32_t _nb_read_unit ; 29 public : uint32_t * _nb_read_unit_port ;//[nb_read_unit] 30 public : uint32_t _nb_execute_unit ; 31 public : uint32_t * _nb_execute_unit_port ;//[nb_execute_unit] 32 public : uint32_t _nb_context ; 33 public : uint32_t _nb_front_end ; 34 public : uint32_t _nb_ooo_engine ; 35 public : uint32_t _nb_packet ; 36 //public : uint32_t _size_general_data ; 37 //public : uint32_t _size_special_data ; 38 public : uint32_t _nb_general_register ; 39 public : uint32_t _nb_special_register ; 40 //public : uint32_t _size_store_queue ; 41 //public : uint32_t _size_load_queue ; 42 public : Tpriority_t _priority ; 43 public : bool *** _table_routing ; //[nb_read_unit][nb_execute_unit][nb_execute_unit_port] 44 public : bool ** _table_execute_type ; //[nb_execute_unit][nb_type] 45 public : bool ** _table_execute_thread ; //[nb_execute_unit][nb_thread] 44 46 45 public : const uint32_t _size_context_id ; 46 public : const uint32_t _size_front_end_id ; 47 public : const uint32_t _size_ooo_engine_id ; 48 public : const uint32_t _size_packet_id ; 49 public : const uint32_t _size_general_register ; 50 public : const uint32_t _size_special_register ; 47 public : uint32_t _max_nb_read_unit_port ; 48 public : uint32_t _max_nb_execute_unit_port; 49 //public : uint32_t _size_context_id ; 50 //public : uint32_t _size_front_end_id ; 51 //public : uint32_t _size_ooo_engine_id ; 52 //public : uint32_t _size_packet_id ; 53 //public : uint32_t _size_general_register ; 54 //public : uint32_t _size_special_register ; 51 55 52 public : constbool _have_port_context_id ;53 public : constbool _have_port_front_end_id ;54 public : constbool _have_port_ooo_engine_id;55 public : constbool _have_port_packet_id ;56 public : constbool _have_port_load_queue_ptr;56 //public : bool _have_port_context_id ; 57 //public : bool _have_port_front_end_id ; 58 //public : bool _have_port_ooo_engine_id; 59 //public : bool _have_port_packet_id ; 60 //public : bool _have_port_load_queue_ptr; 57 61 58 public : constuint32_t _nb_thread ;59 public : 60 public : 62 public : uint32_t _nb_thread ; 63 public : uint32_t _nb_load_store_unit ; 64 public : uint32_t _nb_functionnal_unit ; 61 65 62 66 //-----[ methods ]----------------------------------------------------------- 63 67 public : Parameters (uint32_t nb_read_unit , 68 uint32_t * nb_read_unit_port , 64 69 uint32_t nb_execute_unit , 70 uint32_t * nb_execute_unit_port , 65 71 uint32_t nb_context , 66 72 uint32_t nb_front_end , … … 74 80 uint32_t size_load_queue , 75 81 Tpriority_t priority , 76 bool 82 bool *** table_routing , 77 83 bool ** table_execute_type , 78 bool ** table_execute_thread ); 79 public : Parameters (Parameters & param) ; 84 bool ** table_execute_thread , 85 bool is_toplevel=false ); 86 // public : Parameters (Parameters & param) ; 80 87 public : ~Parameters () ; 88 89 public : void copy (void); 81 90 82 91 public : Parameters_test msg_error (void); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h
r82 r88 39 39 namespace read_unit_to_execution_unit { 40 40 41 class destination_t 42 { 43 public : uint32_t grp; 44 public : uint32_t elt; 45 46 public : destination_t (uint32_t grp, uint32_t elt) 47 { 48 this->grp = grp; 49 this->elt = elt; 50 } 51 }; 41 52 42 53 class Read_unit_to_Execution_unit … … 65 76 66 77 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 67 public : SC_IN (Tcontrol_t ) ** in_READ_UNIT_OUT_VAL ;68 public : SC_OUT(Tcontrol_t ) ** out_READ_UNIT_OUT_ACK ;69 public : SC_IN (Tcontext_t ) ** in_READ_UNIT_OUT_CONTEXT_ID ;70 public : SC_IN (Tcontext_t ) ** in_READ_UNIT_OUT_FRONT_END_ID ;71 public : SC_IN (Tcontext_t ) ** in_READ_UNIT_OUT_OOO_ENGINE_ID ;72 public : SC_IN (Tpacket_t ) ** in_READ_UNIT_OUT_PACKET_ID ;73 public : SC_IN (Toperation_t ) ** in_READ_UNIT_OUT_OPERATION ;74 public : SC_IN (Ttype_t ) ** in_READ_UNIT_OUT_TYPE ;75 public : SC_IN (Tlsq_ptr_t ) ** in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE;76 public : SC_IN (Tlsq_ptr_t ) ** in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ;77 public : SC_IN (Tcontrol_t ) ** in_READ_UNIT_OUT_HAS_IMMEDIAT ;78 public : SC_IN (Tgeneral_data_t ) ** in_READ_UNIT_OUT_IMMEDIAT ;79 public : SC_IN (Tgeneral_data_t ) ** in_READ_UNIT_OUT_DATA_RA ;80 public : SC_IN (Tgeneral_data_t ) ** in_READ_UNIT_OUT_DATA_RB ;81 public : SC_IN (Tspecial_data_t ) ** in_READ_UNIT_OUT_DATA_RC ;82 public : SC_IN (Tcontrol_t ) ** in_READ_UNIT_OUT_WRITE_RD ;83 public : SC_IN (Tgeneral_address_t) ** in_READ_UNIT_OUT_NUM_REG_RD ;84 public : SC_IN (Tcontrol_t ) ** in_READ_UNIT_OUT_WRITE_RE ;85 public : SC_IN (Tspecial_address_t) ** in_READ_UNIT_OUT_NUM_REG_RE ;78 public : SC_IN (Tcontrol_t ) *** in_READ_UNIT_OUT_VAL ;//[nb_read_unit][nb_read_unit_port] 79 public : SC_OUT(Tcontrol_t ) *** out_READ_UNIT_OUT_ACK ;//[nb_read_unit][nb_read_unit_port] 80 public : SC_IN (Tcontext_t ) *** in_READ_UNIT_OUT_CONTEXT_ID ;//[nb_read_unit][nb_read_unit_port] 81 public : SC_IN (Tcontext_t ) *** in_READ_UNIT_OUT_FRONT_END_ID ;//[nb_read_unit][nb_read_unit_port] 82 public : SC_IN (Tcontext_t ) *** in_READ_UNIT_OUT_OOO_ENGINE_ID ;//[nb_read_unit][nb_read_unit_port] 83 public : SC_IN (Tpacket_t ) *** in_READ_UNIT_OUT_PACKET_ID ;//[nb_read_unit][nb_read_unit_port] 84 public : SC_IN (Toperation_t ) *** in_READ_UNIT_OUT_OPERATION ;//[nb_read_unit][nb_read_unit_port] 85 public : SC_IN (Ttype_t ) *** in_READ_UNIT_OUT_TYPE ;//[nb_read_unit][nb_read_unit_port] 86 public : SC_IN (Tlsq_ptr_t ) *** in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE ;//[nb_read_unit][nb_read_unit_port] 87 public : SC_IN (Tlsq_ptr_t ) *** in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ;//[nb_read_unit][nb_read_unit_port] 88 public : SC_IN (Tcontrol_t ) *** in_READ_UNIT_OUT_HAS_IMMEDIAT ;//[nb_read_unit][nb_read_unit_port] 89 public : SC_IN (Tgeneral_data_t ) *** in_READ_UNIT_OUT_IMMEDIAT ;//[nb_read_unit][nb_read_unit_port] 90 public : SC_IN (Tgeneral_data_t ) *** in_READ_UNIT_OUT_DATA_RA ;//[nb_read_unit][nb_read_unit_port] 91 public : SC_IN (Tgeneral_data_t ) *** in_READ_UNIT_OUT_DATA_RB ;//[nb_read_unit][nb_read_unit_port] 92 public : SC_IN (Tspecial_data_t ) *** in_READ_UNIT_OUT_DATA_RC ;//[nb_read_unit][nb_read_unit_port] 93 public : SC_IN (Tcontrol_t ) *** in_READ_UNIT_OUT_WRITE_RD ;//[nb_read_unit][nb_read_unit_port] 94 public : SC_IN (Tgeneral_address_t) *** in_READ_UNIT_OUT_NUM_REG_RD ;//[nb_read_unit][nb_read_unit_port] 95 public : SC_IN (Tcontrol_t ) *** in_READ_UNIT_OUT_WRITE_RE ;//[nb_read_unit][nb_read_unit_port] 96 public : SC_IN (Tspecial_address_t) *** in_READ_UNIT_OUT_NUM_REG_RE ;//[nb_read_unit][nb_read_unit_port] 86 97 87 98 // ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 88 public : SC_OUT(Tcontrol_t ) ** out_EXECUTE_UNIT_IN_VAL ;89 public : SC_IN (Tcontrol_t ) ** in_EXECUTE_UNIT_IN_ACK ;90 public : SC_OUT(Tcontext_t ) ** out_EXECUTE_UNIT_IN_CONTEXT_ID ;91 public : SC_OUT(Tcontext_t ) ** out_EXECUTE_UNIT_IN_FRONT_END_ID ;92 public : SC_OUT(Tcontext_t ) ** out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ;93 public : SC_OUT(Tpacket_t ) ** out_EXECUTE_UNIT_IN_PACKET_ID ;94 public : SC_OUT(Toperation_t ) ** out_EXECUTE_UNIT_IN_OPERATION ;95 public : SC_OUT(Ttype_t ) ** out_EXECUTE_UNIT_IN_TYPE ;96 public : SC_OUT(Tlsq_ptr_t ) ** out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE;97 public : SC_OUT(Tlsq_ptr_t ) ** out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ;98 public : SC_OUT(Tcontrol_t ) ** out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ;99 public : SC_OUT(Tgeneral_data_t ) ** out_EXECUTE_UNIT_IN_IMMEDIAT ;100 public : SC_OUT(Tgeneral_data_t ) ** out_EXECUTE_UNIT_IN_DATA_RA ;101 public : SC_OUT(Tgeneral_data_t ) ** out_EXECUTE_UNIT_IN_DATA_RB ;102 public : SC_OUT(Tspecial_data_t ) ** out_EXECUTE_UNIT_IN_DATA_RC ;103 public : SC_OUT(Tcontrol_t ) ** out_EXECUTE_UNIT_IN_WRITE_RD ;104 public : SC_OUT(Tgeneral_address_t) ** out_EXECUTE_UNIT_IN_NUM_REG_RD ;105 public : SC_OUT(Tcontrol_t ) ** out_EXECUTE_UNIT_IN_WRITE_RE ;106 public : SC_OUT(Tspecial_address_t) ** out_EXECUTE_UNIT_IN_NUM_REG_RE ;99 public : SC_OUT(Tcontrol_t ) *** out_EXECUTE_UNIT_IN_VAL ;//[nb_execute_unit][nb_execute_unit_port] 100 public : SC_IN (Tcontrol_t ) *** in_EXECUTE_UNIT_IN_ACK ;//[nb_execute_unit][nb_execute_unit_port] 101 public : SC_OUT(Tcontext_t ) *** out_EXECUTE_UNIT_IN_CONTEXT_ID ;//[nb_execute_unit][nb_execute_unit_port] 102 public : SC_OUT(Tcontext_t ) *** out_EXECUTE_UNIT_IN_FRONT_END_ID ;//[nb_execute_unit][nb_execute_unit_port] 103 public : SC_OUT(Tcontext_t ) *** out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ;//[nb_execute_unit][nb_execute_unit_port] 104 public : SC_OUT(Tpacket_t ) *** out_EXECUTE_UNIT_IN_PACKET_ID ;//[nb_execute_unit][nb_execute_unit_port] 105 public : SC_OUT(Toperation_t ) *** out_EXECUTE_UNIT_IN_OPERATION ;//[nb_execute_unit][nb_execute_unit_port] 106 public : SC_OUT(Ttype_t ) *** out_EXECUTE_UNIT_IN_TYPE ;//[nb_execute_unit][nb_execute_unit_port] 107 public : SC_OUT(Tlsq_ptr_t ) *** out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE;//[nb_execute_unit][nb_execute_unit_port] 108 public : SC_OUT(Tlsq_ptr_t ) *** out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ;//[nb_execute_unit][nb_execute_unit_port] 109 public : SC_OUT(Tcontrol_t ) *** out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ;//[nb_execute_unit][nb_execute_unit_port] 110 public : SC_OUT(Tgeneral_data_t ) *** out_EXECUTE_UNIT_IN_IMMEDIAT ;//[nb_execute_unit][nb_execute_unit_port] 111 public : SC_OUT(Tgeneral_data_t ) *** out_EXECUTE_UNIT_IN_DATA_RA ;//[nb_execute_unit][nb_execute_unit_port] 112 public : SC_OUT(Tgeneral_data_t ) *** out_EXECUTE_UNIT_IN_DATA_RB ;//[nb_execute_unit][nb_execute_unit_port] 113 public : SC_OUT(Tspecial_data_t ) *** out_EXECUTE_UNIT_IN_DATA_RC ;//[nb_execute_unit][nb_execute_unit_port] 114 public : SC_OUT(Tcontrol_t ) *** out_EXECUTE_UNIT_IN_WRITE_RD ;//[nb_execute_unit][nb_execute_unit_port] 115 public : SC_OUT(Tgeneral_address_t) *** out_EXECUTE_UNIT_IN_NUM_REG_RD ;//[nb_execute_unit][nb_execute_unit_port] 116 public : SC_OUT(Tcontrol_t ) *** out_EXECUTE_UNIT_IN_WRITE_RE ;//[nb_execute_unit][nb_execute_unit_port] 117 public : SC_OUT(Tspecial_address_t) *** out_EXECUTE_UNIT_IN_NUM_REG_RE ;//[nb_execute_unit][nb_execute_unit_port] 107 118 108 119 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 111 122 112 123 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 113 private : std::list< uint32_t> *** _destination; // [nb_read_unit][nb_thread][nb_type];124 private : std::list<destination_t> *** _destination; // [nb_read_unit][nb_thread][nb_type]; 114 125 #endif 115 126 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp
r81 r88 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h" 9 #include "Common/include/Max.h" 9 10 10 11 namespace morpheo { … … 20 21 #define FUNCTION "Read_unit_to_Execution_unit::Parameters" 21 22 Parameters::Parameters (uint32_t nb_read_unit , 23 uint32_t * nb_read_unit_port , 22 24 uint32_t nb_execute_unit , 25 uint32_t * nb_execute_unit_port , 23 26 uint32_t nb_context , 24 27 uint32_t nb_front_end , … … 32 35 uint32_t size_load_queue , 33 36 Tpriority_t priority , 34 bool 37 bool *** table_routing , 35 38 bool ** table_execute_type , 36 bool ** table_execute_thread ): 37 _nb_read_unit (nb_read_unit ), 38 _nb_execute_unit (nb_execute_unit ), 39 _nb_context (nb_context ), 40 _nb_front_end (nb_front_end ), 41 _nb_ooo_engine (nb_ooo_engine ), 42 _nb_packet (nb_packet ), 43 _size_general_data (size_general_data ), 44 _size_special_data (size_special_data ), 45 _nb_general_register (nb_general_register), 46 _nb_special_register (nb_special_register), 47 _size_store_queue (size_store_queue ), 48 _size_load_queue (size_load_queue ), 49 _priority (priority ), 50 51 _size_context_id (log2(nb_context )), 52 _size_front_end_id (log2(nb_front_end )), 53 _size_ooo_engine_id (log2(nb_ooo_engine )), 54 _size_packet_id (log2(nb_packet )), 55 _size_general_register (log2(nb_general_register)), 56 _size_special_register (log2(nb_special_register)), 57 58 _have_port_context_id (_size_context_id > 0), 59 _have_port_front_end_id (_size_front_end_id > 0), 60 _have_port_ooo_engine_id (_size_ooo_engine_id > 0), 61 _have_port_packet_id (_size_packet_id > 0), 62 _have_port_load_queue_ptr(_size_load_queue > 1), 63 64 _nb_thread (get_nb_thread (nb_context, nb_front_end, nb_ooo_engine)) 39 bool ** table_execute_thread , 40 bool is_toplevel ) 65 41 { 66 42 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin"); 67 43 68 _table_routing = table_routing ; 69 _table_execute_type = table_execute_type ; 70 _table_execute_thread = table_execute_thread; 44 _nb_read_unit = nb_read_unit ; 45 _nb_read_unit_port = nb_read_unit_port ; 46 _nb_execute_unit = nb_execute_unit ; 47 _nb_execute_unit_port = nb_execute_unit_port; 48 _nb_context = nb_context ; 49 _nb_front_end = nb_front_end ; 50 _nb_ooo_engine = nb_ooo_engine ; 51 _nb_packet = nb_packet ; 52 _nb_general_register = nb_general_register ; 53 _nb_special_register = nb_special_register ; 54 _priority = priority ; 55 _table_routing = table_routing ; 56 _table_execute_type = table_execute_type ; 57 _table_execute_thread = table_execute_thread; 71 58 72 _nb_load_store_unit = 0; 59 _max_nb_read_unit_port = max<uint32_t>(_nb_read_unit_port, _nb_read_unit); 60 _max_nb_execute_unit_port= max<uint32_t>(_nb_execute_unit_port, _nb_execute_unit); 61 62 _nb_thread = get_nb_thread (nb_context, nb_front_end, nb_ooo_engine); 63 _nb_load_store_unit = 0; 73 64 74 65 for (uint32_t i=0; i<nb_execute_unit; i++) … … 82 73 test(); 83 74 75 if (is_toplevel) 76 { 77 _size_context_id = log2(nb_context ); 78 _size_front_end_id = log2(nb_front_end ); 79 _size_ooo_engine_id = log2(nb_ooo_engine ); 80 _size_rob_ptr = log2(nb_packet ); 81 _size_general_register = log2(nb_general_register); 82 _size_special_register = log2(nb_special_register); 83 _size_general_data = size_general_data ; 84 _size_special_data = size_special_data ; 85 _size_store_queue_ptr = log2(size_store_queue ); 86 _size_load_queue_ptr = log2(size_load_queue ); 87 88 _have_port_context_id = _size_context_id > 0; 89 _have_port_front_end_id = _size_front_end_id > 0; 90 _have_port_ooo_engine_id = _size_ooo_engine_id > 0; 91 _have_port_rob_ptr = _size_rob_ptr > 0; 92 _have_port_load_queue_ptr= _size_load_queue_ptr> 0; 93 94 copy(); 95 } 96 84 97 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End"); 85 98 }; 86 99 100 // #undef FUNCTION 101 // #define FUNCTION "Read_unit_to_Execution_unit::Parameters (copy)" 102 // Parameters::Parameters (Parameters & param) 103 // { 104 // log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin"); 105 106 // test(); 107 // log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End"); 108 // }; 109 87 110 #undef FUNCTION 88 #define FUNCTION "Read_unit_to_Execution_unit::Parameters (copy)" 89 Parameters::Parameters (Parameters & param): 90 _nb_read_unit (param._nb_read_unit ), 91 _nb_execute_unit (param._nb_execute_unit ), 92 _nb_context (param._nb_context ), 93 _nb_front_end (param._nb_front_end ), 94 _nb_ooo_engine (param._nb_ooo_engine ), 95 _nb_packet (param._nb_packet ), 96 _size_general_data (param._size_general_data ), 97 _size_special_data (param._size_special_data ), 98 _nb_general_register (param._nb_general_register ), 99 _nb_special_register (param._nb_special_register ), 100 _size_store_queue (param._size_store_queue ), 101 _size_load_queue (param._size_load_queue ), 102 _priority (param._priority ), 103 104 _size_context_id (param._size_context_id ), 105 _size_front_end_id (param._size_front_end_id ), 106 _size_ooo_engine_id (param._size_ooo_engine_id ), 107 _size_packet_id (param._size_packet_id ), 108 _size_general_register (param._size_general_register ), 109 _size_special_register (param._size_special_register ), 110 111 _have_port_context_id (param._have_port_context_id ), 112 _have_port_front_end_id (param._have_port_front_end_id ), 113 _have_port_ooo_engine_id (param._have_port_ooo_engine_id), 114 _have_port_packet_id (param._have_port_packet_id ), 115 _have_port_load_queue_ptr(param._have_port_load_queue_ptr), 116 117 _nb_thread (param._nb_thread ) 111 #define FUNCTION "Read_unit_to_Execution_unit::~Parameters" 112 Parameters::~Parameters () 118 113 { 119 114 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin"); 120 121 _table_routing = param._table_routing ;122 _table_execute_type = param._table_execute_type ;123 _table_execute_thread = param._table_execute_thread;124 _nb_load_store_unit = param._nb_load_store_unit ;125 _nb_functionnal_unit = param._nb_functionnal_unit ;126 127 test();128 115 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End"); 129 116 }; 130 117 131 118 #undef FUNCTION 132 #define FUNCTION "Read_unit_to_Execution_unit:: ~Parameters"133 Parameters::~Parameters ()119 #define FUNCTION "Read_unit_to_Execution_unit::copy" 120 void Parameters::copy (void) 134 121 { 135 122 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp
r81 r88 33 33 // TYPE_MOVE | X | | | cmov is optionnal 34 34 // TYPE_TEST | X | | | 35 // TYPE_MUL_DIV | X | | | div is optionnal 35 // TYPE_MUL | X | | | 36 // TYPE_DIV | X | X | | 36 37 // TYPE_EXTEND | X | X | | 37 38 // TYPE_FIND | X | X | | … … 58 59 type_valid [TYPE_MOVE ] = true; 59 60 type_valid [TYPE_TEST ] = true; 60 type_valid [TYPE_MUL_DIV] = true; 61 type_valid [TYPE_MUL ] = true; 62 type_valid [TYPE_DIV ] = true; 61 63 type_valid [TYPE_EXTEND ] = true; 62 64 type_valid [TYPE_FIND ] = true; … … 70 72 type_uniq [TYPE_MEMORY ] = true; 71 73 74 type_optionnal [TYPE_DIV ] = true; 72 75 type_optionnal [TYPE_EXTEND ] = true; 73 76 type_optionnal [TYPE_FIND ] = true; … … 85 88 if (_table_execute_thread [i][j] == true) 86 89 // this execute_unit execute this thread ! 87 for (Ttype_t k=0; k<=_nb_type; k++) 88 if (_table_execute_type[i][k] == true) 89 { 90 // Test uniq type 91 if (type_present [j][k] and type_uniq[k]) 92 test.error("The execute_unit '"+toString(i)+"' can execute operation of type '"+toString_type(k)+"' at the thread '"+toString(j)+"'. But an another execute_unit can be execute the same type for the same thread. And the type must be uniq !."); 93 94 type_present [j][k] = true; 95 } 90 for (Ttype_t k=0; k<_nb_type; k++) 91 if (_table_execute_type[i][k] == true) 92 { 93 // test.information(toString(_("Execute_unit [%d], Thread [%d], Type [%d], type_valid %d, type_present %d, type_uniq %d\n"),i,j,k,type_valid[k],type_present[j][k],type_uniq[k])); 94 95 // Test uniq type 96 if (type_present [j][k] and type_uniq[k]) 97 test.error(toString(_("The execute_unit '%d' can execute operation of type '%s' at the thread '%d'. But an another execute_unit can be execute the same type for the same thread. And the type must be single !.\n"),i,toString_type(k).c_str(),j)); 98 99 type_present [j][k] = true; 100 } 101 102 for (Ttype_t j=0; j<_nb_type; j++) 103 if (not type_valid [j]) 104 for (uint32_t i=0; i<_nb_thread; i++) 105 if (type_present [i][j]) 106 test.error(toString(_("The thread '%d' can execute the type's operation '%s' but this type is invalid.\n"),i,toString_type(j).c_str())); 96 107 97 108 for (Ttype_t j=0; j<_nb_type; j++) … … 99 110 for (uint32_t i=0; i<_nb_thread; i++) 100 111 if (not type_present [i][j]) 101 test.error( "The thread '"+toString(i)+"' can't access at the execute_unit to execute the type's operation '"+toString_type(j)+"' (and this type is not optionnal !).");112 test.error(toString(_("The thread '%d' can't access at the execute_unit to execute the type's operation '%s' (and this type is not optional !).\n"),i,toString_type(j).c_str())); 102 113 103 114 // Test all excluve type 104 115 for (uint32_t i=0; i<_nb_execute_unit; i++) 105 for (Ttype_t j=0; j< =_nb_type; j++)116 for (Ttype_t j=0; j<_nb_type; j++) 106 117 if (type_exclusive [j] and _table_execute_type[i][j]) 107 for (Ttype_t k=0; k< =_nb_type; k++)118 for (Ttype_t k=0; k<_nb_type; k++) 108 119 if ((j != k) and (_table_execute_type[i][k] == true)) 109 120 { 110 test.error( "The execute_unit ["+toString(i)+"] implement the type '"+toString_type(j)+"', and this type is exclusive with all others type.");121 test.error(toString(_("The execute_unit [%d] implement the type '%s', and this type is exclusive with all others type.\n"),i,toString_type(j).c_str())); 111 122 break; 112 123 } … … 120 131 121 132 if (j == _nb_thread) 122 test.error( "The execute_unit ["+toString(i)+"] have none source's thread.");133 test.error(toString(_("The execute_unit [%d] have none source's thread.\n"),i)); 123 134 } 124 135 125 136 if ( (_priority != PRIORITY_STATIC ) and 126 137 (_priority != PRIORITY_ROUND_ROBIN)) 127 test.error( "Unsupported priority scheme. It must be Static or Round Robin.");138 test.error(_("Unsupported priority scheme. It must be Static or Round Robin.\n")); 128 139 129 140 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_print.cpp
r81 r88 37 37 xml.singleton_begin("nb_general_register"); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end(); 38 38 xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end(); 39 40 39 // xml.singleton_begin("size_store_queue "); xml.attribut("value",toString(_size_store_queue )); xml.singleton_end(); 40 // xml.singleton_begin("size_load_queue "); xml.attribut("value",toString(_size_load_queue )); xml.singleton_end(); 41 41 xml.singleton_begin("priority "); xml.attribut("value",toString(_priority )); xml.singleton_end(); 42 42 xml.balise_close(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit.cpp
r81 r88 38 38 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Read_unit_to_Execution_unit == true 41 log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 43 std::cout << *param << std::endl; 44 #endif 45 40 46 log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Allocation"); 41 47 … … 47 53 48 54 #ifdef STATISTICS 49 if ( _usage & USE_STATISTICS)55 if (usage_is_set(_usage,USE_STATISTICS)) 50 56 { 51 57 log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Allocation of statistics"); … … 56 62 57 63 #ifdef VHDL 58 if ( _usage & USE_VHDL)64 if (usage_is_set(_usage,USE_VHDL)) 59 65 { 60 66 // generate the vhdl … … 66 72 67 73 #ifdef SYSTEMC 68 if ( _usage & USE_SYSTEMC)74 if (usage_is_set(_usage,USE_SYSTEMC)) 69 75 { 70 76 log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Method - transition"); … … 85 91 86 92 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 87 { 88 sensitive << (*(in_READ_UNIT_OUT_VAL [i])) 89 << (*(in_READ_UNIT_OUT_OPERATION [i])) 90 << (*(in_READ_UNIT_OUT_TYPE [i])) 91 << (*(in_READ_UNIT_OUT_HAS_IMMEDIAT [i])) 92 << (*(in_READ_UNIT_OUT_IMMEDIAT [i])) 93 << (*(in_READ_UNIT_OUT_DATA_RA [i])) 94 << (*(in_READ_UNIT_OUT_DATA_RB [i])) 95 << (*(in_READ_UNIT_OUT_DATA_RC [i])) 96 << (*(in_READ_UNIT_OUT_WRITE_RD [i])) 97 << (*(in_READ_UNIT_OUT_NUM_REG_RD [i])) 98 << (*(in_READ_UNIT_OUT_WRITE_RE [i])) 99 << (*(in_READ_UNIT_OUT_NUM_REG_RE [i])) 100 << (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i])); 101 102 if (_param->_have_port_load_queue_ptr) 103 sensitive << (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i])); 104 if (_param->_have_port_context_id) 105 sensitive << (*(in_READ_UNIT_OUT_CONTEXT_ID [i])); 106 if (_param->_have_port_front_end_id) 107 sensitive << (*(in_READ_UNIT_OUT_FRONT_END_ID [i])); 108 if (_param->_have_port_ooo_engine_id) 109 sensitive << (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [i])); 110 if (_param->_have_port_packet_id) 111 sensitive << (*(in_READ_UNIT_OUT_PACKET_ID [i])); 112 } 93 for (uint32_t j=0; j<_param->_nb_read_unit_port[i]; j++) 94 { 95 sensitive << (*(in_READ_UNIT_OUT_VAL [i][j])) 96 << (*(in_READ_UNIT_OUT_OPERATION [i][j])) 97 << (*(in_READ_UNIT_OUT_TYPE [i][j])) 98 << (*(in_READ_UNIT_OUT_HAS_IMMEDIAT [i][j])) 99 << (*(in_READ_UNIT_OUT_IMMEDIAT [i][j])) 100 << (*(in_READ_UNIT_OUT_DATA_RA [i][j])) 101 << (*(in_READ_UNIT_OUT_DATA_RB [i][j])) 102 << (*(in_READ_UNIT_OUT_DATA_RC [i][j])) 103 << (*(in_READ_UNIT_OUT_WRITE_RD [i][j])) 104 << (*(in_READ_UNIT_OUT_NUM_REG_RD [i][j])) 105 << (*(in_READ_UNIT_OUT_WRITE_RE [i][j])) 106 << (*(in_READ_UNIT_OUT_NUM_REG_RE [i][j])) 107 << (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i][j])); 108 109 if (_param->_have_port_load_queue_ptr) 110 sensitive << (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i][j])); 111 if (_param->_have_port_context_id) 112 sensitive << (*(in_READ_UNIT_OUT_CONTEXT_ID [i][j])); 113 if (_param->_have_port_front_end_id) 114 sensitive << (*(in_READ_UNIT_OUT_FRONT_END_ID [i][j])); 115 if (_param->_have_port_ooo_engine_id) 116 sensitive << (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [i][j])); 117 if (_param->_have_port_rob_ptr ) 118 sensitive << (*(in_READ_UNIT_OUT_PACKET_ID [i][j])); 119 } 113 120 114 121 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 115 sensitive << (*(in_EXECUTE_UNIT_IN_ACK [i])); 122 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 123 sensitive << (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 116 124 117 125 # ifdef SYSTEMCASS_SPECIFIC 118 126 // List dependency information 119 127 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 128 for (uint32_t j=0; j<_param->_nb_read_unit_port[i]; j++) 120 129 { 121 (*(out_READ_UNIT_OUT_ACK [i] )) (*(in_READ_UNIT_OUT_VAL [i]));122 (*(out_READ_UNIT_OUT_ACK [i] )) (*(in_READ_UNIT_OUT_TYPE [i]));130 (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_VAL [i][j])); 131 (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_TYPE [i][j])); 123 132 if (_param->_have_port_context_id) 124 (*(out_READ_UNIT_OUT_ACK [i] )) (*(in_READ_UNIT_OUT_CONTEXT_ID [i]));133 (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [i][j])); 125 134 if (_param->_have_port_front_end_id) 126 (*(out_READ_UNIT_OUT_ACK [i] )) (*(in_READ_UNIT_OUT_FRONT_END_ID [i]));135 (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [i][j])); 127 136 if (_param->_have_port_ooo_engine_id) 128 (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [i])); 129 130 for (uint32_t j=0; j<_param->_nb_execute_unit; j++) 131 (*(out_READ_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_IN_ACK [j])); 137 (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [i][j])); 138 139 for (uint32_t x=0; x<_param->_nb_execute_unit; x++) 140 for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++) 141 (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [x][y])); 132 142 } 133 143 134 144 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 145 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 135 146 { 136 (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 137 138 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 139 { 140 (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_VAL [j])); 141 (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 142 if (_param->_have_port_context_id) 143 (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 144 if (_param->_have_port_front_end_id) 145 (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 146 if (_param->_have_port_ooo_engine_id) 147 (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 147 (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 148 149 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 150 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 151 { 152 (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 153 (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 154 if (_param->_have_port_context_id) 155 (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 156 if (_param->_have_port_front_end_id) 157 (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 158 if (_param->_have_port_ooo_engine_id) 159 (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 148 160 } 149 161 150 162 if (_param->_have_port_context_id) 151 163 { 152 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 153 154 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 155 { 156 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_VAL [j])); 157 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 158 if (_param->_have_port_context_id) 159 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 160 if (_param->_have_port_front_end_id) 161 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 162 if (_param->_have_port_ooo_engine_id) 163 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 164 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 165 166 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 167 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 168 { 169 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 170 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 171 if (_param->_have_port_context_id) 172 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 173 if (_param->_have_port_front_end_id) 174 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 175 if (_param->_have_port_ooo_engine_id) 176 (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 164 177 } 165 178 } … … 167 180 if (_param->_have_port_front_end_id) 168 181 { 169 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 170 171 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 172 { 173 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_VAL [j])); 174 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 175 if (_param->_have_port_context_id) 176 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 177 if (_param->_have_port_front_end_id) 178 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 179 if (_param->_have_port_ooo_engine_id) 180 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 182 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 183 184 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 185 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 186 { 187 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 188 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 189 if (_param->_have_port_context_id) 190 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 191 if (_param->_have_port_front_end_id) 192 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 193 if (_param->_have_port_ooo_engine_id) 194 (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 181 195 } 182 196 } … … 184 198 if (_param->_have_port_ooo_engine_id) 185 199 { 186 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 187 188 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 189 { 190 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_VAL [j])); 191 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 192 if (_param->_have_port_context_id) 193 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 194 if (_param->_have_port_front_end_id) 195 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 196 if (_param->_have_port_ooo_engine_id) 197 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 198 } 199 } 200 201 if (_param->_have_port_packet_id) 202 { 203 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 204 205 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 206 { 207 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_PACKET_ID [j])); 208 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_VAL [j])); 209 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 210 if (_param->_have_port_context_id) 211 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 212 if (_param->_have_port_front_end_id) 213 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 214 if (_param->_have_port_ooo_engine_id) 215 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 216 } 217 } 218 219 (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 220 221 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 222 { 223 (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_OPERATION [j])); 224 (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_VAL [j])); 225 (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 226 if (_param->_have_port_context_id) 227 (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 228 if (_param->_have_port_front_end_id) 229 (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 230 if (_param->_have_port_ooo_engine_id) 231 (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 232 } 233 234 (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 235 236 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 237 { 238 (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_VAL [j])); 239 (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 240 if (_param->_have_port_context_id) 241 (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 242 if (_param->_have_port_front_end_id) 243 (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 244 if (_param->_have_port_ooo_engine_id) 245 (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 246 } 247 248 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 249 250 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 251 { 252 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [j])); 253 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_VAL [j])); 254 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 255 if (_param->_have_port_context_id) 256 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 257 if (_param->_have_port_front_end_id) 258 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 259 if (_param->_have_port_ooo_engine_id) 260 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 200 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 201 202 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 203 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 204 { 205 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 206 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 207 if (_param->_have_port_context_id) 208 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 209 if (_param->_have_port_front_end_id) 210 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 211 if (_param->_have_port_ooo_engine_id) 212 (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 213 } 214 } 215 216 if (_param->_have_port_rob_ptr ) 217 { 218 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 219 220 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 221 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 222 { 223 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_PACKET_ID [x][y])); 224 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 225 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 226 if (_param->_have_port_context_id) 227 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 228 if (_param->_have_port_front_end_id) 229 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 230 if (_param->_have_port_ooo_engine_id) 231 (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 232 } 233 } 234 235 (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 236 237 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 238 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 239 { 240 (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_OPERATION [x][y])); 241 (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 242 (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 243 if (_param->_have_port_context_id) 244 (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 245 if (_param->_have_port_front_end_id) 246 (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 247 if (_param->_have_port_ooo_engine_id) 248 (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 249 } 250 251 (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 252 253 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 254 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 255 { 256 (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 257 (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 258 if (_param->_have_port_context_id) 259 (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 260 if (_param->_have_port_front_end_id) 261 (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 262 if (_param->_have_port_ooo_engine_id) 263 (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 264 } 265 266 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 267 268 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 269 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 270 { 271 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [x][y])); 272 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 273 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 274 if (_param->_have_port_context_id) 275 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 276 if (_param->_have_port_front_end_id) 277 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 278 if (_param->_have_port_ooo_engine_id) 279 (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 261 280 } 262 281 263 282 if (_param->_have_port_load_queue_ptr) 264 283 { 265 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 266 267 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 268 { 269 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [j])); 270 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_VAL [j])); 271 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 272 if (_param->_have_port_context_id) 273 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 274 if (_param->_have_port_front_end_id) 275 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 276 if (_param->_have_port_ooo_engine_id) 277 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 284 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 285 286 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 287 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 288 { 289 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [x][y])); 290 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 291 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 292 if (_param->_have_port_context_id) 293 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 294 if (_param->_have_port_front_end_id) 295 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 296 if (_param->_have_port_ooo_engine_id) 297 (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 278 298 } 279 299 } 280 300 281 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 282 283 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 284 { 285 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_HAS_IMMEDIAT [j])); 286 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_VAL [j])); 287 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 288 if (_param->_have_port_context_id) 289 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 290 if (_param->_have_port_front_end_id) 291 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 292 if (_param->_have_port_ooo_engine_id) 293 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 294 } 295 296 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 297 298 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 299 { 300 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_IMMEDIAT [j])); 301 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_VAL [j])); 302 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 303 if (_param->_have_port_context_id) 304 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 305 if (_param->_have_port_front_end_id) 306 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 307 if (_param->_have_port_ooo_engine_id) 308 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 309 } 310 311 (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 312 313 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 314 { 315 (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_DATA_RA [j])); 316 (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_VAL [j])); 317 (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 318 if (_param->_have_port_context_id) 319 (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 320 if (_param->_have_port_front_end_id) 321 (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 322 if (_param->_have_port_ooo_engine_id) 323 (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 324 } 325 326 (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 327 328 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 329 { 330 (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_DATA_RB [j])); 331 (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_VAL [j])); 332 (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 333 if (_param->_have_port_context_id) 334 (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 335 if (_param->_have_port_front_end_id) 336 (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 337 if (_param->_have_port_ooo_engine_id) 338 (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 339 } 340 341 (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 342 343 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 344 { 345 (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_DATA_RC [j])); 346 (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_VAL [j])); 347 (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 348 if (_param->_have_port_context_id) 349 (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 350 if (_param->_have_port_front_end_id) 351 (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 352 if (_param->_have_port_ooo_engine_id) 353 (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 354 } 355 356 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 357 358 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 359 { 360 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_WRITE_RD [j])); 361 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_VAL [j])); 362 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 363 if (_param->_have_port_context_id) 364 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 365 if (_param->_have_port_front_end_id) 366 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 367 if (_param->_have_port_ooo_engine_id) 368 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 301 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 302 303 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 304 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 305 { 306 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_HAS_IMMEDIAT [x][y])); 307 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 308 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 309 if (_param->_have_port_context_id) 310 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 311 if (_param->_have_port_front_end_id) 312 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 313 if (_param->_have_port_ooo_engine_id) 314 (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 315 } 316 317 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 318 319 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 320 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 321 { 322 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_IMMEDIAT [x][y])); 323 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 324 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 325 if (_param->_have_port_context_id) 326 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 327 if (_param->_have_port_front_end_id) 328 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 329 if (_param->_have_port_ooo_engine_id) 330 (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 331 } 332 333 (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 334 335 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 336 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 337 { 338 (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_DATA_RA [x][y])); 339 (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 340 (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 341 if (_param->_have_port_context_id) 342 (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 343 if (_param->_have_port_front_end_id) 344 (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 345 if (_param->_have_port_ooo_engine_id) 346 (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 347 } 348 349 (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 350 351 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 352 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 353 { 354 (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_DATA_RB [x][y])); 355 (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 356 (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 357 if (_param->_have_port_context_id) 358 (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 359 if (_param->_have_port_front_end_id) 360 (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 361 if (_param->_have_port_ooo_engine_id) 362 (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 363 } 364 365 (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 366 367 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 368 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 369 { 370 (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_DATA_RC [x][y])); 371 (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 372 (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 373 if (_param->_have_port_context_id) 374 (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 375 if (_param->_have_port_front_end_id) 376 (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 377 if (_param->_have_port_ooo_engine_id) 378 (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 379 } 380 381 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 382 383 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 384 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 385 { 386 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_WRITE_RD [x][y])); 387 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 388 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 389 if (_param->_have_port_context_id) 390 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 391 if (_param->_have_port_front_end_id) 392 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 393 if (_param->_have_port_ooo_engine_id) 394 (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 369 395 } 370 396 371 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 372 373 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 374 { 375 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_NUM_REG_RD [j])); 376 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_VAL [j])); 377 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 378 if (_param->_have_port_context_id) 379 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 380 if (_param->_have_port_front_end_id) 381 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 382 if (_param->_have_port_ooo_engine_id) 383 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 384 } 385 386 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 387 388 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 389 { 390 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_WRITE_RE [j])); 391 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_VAL [j])); 392 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 393 if (_param->_have_port_context_id) 394 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 395 if (_param->_have_port_front_end_id) 396 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 397 if (_param->_have_port_ooo_engine_id) 398 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 399 } 400 401 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i])); 402 403 for (uint32_t j=0; j<_param->_nb_read_unit; j++) 404 { 405 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_NUM_REG_RE [j])); 406 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_VAL [j])); 407 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_TYPE [j])); 408 if (_param->_have_port_context_id) 409 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID [j])); 410 if (_param->_have_port_front_end_id) 411 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID [j])); 412 if (_param->_have_port_ooo_engine_id) 413 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j])); 397 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 398 399 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 400 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 401 { 402 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_NUM_REG_RD [x][y])); 403 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 404 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 405 if (_param->_have_port_context_id) 406 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 407 if (_param->_have_port_front_end_id) 408 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 409 if (_param->_have_port_ooo_engine_id) 410 (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 411 } 412 413 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 414 415 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 416 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 417 { 418 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_WRITE_RE [x][y])); 419 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 420 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 421 if (_param->_have_port_context_id) 422 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 423 if (_param->_have_port_front_end_id) 424 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 425 if (_param->_have_port_ooo_engine_id) 426 (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 427 } 428 429 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j])); 430 431 for (uint32_t x=0; x<_param->_nb_read_unit; x++) 432 for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++) 433 { 434 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_NUM_REG_RE [x][y])); 435 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_VAL [x][y])); 436 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_TYPE [x][y])); 437 if (_param->_have_port_context_id) 438 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID [x][y])); 439 if (_param->_have_port_front_end_id) 440 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID [x][y])); 441 if (_param->_have_port_ooo_engine_id) 442 (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y])); 414 443 } 415 444 } … … 428 457 429 458 #ifdef STATISTICS 430 if ( _usage & USE_STATISTICS)459 if (usage_is_set(_usage,USE_STATISTICS)) 431 460 { 432 461 log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Generate Statistics file"); -
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
r81 r88 57 57 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 58 { 59 ALLOC 1_INTERFACE("read_unit_out", IN, EAST, "Output of read_unit", _param->_nb_read_unit);59 ALLOC2_INTERFACE("read_unit_out", IN, EAST, "Output of read_unit",_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 60 60 61 ALLOC1_VALACK_IN ( in_READ_UNIT_OUT_VAL,VAL); 62 ALLOC1_VALACK_OUT(out_READ_UNIT_OUT_ACK,ACK); 63 64 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id); 65 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_FRONT_END_ID ,"FRONT_END_ID" ,Tcontext_t ,_param->_size_front_end_id); 66 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_OOO_ENGINE_ID ,"OOO_ENGINE_ID" ,Tcontext_t ,_param->_size_ooo_engine_id); 67 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_PACKET_ID ,"PACKET_ID" ,Tpacket_t ,_param->_size_packet_id); 68 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_OPERATION ,"OPERATION" ,Toperation_t ,_param->_size_operation); 69 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_TYPE ,"TYPE" ,Ttype_t ,_param->_size_type); 70 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,log2(_param->_size_store_queue)); 71 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,log2(_param->_size_load_queue)); 72 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_HAS_IMMEDIAT ,"HAS_IMMEDIAT" ,Tcontrol_t ,1); 73 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_IMMEDIAT ,"IMMEDIAT" ,Tgeneral_data_t ,_param->_size_general_data); 74 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_DATA_RA ,"DATA_RA" ,Tgeneral_data_t ,_param->_size_general_data); 75 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_DATA_RB ,"DATA_RB" ,Tgeneral_data_t ,_param->_size_general_data); 76 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_DATA_RC ,"DATA_RC" ,Tspecial_data_t ,_param->_size_special_data); 77 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_WRITE_RD ,"WRITE_RD" ,Tcontrol_t ,1); 78 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_NUM_REG_RD ,"NUM_REG_RD" ,Tgeneral_address_t,_param->_size_general_register); 79 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_WRITE_RE ,"WRITE_RE" ,Tcontrol_t ,1); 80 ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_NUM_REG_RE ,"NUM_REG_RE" ,Tspecial_address_t,_param->_size_special_register); 61 _ALLOC2_VALACK_IN ( in_READ_UNIT_OUT_VAL,VAL,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 62 _ALLOC2_VALACK_OUT(out_READ_UNIT_OUT_ACK,ACK,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 63 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 64 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_FRONT_END_ID ,"FRONT_END_ID" ,Tcontext_t ,_param->_size_front_end_id ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 65 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_OOO_ENGINE_ID ,"OOO_ENGINE_ID" ,Tcontext_t ,_param->_size_ooo_engine_id ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 66 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_PACKET_ID ,"PACKET_ID" ,Tpacket_t ,_param->_size_rob_ptr ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 67 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_OPERATION ,"OPERATION" ,Toperation_t ,_param->_size_operation ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 68 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_TYPE ,"TYPE" ,Ttype_t ,_param->_size_type ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 69 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_size_store_queue_ptr ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 70 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 71 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_HAS_IMMEDIAT ,"HAS_IMMEDIAT" ,Tcontrol_t ,1 ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 72 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_IMMEDIAT ,"IMMEDIAT" ,Tgeneral_data_t ,_param->_size_general_data ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 73 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_DATA_RA ,"DATA_RA" ,Tgeneral_data_t ,_param->_size_general_data ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 74 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_DATA_RB ,"DATA_RB" ,Tgeneral_data_t ,_param->_size_general_data ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 75 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_DATA_RC ,"DATA_RC" ,Tspecial_data_t ,_param->_size_special_data ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 76 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_WRITE_RD ,"WRITE_RD" ,Tcontrol_t ,1 ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 77 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_NUM_REG_RD ,"NUM_REG_RD" ,Tgeneral_address_t,_param->_size_general_register ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 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 _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]); 81 80 } 82 81 // ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 83 82 { 84 ALLOC 1_INTERFACE("execute_unit_in", OUT, WEST, "Input of execute_unit", _param->_nb_execute_unit);83 ALLOC2_INTERFACE("execute_unit_in", OUT, WEST, "Input of execute_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 85 84 86 ALLOC1_VALACK_OUT(out_EXECUTE_UNIT_IN_VAL,VAL); 87 ALLOC1_VALACK_IN ( in_EXECUTE_UNIT_IN_ACK,ACK); 85 _ALLOC2_VALACK_OUT(out_EXECUTE_UNIT_IN_VAL,VAL, _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 86 _ALLOC2_VALACK_IN ( in_EXECUTE_UNIT_IN_ACK,ACK, _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 87 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 88 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_FRONT_END_ID ,"FRONT_END_ID" ,Tcontext_t ,_param->_size_front_end_id , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 89 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,"OOO_ENGINE_ID" ,Tcontext_t ,_param->_size_ooo_engine_id , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 90 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_PACKET_ID ,"PACKET_ID" ,Tpacket_t ,_param->_size_rob_ptr , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 91 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_OPERATION ,"OPERATION" ,Toperation_t ,_param->_size_operation , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 92 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_TYPE ,"TYPE" ,Ttype_t ,_param->_size_type , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 93 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,"HAS_IMMEDIAT" ,Tcontrol_t ,1 , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 94 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RC ,"DATA_RC" ,Tspecial_data_t ,_param->_size_special_data , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 95 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_WRITE_RD ,"WRITE_RD" ,Tcontrol_t ,1 , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 96 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_WRITE_RE ,"WRITE_RE" ,Tcontrol_t ,1 , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 97 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RE ,"NUM_REG_RE" ,Tspecial_address_t,_param->_size_special_register , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 98 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_size_store_queue_ptr , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 99 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 100 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_IMMEDIAT ,"IMMEDIAT" ,Tgeneral_data_t ,_param->_size_general_data , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 101 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RA ,"DATA_RA" ,Tgeneral_data_t ,_param->_size_general_data , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 102 _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 _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]); 104 } 88 105 89 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id);90 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_FRONT_END_ID ,"FRONT_END_ID" ,Tcontext_t ,_param->_size_front_end_id);91 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,"OOO_ENGINE_ID" ,Tcontext_t ,_param->_size_ooo_engine_id);92 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_PACKET_ID ,"PACKET_ID" ,Tpacket_t ,_param->_size_packet_id);93 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_OPERATION ,"OPERATION" ,Toperation_t ,_param->_size_operation);94 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_TYPE ,"TYPE" ,Ttype_t ,_param->_size_type);95 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,"HAS_IMMEDIAT" ,Tcontrol_t ,1);96 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RC ,"DATA_RC" ,Tspecial_data_t ,_param->_size_special_data);97 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_WRITE_RD ,"WRITE_RD" ,Tcontrol_t ,1);98 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_WRITE_RE ,"WRITE_RE" ,Tcontrol_t ,1);99 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RE ,"NUM_REG_RE" ,Tspecial_address_t,_param->_size_special_register);100 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,log2(_param->_size_store_queue));101 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,log2(_param->_size_load_queue));102 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_IMMEDIAT ,"IMMEDIAT" ,Tgeneral_data_t ,_param->_size_general_data);103 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RA ,"DATA_RA" ,Tgeneral_data_t ,_param->_size_general_data);104 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RB ,"DATA_RB" ,Tgeneral_data_t ,_param->_size_general_data);105 ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RD ,"NUM_REG_RD" ,Tgeneral_address_t,_param->_size_general_register);106 }107 106 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 108 _destination = new std::list<uint32_t> ** [_param->_nb_read_unit]; 107 if (usage_is_set(_usage,USE_SYSTEMC)) 108 { 109 _destination = new std::list<destination_t> ** [_param->_nb_read_unit]; 109 110 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 110 111 { 111 _destination [i] = new std::list< uint32_t> * [_param->_nb_thread];112 _destination [i] = new std::list<destination_t> * [_param->_nb_thread]; 112 113 for (uint32_t j=0; j<_param->_nb_thread; j++) 113 114 { 114 _destination [i][j] = new std::list< uint32_t> [_param->_nb_type];115 _destination [i][j] = new std::list<destination_t> [_param->_nb_type]; 115 116 } 117 } 116 118 } 117 119 118 120 #ifdef POSITION 119 _component->generate_file(); 121 if (usage_is_set(_usage,USE_POSITION)) 122 _component->generate_file(); 120 123 #endif 121 124 -
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
r81 r88 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 23 24 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin"); 24 25 25 if ( _usage & USE_SYSTEMC)26 if (usage_is_set(_usage,USE_SYSTEMC)) 26 27 { 27 28 delete in_CLOCK ; 28 29 delete in_NRESET; 29 30 30 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 delete [] in_READ_UNIT_OUT_VAL ; 32 delete []out_READ_UNIT_OUT_ACK ; 33 if (_param->_have_port_context_id) 34 delete [] in_READ_UNIT_OUT_CONTEXT_ID ; 35 if (_param->_have_port_front_end_id) 36 delete [] in_READ_UNIT_OUT_FRONT_END_ID ; 37 if (_param->_have_port_ooo_engine_id) 38 delete [] in_READ_UNIT_OUT_OOO_ENGINE_ID ; 39 if (_param->_have_port_packet_id) 40 delete [] in_READ_UNIT_OUT_PACKET_ID ; 41 delete [] in_READ_UNIT_OUT_OPERATION ; 42 delete [] in_READ_UNIT_OUT_TYPE ; 43 delete [] in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE; 44 if (_param->_have_port_load_queue_ptr) 45 delete [] in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ; 46 delete [] in_READ_UNIT_OUT_HAS_IMMEDIAT ; 47 delete [] in_READ_UNIT_OUT_IMMEDIAT ; 48 delete [] in_READ_UNIT_OUT_DATA_RA ; 49 delete [] in_READ_UNIT_OUT_DATA_RB ; 50 delete [] in_READ_UNIT_OUT_DATA_RC ; 51 delete [] in_READ_UNIT_OUT_WRITE_RD ; 52 delete [] in_READ_UNIT_OUT_NUM_REG_RD ; 53 delete [] in_READ_UNIT_OUT_WRITE_RE ; 54 delete [] in_READ_UNIT_OUT_NUM_REG_RE ; 31 DELETE2_SIGNAL( in_READ_UNIT_OUT_VAL , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],1 ); 32 DELETE2_SIGNAL(out_READ_UNIT_OUT_ACK , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],1 ); 33 DELETE2_SIGNAL( in_READ_UNIT_OUT_CONTEXT_ID , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_context_id ); 34 DELETE2_SIGNAL( in_READ_UNIT_OUT_FRONT_END_ID , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_front_end_id ); 35 DELETE2_SIGNAL( in_READ_UNIT_OUT_OOO_ENGINE_ID , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_ooo_engine_id ); 36 DELETE2_SIGNAL( in_READ_UNIT_OUT_PACKET_ID , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_rob_ptr ); 37 DELETE2_SIGNAL( in_READ_UNIT_OUT_OPERATION , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_operation ); 38 DELETE2_SIGNAL( in_READ_UNIT_OUT_TYPE , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_type ); 39 DELETE2_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_store_queue_ptr ); 40 DELETE2_SIGNAL( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_load_queue_ptr ); 41 DELETE2_SIGNAL( in_READ_UNIT_OUT_HAS_IMMEDIAT , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],1 ); 42 DELETE2_SIGNAL( in_READ_UNIT_OUT_IMMEDIAT , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_general_data ); 43 DELETE2_SIGNAL( in_READ_UNIT_OUT_DATA_RA , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_general_data ); 44 DELETE2_SIGNAL( in_READ_UNIT_OUT_DATA_RB , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_general_data ); 45 DELETE2_SIGNAL( in_READ_UNIT_OUT_DATA_RC , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_special_data ); 46 DELETE2_SIGNAL( in_READ_UNIT_OUT_WRITE_RD , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],1 ); 47 DELETE2_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RD , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_general_register ); 48 DELETE2_SIGNAL( in_READ_UNIT_OUT_WRITE_RE , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],1 ); 49 DELETE2_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RE , _param->_nb_read_unit, _param->_nb_read_unit_port [it1],_param->_size_special_register ); 50 51 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_VAL , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],1 ); 52 DELETE2_SIGNAL( in_EXECUTE_UNIT_IN_ACK , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],1 ); 53 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_CONTEXT_ID , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_context_id ); 54 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_FRONT_END_ID , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_front_end_id ); 55 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_ooo_engine_id ); 56 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_PACKET_ID , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_rob_ptr ); 57 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_OPERATION , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_operation ); 58 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_TYPE , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_type ); 59 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],1 ); 60 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RC , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_special_data ); 61 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RD , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],1 ); 62 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RE , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],1 ); 63 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RE , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_special_register ); 64 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE, _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_store_queue_ptr ); 65 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_load_queue_ptr ); 66 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_IMMEDIAT , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_general_data ); 67 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RA , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_general_data ); 68 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RB , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_general_data ); 69 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_general_register ); 55 70 56 // ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 delete [] out_EXECUTE_UNIT_IN_VAL ; 58 delete [] in_EXECUTE_UNIT_IN_ACK ; 59 if (_param->_have_port_context_id) 60 delete [] out_EXECUTE_UNIT_IN_CONTEXT_ID ; 61 if (_param->_have_port_front_end_id) 62 delete [] out_EXECUTE_UNIT_IN_FRONT_END_ID ; 63 if (_param->_have_port_ooo_engine_id) 64 delete [] out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ; 65 if (_param->_have_port_packet_id) 66 delete [] out_EXECUTE_UNIT_IN_PACKET_ID ; 67 delete [] out_EXECUTE_UNIT_IN_OPERATION ; 68 delete [] out_EXECUTE_UNIT_IN_TYPE ; 69 delete [] out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ; 70 delete [] out_EXECUTE_UNIT_IN_DATA_RC ; 71 delete [] out_EXECUTE_UNIT_IN_WRITE_RD ; 72 delete [] out_EXECUTE_UNIT_IN_WRITE_RE ; 73 delete [] out_EXECUTE_UNIT_IN_NUM_REG_RE ; 74 delete [] out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE; 75 if (_param->_have_port_load_queue_ptr) 76 delete [] out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ; 77 delete [] out_EXECUTE_UNIT_IN_IMMEDIAT ; 78 delete [] out_EXECUTE_UNIT_IN_DATA_RA ; 79 delete [] out_EXECUTE_UNIT_IN_DATA_RB ; 80 delete [] out_EXECUTE_UNIT_IN_NUM_REG_RD ; 71 delete [] _destination; 81 72 } 82 73 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 83 74 84 delete [] _destination;85 75 delete _component; 86 76 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_end_cycle.cpp
r81 r88 25 25 26 26 #ifdef STATISTICS 27 _stat->end_cycle(); 27 if (usage_is_set(_usage,USE_STATISTICS)) 28 _stat->end_cycle(); 28 29 #endif 29 30 … … 31 32 // Evaluation before read the ouput signal 32 33 // sc_start(0); 33 _interfaces->testbench(); 34 if (usage_is_set(_usage,USE_VHDL_TESTBENCH)) 35 _interfaces->testbench(); 34 36 #endif 35 37 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_genMealy.cpp
r81 r88 24 24 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin"); 25 25 26 bool execute_unit_use [_param->_nb_execute_unit] ;26 bool execute_unit_use [_param->_nb_execute_unit][_param->_max_nb_execute_unit_port]; 27 27 28 28 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 29 execute_unit_use[i] = (PORT_READ(in_EXECUTE_UNIT_IN_ACK [i]) == 0); 29 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 30 execute_unit_use[i][j] = false; 30 31 31 32 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 32 { 33 bool ack = false; 33 for (uint32_t j=0; j<_param->_nb_read_unit_port[i]; j++) 34 { 35 bool ack = false; 36 37 log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"Test Read_unit[%d][%d]",i,j); 38 39 if (PORT_READ(in_READ_UNIT_OUT_VAL [i][j]) == true) 40 { 41 log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION," * have a valid entry."); 42 43 Tcontext_t context_id = (_param->_have_port_context_id )?PORT_READ(in_READ_UNIT_OUT_CONTEXT_ID [i][j]):0; 44 Tcontext_t front_end_id = (_param->_have_port_front_end_id )?PORT_READ(in_READ_UNIT_OUT_FRONT_END_ID [i][j]):0; 45 Tcontext_t ooo_engine_id = (_param->_have_port_ooo_engine_id)?PORT_READ(in_READ_UNIT_OUT_OOO_ENGINE_ID [i][j]):0; 46 Tcontext_t num_thread = get_num_thread(context_id , _param->_size_context_id , 47 front_end_id , _param->_size_front_end_id , 48 ooo_engine_id, _param->_size_ooo_engine_id); 49 Ttype_t type = PORT_READ(in_READ_UNIT_OUT_TYPE [i][j]); 50 51 #ifdef DEBUG_TEST 52 if (_destination[i][num_thread][type].empty()) 53 throw ERRORMORPHEO(FUNCTION,"Invalid Operation : They have no execute_unit to receive a operation from the read_unit ["+toString(i)+"], thread ["+toString(num_thread)+"] and a operation's type ["+toString_type(type)+"]."); 54 #endif 55 56 // find a free execute_unit 57 for (std::list<destination_t>::iterator it=_destination[i][num_thread][type].begin(); 58 (it != _destination[i][num_thread][type].end()) and (ack == false); 59 it++) 60 { 61 uint32_t dest = (*it).grp; 62 uint32_t port = (*it).elt; 63 64 log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION," * Test destination [%d][%d].",dest,port); 65 66 if (execute_unit_use [dest][port] == false) 67 { 68 log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION," * Is ok! Link."); 69 70 // have find !!! 71 ack = PORT_READ(in_EXECUTE_UNIT_IN_ACK [dest][port]); 72 execute_unit_use [dest][port] = true; 34 73 35 log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"Test Read_unit[%d]",i); 36 37 if (PORT_READ(in_READ_UNIT_OUT_VAL [i]) == true) 38 { 39 log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION," * have a valid entry."); 40 41 Tcontext_t context_id = (_param->_have_port_context_id )?PORT_READ(in_READ_UNIT_OUT_CONTEXT_ID [i]):0; 42 Tcontext_t front_end_id = (_param->_have_port_front_end_id )?PORT_READ(in_READ_UNIT_OUT_FRONT_END_ID [i]):0; 43 Tcontext_t ooo_engine_id = (_param->_have_port_ooo_engine_id)?PORT_READ(in_READ_UNIT_OUT_OOO_ENGINE_ID [i]):0; 44 Tcontext_t num_thread = get_num_thread(context_id , _param->_size_context_id , 45 front_end_id , _param->_size_front_end_id , 46 ooo_engine_id, _param->_size_ooo_engine_id); 47 Ttype_t type = PORT_READ(in_READ_UNIT_OUT_TYPE [i]); 48 49 #ifdef DEBUG_TEST 50 if (_destination[i][num_thread][type].empty()) 51 throw ERRORMORPHEO(FUNCTION,"Invalid Operation : They have no execute_unit to receive a operation from the read_unit ["+toString(i)+"], thread ["+toString(num_thread)+"] and a operation's type ["+toString_type(type)+"]."); 52 #endif 53 54 // find a free execute_unit 55 for (std::list<uint32_t>::iterator it=_destination[i][num_thread][type].begin(); 56 (it != _destination[i][num_thread][type].end()) and (ack == false); 57 it++) 58 { 59 uint32_t dest = *it; 60 61 log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION," * Test destination [%d].",dest); 62 63 if (execute_unit_use [dest] == false) 64 { 65 log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION," * Is ok! Link."); 66 // have find !!! 67 ack = true; 68 execute_unit_use [dest] = true; 69 70 if (_param->_have_port_context_id) 71 PORT_WRITE(out_EXECUTE_UNIT_IN_CONTEXT_ID [dest], PORT_READ(in_READ_UNIT_OUT_CONTEXT_ID [i])); 72 if (_param->_have_port_front_end_id) 73 PORT_WRITE(out_EXECUTE_UNIT_IN_FRONT_END_ID [dest], PORT_READ(in_READ_UNIT_OUT_FRONT_END_ID [i])); 74 if (_param->_have_port_ooo_engine_id) 75 PORT_WRITE(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [dest], PORT_READ(in_READ_UNIT_OUT_OOO_ENGINE_ID [i])); 76 if (_param->_have_port_packet_id) 77 PORT_WRITE(out_EXECUTE_UNIT_IN_PACKET_ID [dest], PORT_READ(in_READ_UNIT_OUT_PACKET_ID [i])); 78 PORT_WRITE(out_EXECUTE_UNIT_IN_OPERATION [dest], PORT_READ(in_READ_UNIT_OUT_OPERATION [i])); 79 PORT_WRITE(out_EXECUTE_UNIT_IN_TYPE [dest], PORT_READ(in_READ_UNIT_OUT_TYPE [i])); 80 PORT_WRITE(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [dest], PORT_READ(in_READ_UNIT_OUT_HAS_IMMEDIAT [i])); 81 PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RC [dest], PORT_READ(in_READ_UNIT_OUT_DATA_RC [i])); 82 PORT_WRITE(out_EXECUTE_UNIT_IN_WRITE_RD [dest], PORT_READ(in_READ_UNIT_OUT_WRITE_RD [i])); 83 PORT_WRITE(out_EXECUTE_UNIT_IN_WRITE_RE [dest], PORT_READ(in_READ_UNIT_OUT_WRITE_RE [i])); 84 PORT_WRITE(out_EXECUTE_UNIT_IN_NUM_REG_RE [dest], PORT_READ(in_READ_UNIT_OUT_NUM_REG_RE [i])); 85 PORT_WRITE(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [dest], PORT_READ(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i])); 86 if (_param->_have_port_load_queue_ptr) 87 PORT_WRITE(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [dest], PORT_READ(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i])); 88 PORT_WRITE(out_EXECUTE_UNIT_IN_IMMEDIAT [dest], PORT_READ(in_READ_UNIT_OUT_IMMEDIAT [i])); 89 PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RA [dest], PORT_READ(in_READ_UNIT_OUT_DATA_RA [i])); 90 PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RB [dest], PORT_READ(in_READ_UNIT_OUT_DATA_RB [i])); 91 PORT_WRITE(out_EXECUTE_UNIT_IN_NUM_REG_RD [dest], PORT_READ(in_READ_UNIT_OUT_NUM_REG_RD [i])); 92 } 93 } 94 } 95 PORT_WRITE(out_READ_UNIT_OUT_ACK [i], ack); 96 } 74 if (_param->_have_port_context_id) 75 PORT_WRITE(out_EXECUTE_UNIT_IN_CONTEXT_ID [dest][port], PORT_READ(in_READ_UNIT_OUT_CONTEXT_ID [i][j])); 76 if (_param->_have_port_front_end_id) 77 PORT_WRITE(out_EXECUTE_UNIT_IN_FRONT_END_ID [dest][port], PORT_READ(in_READ_UNIT_OUT_FRONT_END_ID [i][j])); 78 if (_param->_have_port_ooo_engine_id) 79 PORT_WRITE(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [dest][port], PORT_READ(in_READ_UNIT_OUT_OOO_ENGINE_ID [i][j])); 80 if (_param->_have_port_rob_ptr ) 81 PORT_WRITE(out_EXECUTE_UNIT_IN_PACKET_ID [dest][port], PORT_READ(in_READ_UNIT_OUT_PACKET_ID [i][j])); 82 PORT_WRITE(out_EXECUTE_UNIT_IN_OPERATION [dest][port], PORT_READ(in_READ_UNIT_OUT_OPERATION [i][j])); 83 PORT_WRITE(out_EXECUTE_UNIT_IN_TYPE [dest][port], PORT_READ(in_READ_UNIT_OUT_TYPE [i][j])); 84 PORT_WRITE(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [dest][port], PORT_READ(in_READ_UNIT_OUT_HAS_IMMEDIAT [i][j])); 85 PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RC [dest][port], PORT_READ(in_READ_UNIT_OUT_DATA_RC [i][j])); 86 PORT_WRITE(out_EXECUTE_UNIT_IN_WRITE_RD [dest][port], PORT_READ(in_READ_UNIT_OUT_WRITE_RD [i][j])); 87 PORT_WRITE(out_EXECUTE_UNIT_IN_WRITE_RE [dest][port], PORT_READ(in_READ_UNIT_OUT_WRITE_RE [i][j])); 88 PORT_WRITE(out_EXECUTE_UNIT_IN_NUM_REG_RE [dest][port], PORT_READ(in_READ_UNIT_OUT_NUM_REG_RE [i][j])); 89 PORT_WRITE(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [dest][port], PORT_READ(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i][j])); 90 if (_param->_have_port_load_queue_ptr) 91 PORT_WRITE(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [dest][port], PORT_READ(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i][j])); 92 PORT_WRITE(out_EXECUTE_UNIT_IN_IMMEDIAT [dest][port], PORT_READ(in_READ_UNIT_OUT_IMMEDIAT [i][j])); 93 PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RA [dest][port], PORT_READ(in_READ_UNIT_OUT_DATA_RA [i][j])); 94 PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RB [dest][port], PORT_READ(in_READ_UNIT_OUT_DATA_RB [i][j])); 95 PORT_WRITE(out_EXECUTE_UNIT_IN_NUM_REG_RD [dest][port], PORT_READ(in_READ_UNIT_OUT_NUM_REG_RD [i][j])); 96 } 97 } 98 } 99 PORT_WRITE(out_READ_UNIT_OUT_ACK [i][j], ack); 100 } 97 101 98 102 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 99 { 100 PORT_WRITE(out_EXECUTE_UNIT_IN_VAL[i], execute_unit_use[i]); 101 } 103 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 104 PORT_WRITE(out_EXECUTE_UNIT_IN_VAL[i][j], execute_unit_use[i][j]); 102 105 103 106 log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_transition.cpp
r81 r88 34 34 // Fill routing table 35 35 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 36 for (uint32_t j=0; j<_param->_nb_execute_unit; j++) 37 // Test if link between src and dest 38 if (_param->_table_routing [i][j]) 39 // Test the thread accepted by the execute_unit 40 for (uint32_t k=0; k<_param->_nb_thread; k++) 41 if (_param->_table_execute_thread[j][k]) 42 // Test the type accepted by the execute_unit 43 for (uint32_t l=0; l<_param->_nb_type; l++) 44 if (_param->_table_execute_type [j][l]) 45 // push_back == minor have a better priority 46 _destination [i][k][l].push_back(j); 36 for (uint32_t x=0; x<_param->_nb_execute_unit; x++) 37 for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++) 38 // Test if link between src and dest 39 if (_param->_table_routing [i][x][y]) 40 // Test the thread accepted by the execute_unit 41 for (uint32_t k=0; k<_param->_nb_thread; k++) 42 if (_param->_table_execute_thread[x][k]) 43 // Test the type accepted by the execute_unit 44 for (uint32_t l=0; l<_param->_nb_type; l++) 45 if (_param->_table_execute_type [x][l]) 46 // push_back == minor have a better priority 47 _destination [i][k][l].push_back(destination_t(x,y)); 47 48 } 48 49 else
Note: See TracChangeset
for help on using the changeset viewer.