Changeset 44 for vis_dev/vis-2.3/src/debug/debug.c
- Timestamp:
- Jan 24, 2012, 3:41:23 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vis_dev/vis-2.3/src/debug/debug.c
r42 r44 132 132 { 133 133 Ntk_Network_t * ntk; 134 int c,verbose; 134 int c,verbose = 0; 135 array_t * excludes = NIL(array_t); 135 136 Dbg_Abnormal_t * abnormal; 136 137 ntk = Ntk_HrcManagerReadCurrentNetwork(*hmgr); 138 char * subs; 137 139 if (ntk == NIL(Ntk_Network_t)) { 138 140 (void) fprintf(vis_stdout, "** abn error: No network\n"); 139 141 return 1; 140 142 } 141 while ((c = util_getopt(argc, argv, "vh :m:k:o:")) != EOF) {143 while ((c = util_getopt(argc, argv, "vhs:")) != EOF) { 142 144 switch(c) { 145 case 'h': 146 goto usage; 143 147 case 'v': 144 148 verbose = 1; 145 149 break; 150 case 's': 151 subs = util_strsav(util_optarg); 152 excludes = array_alloc(char*,0); 153 array_insert_last(char*,excludes,subs); 154 break; 155 default : 156 goto usage; 146 157 } 147 158 } 148 159 abnormal = Dbg_DebugAbnormalAlloc(ntk); 149 160 abnormal->verbose = verbose; 150 Dbg_AddAbnormalPredicatetoNetwork(abnormal); 151 } 161 printf("SUBS %s \n",subs); 162 Dbg_AddAbnormalPredicatetoNetwork(abnormal,excludes); 163 printf("\t # Abnormal predicate created %d\n", array_n(abnormal->abnormal)); 164 return 0; 165 usage : 166 (void) fprintf(vis_stderr, "usage: _createAbn [-h] [-v verboseLevel] [-s substystem excludes\n"); 167 (void) fprintf(vis_stderr, " -h \tprint the command usage\n"); 168 (void) fprintf(vis_stderr, " -v \t verbosity\n"); 169 (void) fprintf(vis_stderr, " -s <subsystemName> \texclude the abnormal predicate\ 170 for this subssytem\n"); 171 return 1; 172 } 173 152 174 /**Function******************************************************************** 153 175 … … 190 212 array_t * formulaArray; 191 213 array_t * LTLformulaArray; 192 char * ltlFileName = NIL(char);193 214 array_t * faultNodes = array_alloc(Ntk_Node_t*,0); 194 215 … … 201 222 202 223 203 printf("MAX K %d", options->maxK);204 224 205 225 if (verbose) { … … 252 272 } 253 273 Ctlsp_Formula_t *ltlFormula = array_fetch(Ctlsp_Formula_t *, LTLformulaArray, 0); 254 255 274 256 275 … … 283 302 int l; 284 303 // return the clause number 285 int noLoopIndex = BmcGenerateCnfForLtl(network, ltlFormula, 0, k, k, cnfClauses); 304 int noLoopIndex = BmcGenerateCnfForLtl(network, ltlFormula, 0, k, k, cnfClauses); printf("LTL %d \n",noLoopIndex); 286 305 287 306 … … 298 317 assert(nodeToMvfAigTable != NIL(st_table)); 299 318 300 Dbg_InitAbn(abn,manager, nodeToMvfAigTable, cnfClauses);319 Dbg_InitAbn(abn,manager, nodeToMvfAigTable,k,cnfClauses); 301 320 302 321 //loop abnormal … … 305 324 Dbg_ForEachAbnormal(abn,aIndex,abnNode){ 306 325 char * nodeName = Ntk_NodeReadName(abnNode); 307 //set abnormal 308 int cnfIndex = array_fetch(int,abn->abnCnfIndexArray, aIndex); 326 //set abnormal for each step 327 array_t * cnfIndexArray = array_fetch(array_t*,abn->abnCnfIndexArray,aIndex); 328 int cnfIndex; 329 int step; 309 330 bAigEdge_t* abnBAig = array_fetch(bAigEdge_t*,abn->abnAigArray, aIndex); 310 int abnIndex = BmcGenerateCnfFormulaForAigFunction(manager,abnBAig[1],0,cnfClauses); 311 array_insert(int,cnfClauses->clauseArray,cnfIndex,abnIndex); 312 FILE *cnfFile = Cmd_FileOpen(options->satInFile, "w", NIL(char *), 0); 313 BmcWriteClauses(manager, cnfFile, cnfClauses, options); 314 fclose(cnfFile); 315 331 array_t * cnfVal = array_alloc(int,0); 332 arrayForEachItem(int, cnfIndexArray, step, cnfIndex){ 333 int abnIndex = BmcGenerateCnfFormulaForAigFunction(manager,abnBAig[1],step,cnfClauses); 334 array_insert(int,cnfClauses->clauseArray,cnfIndex,abnIndex); 335 array_insert_last(int,cnfVal,abnIndex); 336 FILE *cnfFile = Cmd_FileOpen(options->satInFile, "w", NIL(char *), 0); 337 BmcWriteClauses(manager, cnfFile, cnfClauses, options); 338 fclose(cnfFile); 339 printf("AINDEX %d\n",aIndex); 340 if(aIndex == 0) 341 { 342 FILE *cnfFile = Cmd_FileOpen("test_aks.cnf", "w", NIL(char *), 0); 343 BmcWriteClauses(manager, cnfFile, cnfClauses, options); 344 fclose(cnfFile); 345 346 } 347 }//end for each step 348 316 349 //SAT procedure 317 350 //assig assig input from cex 318 351 //TODO build cex correctly 319 int res = Dbg_SatCheck("assig",options-> cnfFileName,options->verbosityLevel);352 int res = Dbg_SatCheck("assig",options->satInFile,options->verbosityLevel); 320 353 // Build set of FaultCandidates 321 354 if (res == SAT_SAT) 322 355 { 323 356 char * realNodeName = util_strsav(nodeName); 324 realNodeName[strlen(nodeName)-4] = '\0'; 357 realNodeName[strlen(nodeName)-3] = '\0'; 358 printf("Real = %s\n", realNodeName); 325 359 Ntk_Node_t * realNode = Ntk_NetworkFindNodeByName(network,realNodeName); 326 360 array_insert_last(Ntk_Node_t*,faultNodes,realNode); 327 361 } 328 362 329 330 array_insert(int,cnfClauses->clauseArray,cnfIndex,-abnIndex); 363 arrayForEachItem(int, cnfIndexArray, step, cnfIndex){ 364 int abnIndex = array_fetch(int,cnfVal,step); 365 array_insert(int,cnfClauses->clauseArray,cnfIndex,-abnIndex); 366 } 331 367 } 332 368 … … 335 371 latches %d \n",cnfClauses->noOfClauses,st_count(CoiTable)); 336 372 373 337 374 (void) fprintf(vis_stdout,"Number of Fault candidates %d\n", 338 375 array_n(faultNodes)); 339 376 (void) fprintf(vis_stdout,"gates : \n"); 377 378 340 379 printNodeArray(faultNodes); 341 380 … … 346 385 array_free(faultNodes); 347 386 return 0; 348 349 } 387 } 388 350 389 /**Function******************************************************************** 351 390 … … 420 459 if (argc - util_optind != 0) 421 460 { 422 423 461 outName = util_strsav(argv[util_optind]); 462 /* create SAT Solver input file */ 424 463 options->cnfFileName= outName; 425 options->satInFile = options->cnfFileName;426 cnfFile = Cmd_FileOpen(options->satInFile, "w", NIL(char *), 0);464 options->satInFile = options->cnfFileName; 465 cnfFile = Cmd_FileOpen(options->satInFile, "w", NIL(char *), 0); 427 466 } 428 467
Note: See TracChangeset
for help on using the changeset viewer.