User: | Jiri Slaby |
Error type: | Reachable Error Location |
Error type description: | A specified error location is reachable in some program path |
File location: | systemc/pc_sfifo_3.cil.c |
Line in file: | 7 |
Project: | SV-COMP 2012 |
Tools: |
Manual Work
|
Entered: | 2012-11-19 13:47:39 UTC |
1 2void error(void) 3{ 4 5 { 6 goto ERROR; 7 ERROR: ; 8 return; 9} 10} 11 12int fast_clk_edge ; 13int slow_clk_edge ; 14int q_buf_0 ; 15int q_free ; 16int q_read_ev ; 17int q_write_ev ; 18int q_req_up ; 19int q_ev ; 20void update_fifo_q(void) 21{ 22 23 { 24 if ((int )q_free == 0) { 25 q_write_ev = 0; 26 } else { 27 28 } 29 if ((int )q_free == 1) { 30 q_read_ev = 0; 31 } else { 32 33 } 34 q_ev = 0; 35 q_req_up = 0; 36 37 return; 38} 39} 40int p_num_write ; 41int p_last_write ; 42int p_dw_st ; 43int p_dw_pc ; 44int p_dw_i ; 45int c_num_read ; 46int c_last_read ; 47int c_dr_st ; 48int c_dr_pc ; 49int c_dr_i ; 50int is_do_write_p_triggered(void) 51{ int __retres1 ; 52 53 { 54 if ((int )p_dw_pc == 1) { 55 if ((int )fast_clk_edge == 1) { 56 __retres1 = 1; 57 goto return_label; 58 } else { 59 60 } 61 } else { 62 63 } 64 if ((int )p_dw_pc == 2) { 65 if ((int )q_read_ev == 1) { 66 __retres1 = 1; 67 goto return_label; 68 } else { 69 70 } 71 } else { 72 73 } 74 __retres1 = 0; 75 return_label: /* CIL Label */ 76 return (__retres1); 77} 78} 79int is_do_read_c_triggered(void) 80{ int __retres1 ; 81 82 { 83 if ((int )c_dr_pc == 1) { 84 if ((int )slow_clk_edge == 1) { 85 __retres1 = 1; 86 goto return_label; 87 } else { 88 89 } 90 } else { 91 92 } 93 if ((int )c_dr_pc == 2) { 94 if ((int )q_write_ev == 1) { 95 __retres1 = 1; 96 goto return_label; 97 } else { 98 99 } 100 } else { 101 102 } 103 __retres1 = 0; 104 return_label: /* CIL Label */ 105 return (__retres1); 106} 107} 108void immediate_notify_threads(void) 109{ int tmp ; 110 int tmp___0 ; 111 112 { 113 { 114 tmp = is_do_write_p_triggered(); 115 } 116 if (tmp) { 117 p_dw_st = 0; 118 } else { 119 120 } 121 { 122 tmp___0 = is_do_read_c_triggered(); 123 } 124 if (tmp___0) { 125 c_dr_st = 0; 126 } else { 127 128 } 129 130 return; 131} 132} 133void do_write_p(void) 134{ 135 136 { 137 if ((int )p_dw_pc == 0) { 138 goto DW_ENTRY; 139 } else { 140 if ((int )p_dw_pc == 1) { 141 goto DW_WAIT; 142 } else { 143 if ((int )p_dw_pc == 2) { 144 goto DW_WAIT_READ; 145 } else { 146 147 } 148 } 149 } 150 DW_ENTRY: 151 { 152 while (1) { 153 while_0_continue: /* CIL Label */ ; 154 p_dw_st = 2; 155 p_dw_pc = 1; 156 157 goto return_label; 158 DW_WAIT: 159 if ((int )q_free == 0) { 160 p_dw_st = 2; 161 p_dw_pc = 2; 162 163 goto return_label; 164 DW_WAIT_READ: ; 165 } else { 166 167 } 168 { 169 q_buf_0 = __VERIFIER_nondet_int(); 170 p_last_write = q_buf_0; 171 p_num_write += 1; 172 q_free = 0; 173 q_req_up = 1; 174 } 175 } 176 while_0_break: /* CIL Label */ ; 177 } 178 return_label: /* CIL Label */ 179 return; 180} 181} 182static int a_t ; 183void do_read_c(void) 184{ int a ; 185 186 { 187 if ((int )c_dr_pc == 0) { 188 goto DR_ENTRY; 189 } else { 190 if ((int )c_dr_pc == 2) { 191 goto DR_WAIT_WRITE; 192 } else { 193 194 } 195 } 196 DR_ENTRY: 197 { 198 while (1) { 199 while_1_continue: /* CIL Label */ ; 200 c_dr_st = 2; 201 c_dr_pc = 1; 202 a_t = a; 203 204 goto return_label; 205 a = a_t; 206 if ((int )q_free == 1) { 207 c_dr_st = 2; 208 c_dr_pc = 2; 209 a_t = a; 210 211 goto return_label; 212 DR_WAIT_WRITE: 213 a = a_t; 214 } else { 215 216 } 217 a = q_buf_0; 218 c_last_read = a; 219 c_num_read += 1; 220 q_free = 1; 221 q_req_up = 1; 222 if (p_last_write == c_last_read) { 223 if (p_num_write == c_num_read) { 224 225 } else { 226 { 227 error(); 228 } 229 } 230 } else { 231 { 232 error(); 233 } 234 } 235 } 236 while_1_break: /* CIL Label */ ; 237 } 238 return_label: /* CIL Label */ 239 return; 240} 241} 242void update_channels(void) 243{ 244 245 { 246 if ((int )q_req_up == 1) { 247 { 248 update_fifo_q(); 249 } 250 } else { 251 252 } 253 254 return; 255} 256} 257void init_threads(void) 258{ 259 260 { 261 if ((int )p_dw_i == 1) { 262 p_dw_st = 0; 263 } else { 264 p_dw_st = 2; 265 } 266 if ((int )c_dr_i == 1) { 267 c_dr_st = 0; 268 } else { 269 c_dr_st = 2; 270 } 271 272 return; 273} 274} 275int exists_runnable_thread(void) 276{ int __retres1 ; 277 278 { 279 if ((int )p_dw_st == 0) { 280 __retres1 = 1; 281 goto return_label; 282 } else { 283 if ((int )c_dr_st == 0) { 284 __retres1 = 1; 285 goto return_label; 286 } else { 287 288 } 289 } 290 __retres1 = 0; 291 return_label: /* CIL Label */ 292 return (__retres1); 293} 294} 295void fire_delta_events(void) 296{ 297 298 { 299 if ((int )q_read_ev == 0) { 300 q_read_ev = 1; 301 } else { 302 303 } 304 if ((int )q_write_ev == 0) { 305 q_write_ev = 1; 306 } else { 307 308 } 309 310 return; 311} 312} 313void reset_delta_events(void) 314{ 315 316 { 317 if ((int )q_read_ev == 1) { 318 q_read_ev = 2; 319 } else { 320 321 } 322 if ((int )q_write_ev == 1) { 323 q_write_ev = 2; 324 } else { 325 326 } 327 328 return; 329} 330} 331void fire_time_events(void) ; 332static int t = 0; 333void fire_time_events(void) 334{ 335 336 { 337 if (t < 1) { 338 fast_clk_edge = 1; 339 t += 1; 340 } else { 341 fast_clk_edge = 1; 342 slow_clk_edge = 1; 343 t = 0; 344 } 345 346 return; 347} 348} 349void reset_time_events(void) 350{ 351 352 { 353 if ((int )fast_clk_edge == 1) { 354 fast_clk_edge = 2; 355 } else { 356 357 } 358 if ((int )slow_clk_edge == 1) { 359 slow_clk_edge = 2; 360 } else { 361 362 } 363 364 return; 365} 366} 367void activate_threads(void) 368{ int tmp ; 369 int tmp___0 ; 370 371 { 372 { 373 tmp = is_do_write_p_triggered(); 374 } 375 if (tmp) { 376 p_dw_st = 0; 377 } else { 378 379 } 380 { 381 tmp___0 = is_do_read_c_triggered(); 382 } 383 if (tmp___0) { 384 c_dr_st = 0; 385 } else { 386 387 } 388 389 return; 390} 391} 392void eval(void) 393{ int tmp ; 394 int tmp___0 ; 395 int tmp___1 ; 396 { 397 { 398 while (1) { 399 while_2_continue: /* CIL Label */ ; 400 { 401 tmp___1 = exists_runnable_thread(); 402 } 403 if (tmp___1) { 404 405 } else { 406 goto while_2_break; 407 } 408 if ((int )p_dw_st == 0) { 409 { 410 tmp = __VERIFIER_nondet_int(); 411 } 412 if (tmp) { 413 { 414 p_dw_st = 1; 415 do_write_p(); 416 } 417 } else { 418 419 } 420 } else { 421 422 } 423 if ((int )c_dr_st == 0) { 424 { 425 tmp___0 = __VERIFIER_nondet_int(); 426 } 427 if (tmp___0) { 428 { 429 c_dr_st = 1; 430 do_read_c(); 431 } 432 } else { 433 434 } 435 } else { 436 437 } 438 } 439 while_2_break: /* CIL Label */ ; 440 } 441 442 return; 443} 444} 445int stop_simulation(void) 446{ int tmp ; 447 int __retres2 ; 448 449 { 450 { 451 tmp = exists_runnable_thread(); 452 } 453 if (tmp) { 454 __retres2 = 0; 455 goto return_label; 456 } else { 457 458 } 459 __retres2 = 1; 460 return_label: /* CIL Label */ 461 return (__retres2); 462} 463} 464void start_simulation(void) 465{ int kernel_st ; 466 int tmp ; 467 int tmp___0 ; 468 469 { 470 { 471 kernel_st = 0; 472 update_channels(); 473 init_threads(); 474 fire_delta_events(); 475 activate_threads(); 476 reset_delta_events(); 477 } 478 { 479 while (1) { 480 while_3_continue: /* CIL Label */ ; 481 { 482 kernel_st = 1; 483 eval(); 484 } 485 { 486 kernel_st = 2; 487 update_channels(); 488 } 489 { 490 kernel_st = 3; 491 fire_delta_events(); 492 activate_threads(); 493 reset_delta_events(); 494 } 495 { 496 tmp = exists_runnable_thread(); 497 } 498 if (tmp == 0) { 499 { 500 kernel_st = 4; 501 fire_time_events(); 502 activate_threads(); 503 reset_time_events(); 504 } 505 } else { 506 507 } 508 { 509 tmp___0 = stop_simulation(); 510 } 511 if (tmp___0) { 512 goto while_3_break; 513 } else { 514 515 } 516 } 517 while_3_break: /* CIL Label */ ; 518 } 519 520 return; 521} 522} 523void init_model(void) 524{ 525 526 { 527 fast_clk_edge = 2; 528 slow_clk_edge = 2; 529 q_free = 1; 530 q_write_ev = 2; 531 q_read_ev = q_write_ev; 532 p_num_write = 0; 533 p_dw_pc = 0; 534 p_dw_i = 1; 535 c_num_read = 0; 536 c_dr_pc = 0; 537 c_dr_i = 1; 538 539 return; 540} 541} 542int main(void) 543{ int __retres1 ; 544 545 { 546 { 547 init_model(); 548 start_simulation(); 549 } 550 __retres1 = 0; 551 return (__retres1); 552} 553} 554 555 556 557 558 559 560 561 562 563 564 565 566 567