35 #define GA2_BIG_NUM 0x3FFFFFF0
143 if ( pObj->
fPhase && !fFirst )
152 static unsigned uTruth5[5] = { 0xAAAAAAAA, 0xCCCCCCCC, 0xF0F0F0F0, 0xFF00FF00, 0xFFFF0000 };
157 pObj->
Value = uTruth5[i];
179 if ( pObj->
fPhase && !fFirst )
183 if ( Val0 + Val1 < N )
185 if ( Val0 + Val1 == N )
190 assert( Val0 + Val1 > N );
191 assert( Val0 < N && Val1 < N );
202 if ( Val0 + Val1 < N )
204 if ( Val0 + Val1 == N )
224 if ( pObj->
fPhase && !fFirst )
234 if ( pObj->
fPhase && !fFirst )
245 static unsigned uTruth5[5] = { 0xAAAAAAAA, 0xCCCCCCCC, 0xF0F0F0F0, 0xFF00FF00, 0xFFFF0000 };
249 int i, k, Leaf, CountMarks;
357 Abc_Print( 1,
"Marked AND nodes = %6d. ", Counter );
414 sprintf( pFileName,
"stats_gla%s%s.txt", fUseN ?
"n":
"", pPars->fUseFullProof ?
"p":
"" );
416 pFile = fopen( pFileName,
"a+" );
418 fprintf( pFile,
"%s pi=%d ff=%d and=%d mem=%d bmc=%d",
425 fprintf( pFile,
" ff=%d and=%d",
429 fprintf( pFile,
"\n" );
440 double memHash=
sizeof(int) * 6 * p->
nTable;
449 memOth += 336450 + (
sizeof(char) +
sizeof(
char*)) * 65536;
450 memTot = memAig + memSat + memPro + memMap + memRef + memHash + memOth;
451 ABC_PRMP(
"Memory: AIG ", memAig, memTot );
452 ABC_PRMP(
"Memory: SAT ", memSat, memTot );
453 ABC_PRMP(
"Memory: Proof ", memPro, memTot );
454 ABC_PRMP(
"Memory: Map ", memMap, memTot );
455 ABC_PRMP(
"Memory: Refine ", memRef, memTot );
456 ABC_PRMP(
"Memory: Hash ", memHash,memTot );
457 ABC_PRMP(
"Memory: Other ", memOth, memTot );
458 ABC_PRMP(
"Memory: TOTAL ", memTot, memTot );
464 if ( p->
pPars->fVerbose )
465 Abc_Print( 1,
"SAT solver: Var = %d Cla = %d Conf = %d Lrn = %d Reduce = %d Cex = %d ObjsAdded = %d\n",
469 if ( p->
pPars->fVerbose )
470 Abc_Print( 1,
"Hash hits = %d. Hash misses = %d. Hash overs = %d. Concurrent calls = %d.\n",
508 static unsigned uInvTruth5[5] = { 0x55555555, 0x33333333, 0x0F0F0F0F, 0x00FF00FF, 0x0000FFFF };
509 assert( v >= 0 && v <= 4 );
510 return ((t ^ (t >> (1 << v))) & uInvTruth5[v]);
515 static unsigned uTruth5[5] = { 0xAAAAAAAA, 0xCCCCCCCC, 0xF0F0F0F0, 0xFF00FF00, 0xFFFF0000 };
523 printf(
"Object %d.\n",
Gia_ObjId(p, pRoot) );
532 else if ( Entry == 1 )
535 pObj->
Value = uTruth5[i];
537 printf(
"%d ", Entry );
549 if ( Res != 0 && Res != ~0 )
552 int nUsed = 0, pUsed[5];
567 else if ( Entry == 1 )
570 pObj->
Value = 0xDEADCAFE;
572 for ( i = 0; i < nUsed; i++ )
587 for ( i = 0; i < nUsed; i++ )
592 printf(
"%d ", pUsed[i] );
610 printf(
"Const %d\n", Res > 0 );
654 int i, k, b, Cube, nClaLits, ClaLits[6];
656 for ( i = 0; i < 2; i++ )
659 uTruth = 0xffff & ~uTruth;
661 for ( k = 0; k < p->
pSopSizes[uTruth]; k++ )
664 ClaLits[nClaLits++] = i ?
lit_neg(iLitOut) : iLitOut;
665 Cube = p->
pSops[uTruth][k];
666 for ( b = 3; b >= 0; b-- )
671 ClaLits[nClaLits++] = Lits[b];
673 else if ( Cube % 3 == 1 )
676 ClaLits[nClaLits++] =
lit_neg(Lits[b]);
687 int i, k, b, Cube, Literal, nClaLits, ClaLits[6];
688 for ( i = 0; i < 2; i++ )
690 vCnf = i ? vCnf1 : vCnf0;
694 ClaLits[nClaLits++] = i ?
lit_neg(iLitOut) : iLitOut;
695 for ( b = 0; b < 5; b++ )
697 Literal = 3 & (Cube >> (b << 1));
701 ClaLits[nClaLits++] = Lits[b];
703 else if ( Literal == 2 )
706 ClaLits[nClaLits++] =
lit_neg(Lits[b]);
708 else if ( Literal != 0 )
729 static int s_Primes[5] = { 12582917, 25165843, 50331653, 100663319, 201326611 };
731 for ( i = 0; i < 5; i++ )
732 Key += pArray[i] * s_Primes[i];
738 if (
memcmp( pTable, pArray, 20 ) )
740 if ( pTable[0] == 0 )
744 memcpy( pTable, pArray, 20 );
877 if ( uTruth == 0 || uTruth == ~0 )
882 else if ( uTruth == 0xAAAAAAAA || uTruth == 0x55555555 )
926 if ( !p->
pPars->fSkipHash )
1000 for ( f = 0; f <= p->
pPars->iFrame; f++ )
1049 if ( Entry >= 2*nSatVars )
1069 if ( pObj->
fPhase && !fFirst )
1094 return vGateClasses;
1138 if ( p->
pPars->nTimeOut )
1173 pCex->iFrame = p->
pPars->iFrame;
1179 for ( f = 0; f <= pCex->iFrame; f++ )
1189 printf(
"\n Unsat core: \n" );
1193 printf(
"%12d : ", i );
1205 printf(
"Fanins: " );
1238 printf(
" Current PPIs (%d): ",
Vec_IntSize(vVec) );
1272 pCex->iFrame = p->
pPars->iFrame;
1273 for ( f = 0; f <= p->
pPars->iFrame; f++ )
1286 if ( p->
pPars->fAddLayer )
1371 int fUseNewLine = ((fFinal && nCexes) || p->
pPars->fVeryVerbose);
1389 Abc_Print( 1,
"%9.2f sec", 1.0*Time/CLOCKS_PER_SEC );
1391 Abc_Print( 1,
"%s", fUseNewLine ?
"\n" :
"\r" );
1408 static char * pFileNameDef =
"glabs.aig";
1409 if ( p->
pPars->pFileVabs )
1410 return p->
pPars->pFileVabs;
1418 return pFileNameDef;
1425 if ( p->
pPars->fDumpMabs )
1429 Abc_Print( 1,
"Dumping miter with abstraction map into file \"%s\"...\n", pFileName );
1435 else if ( p->
pPars->fDumpVabs )
1441 Abc_Print( 1,
"Dumping abstracted model into file \"%s\"...\n", pFileName );
1502 int fUseSecondCore = 1;
1506 int Status =
l_Undef, RetValue = -1, iFrameTryToProve = -1, fOneIsSent = 0;
1516 Abc_Print( 1,
"Sequential miter is trivially UNSAT.\n" );
1520 Abc_Print( 1,
"Sequential miter is trivially SAT.\n" );
1534 if ( p->
pPars->fVerbose )
1536 Abc_Print( 1,
"Running gate-level abstraction (GLA) with the following parameters:\n" );
1537 Abc_Print( 1,
"FrameMax = %d ConfMax = %d Timeout = %d Limit = %d %% Limit2 = %d %% RatioMax = %d %%\n",
1538 pPars->nFramesMax, pPars->nConfLimit, pPars->nTimeOut, pPars->nRatioMin, pPars->nRatioMin2, pPars->nRatioMax );
1539 Abc_Print( 1,
"LrnStart = %d LrnDelta = %d LrnRatio = %d %% Skip = %d SimpleCNF = %d Dump = %d\n",
1540 pPars->nLearnedStart, pPars->nLearnedDelta, pPars->nLearnedPerce, pPars->fUseSkip, pPars->fUseSimple, pPars->fDumpVabs|pPars->fDumpMabs );
1541 if ( pPars->fDumpVabs || pPars->fDumpMabs )
1542 Abc_Print( 1,
"%s will be dumped into file \"%s\".\n",
1543 pPars->fDumpVabs ?
"Abstracted model" :
"Miter with abstraction map",
1545 Abc_Print( 1,
" Frame %% Abs PPI FF LUT Confl Cex Vars Clas Lrns Time Mem\n" );
1548 for ( i = f = 0; !pPars->nFramesMax || f < pPars->nFramesMax; i++ )
1552 p->
pPars->iFrame = -1;
1558 for ( f = 0; !pPars->nFramesMax || f < pPars->nFramesMax; f++ )
1566 p->
pPars->iFrame = f;
1574 if ( p->
pPars->fUseSkip && f <= p->pPars->iFrameProved )
1577 if ( p->
pPars->nFramesStart && f <= p->pPars->nFramesStart )
1591 for ( c = 0; ; c++ )
1616 if ( iFrameTryToProve >= 0 )
1619 iFrameTryToProve = -1;
1627 if ( vPPis == NULL )
1629 if ( pPars->fVerbose )
1659 if ( pPars->fVerbose )
1676 if ( f > p->
pPars->iFrameProved )
1677 p->
pPars->nFramesNoChange++;
1680 if ( f > p->
pPars->iFrameProved )
1681 p->
pPars->nFramesNoChange = 0;
1693 if ( fUseSecondCore )
1739 if ( p->
pPars->iFrameProved < f )
1740 p->
pPars->iFrameProved = f;
1742 if ( pPars->fVerbose )
1752 if ( p->
pPars->fVeryVerbose )
1765 if ( p->
pPars->nFramesNoChange == p->
pPars->nFramesNoChangeLim )
1768 if ( p->
pPars->fDumpVabs || p->
pPars->fDumpMabs )
1779 if ( p->
pPars->fCallProver )
1782 if ( iFrameTryToProve >= 0 )
1786 iFrameTryToProve = f;
1801 if ( pPars->nRatioMax == 0 )
1805 if ( p->
pPars->fVerbose )
1806 Abc_Print( 1,
"Forcing restart because abstraction grew from %d to %d (more than %d %%).\n",
1815 if ( iFrameTryToProve >= 0 )
1820 if ( RetValue == 1 )
1821 Abc_Print( 1,
"GLA completed %d frames and proved abstraction derived in frame %d ", p->
pPars->iFrameProved+1, iFrameTryToProve );
1822 else if ( pAig->
pCexSeq == NULL )
1827 Abc_Print( 1,
"GLA reached timeout %d sec in frame %d with a %d-stable abstraction. ", p->
pPars->nTimeOut, p->
pPars->iFrameProved+1, p->
pPars->nFramesNoChange );
1829 Abc_Print( 1,
"GLA exceeded %d conflicts in frame %d with a %d-stable abstraction. ", pPars->nConfLimit, p->
pPars->iFrameProved+1, p->
pPars->nFramesNoChange );
1831 Abc_Print( 1,
"GLA found that the size of abstraction exceeds %d %% in frame %d during refinement. ", pPars->nRatioMin2, p->
pPars->iFrameProved+1 );
1833 Abc_Print( 1,
"GLA found that the size of abstraction exceeds %d %% in frame %d. ", pPars->nRatioMin, p->
pPars->iFrameProved+1 );
1835 Abc_Print( 1,
"GLA finished %d frames and produced a %d-stable abstraction. ", p->
pPars->iFrameProved+1, p->
pPars->nFramesNoChange );
1840 if ( p->
pPars->fVerbose )
1843 Abc_Print( 1,
" Gia_ManPerformGlaOld(): CEX verification has failed!\n" );
1844 Abc_Print( 1,
"True counter-example detected in frame %d. ", f );
1845 p->
pPars->iFrame = f - 1;
1850 if ( p->
pPars->fVerbose )
double Rnm_ManMemoryUsage(Rnm_Man_t *p)
int Gia_ManPerformGla(Gia_Man_t *pAig, Abs_Par_t *pPars)
static int sat_solver2_nlearnts(sat_solver2 *s)
static unsigned Ga2_ObjTruth(Gia_Man_t *p, Gia_Obj_t *pObj)
static int * Vec_IntArray(Vec_Int_t *p)
ABC_DLL int Abc_FrameIsBridgeMode()
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
static int Abc_PrimeCudd(unsigned int p)
void Ga2_ManShrinkAbs(Ga2_Man_t *p, int nAbs, int nValues, int nSatVars)
int Gia_GlaCountFlops(Gia_Man_t *p, Vec_Int_t *vGla)
static int Ga2_ObjId(Ga2_Man_t *p, Gia_Obj_t *pObj)
void Gia_GlaProveAbsracted(Gia_Man_t *p, int fSimpProver, int fVerbose)
DECLARATIONS ///.
void Ga2_ManRefinePrint(Ga2_Man_t *p, Vec_Int_t *vVec)
void Gia_ManStop(Gia_Man_t *p)
void Ga2_ManRefinePrintPPis(Ga2_Man_t *p)
static double Vec_IntMemory(Vec_Int_t *p)
static int sat_solver2_nclauses(sat_solver2 *s)
static Vec_Int_t * Vec_IntDup(Vec_Int_t *pVec)
int Gia_ManVerifyCex(Gia_Man_t *pAig, Abc_Cex_t *p, int fDualOut)
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
void Gia_GlaProveCancel(int fVerbose)
void * Sat_ProofCore(sat_solver2 *s)
static int Ga2_ObjLeaveNum(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ManPoNum(Gia_Man_t *p)
static int Gia_ObjFaninC1(Gia_Obj_t *pObj)
void Ga2_ManAddToAbs(Ga2_Man_t *p, Vec_Int_t *vToAdd)
static double Vec_VecMemoryInt(Vec_Vec_t *p)
static Vec_Int_t * Ga2_MapFrameMap(Ga2_Man_t *p, int f)
static void Vec_IntFillExtra(Vec_Int_t *p, int nSize, int Fill)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static int Ga2_ObjIsAbs0(Ga2_Man_t *p, Gia_Obj_t *pObj)
int Cmd_CommandExecute(void *pAbc, char *pCommandLine)
ABC_NAMESPACE_IMPL_START Abc_Cex_t * Abc_CexAlloc(int nRegs, int nRealPis, int nFrames)
DECLARATIONS ///.
double sat_solver2_memory_proof(sat_solver2 *s)
Rnm_Man_t * Rnm_ManStart(Gia_Man_t *pGia)
FUNCTION DEFINITIONS ///.
static Gia_Obj_t * Gia_ManPo(Gia_Man_t *p, int v)
ABC_DLL int Abc_FrameIsBatchMode()
void sat_solver2_delete(sat_solver2 *s)
void Ga2_ManDumpStats(Gia_Man_t *pGia, Abs_Par_t *pPars, sat_solver2 *pSat, int iFrame, int fUseN)
Vec_Int_t * Ga2_ManAbsDerive(Gia_Man_t *p)
static void Ga2_ObjSetId(Ga2_Man_t *p, Gia_Obj_t *pObj, int i)
void Gia_ManCleanValue(Gia_Man_t *p)
Gia_Man_t * Gia_ManDupAbsGates(Gia_Man_t *p, Vec_Int_t *vGateClasses)
static int Gia_ObjIsConst0(Gia_Obj_t *pObj)
static void Ga2_ManSetupNode(Ga2_Man_t *p, Gia_Obj_t *pObj, int fAbs)
Abc_Cex_t * Ga2_ManDeriveCex(Ga2_Man_t *p, Vec_Int_t *vPis)
void Ga2_ManCnfAddStatic(sat_solver2 *pSat, Vec_Int_t *vCnf0, Vec_Int_t *vCnf1, int Lits[], int iLitOut, int ProofId)
int Gia_ManToBridgeBadAbs(FILE *pFile)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static void Vec_IntSetEntry(Vec_Int_t *p, int i, int Entry)
sat_solver2 * sat_solver2_new(void)
ABC_DLL void Abc_FrameSetStatus(int Status)
int sat_solver2_addclause(sat_solver2 *s, lit *begin, lit *end, int Id)
static abctime Abc_Clock()
static int Vec_PtrSize(Vec_Ptr_t *p)
static void Vec_VecFree(Vec_Vec_t *p)
static void Vec_IntSort(Vec_Int_t *p, int fReverse)
static Vec_Int_t * Vec_IntStartFull(int nSize)
Vec_Int_t * Ga2_ManCnfCompute(unsigned uTruth, int nVars, Vec_Int_t *vCover)
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
static Vec_Int_t * Ga2_ObjCnf1(Ga2_Man_t *p, Gia_Obj_t *pObj)
static int Abc_LitNotCond(int Lit, int c)
static int sat_solver2_var_value(sat_solver2 *s, int v)
int var_is_assigned(sat_solver2 *s, int v)
void sat_solver2_setnvars(sat_solver2 *s, int n)
static void Rnm_ManSetRefId(Rnm_Man_t *p, int RefId)
static void Ga2_ManCnfAddDynamic(Ga2_Man_t *p, int uTruth, int Lits[], int iLitOut, int ProofId)
static int Ga2_ObjSatValue(Ga2_Man_t *p, Gia_Obj_t *pObj, int f)
Abc_Cex_t * Abc_CexMakeTriv(int nRegs, int nTruePis, int nTruePos, int iFrameOut)
void Ga2_ManReportMemory(Ga2_Man_t *p)
#define ABC_PRTP(a, t, T)
double sat_solver2_memory(sat_solver2 *s, int fAll)
static int Ga2_ObjIsLeaf0(Ga2_Man_t *p, Gia_Obj_t *pObj)
static lit lit_neg(lit l)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
struct Gia_Obj_t_ Gia_Obj_t
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Gia_ManAndNum(Gia_Man_t *p)
static int s_Primes[MAX_PRIMES]
static int Abc_MinInt(int a, int b)
static Vec_Int_t * Vec_IntStart(int nSize)
static int Abc_LitIsCompl(int Lit)
void Cnf_ReadMsops(char **ppSopSizes, char ***ppSops)
FUNCTION DEFINITIONS ///.
void Ga2_ManAbsPrintFrame(Ga2_Man_t *p, int nFrames, int nConfls, int nCexes, abctime Time, int fFinal)
Ga2_Man_t * Ga2_ManStart(Gia_Man_t *pGia, Abs_Par_t *pPars)
void Ga2_ManCollectNodes_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vNodes, int fFirst)
static Gia_Obj_t * Gia_ManPi(Gia_Man_t *p, int v)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void Ga2_ManCollectLeaves_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vLeaves, int fFirst)
void Rnm_ManStop(Rnm_Man_t *p, int fProfile)
static Prf_Man_t * Prf_ManAlloc()
FUNCTION DECLARATIONS ///.
int Kit_TruthIsop(unsigned *puTruth, int nVars, Vec_Int_t *vMemory, int fTryBoth)
FUNCTION DEFINITIONS ///.
void sat_solver2_rollback(sat_solver2 *s)
static int Ga2_ObjIsLeaf(Ga2_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ObjIsRo(Gia_Man_t *p, Gia_Obj_t *pObj)
ABC_DLL void Abc_FrameSetCex(Abc_Cex_t *pCex)
void Ga2_ManComputeTest(Gia_Man_t *p)
static Gia_Obj_t * Gia_ObjRoToRi(Gia_Man_t *p, Gia_Obj_t *pObj)
static lit toLitCond(int v, int c)
static int Vec_IntEntry(Vec_Int_t *p, int i)
static void Vec_IntSelectSortCost(int *pArray, int nSize, Vec_Int_t *vCosts)
void Abc_CexFreeP(Abc_Cex_t **p)
#define ABC_NAMESPACE_IMPL_END
static void Vec_IntFill(Vec_Int_t *p, int nSize, int Fill)
void * Abc_FrameGetGlobalFrame()
#define Gia_ManForEachAnd(p, pObj, i)
void Ga2_ManAbsTranslate_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vClasses, int fFirst)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
int Ga2_GlaAbsCount(Ga2_Man_t *p, int fRo, int fAnd)
void Gia_Ga2SendCancel(Ga2_Man_t *p, int fVerbose)
void Gia_Ga2SendAbsracted(Ga2_Man_t *p, int fVerbose)
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)
static void Vec_IntFreeP(Vec_Int_t **p)
void Ga2_ManAddAbsClauses(Ga2_Man_t *p, int f)
static void sat_solver2_bookmark(sat_solver2 *s)
unsigned Ga2_ObjComputeTruthSpecial(Gia_Man_t *p, Gia_Obj_t *pRoot, Vec_Int_t *vLeaves, Vec_Int_t *vLits)
static int Ga2_ObjFindLit(Ga2_Man_t *p, Gia_Obj_t *pObj, int f)
static void Abc_Print(int level, const char *format,...)
void Gia_AigerWrite(Gia_Man_t *p, char *pFileName, int fWriteSymbols, int fCompact)
static void Vec_PtrWriteEntry(Vec_Ptr_t *p, int i, void *Entry)
static int Gia_ObjIsCo(Gia_Obj_t *pObj)
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
#define ABC_NAMESPACE_IMPL_START
char * Ga2_GlaGetFileName(Ga2_Man_t *p, int fAbs)
static int Ga2_ObjFindOrAddLit(Ga2_Man_t *p, Gia_Obj_t *pObj, int f)
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static void Abc_InfoSetBit(unsigned *p, int i)
int Gia_ObjIsMuxType(Gia_Obj_t *pNode)
static int Vec_IntEntryLast(Vec_Int_t *p)
void Ga2_GlaDumpAbsracted(Ga2_Man_t *p, int fVerbose)
static int Abc_LitNot(int Lit)
static void Prf_ManRestart(Prf_Man_t *p, Vec_Int_t *vId2Pr, int iFirst, int nWidth)
int Ga2_ManMarkup(Gia_Man_t *p, int N, int fSimple)
static int Vec_IntSize(Vec_Int_t *p)
static void Prf_ManGrow(Prf_Man_t *p, int nWidth)
ABC_DLL void Abc_FrameSetNFrames(int nFrames)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
unsigned Ga2_ObjComputeTruth_rec(Gia_Man_t *p, Gia_Obj_t *pObj, int fFirst)
FUNCTION DEFINITIONS ///.
static Vec_Int_t * Ga2_ObjLeaves(Gia_Man_t *p, Gia_Obj_t *pObj)
static void Vec_IntShrink(Vec_Int_t *p, int nSizeNew)
static void Ga2_ManAddToAbsOneStatic(Ga2_Man_t *p, Gia_Obj_t *pObj, int f, int fUseId)
Vec_Int_t * Ga2_ManAbsTranslate(Ga2_Man_t *p)
#define ABC_PRMP(a, f, F)
#define GA2_BIG_NUM
DECLARATIONS ///.
static int sat_solver2_nvars(sat_solver2 *s)
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
static void Ga2_ObjAddLit(Ga2_Man_t *p, Gia_Obj_t *pObj, int f, int Lit)
static Gia_Obj_t * Gia_ManConst0(Gia_Man_t *p)
int Gia_ManToBridgeAbsNetlist(FILE *pFile, void *p, int pkg_type)
static int Abc_Lit2Var(int Lit)
#define ABC_CALLOC(type, num)
int Ga2_ManBreakTree_rec(Gia_Man_t *p, Gia_Obj_t *pObj, int fFirst, int N)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
int sat_solver2_solve(sat_solver2 *s, lit *begin, lit *end, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, ABC_INT64_T nConfLimitGlobal, ABC_INT64_T nInsLimitGlobal)
void Ga2_GlaPrepareCexAndMap(Ga2_Man_t *p, Abc_Cex_t **ppCex, Vec_Int_t **pvMaps)
static int * Saig_ManBmcLookup(Ga2_Man_t *p, int *pArray)
#define Gia_ManForEachRo(p, pObj, i)
static void Prf_ManStopP(Prf_Man_t **p)
static int Abc_LitRegular(int Lit)
unsigned Ga2_ManComputeTruth(Gia_Man_t *p, Gia_Obj_t *pRoot, Vec_Int_t *vLeaves)
static int Ga2_ObjIsAbs(Ga2_Man_t *p, Gia_Obj_t *pObj)
void Gia_ManSetPhase(Gia_Man_t *p)
#define BRIDGE_ABS_NETLIST
Vec_Int_t * Ga2_ManRefine(Ga2_Man_t *p)
static Vec_Int_t * Ga2_ObjCnf0(Ga2_Man_t *p, Gia_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
static void Ga2_ManAddToAbsOneDynamic(Ga2_Man_t *p, Gia_Obj_t *pObj, int f)
static unsigned Saig_ManBmcHashKey(int *pArray)
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
static int Vec_IntPushUnique(Vec_Int_t *p, int Entry)
void Abc_CexFree(Abc_Cex_t *p)
static int Gia_ManPiNum(Gia_Man_t *p)
static void Vec_IntClear(Vec_Int_t *p)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
static void Vec_PtrShrink(Vec_Ptr_t *p, int nSizeNew)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
void Ga2_ManRestart(Ga2_Man_t *p)
int Ga2_ManCheckNodesAnd(Gia_Man_t *p, Vec_Int_t *vNodes)
Vec_Int_t * Rnm_ManRefine(Rnm_Man_t *p, Abc_Cex_t *pCex, Vec_Int_t *vMap, int fPropFanout, int fNewRefinement, int fVerbose)
static void Abc_PrintInt(int i)
static int sat_solver2_nconflicts(sat_solver2 *s)
void Ga2_ManStop(Ga2_Man_t *p)
int Gia_GlaCountNodes(Gia_Man_t *p, Vec_Int_t *vGla)
static int Gia_ObjCioId(Gia_Obj_t *pObj)
static int Gia_ManObjNum(Gia_Man_t *p)
int Gia_GlaProveCheck(int fVerbose)
typedefABC_NAMESPACE_HEADER_START struct Abs_Par_t_ Abs_Par_t
INCLUDES ///.
static abctime sat_solver2_set_runtime_limit(sat_solver2 *s, abctime Limit)
static unsigned Ga2_ObjTruthDepends(unsigned t, int v)
static int Gia_ObjIsPi(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ManRegNum(Gia_Man_t *p)