Commit 5b75410a by Alan Mishchenko

Fixed the overflow timeout problem in bmc/bmc2/bmc3/int/pdr/sim, etc.

parent 868a1b9a
...@@ -1694,7 +1694,7 @@ int Abc_NtkDarBmc( Abc_Ntk_t * pNtk, int nStart, int nFrames, int nSizeMax, int ...@@ -1694,7 +1694,7 @@ int Abc_NtkDarBmc( Abc_Ntk_t * pNtk, int nStart, int nFrames, int nSizeMax, int
{ {
Aig_Man_t * pMan; Aig_Man_t * pMan;
int status, RetValue = -1, clk = clock(); int status, RetValue = -1, clk = clock();
int nTimeLimit = nTimeOut ? clock() + nTimeOut * CLOCKS_PER_SEC : 0; int nTimeLimit = nTimeOut ? time(NULL) + nTimeOut : 0;
// derive the AIG manager // derive the AIG manager
pMan = Abc_NtkToDar( pNtk, 0, 1 ); pMan = Abc_NtkToDar( pNtk, 0, 1 );
...@@ -1722,7 +1722,7 @@ int Abc_NtkDarBmc( Abc_Ntk_t * pNtk, int nStart, int nFrames, int nSizeMax, int ...@@ -1722,7 +1722,7 @@ int Abc_NtkDarBmc( Abc_Ntk_t * pNtk, int nStart, int nFrames, int nSizeMax, int
else if ( RetValue == -1 ) else if ( RetValue == -1 )
{ {
printf( "No output asserted in %d frames. Resource limit reached ", iFrame ); printf( "No output asserted in %d frames. Resource limit reached ", iFrame );
if ( nTimeLimit < clock() ) if ( time(NULL) > nTimeLimit )
printf( "(timeout %d sec). ", nTimeLimit ); printf( "(timeout %d sec). ", nTimeLimit );
else else
printf( "(conf limit %d). ", nBTLimit ); printf( "(conf limit %d). ", nBTLimit );
...@@ -1804,7 +1804,7 @@ int Abc_NtkDarBmc3( Abc_Ntk_t * pNtk, Saig_ParBmc_t * pPars ) ...@@ -1804,7 +1804,7 @@ int Abc_NtkDarBmc3( Abc_Ntk_t * pNtk, Saig_ParBmc_t * pPars )
{ {
Aig_Man_t * pMan; Aig_Man_t * pMan;
int status, RetValue = -1, clk = clock(); int status, RetValue = -1, clk = clock();
int nTimeOut = pPars->nTimeOut ? clock() + pPars->nTimeOut * CLOCKS_PER_SEC : 0; int nTimeOut = pPars->nTimeOut ? time(NULL) + pPars->nTimeOut : 0;
pMan = Abc_NtkToDar( pNtk, 0, 1 ); pMan = Abc_NtkToDar( pNtk, 0, 1 );
if ( pMan == NULL ) if ( pMan == NULL )
{ {
...@@ -1825,7 +1825,7 @@ int Abc_NtkDarBmc3( Abc_Ntk_t * pNtk, Saig_ParBmc_t * pPars ) ...@@ -1825,7 +1825,7 @@ int Abc_NtkDarBmc3( Abc_Ntk_t * pNtk, Saig_ParBmc_t * pPars )
if ( pPars->nFailOuts == 0 ) if ( pPars->nFailOuts == 0 )
{ {
printf( "No output asserted in %d frames. Resource limit reached ", pPars->iFrame ); printf( "No output asserted in %d frames. Resource limit reached ", pPars->iFrame );
if ( nTimeOut < clock() ) if ( time(NULL) > nTimeOut )
printf( "(timeout %d sec). ", pPars->nTimeOut ); printf( "(timeout %d sec). ", pPars->nTimeOut );
else else
printf( "(conf limit %d). ", pPars->nConfLimit ); printf( "(conf limit %d). ", pPars->nConfLimit );
...@@ -1833,7 +1833,7 @@ int Abc_NtkDarBmc3( Abc_Ntk_t * pNtk, Saig_ParBmc_t * pPars ) ...@@ -1833,7 +1833,7 @@ int Abc_NtkDarBmc3( Abc_Ntk_t * pNtk, Saig_ParBmc_t * pPars )
else else
{ {
printf( "The total of %d outputs asserted in %d frames. Resource limit reached ", pPars->nFailOuts, pPars->iFrame ); printf( "The total of %d outputs asserted in %d frames. Resource limit reached ", pPars->nFailOuts, pPars->iFrame );
if ( nTimeOut < clock() ) if ( time(NULL) > nTimeOut )
printf( "(timeout %d sec). ", pPars->nTimeOut ); printf( "(timeout %d sec). ", pPars->nTimeOut );
else else
printf( "(conf limit %d). ", pPars->nConfLimit ); printf( "(conf limit %d). ", pPars->nConfLimit );
......
...@@ -1348,9 +1348,9 @@ extraTransferPermuteRecur( ...@@ -1348,9 +1348,9 @@ extraTransferPermuteRecur(
if ( st_lookup( table, ( char * ) f, ( char ** ) &res ) ) if ( st_lookup( table, ( char * ) f, ( char ** ) &res ) )
return ( Cudd_NotCond( res, comple ) ); return ( Cudd_NotCond( res, comple ) );
if ( ddS->TimeStop && ddS->TimeStop < clock() ) if ( ddS->TimeStop && time(NULL) > ddS->TimeStop )
return NULL; return NULL;
if ( ddD->TimeStop && ddD->TimeStop < clock() ) if ( ddD->TimeStop && time(NULL) > ddD->TimeStop )
return NULL; return NULL;
/* Recursive step. */ /* Recursive step. */
...@@ -1909,9 +1909,9 @@ DdNode * extraBddAndPermute( DdHashTable * table, DdManager * ddF, DdNode * bF, ...@@ -1909,9 +1909,9 @@ DdNode * extraBddAndPermute( DdHashTable * table, DdManager * ddF, DdNode * bF,
return bRes; return bRes;
Counter++; Counter++;
if ( ddF->TimeStop && ddF->TimeStop < clock() ) if ( ddF->TimeStop && time(NULL) > ddF->TimeStop )
return NULL; return NULL;
if ( ddG->TimeStop && ddG->TimeStop < clock() ) if ( ddG->TimeStop && time(NULL) > ddG->TimeStop )
return NULL; return NULL;
// find the topmost variable in F and G using var order of F // find the topmost variable in F and G using var order of F
......
...@@ -225,7 +225,7 @@ cuddBddAndRecurTime( ...@@ -225,7 +225,7 @@ cuddBddAndRecurTime(
} }
// if ( TimeOut && ((*pRecCalls)++ % CHECK_FACTOR) == 0 && TimeOut < clock() ) // if ( TimeOut && ((*pRecCalls)++ % CHECK_FACTOR) == 0 && TimeOut < clock() )
if ( TimeOut && TimeOut < clock() ) if ( TimeOut && time(NULL) > TimeOut )
return NULL; return NULL;
/* Here we can skip the use of cuddI, because the operands are known /* Here we can skip the use of cuddI, because the operands are known
...@@ -379,7 +379,7 @@ cuddBddAndAbstractRecurTime( ...@@ -379,7 +379,7 @@ cuddBddAndAbstractRecurTime(
} }
// if ( TimeOut && ((*pRecCalls)++ % CHECK_FACTOR) == 0 && TimeOut < clock() ) // if ( TimeOut && ((*pRecCalls)++ % CHECK_FACTOR) == 0 && TimeOut < clock() )
if ( TimeOut && TimeOut < clock() ) if ( TimeOut && time(NULL) > TimeOut )
return NULL; return NULL;
if (topf == top) { if (topf == top) {
...@@ -596,7 +596,7 @@ extraTransferPermuteRecurTime( ...@@ -596,7 +596,7 @@ extraTransferPermuteRecurTime(
if ( st_lookup( table, ( char * ) f, ( char ** ) &res ) ) if ( st_lookup( table, ( char * ) f, ( char ** ) &res ) )
return ( Cudd_NotCond( res, comple ) ); return ( Cudd_NotCond( res, comple ) );
if ( TimeOut && TimeOut < clock() ) if ( TimeOut && time(NULL) > TimeOut )
return NULL; return NULL;
/* Recursive step. */ /* Recursive step. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment