diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2011-10-31 14:59:47 -0500 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2011-10-31 14:59:47 -0500 |
commit | 868a1b9aeb2bf825a68c37c530107efe72d50d5d (patch) | |
tree | 872e030d59ce89d595812f1c8ae4e776905d3112 | |
parent | f08be2742e892b7b81f234785cbbae85c61ab024 (diff) | |
download | abc-868a1b9aeb2bf825a68c37c530107efe72d50d5d.tar.gz abc-868a1b9aeb2bf825a68c37c530107efe72d50d5d.tar.bz2 abc-868a1b9aeb2bf825a68c37c530107efe72d50d5d.zip |
Fixed the overflow timeout problem in bmc/bmc2/bmc3/int/pdr/sim, etc.
-rw-r--r-- | src/aig/gia/giaSim.c | 3 | ||||
-rw-r--r-- | src/aig/gia/giaSim2.c | 3 | ||||
-rw-r--r-- | src/aig/int/intCore.c | 10 | ||||
-rw-r--r-- | src/aig/llb/llb1Reach.c | 7 | ||||
-rw-r--r-- | src/aig/llb/llb2Core.c | 11 | ||||
-rw-r--r-- | src/aig/llb/llb3Nonlin.c | 8 | ||||
-rw-r--r-- | src/aig/llb/llb4Nonlin.c | 8 | ||||
-rw-r--r-- | src/aig/saig/saigAbsPba.c | 3 | ||||
-rw-r--r-- | src/aig/saig/saigBmc2.c | 11 | ||||
-rw-r--r-- | src/aig/saig/saigBmc3.c | 7 | ||||
-rw-r--r-- | src/aig/saig/saigGlaCba.c | 5 | ||||
-rw-r--r-- | src/aig/saig/saigGlaPba.c | 22 | ||||
-rw-r--r-- | src/aig/ssw/sswFilter.c | 5 | ||||
-rw-r--r-- | src/aig/ssw/sswRarity.c | 6 | ||||
-rw-r--r-- | src/aig/ssw/sswRarity2.c | 6 | ||||
-rw-r--r-- | src/bdd/cudd/cuddAndAbs.c | 2 | ||||
-rw-r--r-- | src/bdd/cudd/cuddBddIte.c | 2 | ||||
-rw-r--r-- | src/bdd/cudd/cuddBridge.c | 4 | ||||
-rw-r--r-- | src/bdd/cudd/cuddCompose.c | 2 | ||||
-rw-r--r-- | src/bdd/cudd/cuddSymmetry.c | 2 | ||||
-rw-r--r-- | src/sat/bsat/satSolver.c | 7 | ||||
-rw-r--r-- | src/sat/pdr/pdrCore.c | 6 |
22 files changed, 78 insertions, 62 deletions
diff --git a/src/aig/gia/giaSim.c b/src/aig/gia/giaSim.c index 44b917c7..4be740cd 100644 --- a/src/aig/gia/giaSim.c +++ b/src/aig/gia/giaSim.c @@ -611,6 +611,7 @@ int Gia_ManSimSimulate( Gia_Man_t * pAig, Gia_ParSim_t * pPars ) Gia_ManSim_t * p; int i, clkTotal = clock(); int iOut, iPat, RetValue = 0; + int nTimeToStop = pPars->TimeLimit ? pPars->TimeLimit + time(NULL) : 0; if ( pAig->pReprs && pAig->pNexts ) return Gia_ManSimSimulateEquiv( pAig, pPars ); ABC_FREE( pAig->pCexSeq ); @@ -647,7 +648,7 @@ int Gia_ManSimSimulate( Gia_Man_t * pAig, Gia_ParSim_t * pPars ) RetValue = 1; break; } - if ( (clock() - clkTotal)/CLOCKS_PER_SEC >= pPars->TimeLimit ) + if ( time(NULL) > pPars->TimeLimit ) { i++; break; diff --git a/src/aig/gia/giaSim2.c b/src/aig/gia/giaSim2.c index e1a5aa07..27945704 100644 --- a/src/aig/gia/giaSim2.c +++ b/src/aig/gia/giaSim2.c @@ -641,6 +641,7 @@ int Gia_ManSimSimulateEquiv( Gia_Man_t * pAig, Gia_ParSim_t * pPars ) Gia_Obj_t * pObj; int i, clkTotal = clock(); int RetValue = 0, iOut, iPat; + int nTimeToStop = pPars->TimeLimit ? pPars->TimeLimit + time(NULL) : 0; assert( pAig->pReprs && pAig->pNexts ); ABC_FREE( pAig->pCexSeq ); p = Gia_Sim2Create( pAig, pPars ); @@ -681,7 +682,7 @@ int Gia_ManSimSimulateEquiv( Gia_Man_t * pAig, Gia_ParSim_t * pPars ) } if ( pAig->pReprs && pAig->pNexts ) Gia_Sim2InfoRefineEquivs( p ); - if ( (clock() - clkTotal)/CLOCKS_PER_SEC >= pPars->TimeLimit ) + if ( time(NULL) > nTimeToStop ) { i++; break; diff --git a/src/aig/int/intCore.c b/src/aig/int/intCore.c index d6295931..0cd5eb36 100644 --- a/src/aig/int/intCore.c +++ b/src/aig/int/intCore.c @@ -81,11 +81,7 @@ int Inter_ManPerformInterpolation( Aig_Man_t * pAig, Inter_ManParams_t * pPars, Inter_Check_t * pCheck = NULL; Aig_Man_t * pAigTemp; int s, i, RetValue, Status, clk, clk2, clkTotal = clock(), timeTemp; - int nTimeNewOut = 0; - - // set runtime limit - if ( pPars->nSecLimit ) - nTimeNewOut = clock() + pPars->nSecLimit * CLOCKS_PER_SEC; + int nTimeNewOut = pPars->nSecLimit ? time(NULL) + pPars->nSecLimit : 0; // sanity checks assert( Saig_ManRegNum(pAig) > 0 ); @@ -252,7 +248,7 @@ p->timeCnf += clock() - clk; } else if ( RetValue == -1 ) { - if ( pPars->nSecLimit && clock() > nTimeNewOut ) // timed out + if ( pPars->nSecLimit && time(NULL) > nTimeNewOut ) // timed out { if ( pPars->fVerbose ) printf( "Reached timeout (%d seconds).\n", pPars->nSecLimit ); @@ -331,7 +327,7 @@ p->timeEqu += clock() - clk - timeTemp; Inter_CheckStop( pCheck ); return 1; } - if ( pPars->nSecLimit && clock() > nTimeNewOut ) + if ( pPars->nSecLimit && time(NULL) > nTimeNewOut ) { printf( "Reached timeout (%d seconds).\n", pPars->nSecLimit ); p->timeTotal = clock() - clkTotal; diff --git a/src/aig/llb/llb1Reach.c b/src/aig/llb/llb1Reach.c index 16b62850..e427eb24 100644 --- a/src/aig/llb/llb1Reach.c +++ b/src/aig/llb/llb1Reach.c @@ -586,10 +586,7 @@ int Llb_ManReachability( Llb_Man_t * p, Vec_Int_t * vHints, DdManager ** pddGlo int nThreshold = 10000; // compute time to stop - if ( p->pPars->TimeLimit ) - p->pPars->TimeTarget = clock() + p->pPars->TimeLimit * CLOCKS_PER_SEC; - else - p->pPars->TimeTarget = 0; + p->pPars->TimeTarget = p->pPars->TimeLimit ? time(NULL) + p->pPars->TimeLimit : 0; // define variable limits Llb_ManPrepareVarLimits( p ); @@ -660,7 +657,7 @@ int Llb_ManReachability( Llb_Man_t * p, Vec_Int_t * vHints, DdManager ** pddGlo { clk2 = clock(); // check the runtime limit - if ( p->pPars->TimeLimit && clock() >= p->pPars->TimeTarget ) + if ( p->pPars->TimeLimit && time(NULL) > p->pPars->TimeTarget ) { if ( !p->pPars->fSilent ) printf( "Reached timeout during image computation (%d seconds).\n", p->pPars->TimeLimit ); diff --git a/src/aig/llb/llb2Core.c b/src/aig/llb/llb2Core.c index 7badc1fb..4ecd1cdf 100644 --- a/src/aig/llb/llb2Core.c +++ b/src/aig/llb/llb2Core.c @@ -218,7 +218,7 @@ int Llb_CoreReachability_int( Llb_Img_t * p, Vec_Ptr_t * vQuant0, Vec_Ptr_t * vQ p->pPars->TimeTarget = 0; */ - if ( p->pPars->TimeLimit && clock() >= p->pPars->TimeTarget ) + if ( time(NULL) > p->pPars->TimeTarget ) { if ( !p->pPars->fSilent ) printf( "Reached timeout (%d seconds) before image computation.\n", p->pPars->TimeLimit ); @@ -286,7 +286,7 @@ int Llb_CoreReachability_int( Llb_Img_t * p, Vec_Ptr_t * vQuant0, Vec_Ptr_t * vQ { clk2 = clock(); // check the runtime limit - if ( p->pPars->TimeLimit && clock() >= p->pPars->TimeTarget ) + if ( p->pPars->TimeLimit && time(NULL) > p->pPars->TimeTarget ) { if ( !p->pPars->fSilent ) printf( "Reached timeout (%d seconds) during image computation.\n", p->pPars->TimeLimit ); @@ -729,10 +729,7 @@ int Llb_ManReachMinCut( Aig_Man_t * pAig, Gia_ParLlb_t * pPars ) int clk = clock(); // compute time to stop - if ( pPars->TimeLimit ) - pPars->TimeTarget = clock() + pPars->TimeLimit * CLOCKS_PER_SEC; - else - pPars->TimeTarget = 0; + pPars->TimeTarget = pPars->TimeLimit ? time(NULL) + pPars->TimeLimit : 0; p = Aig_ManDupFlopsOnly( pAig ); //Aig_ManShow( p, 0, NULL ); @@ -744,7 +741,7 @@ int Llb_ManReachMinCut( Aig_Man_t * pAig, Gia_ParLlb_t * pPars ) vResult = Llb_ManComputeCuts( p, pPars->nPartValue, pPars->fVerbose, pPars->fVeryVerbose ); - if ( pPars->TimeLimit && clock() >= pPars->TimeTarget ) + if ( pPars->TimeLimit && time(NULL) > pPars->TimeTarget ) { if ( !pPars->fSilent ) printf( "Reached timeout (%d seconds) after partitioning.\n", pPars->TimeLimit ); diff --git a/src/aig/llb/llb3Nonlin.c b/src/aig/llb/llb3Nonlin.c index f41e0f6e..e20a1541 100644 --- a/src/aig/llb/llb3Nonlin.c +++ b/src/aig/llb/llb3Nonlin.c @@ -433,10 +433,8 @@ int Llb_NonlinReachability( Llb_Mnn_t * p ) assert( Aig_ManRegNum(p->pAig) > 0 ); // compute time to stop - if ( p->pPars->TimeLimit ) - p->pPars->TimeTarget = clock() + p->pPars->TimeLimit * CLOCKS_PER_SEC; - else - p->pPars->TimeTarget = 0; + p->pPars->TimeTarget = p->pPars->TimeLimit ? time(NULL) + p->pPars->TimeLimit : 0; + // set the stop time parameter p->dd->TimeStop = p->pPars->TimeTarget; p->ddG->TimeStop = p->pPars->TimeTarget; @@ -474,7 +472,7 @@ int Llb_NonlinReachability( Llb_Mnn_t * p ) { // check the runtime limit clk2 = clock(); - if ( p->pPars->TimeLimit && clock() >= p->pPars->TimeTarget ) + if ( p->pPars->TimeLimit && time(NULL) > p->pPars->TimeTarget ) { if ( !p->pPars->fSilent ) printf( "Reached timeout (%d seconds) during image computation.\n", p->pPars->TimeLimit ); diff --git a/src/aig/llb/llb4Nonlin.c b/src/aig/llb/llb4Nonlin.c index 8d096b20..24cd0ac5 100644 --- a/src/aig/llb/llb4Nonlin.c +++ b/src/aig/llb/llb4Nonlin.c @@ -725,7 +725,7 @@ int Llb_Nonlin4Reachability( Llb_Mnx_t * p ) { clkIter = clock(); // check the runtime limit - if ( p->pPars->TimeLimit && clock() >= p->pPars->TimeTarget ) + if ( p->pPars->TimeLimit && time(NULL) > p->pPars->TimeTarget ) { if ( !p->pPars->fSilent ) printf( "Reached timeout (%d seconds) during image computation.\n", p->pPars->TimeLimit ); @@ -929,10 +929,8 @@ Llb_Mnx_t * Llb_MnxStart( Aig_Man_t * pAig, Gia_ParLlb_t * pPars ) p->pPars = pPars; // compute time to stop - if ( p->pPars->TimeLimit ) - p->pPars->TimeTarget = clock() + p->pPars->TimeLimit * CLOCKS_PER_SEC; - else - p->pPars->TimeTarget = 0; + p->pPars->TimeTarget = p->pPars->TimeLimit ? time(NULL) + p->pPars->TimeLimit : 0; + if ( pPars->fCluster ) { // Llb_Nonlin4Cluster( p->pAig, &p->dd, &p->vOrder, &p->vRoots, pPars->nBddMax, pPars->fVerbose ); diff --git a/src/aig/saig/saigAbsPba.c b/src/aig/saig/saigAbsPba.c index 574371ff..a42515f3 100644 --- a/src/aig/saig/saigAbsPba.c +++ b/src/aig/saig/saigAbsPba.c @@ -254,6 +254,7 @@ Vec_Int_t * Saig_ManPbaDerive( Aig_Man_t * pAig, int nInputs, int nStart, int nF sat_solver * pSat; Cnf_Dat_t * pCnf; Aig_Obj_t * pObj; + int nTimeToStop = time(NULL) + TimeLimit; int nCoreLits, * pCoreLits; int i, iVar, RetValue, clk; if ( fVerbose ) @@ -295,7 +296,7 @@ Abc_PrintTime( 1, "Preparing", clock() - clk ); // set runtime limit if ( TimeLimit ) - sat_solver_set_runtime_limit( pSat, clock() + TimeLimit * CLOCKS_PER_SEC ); + sat_solver_set_runtime_limit( pSat, nTimeToStop ); // run SAT solver clk = clock(); diff --git a/src/aig/saig/saigBmc2.c b/src/aig/saig/saigBmc2.c index 1fc5a11a..8d9f4ac8 100644 --- a/src/aig/saig/saigBmc2.c +++ b/src/aig/saig/saigBmc2.c @@ -750,6 +750,7 @@ int Saig_BmcPerform( Aig_Man_t * pAig, int nStart, int nFramesMax, int nNodesMax Saig_Bmc_t * p; Aig_Man_t * pNew; Cnf_Dat_t * pCnf; + int nTimeToStop = time(NULL) + nTimeOut; int nOutsSolved = 0; int Iter, RetValue = -1, clk = clock(), clk2, clkTotal = clock(); int Status = -1; @@ -769,7 +770,7 @@ int Saig_BmcPerform( Aig_Man_t * pAig, int nStart, int nFramesMax, int nNodesMax } // set runtime limit if ( nTimeOut ) - sat_solver_set_runtime_limit( p->pSat, clock() + nTimeOut * CLOCKS_PER_SEC ); + sat_solver_set_runtime_limit( p->pSat, nTimeToStop ); for ( Iter = 0; ; Iter++ ) { clk2 = clock(); @@ -800,7 +801,7 @@ int Saig_BmcPerform( Aig_Man_t * pAig, int nStart, int nFramesMax, int nNodesMax if ( RetValue != l_False ) break; // check the timeout - if ( nTimeOut && ((float)nTimeOut <= (float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC)) ) + if ( nTimeOut && time(NULL) > nTimeToStop ) { printf( "Reached timeout (%d seconds).\n", nTimeOut ); if ( piFrames ) @@ -843,10 +844,10 @@ int Saig_BmcPerform( Aig_Man_t * pAig, int nStart, int nFramesMax, int nNodesMax printf( "Reached limit on the number of timeframes (%d).\n", p->nFramesMax ); else if ( p->nConfMaxAll && p->pSat->stats.conflicts > p->nConfMaxAll ) printf( "Reached global conflict limit (%d).\n", p->nConfMaxAll ); - else if ( nTimeOut == 0 || nTimeOut > clock() ) - printf( "Reached local conflict limit (%d).\n", p->nConfMaxOne ); + else if ( nTimeOut && time(NULL) > nTimeToStop ) + printf( "Reached timeout (%d seconds).\n", nTimeOut ); else - printf( "Reached timeout (%d sec).\n", nTimeOut ); + printf( "Reached local conflict limit (%d).\n", p->nConfMaxOne ); } Saig_BmcManStop( p ); return Status; diff --git a/src/aig/saig/saigBmc3.c b/src/aig/saig/saigBmc3.c index 7248ed1a..f6ec3e0d 100644 --- a/src/aig/saig/saigBmc3.c +++ b/src/aig/saig/saigBmc3.c @@ -1102,6 +1102,7 @@ int Saig_ManBmcScalable( Aig_Man_t * pAig, Saig_ParBmc_t * pPars ) int RetValue = -1, fFirst = 1, nJumpFrame = 0, fUnfinished = 0; int nOutDigits = Aig_Base10Log( Saig_ManPoNum(pAig) - Saig_ManConstrNum(pAig) ); int i, f, Lit, status, clk, clk2, clkOther = 0, clkTotal = clock(); + int nTimeToStop = time(NULL) + pPars->nTimeOut; if ( pPars->fVerbose && Aig_ManConstrNum(pAig) > 0 ) printf( "Performing BMC with constraints...\n" ); p = Saig_Bmc3ManStart( pAig ); @@ -1116,7 +1117,7 @@ int Saig_ManBmcScalable( Aig_Man_t * pAig, Saig_ParBmc_t * pPars ) } // set runtime limit if ( p->pPars->nTimeOut ) - sat_solver_set_runtime_limit( p->pSat, clock() + p->pPars->nTimeOut * CLOCKS_PER_SEC ); + sat_solver_set_runtime_limit( p->pSat, nTimeToStop ); // perform frames Aig_ManRandom( 1 ); Saig_ManBmcMarkPis( pAig, pPars->nPisAbstract ); @@ -1264,7 +1265,7 @@ clkOther += clock() - clk2; else { assert( status == l_Undef ); - if ( pPars->nTimeOut && ((float)pPars->nTimeOut <= (float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC)) ) + if ( pPars->nTimeOut && time(NULL) > nTimeToStop ) { printf( "Reached timeout (%d seconds).\n", pPars->nTimeOut ); Saig_Bmc3ManStop( p ); @@ -1280,7 +1281,7 @@ clkOther += clock() - clk2; Saig_Bmc3ManStop( p ); return RetValue; } - if ( pPars->nTimeOut && ((float)pPars->nTimeOut <= (float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC)) ) + if ( pPars->nTimeOut && time(NULL) > nTimeToStop ) { printf( "Reached timeout (%d seconds).\n", pPars->nTimeOut ); Saig_Bmc3ManStop( p ); diff --git a/src/aig/saig/saigGlaCba.c b/src/aig/saig/saigGlaCba.c index 5c7c76cf..d0fd2db3 100644 --- a/src/aig/saig/saigGlaCba.c +++ b/src/aig/saig/saigGlaCba.c @@ -686,6 +686,7 @@ Vec_Int_t * Aig_Gla1ManTest( Aig_Man_t * pAig, Vec_Int_t * vGateClassesOld, int Vec_Int_t * vPPiRefine; int f, g, r, i, iSatVar, Lit, Entry, RetValue; int nConfBef, nConfAft, clk, clkTotal = clock(); + int nTimeToStop = time(NULL) + TimeLimit; assert( Saig_ManPoNum(pAig) == 1 ); if ( nFramesMax == 0 ) @@ -711,7 +712,7 @@ Vec_Int_t * Aig_Gla1ManTest( Aig_Man_t * pAig, Vec_Int_t * vGateClassesOld, int // set runtime limit if ( TimeLimit ) - sat_solver_set_runtime_limit( p->pSat, clock() + TimeLimit * CLOCKS_PER_SEC ); + sat_solver_set_runtime_limit( p->pSat, nTimeToStop ); // iterate over the timeframes for ( f = 0; f < nFramesMax; f++ ) @@ -750,7 +751,7 @@ Vec_Int_t * Aig_Gla1ManTest( Aig_Man_t * pAig, Vec_Int_t * vGateClassesOld, int printf( "== %3d ==", f ); else printf( " " ); - if ( TimeLimit && clock() > clkTotal + TimeLimit * CLOCKS_PER_SEC ) + if ( TimeLimit && time(NULL) > nTimeToStop ) printf( " SAT solver timed out after %d seconds.\n", TimeLimit ); else if ( RetValue != l_False ) printf( " SAT solver returned UNDECIDED after %5d conflicts.\n", nConfAft - nConfBef ); diff --git a/src/aig/saig/saigGlaPba.c b/src/aig/saig/saigGlaPba.c index aed78f36..cedf3c9e 100644 --- a/src/aig/saig/saigGlaPba.c +++ b/src/aig/saig/saigGlaPba.c @@ -465,13 +465,30 @@ Vec_Int_t * Aig_Gla2ManCollect( Aig_Gla2Man_t * p, Vec_Int_t * vCore ) continue; assert( Saig_ObjIsLo(p->pAig, pObj) || Aig_ObjIsNode(pObj) ); Vec_IntWriteEntry( vResult, Aig_ObjId(pObj), 1 ); - +/* + // add flop inputs with multiple fanouts + if ( Saig_ObjIsLo(p->pAig, pObj) ) + { + Aig_Obj_t * pObjLi = Saig_ObjLoToLi(p->pAig, pObj); + if ( !Saig_ObjIsPi(p->pAig, Aig_ObjFanin0(pObjLi)) ) +// if ( Aig_ObjRefs( Aig_ObjFanin0(pObjLi) ) > 1 ) + Vec_IntWriteEntry( vResult, Aig_ObjFaninId0(pObjLi), 1 ); + } + else + { + if ( !Saig_ObjIsPi(p->pAig, Aig_ObjFanin0(pObj)) ) + Vec_IntWriteEntry( vResult, Aig_ObjFaninId0(pObj), 1 ); + if ( !Saig_ObjIsPi(p->pAig, Aig_ObjFanin1(pObj)) ) + Vec_IntWriteEntry( vResult, Aig_ObjFaninId1(pObj), 1 ); + } +*/ if ( p->vVec2Use ) { iVecId = Vec_IntEntry( p->vObj2Vec, Aig_ObjId(pObj) ); Vec_IntWriteEntry( p->vVec2Use, iVecId * p->nFramesMax + Vec_IntEntry(p->vCla2Fra, ClaId), 1 ); } } +// printf( "Number of entries %d\n", Vec_IntCountPositive(vResult) ); // count the number of objects in each frame if ( p->vVec2Use ) @@ -508,6 +525,7 @@ Vec_Int_t * Aig_Gla2ManTest( Aig_Man_t * pAig, int nStart, int nFramesMax, int n Aig_Gla2Man_t * p; Vec_Int_t * vCore, * vResult; int clk, clkTotal = clock(); + int nTimeToStop = time(NULL) + TimeLimit; assert( Saig_ManPoNum(pAig) == 1 ); if ( fVerbose ) @@ -531,7 +549,7 @@ Vec_Int_t * Aig_Gla2ManTest( Aig_Man_t * pAig, int nStart, int nFramesMax, int n // set runtime limit if ( TimeLimit ) - sat_solver_set_runtime_limit( p->pSat, clock() + TimeLimit * CLOCKS_PER_SEC ); + sat_solver_set_runtime_limit( p->pSat, nTimeToStop ); // compute UNSAT core clk = clock(); diff --git a/src/aig/ssw/sswFilter.c b/src/aig/ssw/sswFilter.c index 8b758915..7298c5f8 100644 --- a/src/aig/ssw/sswFilter.c +++ b/src/aig/ssw/sswFilter.c @@ -383,6 +383,7 @@ void Ssw_SignalFilter( Aig_Man_t * pAig, int nFramesMax, int nConfMax, int nRoun Ssw_Pars_t Pars, * pPars = &Pars; Ssw_Man_t * p; int r, TimeLimitPart, clkTotal = clock(); + int nTimeToStop = TimeLimit ? TimeLimit + time(NULL) : 0; assert( Aig_ManRegNum(pAig) > 0 ); assert( Aig_ManConstrNum(pAig) == 0 ); // consider the case of empty AIG @@ -428,7 +429,7 @@ void Ssw_SignalFilter( Aig_Man_t * pAig, int nFramesMax, int nConfMax, int nRoun Ssw_ClassesPrint( p->ppClasses, 0 ); } p->pMSat = Ssw_SatStart( 0 ); - TimeLimitPart = TimeLimit ? TimeLimit - (int)((float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC)) : 0; + TimeLimitPart = TimeLimit ? nTimeToStop - time(NULL) : 0; if ( TimeLimit2 ) { if ( TimeLimitPart ) @@ -443,7 +444,7 @@ void Ssw_SignalFilter( Aig_Man_t * pAig, int nFramesMax, int nConfMax, int nRoun // simulate pattern forward Ssw_ManRollForward( p, p->pPars->nFramesK ); // check timeout - if ( TimeLimit && ((float)TimeLimit <= (float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC)) ) + if ( TimeLimit && time(NULL) > nTimeToStop ) { printf( "Reached timeout (%d seconds).\n", TimeLimit ); break; diff --git a/src/aig/ssw/sswRarity.c b/src/aig/ssw/sswRarity.c index ad37af25..7a676fee 100644 --- a/src/aig/ssw/sswRarity.c +++ b/src/aig/ssw/sswRarity.c @@ -895,6 +895,7 @@ int Ssw_RarSimulate( Aig_Man_t * pAig, int nFrames, int nWords, int nBinSize, in int fMiter = 1; Ssw_RarMan_t * p; int r, f, clk, clkTotal = clock(); + int nTimeToStop = time(NULL) + TimeOut; int RetValue = -1; assert( Aig_ManRegNum(pAig) > 0 ); assert( Aig_ManConstrNum(pAig) == 0 ); @@ -933,7 +934,7 @@ int Ssw_RarSimulate( Aig_Man_t * pAig, int nFrames, int nWords, int nBinSize, in goto finish; } // check timeout - if ( TimeOut && ((float)TimeOut <= (float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC)) ) + if ( TimeOut && time(NULL) > nTimeToStop ) { if ( fVerbose ) printf( "\n" ); printf( "Reached timeout (%d seconds).\n", TimeOut ); @@ -1002,6 +1003,7 @@ int Ssw_RarSignalFilter( Aig_Man_t * pAig, int nFrames, int nWords, int nBinSize { Ssw_RarMan_t * p; int r, f, i, k, clkTotal = clock(); + int nTimeToStop = time(NULL) + TimeOut; int RetValue = -1; assert( Aig_ManRegNum(pAig) > 0 ); assert( Aig_ManConstrNum(pAig) == 0 ); @@ -1071,7 +1073,7 @@ int Ssw_RarSignalFilter( Aig_Man_t * pAig, int nFrames, int nWords, int nBinSize goto finish; } // check timeout - if ( TimeOut && ((float)TimeOut <= (float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC)) ) + if ( TimeOut && time(NULL) > nTimeToStop ) { if ( fVerbose ) printf( "\n" ); printf( "Reached timeout (%d seconds).\n", TimeOut ); diff --git a/src/aig/ssw/sswRarity2.c b/src/aig/ssw/sswRarity2.c index 3026cf6b..d8cb9c16 100644 --- a/src/aig/ssw/sswRarity2.c +++ b/src/aig/ssw/sswRarity2.c @@ -309,6 +309,7 @@ int Ssw_RarSimulate2( Aig_Man_t * pAig, int nFrames, int nWords, int nBinSize, i int fMiter = 1; Ssw_RarMan_t * p; int r, clk, clkTotal = clock(); + int nTimeToStop = time(NULL) + TimeOut; int RetValue = -1; assert( Aig_ManRegNum(pAig) > 0 ); assert( Aig_ManConstrNum(pAig) == 0 ); @@ -351,7 +352,7 @@ int Ssw_RarSimulate2( Aig_Man_t * pAig, int nFrames, int nWords, int nBinSize, i printf( "." ); } // check timeout - if ( TimeOut && ((float)TimeOut <= (float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC)) ) + if ( TimeOut && time(NULL) > nTimeToStop ) { if ( fVerbose ) printf( "\n" ); printf( "Reached timeout (%d seconds).\n", TimeOut ); @@ -386,6 +387,7 @@ int Ssw_RarSignalFilter2( Aig_Man_t * pAig, int nFrames, int nWords, int nBinSiz int fMiter = 0; Ssw_RarMan_t * p; int r, i, k, clkTotal = clock(); + int nTimeToStop = time(NULL) + TimeOut; int RetValue = -1; assert( Aig_ManRegNum(pAig) > 0 ); assert( Aig_ManConstrNum(pAig) == 0 ); @@ -458,7 +460,7 @@ int Ssw_RarSignalFilter2( Aig_Man_t * pAig, int nFrames, int nWords, int nBinSiz Ssw_RarTransferPatterns( p, p->vInits ); Ssw_SmlInitializeSpecial( p->pSml, p->vInits ); // check timeout - if ( TimeOut && ((float)TimeOut <= (float)(clock()-clkTotal)/(float)(CLOCKS_PER_SEC)) ) + if ( TimeOut && time(NULL) > nTimeToStop ) { if ( fVerbose ) printf( "\n" ); printf( "Reached timeout (%d seconds).\n", TimeOut ); diff --git a/src/bdd/cudd/cuddAndAbs.c b/src/bdd/cudd/cuddAndAbs.c index 2f38490d..b42f376d 100644 --- a/src/bdd/cudd/cuddAndAbs.c +++ b/src/bdd/cudd/cuddAndAbs.c @@ -259,7 +259,7 @@ cuddBddAndAbstractRecur( } } - if ( manager->TimeStop && manager->TimeStop < clock() ) + if ( manager->TimeStop && manager->TimeStop < time(NULL) ) return NULL; if (topf == top) { diff --git a/src/bdd/cudd/cuddBddIte.c b/src/bdd/cudd/cuddBddIte.c index 4e75aab2..d1afdbee 100644 --- a/src/bdd/cudd/cuddBddIte.c +++ b/src/bdd/cudd/cuddBddIte.c @@ -926,7 +926,7 @@ cuddBddAndRecur( if (r != NULL) return(r); } - if ( manager->TimeStop && manager->TimeStop < clock() ) + if ( manager->TimeStop && manager->TimeStop < time(NULL) ) return NULL; /* Here we can skip the use of cuddI, because the operands are known diff --git a/src/bdd/cudd/cuddBridge.c b/src/bdd/cudd/cuddBridge.c index 97a6f393..c051666d 100644 --- a/src/bdd/cudd/cuddBridge.c +++ b/src/bdd/cudd/cuddBridge.c @@ -976,9 +976,9 @@ cuddBddTransferRecur( if (st_lookup(table, (const char *)f, (char **)&res)) return(Cudd_NotCond(res,comple)); - if ( ddS->TimeStop && ddS->TimeStop < clock() ) + if ( ddS->TimeStop && ddS->TimeStop < time(NULL) ) return NULL; - if ( ddD->TimeStop && ddD->TimeStop < clock() ) + if ( ddD->TimeStop && ddD->TimeStop < time(NULL) ) return NULL; /* Recursive step. */ diff --git a/src/bdd/cudd/cuddCompose.c b/src/bdd/cudd/cuddCompose.c index 8dd8f8c5..7c99ac62 100644 --- a/src/bdd/cudd/cuddCompose.c +++ b/src/bdd/cudd/cuddCompose.c @@ -1251,7 +1251,7 @@ cuddBddVarMapRecur( return(Cudd_NotCond(res,F != f)); } - if ( manager->TimeStop && manager->TimeStop < clock() ) + if ( manager->TimeStop && manager->TimeStop < time(NULL) ) return NULL; /* Split and recur on children of this node. */ diff --git a/src/bdd/cudd/cuddSymmetry.c b/src/bdd/cudd/cuddSymmetry.c index a7ef7845..3386e798 100644 --- a/src/bdd/cudd/cuddSymmetry.c +++ b/src/bdd/cudd/cuddSymmetry.c @@ -367,7 +367,7 @@ cuddSymmSifting( if (ddTotalNumberSwapping >= table->siftMaxSwap) break; // enable timeout during variable reodering - alanmi 2/13/11 - if ( table->TimeStop && table->TimeStop < clock() ) + if ( table->TimeStop && table->TimeStop < time(NULL) ) break; x = table->perm[var[i]]; #ifdef DD_STATS diff --git a/src/sat/bsat/satSolver.c b/src/sat/bsat/satSolver.c index a3da3e30..ac2202dc 100644 --- a/src/sat/bsat/satSolver.c +++ b/src/sat/bsat/satSolver.c @@ -1485,7 +1485,7 @@ int sat_solver_solve(sat_solver* s, lit* begin, lit* end, ABC_INT64_T nConfLimit // int nConfs = 0; double Ratio = (s->stats.learnts == 0)? 0.0 : s->stats.learnts_literals / (double)s->stats.learnts; - if ( s->nRuntimeLimit && clock() > s->nRuntimeLimit ) + if ( s->nRuntimeLimit && time(NULL) > s->nRuntimeLimit ) break; if (s->verbosity >= 1) @@ -1510,7 +1510,7 @@ int sat_solver_solve(sat_solver* s, lit* begin, lit* end, ABC_INT64_T nConfLimit // nof_conflicts = nof_conflicts * 3 / 2; //*= 1.5; nof_learnts = nof_learnts * 11 / 10; //*= 1.1; - +//printf( "%d ", s->stats.conflicts ); // quit the loop if reached an external limit if ( s->nConfLimit && s->stats.conflicts > s->nConfLimit ) { @@ -1523,9 +1523,10 @@ int sat_solver_solve(sat_solver* s, lit* begin, lit* end, ABC_INT64_T nConfLimit // printf( "Reached the limit on the number of implications (%d).\n", s->nInsLimit ); break; } - if ( s->nRuntimeLimit && clock() > s->nRuntimeLimit ) + if ( s->nRuntimeLimit && time(NULL) > s->nRuntimeLimit ) break; } +//printf( "\n" ); if (s->verbosity >= 1) printf("==============================================================================\n"); diff --git a/src/sat/pdr/pdrCore.c b/src/sat/pdr/pdrCore.c index 04caba1e..e3c3781f 100644 --- a/src/sat/pdr/pdrCore.c +++ b/src/sat/pdr/pdrCore.c @@ -514,7 +514,7 @@ int Pdr_ManBlockCube( Pdr_Man_t * p, Pdr_Set_t * pCube ) } // check the timeout - if ( p->timeToStop && clock() >= p->timeToStop ) + if ( p->timeToStop && time(NULL) > p->timeToStop ) return -1; } return 1; @@ -538,7 +538,7 @@ int Pdr_ManSolveInt( Pdr_Man_t * p ) int k, RetValue = -1; int clkTotal = clock(); int clkStart = clock(); - p->timeToStop = (p->pPars->nTimeOut == 0) ? 0 : clock() + (CLOCKS_PER_SEC * p->pPars->nTimeOut); + p->timeToStop = p->pPars->nTimeOut ? time(NULL) + p->pPars->nTimeOut : 0; assert( Vec_PtrSize(p->vSolvers) == 0 ); // create the first timeframe Pdr_ManCreateSolver( p, (k = 0) ); @@ -619,7 +619,7 @@ int Pdr_ManSolveInt( Pdr_Man_t * p ) } // check the timeout - if ( p->timeToStop && clock() >= p->timeToStop ) + if ( p->timeToStop && time(NULL) > p->timeToStop ) { if ( fPrintClauses ) { |