Commit 2f3a9f91 by Alan Mishchenko

Bug fix when &vta returns empty absraction.

parent 5d5ff3b9
...@@ -854,7 +854,8 @@ int Gia_GlaPerform( Gia_Man_t * pAig, Gia_ParVta_t * pPars ) ...@@ -854,7 +854,8 @@ int Gia_GlaPerform( Gia_Man_t * pAig, Gia_ParVta_t * pPars )
pPars->fDumpVabs = nDumpOld; pPars->fDumpVabs = nDumpOld;
// create gate classes // create gate classes
Vec_IntFreeP( &pAig->vGateClasses ); Vec_IntFreeP( &pAig->vGateClasses );
pAig->vGateClasses = Gia_VtaConvertToGla( pAig, pAig->vObjClasses ); if ( pAig->vObjClasses )
pAig->vGateClasses = Gia_VtaConvertToGla( pAig, pAig->vObjClasses );
Vec_IntFreeP( &pAig->vObjClasses ); Vec_IntFreeP( &pAig->vObjClasses );
} }
if ( RetValue == 0 || pAig->vGateClasses == NULL ) if ( RetValue == 0 || pAig->vGateClasses == NULL )
......
...@@ -1630,24 +1630,29 @@ finish: ...@@ -1630,24 +1630,29 @@ finish:
// analize the results // analize the results
if ( pCex == NULL ) if ( pCex == NULL )
{ {
assert( Vec_PtrSize(p->vCores) > 0 ); if ( Vec_PtrSize(p->vCores) == 0 )
if ( pAig->vObjClasses != NULL ) Abc_Print( 1, "Abstraction is not produced because first frame is not solved. " );
Abc_Print( 1, "Replacing the old abstraction by a new one.\n" ); else
Vec_IntFreeP( &pAig->vObjClasses );
pAig->vObjClasses = Gia_VtaFramesToAbs( (Vec_Vec_t *)p->vCores );
if ( Status == -1 )
{ {
if ( p->pPars->nTimeOut && time(NULL) >= p->pSat->nRuntimeLimit ) assert( Vec_PtrSize(p->vCores) > 0 );
Abc_Print( 1, "SAT solver ran out of time at %d sec in frame %d. ", p->pPars->nTimeOut, f ); if ( pAig->vObjClasses != NULL )
else if ( pPars->nConfLimit && sat_solver2_nconflicts(p->pSat) >= pPars->nConfLimit ) Abc_Print( 1, "Replacing the old abstraction by a new one.\n" );
Abc_Print( 1, "SAT solver ran out of resources at %d conflicts in frame %d. ", pPars->nConfLimit, f ); Vec_IntFreeP( &pAig->vObjClasses );
else if ( p->nSeenGla >= Gia_ManCandNum(pAig) * (100-pPars->nRatioMin) / 100 ) pAig->vObjClasses = Gia_VtaFramesToAbs( (Vec_Vec_t *)p->vCores );
Abc_Print( 1, "The ratio of abstracted objects is less than %d %% in frame %d. ", pPars->nRatioMin, f ); if ( Status == -1 )
{
if ( p->pPars->nTimeOut && time(NULL) >= p->pSat->nRuntimeLimit )
Abc_Print( 1, "SAT solver ran out of time at %d sec in frame %d. ", p->pPars->nTimeOut, f );
else if ( pPars->nConfLimit && sat_solver2_nconflicts(p->pSat) >= pPars->nConfLimit )
Abc_Print( 1, "SAT solver ran out of resources at %d conflicts in frame %d. ", pPars->nConfLimit, f );
else if ( p->nSeenGla >= Gia_ManCandNum(pAig) * (100-pPars->nRatioMin) / 100 )
Abc_Print( 1, "The ratio of abstracted objects is less than %d %% in frame %d. ", pPars->nRatioMin, f );
else
Abc_Print( 1, "Abstraction stopped for unknown reason in frame %d. ", f );
}
else else
Abc_Print( 1, "Abstraction stopped for unknown reason in frame %d. ", f ); Abc_Print( 1, "SAT solver completed %d frames and produced an abstraction. ", f );
} }
else
Abc_Print( 1, "SAT solver completed %d frames and produced an abstraction. ", f );
} }
else else
{ {
......
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