Changeset 41 for vis_dev/vis-2.3/src/debug/debugAbnormal.c
- Timestamp:
- Jan 10, 2012, 6:51:23 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vis_dev/vis-2.3/src/debug/debugAbnormal.c
r40 r41 138 138 abn->abnormal = array_alloc(Ntk_Node_t*,0); 139 139 abn->freeInputs = array_alloc(Ntk_Node_t*,0); 140 abn->abnAigArray = NIL(array_t); 141 abn->abnCnfIndexArray = NIL(array_t); 140 142 abn->verbose = 0; 141 143 return abn; … … 158 160 array_free(abn->abnormal); 159 161 array_free(abn->freeInputs); 162 array_free(abn->abnCnfIndexArray); 163 array_free(abn->abnAigArray); 160 164 FREE(abn); 161 165 } … … 267 271 return abn; 268 272 } 273 /**Function******************************************************************** 274 275 Synopsis [Initialize the abnormal predicate in the clauses array abni =0] 276 277 Description [Fill the Dbg data structure, abnAigArray conains the set of Aig 278 for the set of abnormal perdicate. Each abnormal are set to zero in the clause 279 array.predicabnCnfIndexArray is the cnf index. The correspondance is made by 280 the index in the table, the index of a node in abnArray is the same in 281 abnAigArray and in abnIndexArray. If this array were alredy computed nothing 282 is done, if the aig or index information either.] 283 284 SideEffects [Fill abnAigArray and abnCnfIndexArray] 285 286 SeeAlso [] 287 288 ******************************************************************************/ 289 void Dbg_InitAbn(Dbg_Abnormal_t * abn, 290 bAig_Manager_t * manager, 291 st_table * nodeToMvfAigTable, 292 BmcCnfClauses_t *cnfClauses) 293 { 294 if(abn->abnAigArray != NIL(array_t)) 295 (void) fprintf(vis_stdout, "Abnormal aig alredy filled\n"); 296 if(abn->abnCnfIndexArray != NIL(array_t)){ 297 (void) fprintf(vis_stdout, "Abnormal index alredy filled\n"); 298 return; 299 } 300 //Fill 301 int size = array_n(abn->abnormal); 302 array_t * abnAigArray = array_alloc(bAigEdge_t *,size); 303 array_t * abnIndexArray = array_alloc(int,size); 304 int aIndex; 305 Ntk_Node_t * abnNode; 306 Dbg_ForEachAbnormal(abn, aIndex,abnNode){ 307 MvfAig_Function_t * abnMvfAig = Bmc_ReadMvfAig(abnNode, nodeToMvfAigTable); 308 if (abnMvfAig == NIL(MvfAig_Function_t)){ 309 (void) fprintf(vis_stdout, "No multi-valued function for this node %s \ 310 create abnormal predicate firs \n", Ntk_NodeReadName(abnNode)); 311 return ; 312 } 313 int mvfSize = array_n(abnMvfAig); 314 int i; 315 bAigEdge_t * abnBAig = ALLOC(bAigEdge_t, mvfSize); 316 317 for(i=0; i< mvfSize; i++) 318 { 319 abnBAig[i] = bAig_GetCanonical(manager, 320 MvfAig_FunctionReadComponent(abnMvfAig, i)); 321 } 322 array_insert(bAigEdge_t*,abnAigArray,aIndex,abnBAig); 323 int abnIndex = BmcGenerateCnfFormulaForAigFunction(manager,abnBAig[0],0,cnfClauses); 324 array_insert(int,abnIndexArray,aIndex,cnfClauses->nextIndex); 325 // Create clause 326 array_t *abnClause = NIL(array_t); 327 abnClause = array_alloc(int, 0); 328 array_insert_last(int, abnClause, abnIndex); 329 BmcCnfInsertClause(cnfClauses, abnClause); 330 array_free(abnClause); 331 } 332 abn->abnAigArray = abnAigArray; 333 abn->abnCnfIndexArray = abnIndexArray; 334 }
Note: See TracChangeset
for help on using the changeset viewer.