diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2013-09-13 19:44:54 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2013-09-13 19:44:54 -0700 |
commit | 60fae35d3635464ce7a727899b4b77bd405ca4e3 (patch) | |
tree | ab465018c7dfa31a3da5cabe68669d76da2d66ab /src/proof/pdr/pdrCore.c | |
parent | a4087e45f030476cb071f20ccf60b4619320cd36 (diff) | |
download | abc-60fae35d3635464ce7a727899b4b77bd405ca4e3.tar.gz abc-60fae35d3635464ce7a727899b4b77bd405ca4e3.tar.bz2 abc-60fae35d3635464ce7a727899b4b77bd405ca4e3.zip |
Fixing several bugs, which led to unsound results produced by 'pdr -a' with per-output timeout.
Diffstat (limited to 'src/proof/pdr/pdrCore.c')
-rw-r--r-- | src/proof/pdr/pdrCore.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/proof/pdr/pdrCore.c b/src/proof/pdr/pdrCore.c index 27426a60..5294e020 100644 --- a/src/proof/pdr/pdrCore.c +++ b/src/proof/pdr/pdrCore.c @@ -491,8 +491,16 @@ int Pdr_ManBlockCube( Pdr_Man_t * p, Pdr_Set_t * pCube ) // check other frames assert( pPred == NULL ); for ( k = pThis->iFrame; k < kMax; k++ ) - if ( !Pdr_ManCheckCube( p, k, pCubeMin, NULL, 0 ) ) + { + RetValue = Pdr_ManCheckCube( p, k, pCubeMin, NULL, 0 ); + if ( RetValue == -1 ) + { + Pdr_OblDeref( pThis ); + return -1; + } + if ( !RetValue ) break; + } // add new clause if ( p->pPars->fVeryVerbose ) @@ -740,8 +748,8 @@ int Pdr_ManSolveInt( Pdr_Man_t * p ) p->pPars->nDropOuts++; if ( p->pPars->vOutMap ) Vec_IntWriteEntry( p->pPars->vOutMap, p->iOutCur, -1 ); - if ( p->pPars->fVerbose ) - printf( "Timing out on output %d.\n", p->iOutCur ); + if ( !p->pPars->fNotVerbose ) + Abc_Print( 1, "Timing out on output %*d.\n", nOutDigits, p->iOutCur ); } p->timeToStopOne = 0; } |