154 int i, j, k, m, RetValue = 0, RetValue2, kMax = Vec_PtrSize(
p->vSolvers)-1;
155 int iStartFrame =
p->pPars->fShiftStart ?
p->iUseFrame : 1;
161 Vec_PtrSort( vArrayK, (
int (*)(
const void *,
const void *))
Pdr_SetCompare );
162 vArrayK1 = Vec_VecEntry(
p->vClauses, k+1 );
173 Vec_PtrWriteEntry( vArrayK, m, Vec_PtrEntryLast(vArrayK) );
180 if ( RetValue2 == -1 )
188 if ( pCubeMin != NULL )
204 Vec_PtrWriteEntry( vArrayK1, i, Vec_PtrEntryLast(vArrayK1) );
205 Vec_PtrPop(vArrayK1);
209 Vec_PtrPush( vArrayK1, pCubeK );
210 Vec_PtrWriteEntry( vArrayK, j, Vec_PtrEntryLast(vArrayK) );
214 if ( Vec_PtrSize(vArrayK) == 0 )
219 vArrayK = Vec_VecEntry(
p->vClauses, kMax );
220 Vec_PtrSort( vArrayK, (
int (*)(
const void *,
const void *))
Pdr_SetCompare );
236 Vec_PtrWriteEntry( vArrayK, m, Vec_PtrEntryLast(vArrayK) );
241 p->tPush += Abc_Clock() - clk;
250 int i, j, k, m, RetValue = 0, RetValue2, kMax = Vec_PtrSize(
p->vSolvers)-1;
251 int iStartFrame =
p->pPars->fShiftStart ?
p->iUseFrame : 1;
266 Vec_PtrSort( vArrayK, (
int (*)(
const void *,
const void *))
Pdr_SetCompare );
267 vArrayK1 = Vec_VecEntry(
p->vClauses, k+1 );
280 Vec_PtrWriteEntry( vArrayK, m, Vec_PtrEntryLast(vArrayK) );
288 if ( RetValue2 == -1 )
292 if ( blockCount < blockAttemp )
299 if ( RetValue3 == -1 )
304 if ( RetValue3 == 0 )
312 for ( l = 1; l <= k; l++ )
321 if ( pCubeMin != NULL )
337 Vec_PtrWriteEntry( vArrayK1, i, Vec_PtrEntryLast(vArrayK1) );
338 Vec_PtrPop(vArrayK1);
342 Vec_PtrPush( vArrayK1, pCubeK );
343 Vec_PtrWriteEntry( vArrayK, j, Vec_PtrEntryLast(vArrayK) );
348 if ( Vec_PtrSize(vArrayK) == 0 )
353 vArrayK = Vec_VecEntry(
p->vClauses, kMax );
354 Vec_PtrSort( vArrayK, (
int (*)(
const void *,
const void *))
Pdr_SetCompare );
370 Vec_PtrWriteEntry( vArrayK, m, Vec_PtrEntryLast(vArrayK) );
375 p->tPush += Abc_Clock() - clk;
627 int RetValue = 0, CtgRetValue, i, ctgAttempts, l, micResult;
629 int kMax = Vec_PtrSize(
p->vSolvers)-1;
631 Pdr_Set_t * pCubeTmp, * pCubeMin, * pCtg;
632 Pdr_Set_t * pPredTmp = pPred, * pCubePre = *ppCube;
634 while ( RetValue == 0 )
637 while ( RetValue == 0 && kTmp > 1 && ctgAttempts < 3 )
648 for ( i = 1; i <= k; i++ )
652 if ( pPredTmp != pPred )
654 CtgRetValue =
Pdr_ManCheckCube(
p, kTmp-1, pCtg, &pPredTmp,
p->pPars->nConfLimit, 0, 1 );
655 if ( CtgRetValue == -1 )
659 if ( pCubePre != *ppCube )
663 if ( CtgRetValue == 0 )
665 if (pCubePre != *ppCube)
685 if ( pCubeMin == NULL )
691 if ( micResult == -1 )
697 if ( pCubePre != *ppCube )
701 for ( l = kTmp; l < kMax; l++ )
705 for ( i = 1; i <= l; i++ )
707 Vec_VecPush(
p->vClauses, l, pCubeMin );
711 for ( j = l; j < kMax; j++ )
717 if ( micResult == -1 )
722 if ( pCubePre != *ppCube )
727 for ( i = 1; i <= j; i++ )
729 Vec_VecPush(
p->vClauses, j, pCubeMinCopy );
734 if (
p->pPars->fVeryVerbose )
736 Abc_Print( 1,
"Adding cube " );
737 Pdr_SetPrint( stdout, pCubeMin, Aig_ManRegNum(
p->pAig), NULL );
738 Abc_Print( 1,
" to frame %d.\n", l );
741 for ( i = 0; i < pCubeMin->
nLits; i++ )
744 assert( (pCubeMin->
Lits[i] / 2) < Aig_ManRegNum(
p->pAig) );
745 if ( (Vec_IntEntry(
p->vPrio, pCubeMin->
Lits[i] / 2) >>
p->nPrioShift) == 0 )
747 Vec_IntAddToEntry(
p->vPrio, pCubeMin->
Lits[i] / 2, 1 <<
p->nPrioShift );
749 for ( i = 0; i < pCubeMinCopy->
nLits; i++ )
752 assert( (pCubeMinCopy->
Lits[i] / 2) < Aig_ManRegNum(
p->pAig) );
753 if ( (Vec_IntEntry(
p->vPrio, pCubeMinCopy->
Lits[i] / 2) >>
p->nPrioShift) == 0 )
755 Vec_IntAddToEntry(
p->vPrio, pCubeMinCopy->
Lits[i] / 2, 1 <<
p->nPrioShift );
760 if ( RetValue == -1 )
762 if ( pCubePre != *ppCube )
771 if ( pCubePre != *ppCube )
775 RetValue =
Pdr_ManCheckCube(
p, kTmp, pCubePre, &pPredTmp,
p->pPars->nConfLimit, 0, 1 );
776 if ( RetValue == -1 )
778 if ( pCubePre != *ppCube )
786 if ( pCubePre != *ppCube )
794 if (pCubePre != *ppCube)
796 if ( pPredTmp != pPred )
799 if (
p->pPars->fVeryVerbose )
809 if ( *ppCube == NULL )
811 if (
p->pPars->fVeryVerbose )
813 printf(
"Intersection:\n");
818 if (
p->pPars->fVeryVerbose )
819 printf (
"Failed initiation\n");
823 if ( RetValue == -1 )
830 if ( RetValue == 0 && (*ppCube)->nLits == 1)
885 int Order = Vec_IntSelectSortPrioReverseLit( pCube->
Lits, pCube->
nLits,
p->vPrio );
887 int RetValue, Count = 0, iLit, Lits[2], nLits = Vec_IntSize( vLits1 );
889 int i, iUseVar, iAndVar;
891 for ( i = 1; i < nLits; i++ )
894 for ( i = 1; i < nLits; i++ )
896 assert( iUseVar == iAndVar + nLits );
900 for ( i = 0; i < pCube->
nLits && Count < 2; i++ )
901 Count += !Abc_LitIsCompl(pCube->
Lits[i]);
904 for ( i = 0; i < pCube->
nLits; i++ )
905 if ( !Abc_LitIsCompl(pCube->
Lits[i]) )
907 assert( i < pCube->nLits );
908 iLit = pCube->
Lits[i];
911 pCube->
Lits[0] = iLit;
917 sat_solver_add_buffer_enable( pSat, iAndVar + i, Abc_Lit2Var(iLit), iUseVar + i, Abc_LitIsCompl(iLit) );
918 Vec_IntWriteEntry( vLits1, i, Abc_Var2Lit(iAndVar + i, 0) );
925 assert( Vec_IntSize(vLits1) == nLits );
928 Lits[0] = Abc_Var2Lit(iUseVar + i, 1);
932 Vec_IntWriteEntry( vLits1, i, Abc_Var2Lit(iUseVar + i, 0) );
934 sat_solver_compress( pSat );
948 Vec_IntShrink( vLits1, nLits );
954 Vec_Int_t * vTemp = Vec_IntAlloc( nLits );
955 for ( i = nLits - 1; i >= 0; i-- )
958 if ( !Abc_LitIsCompl(Vec_IntEntry(vLits1, i)) )
961 if ( iLit != -1 && k != i && !Abc_LitIsCompl(iLit) )
963 if ( k == Vec_IntSize(vLits1) )
967 Vec_IntClear( vTemp );
969 if ( Entry != -1 && k != i )
970 Vec_IntPush( vTemp, Entry );
971 else if ( Entry != -1 )
972 Vec_IntPush( vTemp, Abc_LitNot(Entry) );
974 RetValue =
sat_solver_solve( pSat, Vec_IntArray(vTemp), Vec_IntLimit(vTemp),
p->pPars->nConfLimit, 0, 0, 0 );
978 int LitNot = Abc_LitNot(Vec_IntEntry(vLits1, i));
984 Vec_IntWriteEntry( vLits1, i, -1 );
986 Vec_IntFree( vTemp );
991 Vec_IntWriteEntry( vLits1, k++, Entry );
992 Vec_IntShrink( vLits1, k );
996 Vec_IntWriteEntry( vLits1, i, pCube->
Lits[Abc_Lit2Var(iLit)-iUseVar] );
1001 if ( !Abc_LitIsCompl(iLit) )
1003 if ( i == Vec_IntSize(vLits1) )
1006 for ( i = 0; i < pCube->
nLits; i++ )
1007 if ( !Abc_LitIsCompl(pCube->
Lits[i]) )
1009 assert( i < pCube->nLits );
1010 Vec_IntPush( vLits1, pCube->
Lits[i] );
1037 Pdr_Set_t * pCubeMin, * pCubeTmp = NULL, * pPred = NULL, * pCubeCpy = NULL;
1038 int i, j, Lit, RetValue;
1045 if (
p->pPars->fFlopOrder )
1046 Vec_IntSelectSortPrioReverseLit( pCube->
Lits, pCube->
nLits,
p->vPrio );
1048 if (
p->pPars->fFlopOrder )
1049 Vec_IntSelectSort( pCube->
Lits, pCube->
nLits );
1050 if ( RetValue == -1 )
1052 if ( RetValue == 0 )
1054 p->tGeneral += Abc_Clock() - clk;
1061 if ( pCubeMin == NULL )
1065 if (
p->pPars->fSimpleGeneral )
1068 if ( pCubeMin->
nLits > 1 )
1072 assert( ppCubeMin != NULL );
1073 pCubeMin = *ppCubeMin;
1075 *ppCubeMin = pCubeMin;
1076 if (
p->pPars->fVeryVerbose )
1079 for ( i = 0; i < pCubeMin->
nLits; i++)
1080 printf (
"%d ", pCubeMin->
Lits[i]);
1083 p->tGeneral += Abc_Clock() - clk;
1087 keep =
p->pPars->fSkipDown ? NULL : Hash_IntAlloc( 1 );
1090 if ( !
p->pPars->fSkipGeneral )
1093 if (
p->pPars->fSimpleGeneral )
1097 int RetValue1 =
sat_solver_addclause( pSat, Vec_IntArray(vLits1), Vec_IntArray(vLits1) + Vec_IntSize(vLits1) );
1098 assert( RetValue1 == 1 );
1099 sat_solver_compress( pSat );
1105 for ( j = 0; j < pCubeMin->
nLits; j++ )
1112 if ( keep && Hash_IntExists( keep, pCubeMin->
Lits[i] ) )
1123 Lit = pCubeMin->
Lits[i]; pCubeMin->
Lits[i] = -1;
1124 if (
p->pPars->fSkipDown )
1125 RetValue =
Pdr_ManCheckCube(
p, k, pCubeMin, NULL,
p->pPars->nConfLimit, 1, !
p->pPars->fSimpleGeneral );
1127 RetValue =
Pdr_ManCheckCube(
p, k, pCubeMin, &pPred,
p->pPars->nConfLimit, 1, !
p->pPars->fSimpleGeneral );
1128 if ( RetValue == -1 )
1133 pCubeMin->
Lits[i] = Lit;
1134 if ( RetValue == 0 )
1136 if (
p->pPars->fSkipDown )
1139 RetValue =
ZPdr_ManDown(
p, k, &pCubeCpy, pPred, keep, pCubeMin, &added );
1140 if (
p->pPars->fCtgs )
1143 if ( RetValue == -1 )
1150 if ( RetValue == 0 )
1153 Hash_IntWriteEntry( keep, pCubeMin->
Lits[i], 0 );
1161 pCubeMin = pCubeCpy;
1175 if (
p->pPars->fSimpleGeneral )
1179 int RetValue1 =
sat_solver_addclause( pSat, Vec_IntArray(vLits1), Vec_IntArray(vLits1) + Vec_IntSize(vLits1) );
1180 assert( RetValue1 == 1 );
1181 sat_solver_compress( pSat );
1189 if (
p->pPars->fTwoRounds )
1190 for ( j = 0; j < pCubeMin->
nLits; j++ )
1201 Lit = pCubeMin->
Lits[i]; pCubeMin->
Lits[i] = -1;
1203 if ( RetValue == -1 )
1208 pCubeMin->
Lits[i] = Lit;
1209 if ( RetValue == 0 )
1223 assert( ppCubeMin != NULL );
1224 if (
p->pPars->fVeryVerbose )
1227 for ( i = 0; i < pCubeMin->
nLits; i++)
1228 printf (
"%d ", pCubeMin->
Lits[i]);
1231 *ppCubeMin = pCubeMin;
1232 p->tGeneral += Abc_Clock() - clk;
1233 if ( keep ) Hash_IntFree( keep );
1396 int fPrintClauses = 0;
1400 int iFrame, RetValue = -1;
1401 int nOutDigits = Abc_Base10Log( Saig_ManPoNum(
p->pAig) );
1402 abctime clkStart = Abc_Clock(), clkOne = 0;
1403 p->timeToStop =
p->pPars->nTimeOut ?
p->pPars->nTimeOut * CLOCKS_PER_SEC + Abc_Clock(): 0;
1404 assert( Vec_PtrSize(
p->vSolvers) == 0 );
1406 if (
p->pPars->fSolveAll )
1408 if ( Aig_ObjChild0(pObj) == Aig_ManConst0(
p->pAig) )
1410 Vec_IntWriteEntry(
p->pPars->vOutMap, iFrame, 1 );
1411 p->pPars->nProveOuts++;
1412 if (
p->pPars->fUseBridge )
1416 p->pPars->timeLastSolved = Abc_Clock();
1421 if (
p->pPars->fUseAbs &&
p->vAbsFlops == NULL && iFrame == 1 )
1424 assert(
p->vAbsFlops == NULL );
1425 p->vAbsFlops = Vec_IntStart( Saig_ManRegNum(
p->pAig) );
1426 p->vMapFf2Ppi = Vec_IntStartFull( Saig_ManRegNum(
p->pAig) );
1427 p->vMapPpi2Ff = Vec_IntAlloc( 100 );
1434 p->nFrames = iFrame;
1435 assert( iFrame == Vec_PtrSize(
p->vSolvers)-1 );
1436 p->iUseFrame = Abc_MaxInt(iFrame, 1);
1440 if (
p->vCexes && Vec_PtrEntry(
p->vCexes,
p->iOutCur) )
1443 if (
p->pTime4Outs &&
p->pTime4Outs[
p->iOutCur] == 0 )
1446 if ( Aig_ObjChild0(pObj) == Aig_ManConst0(
p->pAig) )
1449 if ( Aig_ObjChild0(pObj) == Aig_ManConst1(
p->pAig) )
1451 if ( !
p->pPars->fSolveAll )
1453 pCexNew =
Abc_CexMakeTriv( Aig_ManRegNum(
p->pAig), Saig_ManPiNum(
p->pAig), Saig_ManPoNum(
p->pAig), iFrame*Saig_ManPoNum(
p->pAig)+
p->iOutCur );
1454 p->pAig->pSeqModel = pCexNew;
1457 pCexNew = (
p->pPars->fUseBridge ||
p->pPars->fStoreCex) ?
Abc_CexMakeTriv( Aig_ManRegNum(
p->pAig), Saig_ManPiNum(
p->pAig), Saig_ManPoNum(
p->pAig), iFrame*Saig_ManPoNum(
p->pAig)+
p->iOutCur ) : (
Abc_Cex_t *)(ABC_PTRINT_T)1;
1458 p->pPars->nFailOuts++;
1459 if (
p->pPars->vOutMap ) Vec_IntWriteEntry(
p->pPars->vOutMap,
p->iOutCur, 0 );
1460 if ( !
p->pPars->fNotVerbose )
1461 Abc_Print( 1,
"Output %*d was trivially asserted in frame %2d (solved %*d out of %*d outputs).\n",
1462 nOutDigits,
p->iOutCur, iFrame, nOutDigits,
p->pPars->nFailOuts, nOutDigits, Saig_ManPoNum(
p->pAig) );
1463 assert( Vec_PtrEntry(
p->vCexes,
p->iOutCur) == NULL );
1464 if (
p->pPars->fUseBridge )
1466 Vec_PtrWriteEntry(
p->vCexes,
p->iOutCur, pCexNew );
1467 if (
p->pPars->pFuncOnFail &&
p->pPars->pFuncOnFail(
p->iOutCur,
p->pPars->fStoreCex ? (
Abc_Cex_t *)Vec_PtrEntry(
p->vCexes,
p->iOutCur) : NULL) )
1469 if (
p->pPars->fVerbose )
1471 if ( !
p->pPars->fSilent )
1472 Abc_Print( 1,
"Quitting due to callback on fail in frame %d.\n", iFrame );
1473 p->pPars->iFrame = iFrame;
1476 if (
p->pPars->nFailOuts +
p->pPars->nDropOuts == Saig_ManPoNum(
p->pAig) )
1477 return p->pPars->nFailOuts ? 0 : -1;
1478 p->pPars->timeLastSolved = Abc_Clock();
1482 if (
p->pTime4Outs )
1484 assert(
p->pTime4Outs[
p->iOutCur] > 0 );
1485 clkOne = Abc_Clock();
1486 p->timeToStopOne =
p->pTime4Outs[
p->iOutCur] + Abc_Clock();
1490 if (
p->pPars->nTimeOutGap &&
p->pPars->timeLastSolved && Abc_Clock() >
p->pPars->timeLastSolved +
p->pPars->nTimeOutGap * CLOCKS_PER_SEC )
1492 if (
p->pPars->fVerbose )
1494 if ( !
p->pPars->fSilent )
1495 Abc_Print( 1,
"Reached gap timeout (%d seconds) in frame %d.\n",
p->pPars->nTimeOutGap, iFrame );
1496 p->pPars->iFrame = iFrame;
1500 if ( RetValue == 1 )
1502 if ( RetValue == -1 )
1504 if (
p->pPars->fVerbose )
1506 if (
p->timeToStop && Abc_Clock() >
p->timeToStop && !
p->pPars->fSilent )
1507 Abc_Print( 1,
"Reached timeout (%d seconds) in frame %d.\n",
p->pPars->nTimeOut, iFrame );
1508 else if (
p->pPars->nTimeOutGap &&
p->pPars->timeLastSolved && Abc_Clock() >
p->pPars->timeLastSolved +
p->pPars->nTimeOutGap * CLOCKS_PER_SEC )
1509 Abc_Print( 1,
"Reached gap timeout (%d seconds) in frame %d.\n",
p->pPars->nTimeOutGap, iFrame );
1510 else if (
p->timeToStopOne && Abc_Clock() >
p->timeToStopOne )
1516 else if (
p->pPars->nConfLimit )
1517 Abc_Print( 1,
"Reached conflict limit (%d) in frame %d.\n",
p->pPars->nConfLimit, iFrame );
1518 else if (
p->pPars->fVerbose )
1519 Abc_Print( 1,
"Computation cancelled by the callback in frame %d.\n", iFrame );
1520 p->pPars->iFrame = iFrame;
1523 if ( RetValue == 0 )
1526 if ( RetValue == -1 )
1528 if (
p->pPars->fVerbose )
1530 if (
p->timeToStop && Abc_Clock() >
p->timeToStop && !
p->pPars->fSilent )
1531 Abc_Print( 1,
"Reached timeout (%d seconds) in frame %d.\n",
p->pPars->nTimeOut, iFrame );
1532 else if (
p->pPars->nTimeOutGap &&
p->pPars->timeLastSolved && Abc_Clock() >
p->pPars->timeLastSolved +
p->pPars->nTimeOutGap * CLOCKS_PER_SEC )
1533 Abc_Print( 1,
"Reached gap timeout (%d seconds) in frame %d.\n",
p->pPars->nTimeOutGap, iFrame );
1534 else if (
p->timeToStopOne && Abc_Clock() >
p->timeToStopOne )
1540 else if (
p->pPars->nConfLimit )
1541 Abc_Print( 1,
"Reached conflict limit (%d) in frame %d.\n",
p->pPars->nConfLimit, iFrame );
1542 else if (
p->pPars->fVerbose )
1543 Abc_Print( 1,
"Computation cancelled by the callback in frame %d.\n", iFrame );
1544 p->pPars->iFrame = iFrame;
1547 if ( RetValue == 0 )
1549 if ( fPrintClauses )
1551 Abc_Print( 1,
"*** Clauses after frame %d:\n", iFrame );
1554 if (
p->pPars->fVerbose && !
p->pPars->fUseAbs )
1556 p->pPars->iFrame = iFrame;
1557 if ( !
p->pPars->fSolveAll )
1561 p->tAbs += Abc_Clock() - clk;
1570 p->pAig->pSeqModel = pCex;
1573 p->pPars->nFailOuts++;
1575 if (
p->pPars->vOutMap ) Vec_IntWriteEntry(
p->pPars->vOutMap,
p->iOutCur, 0 );
1576 assert( Vec_PtrEntry(
p->vCexes,
p->iOutCur) == NULL );
1577 if (
p->pPars->fUseBridge )
1579 Vec_PtrWriteEntry(
p->vCexes,
p->iOutCur, pCexNew );
1580 if (
p->pPars->pFuncOnFail &&
p->pPars->pFuncOnFail(
p->iOutCur,
p->pPars->fStoreCex ? (
Abc_Cex_t *)Vec_PtrEntry(
p->vCexes,
p->iOutCur) : NULL) )
1582 if (
p->pPars->fVerbose )
1584 if ( !
p->pPars->fSilent )
1585 Abc_Print( 1,
"Quitting due to callback on fail in frame %d.\n", iFrame );
1586 p->pPars->iFrame = iFrame;
1589 if ( !
p->pPars->fNotVerbose )
1590 Abc_Print( 1,
"Output %*d was asserted in frame %2d (%2d) (solved %*d out of %*d outputs).\n",
1591 nOutDigits,
p->iOutCur, iFrame, iFrame, nOutDigits,
p->pPars->nFailOuts, nOutDigits, Saig_ManPoNum(
p->pAig) );
1592 if (
p->pPars->nFailOuts == Saig_ManPoNum(
p->pAig) )
1598 if (
p->pPars->fVerbose )
1604 if (
p->pTime4Outs )
1606 abctime timeSince = Abc_Clock() - clkOne;
1607 assert(
p->pTime4Outs[
p->iOutCur] > 0 );
1608 p->pTime4Outs[
p->iOutCur] = (
p->pTime4Outs[
p->iOutCur] > timeSince) ?
p->pTime4Outs[
p->iOutCur] - timeSince : 0;
1609 if (
p->pTime4Outs[
p->iOutCur] == 0 && Vec_PtrEntry(
p->vCexes,
p->iOutCur) == NULL )
1611 p->pPars->nDropOuts++;
1612 if (
p->pPars->vOutMap )
1613 Vec_IntWriteEntry(
p->pPars->vOutMap,
p->iOutCur, -1 );
1614 if ( !
p->pPars->fNotVerbose )
1615 Abc_Print( 1,
"Timing out on output %*d in frame %d.\n", nOutDigits,
p->iOutCur, iFrame );
1617 p->timeToStopOne = 0;
1620 if (
p->pPars->fUseAbs &&
p->vAbsFlops && !fRefined )
1624 if ( Used && (Vec_IntEntry(
p->vPrio, i) >>
p->nPrioShift) == 0 )
1625 Vec_IntWriteEntry(
p->vAbsFlops, i, 0 );
1627 if (
p->pPars->fVerbose )
1634 p->nQueLim =
p->pPars->nRestLimit;
1638 if ( fPrintClauses )
1640 Abc_Print( 1,
"*** Clauses after frame %d:\n", iFrame );
1644 if (
p->pPars->fBlocking)
1647 if ( RetValue == -1 )
1649 if (
p->pPars->fVerbose )
1651 if ( !
p->pPars->fSilent )
1653 if (
p->timeToStop && Abc_Clock() >
p->timeToStop )
1654 Abc_Print( 1,
"Reached timeout (%d seconds) in frame %d.\n",
p->pPars->nTimeOut, iFrame );
1656 Abc_Print( 1,
"Reached conflict limit (%d) in frame %d.\n",
p->pPars->nConfLimit, iFrame );
1658 p->pPars->iFrame = iFrame;
1663 if ( RetValue == -1 )
1665 if (
p->pPars->fVerbose )
1667 if ( !
p->pPars->fSilent )
1669 if (
p->timeToStop && Abc_Clock() >
p->timeToStop )
1670 Abc_Print( 1,
"Reached timeout (%d seconds) in frame %d.\n",
p->pPars->nTimeOut, iFrame );
1672 Abc_Print( 1,
"Reached conflict limit (%d) in frame %d.\n",
p->pPars->nConfLimit, iFrame );
1674 p->pPars->iFrame = iFrame;
1679 if (
p->pPars->fVerbose )
1681 if ( !
p->pPars->fSilent )
1683 if ( !
p->pPars->fSilent )
1685 p->pPars->iFrame = iFrame;
1687 p->pPars->nProveOuts = Saig_ManPoNum(
p->pAig) -
p->pPars->nFailOuts -
p->pPars->nDropOuts;
1689 if (
p->pPars->vOutMap )
1690 for ( iFrame = 0; iFrame < Saig_ManPoNum(
p->pAig); iFrame++ )
1691 if ( Vec_IntEntry(
p->pPars->vOutMap, iFrame) == -2 )
1693 Vec_IntWriteEntry(
p->pPars->vOutMap, iFrame, 1 );
1694 if (
p->pPars->fUseBridge )
1697 if (
p->pPars->nProveOuts == Saig_ManPoNum(
p->pAig) )
1699 if (
p->pPars->nFailOuts > 0 )
1703 if (
p->pPars->fVerbose )
1707 if (
p->pPars->pFuncStop &&
p->pPars->pFuncStop(
p->pPars->RunId) )
1709 p->pPars->iFrame = iFrame;
1712 if (
p->timeToStop && Abc_Clock() >
p->timeToStop )
1714 if ( fPrintClauses )
1716 Abc_Print( 1,
"*** Clauses after frame %d:\n", iFrame );
1719 if (
p->pPars->fVerbose )
1721 if ( !
p->pPars->fSilent )
1722 Abc_Print( 1,
"Reached timeout (%d seconds) in frame %d.\n",
p->pPars->nTimeOut, iFrame );
1723 p->pPars->iFrame = iFrame;
1726 if (
p->pPars->nTimeOutGap &&
p->pPars->timeLastSolved && Abc_Clock() >
p->pPars->timeLastSolved +
p->pPars->nTimeOutGap * CLOCKS_PER_SEC )
1728 if ( fPrintClauses )
1730 Abc_Print( 1,
"*** Clauses after frame %d:\n", iFrame );
1733 if (
p->pPars->fVerbose )
1735 if ( !
p->pPars->fSilent )
1736 Abc_Print( 1,
"Reached gap timeout (%d seconds) in frame %d.\n",
p->pPars->nTimeOutGap, iFrame );
1737 p->pPars->iFrame = iFrame;
1740 if (
p->pPars->nFrameMax && iFrame >=
p->pPars->nFrameMax )
1742 if (
p->pPars->fVerbose )
1744 if ( !
p->pPars->fSilent )
1745 Abc_Print( 1,
"Reached limit on the number of timeframes (%d).\n",
p->pPars->nFrameMax );
1746 p->pPars->iFrame = iFrame;