User: | Jiri Slaby |
Error type: | Reachable Error Location |
Error type description: | A specified error location is reachable in some program path |
File location: | systemc/bist_cell_safe.cil.c |
Line in file: | 8 |
Project: | SV-COMP 2013 |
Project version: | 2.6.28 |
Tools: |
Manual Work
|
Entered: | 2013-01-17 16:57:54 UTC |
1extern int __VERIFIER_nondet_int(); 2 3void error(void) 4{ 5 6 { 7 goto ERROR; 8 ERROR: ; 9 return; 10} 11} 12 13int b0_val ; 14int b0_val_t ; 15int b0_ev ; 16int b0_req_up ; 17int b1_val ; 18int b1_val_t ; 19int b1_ev ; 20int b1_req_up ; 21int d0_val ; 22int d0_val_t ; 23int d0_ev ; 24int d0_req_up ; 25int d1_val ; 26int d1_val_t ; 27int d1_ev ; 28int d1_req_up ; 29int z_val ; 30int z_val_t ; 31int z_ev ; 32int z_req_up ; 33int comp_m1_st ; 34int comp_m1_i ; 35void method1(void) 36{ int s1 ; 37 int s2 ; 38 int s3 ; 39 40 { 41 if (b0_val) { 42 if (d1_val) { 43 s1 = 0; 44 } else { 45 s1 = 1; 46 } 47 } else { 48 s1 = 1; 49 } 50 if (d0_val) { 51 if (b1_val) { 52 s2 = 0; 53 } else { 54 s2 = 1; 55 } 56 } else { 57 s2 = 1; 58 } 59 if (s2) { 60 s3 = 0; 61 } else { 62 if (s1) { 63 s3 = 0; 64 } else { 65 s3 = 1; 66 } 67 } 68 if (s2) { 69 if (s1) { 70 s2 = 1; 71 } else { 72 s2 = 0; 73 } 74 } else { 75 s2 = 0; 76 } 77 if (s2) { 78 z_val_t = 0; 79 } else { 80 if (s3) { 81 z_val_t = 0; 82 } else { 83 z_val_t = 1; 84 } 85 } 86 z_req_up = 1; 87 comp_m1_st = 2; 88 89 return; 90} 91} 92int is_method1_triggered(void) 93{ int __retres1 ; 94 95 { 96 if ((int )b0_ev == 1) { 97 __retres1 = 1; 98 goto return_label; 99 } else { 100 if ((int )b1_ev == 1) { 101 __retres1 = 1; 102 goto return_label; 103 } else { 104 if ((int )d0_ev == 1) { 105 __retres1 = 1; 106 goto return_label; 107 } else { 108 if ((int )d1_ev == 1) { 109 __retres1 = 1; 110 goto return_label; 111 } else { 112 113 } 114 } 115 } 116 } 117 __retres1 = 0; 118 return_label: /* CIL Label */ 119 return (__retres1); 120} 121} 122void update_b0(void) 123{ 124 125 { 126 if ((int )b0_val != (int )b0_val_t) { 127 b0_val = b0_val_t; 128 b0_ev = 0; 129 } else { 130 131 } 132 b0_req_up = 0; 133 134 return; 135} 136} 137void update_b1(void) 138{ 139 140 { 141 if ((int )b1_val != (int )b1_val_t) { 142 b1_val = b1_val_t; 143 b1_ev = 0; 144 } else { 145 146 } 147 b1_req_up = 0; 148 149 return; 150} 151} 152void update_d0(void) 153{ 154 155 { 156 if ((int )d0_val != (int )d0_val_t) { 157 d0_val = d0_val_t; 158 d0_ev = 0; 159 } else { 160 161 } 162 d0_req_up = 0; 163 164 return; 165} 166} 167void update_d1(void) 168{ 169 170 { 171 if ((int )d1_val != (int )d1_val_t) { 172 d1_val = d1_val_t; 173 d1_ev = 0; 174 } else { 175 176 } 177 d1_req_up = 0; 178 179 return; 180} 181} 182void update_z(void) 183{ 184 185 { 186 if ((int )z_val != (int )z_val_t) { 187 z_val = z_val_t; 188 z_ev = 0; 189 } else { 190 191 } 192 z_req_up = 0; 193 194 return; 195} 196} 197void update_channels(void) 198{ 199 200 { 201 if ((int )b0_req_up == 1) { 202 { 203 update_b0(); 204 } 205 } else { 206 207 } 208 if ((int )b1_req_up == 1) { 209 { 210 update_b1(); 211 } 212 } else { 213 214 } 215 if ((int )d0_req_up == 1) { 216 { 217 update_d0(); 218 } 219 } else { 220 221 } 222 if ((int )d1_req_up == 1) { 223 { 224 update_d1(); 225 } 226 } else { 227 228 } 229 if ((int )z_req_up == 1) { 230 { 231 update_z(); 232 } 233 } else { 234 235 } 236 237 return; 238} 239} 240void init_threads(void) 241{ 242 243 { 244 if ((int )comp_m1_i == 1) { 245 comp_m1_st = 0; 246 } else { 247 comp_m1_st = 2; 248 } 249 250 return; 251} 252} 253int exists_runnable_thread(void) 254{ int __retres1 ; 255 256 { 257 if ((int )comp_m1_st == 0) { 258 __retres1 = 1; 259 goto return_label; 260 } else { 261 262 } 263 __retres1 = 0; 264 return_label: /* CIL Label */ 265 return (__retres1); 266} 267} 268void eval(void) 269{ int tmp ; 270 int tmp___0 ; 271 272 { 273 { 274 while (1) { 275 while_0_continue: /* CIL Label */ ; 276 { 277 tmp___0 = exists_runnable_thread(); 278 } 279 if (tmp___0) { 280 281 } else { 282 goto while_0_break; 283 } 284 if ((int )comp_m1_st == 0) { 285 { 286 tmp = __VERIFIER_nondet_int(); 287 } 288 if (tmp) { 289 { 290 comp_m1_st = 1; 291 method1(); 292 } 293 } else { 294 295 } 296 } else { 297 298 } 299 } 300 while_0_break: /* CIL Label */ ; 301 } 302 303 return; 304} 305} 306void fire_delta_events(void) 307{ 308 309 { 310 if ((int )b0_ev == 0) { 311 b0_ev = 1; 312 } else { 313 314 } 315 if ((int )b1_ev == 0) { 316 b1_ev = 1; 317 } else { 318 319 } 320 if ((int )d0_ev == 0) { 321 d0_ev = 1; 322 } else { 323 324 } 325 if ((int )d1_ev == 0) { 326 d1_ev = 1; 327 } else { 328 329 } 330 if ((int )z_ev == 0) { 331 z_ev = 1; 332 } else { 333 334 } 335 336 return; 337} 338} 339void reset_delta_events(void) 340{ 341 342 { 343 if ((int )b0_ev == 1) { 344 b0_ev = 2; 345 } else { 346 347 } 348 if ((int )b1_ev == 1) { 349 b1_ev = 2; 350 } else { 351 352 } 353 if ((int )d0_ev == 1) { 354 d0_ev = 2; 355 } else { 356 357 } 358 if ((int )d1_ev == 1) { 359 d1_ev = 2; 360 } else { 361 362 } 363 if ((int )z_ev == 1) { 364 z_ev = 2; 365 } else { 366 367 } 368 369 return; 370} 371} 372void activate_threads(void) 373{ int tmp ; 374 375 { 376 { 377 tmp = is_method1_triggered(); 378 } 379 if (tmp) { 380 comp_m1_st = 0; 381 } else { 382 383 } 384 385 return; 386} 387} 388int stop_simulation(void) 389{ int tmp ; 390 int __retres2 ; 391 392 { 393 { 394 tmp = exists_runnable_thread(); 395 } 396 if (tmp) { 397 __retres2 = 0; 398 goto return_label; 399 } else { 400 401 } 402 __retres2 = 1; 403 return_label: /* CIL Label */ 404 return (__retres2); 405} 406} 407void start_simulation(void) 408{ int kernel_st ; 409 int tmp ; 410 411 { 412 { 413 kernel_st = 0; 414 update_channels(); 415 init_threads(); 416 fire_delta_events(); 417 activate_threads(); 418 reset_delta_events(); 419 } 420 { 421 while (1) { 422 while_1_continue: /* CIL Label */ ; 423 { 424 kernel_st = 1; 425 eval(); 426 } 427 { 428 kernel_st = 2; 429 update_channels(); 430 } 431 { 432 kernel_st = 3; 433 fire_delta_events(); 434 activate_threads(); 435 reset_delta_events(); 436 tmp = stop_simulation(); 437 } 438 if (tmp) { 439 goto while_1_break; 440 } else { 441 442 } 443 } 444 while_1_break: /* CIL Label */ ; 445 } 446 447 return; 448} 449} 450void init_model(void) 451{ 452 453 { 454 b0_val = 0; 455 b0_ev = 2; 456 b0_req_up = 0; 457 b1_val = 0; 458 b1_ev = 2; 459 b1_req_up = 0; 460 d0_val = 0; 461 d0_ev = 2; 462 d0_req_up = 0; 463 d1_val = 0; 464 d1_ev = 2; 465 d1_req_up = 0; 466 z_val = 0; 467 z_ev = 2; 468 z_req_up = 0; 469 b0_val_t = 1; 470 b0_req_up = 1; 471 b1_val_t = 1; 472 b1_req_up = 1; 473 d0_val_t = 1; 474 d0_req_up = 1; 475 d1_val_t = 1; 476 d1_req_up = 1; 477 comp_m1_i = 0; 478 479 return; 480} 481} 482int main(void) 483{ int __retres1 ; 484 485 { 486 { 487 init_model(); 488 start_simulation(); 489 } 490 if (! ((int )z_val == 0)) { 491 { 492 error(); 493 } 494 } else { 495 496 } 497 __retres1 = 0; 498 return (__retres1); 499} 500}