summaryrefslogtreecommitdiffstats
path: root/src/aig/llb/llb2Bad.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2011-02-04 20:22:10 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2011-02-04 20:22:10 -0800
commit3e92b873622ce7ca7baf74520abc28cc7c68dded (patch)
tree44db42075cc0ff05d7b92d00c926aace7ec00816 /src/aig/llb/llb2Bad.c
parent82e9de90005ee38fdc9fa4c52d335d4e87c93196 (diff)
downloadabc-3e92b873622ce7ca7baf74520abc28cc7c68dded.tar.gz
abc-3e92b873622ce7ca7baf74520abc28cc7c68dded.tar.bz2
abc-3e92b873622ce7ca7baf74520abc28cc7c68dded.zip
Added timeout to &reachn.
Diffstat (limited to 'src/aig/llb/llb2Bad.c')
-rw-r--r--src/aig/llb/llb2Bad.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/aig/llb/llb2Bad.c b/src/aig/llb/llb2Bad.c
index 8322698b..4099805b 100644
--- a/src/aig/llb/llb2Bad.c
+++ b/src/aig/llb/llb2Bad.c
@@ -42,12 +42,12 @@ ABC_NAMESPACE_IMPL_START
SeeAlso []
***********************************************************************/
-DdNode * Llb_BddComputeBad( Aig_Man_t * pInit, DdManager * dd )
+DdNode * Llb_BddComputeBad( Aig_Man_t * pInit, DdManager * dd, int TimeOut )
{
Vec_Ptr_t * vNodes;
DdNode * bBdd0, * bBdd1, * bTemp, * bResult;
Aig_Obj_t * pObj;
- int i;
+ int i, k;
assert( Cudd_ReadSize(dd) == Aig_ManPiNum(pInit) );
// initialize elementary variables
Aig_ManConst1(pInit)->pData = Cudd_ReadOne( dd );
@@ -64,6 +64,14 @@ DdNode * Llb_BddComputeBad( Aig_Man_t * pInit, DdManager * dd )
bBdd0 = Cudd_NotCond( (DdNode *)Aig_ObjFanin0(pObj)->pData, Aig_ObjFaninC0(pObj) );
bBdd1 = Cudd_NotCond( (DdNode *)Aig_ObjFanin1(pObj)->pData, Aig_ObjFaninC1(pObj) );
pObj->pData = Cudd_bddAnd( dd, bBdd0, bBdd1 ); Cudd_Ref( (DdNode *)pObj->pData );
+
+ if ( i % 10 == 0 && TimeOut && clock() >= TimeOut )
+ {
+ Vec_PtrForEachEntryStop( Aig_Obj_t *, vNodes, pObj, k, i+1 )
+ Cudd_RecursiveDeref( dd, (DdNode *)pObj->pData );
+ Vec_PtrFree( vNodes );
+ return NULL;
+ }
}
// quantify PIs of each PO
bResult = Cudd_ReadLogicZero( dd ); Cudd_Ref( bResult );