Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/src/main.cpp
- Timestamp:
- Dec 10, 2008, 7:31:39 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/src/main.cpp
r81 r88 14 14 err (_("<Usage> %s name_instance list_params.\n"),argv[0]); 15 15 err (_("list_params is :\n")); 16 err (_(" * nb_read_unit (uint32_t )\n")); 17 err (_(" * nb_functionnal_unit (uint32_t )\n")); 18 err (_(" * nb_load_store_unit (uint32_t )\n")); 19 err (_(" * nb_write_unit (uint32_t )\n")); 20 err (_(" * nb_context (uint32_t )\n")); 21 err (_(" * nb_front_end (uint32_t )\n")); 22 err (_(" * nb_ooo_engine (uint32_t )\n")); 23 err (_(" * nb_packet (uint32_t )\n")); 24 err (_(" * size_general_data (uint32_t )\n")); 25 err (_(" * size_special_data (uint32_t )\n")); 26 err (_(" * size_read_queue [read_unit] (uint32_t )\n")); 27 err (_(" * size_reservation_station [read_unit] (uint32_t )\n")); 28 err (_(" * nb_inst_retire [read_unit] (uint32_t )\n")); 29 err (_(" * size_store_queue [load_store_unit] (uint32_t )\n")); 30 err (_(" * size_load_queue [load_store_unit] (uint32_t )\n")); 31 err (_(" * size_speculative_access_queue [load_store_unit] (uint32_t )\n")); 32 err (_(" * nb_port_check [load_store_unit] (uint32_t )\n")); 33 err (_(" * speculative_load [load_store_unit] (Tspeculative_load_t)\n")); 34 err (_(" * nb_bypass_memory [load_store_unit] (uint32_t )\n")); 35 err (_(" * size_write_queue [write_unit] (uint32_t )\n")); 36 err (_(" * size_execute_queue [write_unit] (uint32_t )\n")); 37 err (_(" * nb_bypass_write [write_unit] (uint32_t )\n")); 38 err (_(" * nb_gpr_bank (uint32_t )\n")); 39 err (_(" * nb_gpr_port_read_by_bank (uint32_t )\n")); 40 err (_(" * nb_gpr_port_write_by_bank (uint32_t )\n")); 41 err (_(" * nb_spr_bank (uint32_t )\n")); 42 err (_(" * nb_spr_port_read_by_bank (uint32_t )\n")); 43 err (_(" * nb_spr_port_write_by_bank (uint32_t )\n")); 44 err (_(" * nb_general_register [nb_ooo_engine] (uint32_t )\n")); 45 err (_(" * nb_special_register [nb_ooo_engine] (uint32_t )\n")); 46 err (_(" * nb_inst_insert_rob [nb_ooo_engine] (uint32_t )\n")); 47 err (_(" * nb_inst_retire_rob [nb_ooo_engine] (uint32_t )\n")); 48 err (_(" * execution_unit_to_write_unit_priority (Tpriority_t )\n")); 49 err (_(" * execution_unit_to_write_unit_table_routing[nb_execute_unit][nb_write_unit] (bool )\n")); 50 err (_(" * execution_unit_to_write_unit_table_thread [nb_write_unit][nb_thread] (bool )\n")); 51 err (_(" * read_unit_to_execution_unit_priority (Tpriority_t )\n")); 52 err (_(" * read_unit_to_execution_unit_table_routing [nb_read_unit][nb_execute_unit] (bool )\n")); 53 err (_(" * read_unit_to_execution_unit_table_thread [nb_execute_unit][nb_thread] (bool )\n")); 16 err (_(" * nb_read_unit (uint32_t )\n")); 17 err (_(" * nb_functionnal_unit (uint32_t )\n")); 18 err (_(" * nb_load_store_unit (uint32_t )\n")); 19 err (_(" * nb_write_unit (uint32_t )\n")); 20 err (_(" * nb_context (uint32_t )\n")); 21 err (_(" * nb_front_end (uint32_t )\n")); 22 err (_(" * nb_ooo_engine (uint32_t )\n")); 23 err (_(" * nb_packet (uint32_t )\n")); 24 err (_(" * size_general_data (uint32_t )\n")); 25 err (_(" * size_special_data (uint32_t )\n")); 26 err (_(" * size_read_queue [nb_read_unit] (uint32_t )\n")); 27 err (_(" * size_reservation_station [nb_read_unit] (uint32_t )\n")); 28 err (_(" * nb_inst_retire [nb_read_unit] (uint32_t )\n")); 29 err (_(" * nb_inst_functionnal_unit [nb_functionnal_unit] (uint32_t )\n")); 30 err (_(" * size_store_queue [nb_load_store_unit] (uint32_t )\n")); 31 err (_(" * size_load_queue [nb_load_store_unit] (uint32_t )\n")); 32 err (_(" * size_speculative_access_queue [nb_load_store_unit] (uint32_t )\n")); 33 err (_(" * nb_port_check [nb_load_store_unit] (uint32_t )\n")); 34 err (_(" * speculative_load [nb_load_store_unit] (Tspeculative_load_t)\n")); 35 err (_(" * nb_bypass_memory [nb_load_store_unit] (uint32_t )\n")); 36 err (_(" * nb_cache_port [nb_load_store_unit] (uint32_t )\n")); 37 err (_(" * nb_inst_memory [nb_load_store_unit] (uint32_t )\n")); 38 err (_(" * size_write_queue [nb_write_unit] (uint32_t )\n")); 39 err (_(" * size_execute_queue [nb_write_unit] (uint32_t )\n")); 40 err (_(" * nb_bypass_write [nb_write_unit] (uint32_t )\n")); 41 err (_(" * nb_gpr_bank (uint32_t )\n")); 42 err (_(" * nb_gpr_port_read_by_bank (uint32_t )\n")); 43 err (_(" * nb_gpr_port_write_by_bank (uint32_t )\n")); 44 err (_(" * nb_spr_bank (uint32_t )\n")); 45 err (_(" * nb_spr_port_read_by_bank (uint32_t )\n")); 46 err (_(" * nb_spr_port_write_by_bank (uint32_t )\n")); 47 err (_(" * nb_general_register [nb_ooo_engine] (uint32_t )\n")); 48 err (_(" * nb_special_register [nb_ooo_engine] (uint32_t )\n")); 49 err (_(" * nb_inst_insert_rob [nb_ooo_engine] (uint32_t )\n")); 50 err (_(" * nb_inst_retire_rob [nb_ooo_engine] (uint32_t )\n")); 51 err (_(" * execution_unit_to_write_unit_priority (Tpriority_t )\n")); 52 err (_(" * execution_unit_to_write_unit_table_routing[nb_execute_unit][nb_execute_unit_port][nb_write_unit] (bool )\n")); 53 err (_(" * execution_unit_to_write_unit_table_thread [nb_write_unit][nb_thread] (bool )\n")); 54 err (_(" * read_unit_to_execution_unit_priority (Tpriority_t )\n")); 55 err (_(" * read_unit_to_execution_unit_table_routing [nb_read_unit][nb_execute_unit][nb_execute_unit_port] (bool )\n")); 56 err (_(" * read_unit_to_execution_unit_table_thread [nb_execute_unit][nb_thread] (bool )\n")); 57 err (_(" * is_load_store_unit [nb_execute_unit] (bool )\n")); 58 err (_(" * translate_num_execute_unit [nb_execute_unit] (uint32_t )\n")); 59 54 60 55 61 exit (1); … … 62 68 #endif 63 69 { 70 // Command 71 for (int32_t i=0; i<argc; ++i) 72 msg("%s ",argv[i]); 73 msg("\n"); 74 64 75 if (argc < 2+NB_PARAMS) 65 76 usage (argc, argv); … … 84 95 int32_t nb_params = (2+NB_PARAMS+ 85 96 3*nb_read_unit+ 86 6*nb_load_store_unit+ 97 1*nb_functionnal_unit+ 98 8*nb_load_store_unit+ 87 99 3*nb_write_unit+ 88 100 4*nb_ooo_engine+ 89 nb_execute_unit*nb_write_unit+101 // sum_execute_unit_port*nb_write_unit+ 90 102 nb_write_unit*nb_thread+ 91 nb_read_unit*nb_execute_unit+ 92 nb_execute_unit*nb_thread); 93 94 95 96 if (argc != nb_params) 97 { 98 msg(_("Need %d parameters."),nb_params); 99 usage (argc, argv); 100 } 103 // nb_read_unit*sum_execute_unit_port+ 104 nb_execute_unit*nb_thread+ 105 2*nb_execute_unit); 106 107 if (argc <= nb_params) 108 usage (argc, argv); 109 101 110 uint32_t * size_read_queue = new uint32_t [nb_read_unit]; 102 111 for (uint32_t i=0; i<nb_read_unit; i++) … … 111 120 nb_inst_retire [i] = atoi(argv[x++]); 112 121 122 uint32_t * nb_inst_functionnal_unit = new uint32_t [nb_functionnal_unit]; 123 for (uint32_t i=0; i<nb_functionnal_unit; i++) 124 nb_inst_functionnal_unit [i] = atoi(argv[x++]); 125 113 126 uint32_t * size_store_queue = new uint32_t [nb_load_store_unit]; 114 127 for (uint32_t i=0; i<nb_load_store_unit; i++) … … 134 147 for (uint32_t i=0; i<nb_load_store_unit; i++) 135 148 nb_bypass_memory [i] = atoi(argv[x++]); 149 150 uint32_t * nb_cache_port = new uint32_t [nb_load_store_unit]; 151 for (uint32_t i=0; i<nb_load_store_unit; i++) 152 nb_cache_port [i] = atoi(argv[x++]); 153 154 uint32_t * nb_inst_memory = new uint32_t [nb_load_store_unit]; 155 for (uint32_t i=0; i<nb_load_store_unit; i++) 156 nb_inst_memory [i] = atoi(argv[x++]); 157 158 159 uint32_t sum_execute_unit_port = 0; 160 for (uint32_t i=0; i<nb_load_store_unit; i++) 161 sum_execute_unit_port += nb_inst_memory[i]; 162 for (uint32_t i=0; i<nb_functionnal_unit; i++) 163 sum_execute_unit_port += nb_inst_functionnal_unit[i]; 164 165 nb_params = (2+NB_PARAMS+ 166 3*nb_read_unit+ 167 1*nb_functionnal_unit+ 168 8*nb_load_store_unit+ 169 3*nb_write_unit+ 170 4*nb_ooo_engine+ 171 sum_execute_unit_port*nb_write_unit+ 172 nb_write_unit*nb_thread+ 173 nb_read_unit*sum_execute_unit_port+ 174 nb_execute_unit*nb_thread+ 175 2*nb_execute_unit); 176 177 if (argc != nb_params) 178 { 179 msg("nb_functionnal_unit : %d\n",nb_functionnal_unit); 180 msg("nb_load_store_unit : %d\n",nb_load_store_unit ); 181 msg("sum_execute_unit_port : %d.\n",sum_execute_unit_port); 182 msg(_("Have %d parameters.\n"),argc ); 183 msg(_("Need %d parameters.\n"),nb_params); 184 usage (argc, argv); 185 } 136 186 137 187 uint32_t * size_write_queue = new uint32_t [nb_write_unit]; … … 172 222 Tpriority_t execution_unit_to_write_unit_priority = fromString<Tpriority_t>(argv[x++]); 173 223 174 bool ** execution_unit_to_write_unit_table_routing = new bool* [nb_execute_unit];224 bool *** execution_unit_to_write_unit_table_routing = new bool ** [nb_execute_unit]; 175 225 for (uint32_t i=0; i<nb_execute_unit; i++) 176 226 { 177 execution_unit_to_write_unit_table_routing [i] = new bool [nb_write_unit]; 178 for (uint32_t j=0; j<nb_write_unit; j++) 179 execution_unit_to_write_unit_table_routing [i][j] = atoi(argv[x++]); 180 } 227 uint32_t nb_execute_unit_port = (i<nb_load_store_unit)?nb_inst_memory[i]:nb_inst_functionnal_unit[i-nb_load_store_unit]; 228 229 execution_unit_to_write_unit_table_routing [i] = new bool * [nb_execute_unit_port]; 230 231 for (uint32_t j=0; j<nb_execute_unit_port; j++) 232 { 233 execution_unit_to_write_unit_table_routing [i][j] = new bool [nb_write_unit]; 234 235 for (uint32_t k=0; k<nb_write_unit; k++) 236 execution_unit_to_write_unit_table_routing [i][j][k] = atoi(argv[x++]); 237 } 238 } 239 181 240 bool ** execution_unit_to_write_unit_table_thread = new bool * [nb_write_unit]; 182 241 for (uint32_t i=0; i<nb_write_unit; i++) … … 188 247 Tpriority_t read_unit_to_execution_unit_priority = fromString<Tpriority_t>(argv[x++]); 189 248 190 bool ** read_unit_to_execution_unit_table_routing = new bool* [nb_read_unit];249 bool *** read_unit_to_execution_unit_table_routing = new bool ** [nb_read_unit]; 191 250 for (uint32_t i=0; i<nb_read_unit; i++) 192 251 { 193 read_unit_to_execution_unit_table_routing [i] = new bool [nb_execute_unit];252 read_unit_to_execution_unit_table_routing [i] = new bool * [nb_execute_unit]; 194 253 for (uint32_t j=0; j<nb_execute_unit; j++) 195 read_unit_to_execution_unit_table_routing [i][j] = atoi(argv[x++]); 196 } 254 { 255 uint32_t nb_execute_unit_port = (j<nb_load_store_unit)?nb_inst_memory[j]:nb_inst_functionnal_unit[j-nb_load_store_unit]; 256 read_unit_to_execution_unit_table_routing [i][j] = new bool [nb_execute_unit_port]; 257 258 for (uint32_t k=0; k<nb_execute_unit_port; k++) 259 read_unit_to_execution_unit_table_routing [i][j][k] = atoi(argv[x++]); 260 } 261 } 262 197 263 bool ** read_unit_to_execution_unit_table_thread = new bool * [nb_execute_unit]; 198 264 for (uint32_t i=0; i<nb_execute_unit; i++) … … 202 268 read_unit_to_execution_unit_table_thread [i][j] = atoi(argv[x++]); 203 269 } 204 execute_timing_t *** timing = new execute_timing_t ** [nb_execute_unit]; 205 270 271 bool * is_load_store_unit = new bool [nb_execute_unit]; 272 for (uint32_t i=0; i<nb_execute_unit; i++) 273 is_load_store_unit [i] = fromString<bool>(argv[x++]); 274 275 uint32_t * translate_num_execute_unit = new uint32_t [nb_execute_unit]; 276 for (uint32_t i=0; i<nb_execute_unit; i++) 277 translate_num_execute_unit [i] = fromString<uint32_t>(argv[x++]); 278 279 execute_timing_t *** timing = new execute_timing_t ** [nb_functionnal_unit]; 206 280 // alloc and reset timing array 207 for (uint32_t i=0; i< nb_ execute_unit; i++)281 for (uint32_t i=0; i< nb_functionnal_unit; i++) 208 282 { 209 283 timing [i] = new execute_timing_t * [MAX_TYPE]; … … 218 292 } 219 293 220 for (uint32_t i=0; i< nb_load_store_unit; i++)221 for (uint32_t k=0; k< MAX_OPERATION; k++)222 timing[i][TYPE_MEMORY][k]._delay = timing[i][TYPE_MEMORY][k]._latence = 1;223 294 for (uint32_t i=0; i< nb_functionnal_unit; i++) 224 295 for (uint32_t j=0; j< MAX_TYPE; j++) 225 if (j != TYPE_MEMORY) 226 for (uint32_t k=0; k< MAX_OPERATION; k++) 227 timing[i+nb_load_store_unit][j][k]._delay = timing[i+nb_load_store_unit][j][k]._latence = 1; 228 229 morpheo::behavioural::custom::custom_information_t (*get_custom_information) (uint32_t) = &(morpheo::behavioural::custom::default_get_custom_information); 296 { 297 if ( (j != TYPE_MEMORY) and 298 not ((i!=0) and ((j == TYPE_SPECIAL) or 299 (j == TYPE_CUSTOM)))) 300 for (uint32_t k=0; k< MAX_OPERATION; k++) 301 timing[i][j][k]._delay = timing[i][j][k]._latence = 1; 302 } 303 304 morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void) = &(morpheo::behavioural::custom::default_get_custom_information); 230 305 231 306 try … … 247 322 size_reservation_station , 248 323 nb_inst_retire , 249 324 325 nb_inst_functionnal_unit , 250 326 timing , 251 327 get_custom_information , … … 256 332 nb_port_check , 257 333 speculative_load , 258 259 334 nb_bypass_memory , 335 nb_cache_port , 336 nb_inst_memory , 337 260 338 size_write_queue , 261 339 size_execute_queue , … … 279 357 read_unit_to_execution_unit_priority , 280 358 read_unit_to_execution_unit_table_routing , 281 read_unit_to_execution_unit_table_thread ); 282 283 msg(_("%s"),param->print(1).c_str()); 359 read_unit_to_execution_unit_table_thread , 360 361 is_load_store_unit , //[nb_execute_unit] 362 translate_num_execute_unit , //[nb_execute_unit] 363 true // is_toplevel 364 ); 284 365 285 366 test (name,param); … … 287 368 catch (morpheo::ErrorMorpheo & error) 288 369 { 289 msg (_(" <%s> : %s.\n"),name.c_str(),error.what ());370 msg (_("%s\n"),error.what ()); 290 371 exit (EXIT_FAILURE); 291 372 } 292 373 catch (...) 293 374 { 294 err (_(" <%s> : This test must generate a error.\n"),name.c_str());375 err (_("This test must generate a error.\n")); 295 376 exit (EXIT_FAILURE); 296 377 }
Note: See TracChangeset
for help on using the changeset viewer.