Ignore:
Timestamp:
Jan 24, 2012, 3:41:23 PM (13 years ago)
Author:
cecile
Message:

abnormal predicate done

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vis_dev/vis-2.3/src/debug/debug.c

    r42 r44  
    132132{
    133133  Ntk_Network_t * ntk;
    134   int c,verbose;
     134  int c,verbose = 0;
     135  array_t * excludes = NIL(array_t);
    135136  Dbg_Abnormal_t * abnormal;
    136137  ntk = Ntk_HrcManagerReadCurrentNetwork(*hmgr);
     138  char * subs;
    137139  if (ntk == NIL(Ntk_Network_t)) {
    138140        (void) fprintf(vis_stdout, "** abn error: No network\n");
    139141        return 1;
    140142  }
    141   while ((c = util_getopt(argc, argv, "vh:m:k:o:")) != EOF) {
     143  while ((c = util_getopt(argc, argv, "vhs:")) != EOF) {
    142144        switch(c) {
     145        case 'h':
     146          goto usage;
    143147                case 'v':
    144148                        verbose = 1;
    145149                        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;
    146157                }
    147158 }
    148159  abnormal = Dbg_DebugAbnormalAlloc(ntk);
    149160  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
    152174/**Function********************************************************************
    153175
     
    190212array_t          * formulaArray;
    191213array_t          * LTLformulaArray;
    192 char             * ltlFileName     = NIL(char);
    193214array_t          * faultNodes = array_alloc(Ntk_Node_t*,0);
    194215
     
    201222
    202223
    203 printf("MAX K %d", options->maxK);
    204224
    205225if (verbose) {
     
    252272}
    253273Ctlsp_Formula_t *ltlFormula  = array_fetch(Ctlsp_Formula_t *, LTLformulaArray, 0);
    254 
    255274
    256275
     
    283302    int l;
    284303    // 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);
    286305   
    287306
     
    298317    assert(nodeToMvfAigTable != NIL(st_table));
    299318
    300     Dbg_InitAbn(abn,manager, nodeToMvfAigTable,cnfClauses);
     319    Dbg_InitAbn(abn,manager, nodeToMvfAigTable,k,cnfClauses);
    301320
    302321    //loop abnormal
     
    305324    Dbg_ForEachAbnormal(abn,aIndex,abnNode){
    306325      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;
    309330      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
    316349      //SAT procedure
    317350      //assig assig input from cex
    318351      //TODO build cex correctly
    319       int res = Dbg_SatCheck("assig",options->cnfFileName,options->verbosityLevel);
     352      int res = Dbg_SatCheck("assig",options->satInFile,options->verbosityLevel);
    320353      // Build set of FaultCandidates
    321354      if (res == SAT_SAT)
    322355      {
    323356        char * realNodeName = util_strsav(nodeName);
    324         realNodeName[strlen(nodeName)-4] = '\0';
     357        realNodeName[strlen(nodeName)-3] = '\0';
     358        printf("Real = %s\n", realNodeName);
    325359        Ntk_Node_t * realNode =  Ntk_NetworkFindNodeByName(network,realNodeName);
    326360        array_insert_last(Ntk_Node_t*,faultNodes,realNode);
    327361      }
    328362
    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      }
    331367   }
    332368
     
    335371                latches %d \n",cnfClauses->noOfClauses,st_count(CoiTable));
    336372 
     373   
    337374        (void) fprintf(vis_stdout,"Number of Fault candidates %d\n",
    338375    array_n(faultNodes));
    339376        (void) fprintf(vis_stdout,"gates : \n");
     377
     378
    340379    printNodeArray(faultNodes);
    341380
     
    346385array_free(faultNodes);
    347386return 0;
    348  
    349 }
     387}
     388
    350389/**Function********************************************************************
    351390
     
    420459   if (argc - util_optind != 0)
    421460   {
    422       outName  = util_strsav(argv[util_optind]);
    423       /* create SAT Solver input file */
     461     outName  = util_strsav(argv[util_optind]);
     462     /* create SAT Solver input file */
    424463     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);
    427466  }
    428467 
Note: See TracChangeset for help on using the changeset viewer.