119 #define Gla_ManForEachObj( p, pObj ) \
120 for ( pObj = p->pObjs + 1; pObj < p->pObjs + p->nObjs; pObj++ )
121 #define Gla_ManForEachObjAbs( p, pObj, i ) \
122 for ( i = 0; i < Vec_IntSize(p->vAbs) && ((pObj = Gla_ManObj(p, Vec_IntEntry(p->vAbs, i))),1); i++)
123 #define Gla_ManForEachObjAbsVec( vVec, p, pObj, i ) \
124 for ( i = 0; i < Vec_IntSize(vVec) && ((pObj = Gla_ManObj(p, Vec_IntEntry(vVec, i))),1); i++)
127 #define Gla_ObjForEachFanin( p, pObj, pFanin, i ) \
128 for ( i = 0; (i < (int)pObj->nFanins) && ((pFanin = Gla_ManObj(p, pObj->Fanins[i])),1); i++ )
168 pCex->iFrame = p->
pPars->iFrame;
169 for ( f = 0; f <= p->
pPars->iFrame; f++ )
195 pCex->iFrame = p->
pPars->iFrame;
201 for ( f = 0; f <= pCex->iFrame; f++ )
265 if ( i == 0 )
continue;
292 if ( (
int)pRef->Sign != Sign )
294 assert( pRef->fVisit == 0 );
298 assert( (
int)pRef->Prio > 0 );
299 for ( i = p->
pPars->iFrame; i >= 0; i-- )
328 if ( ((pRef0->Value ^
Gia_ObjFaninC0(pFanout)) == 0 && pRef0->fVisit) ||
329 ((pRef1->Value ^
Gia_ObjFaninC1(pFanout)) == 0 && pRef1->fVisit) ||
330 ( ((pRef0->Value ^
Gia_ObjFaninC0(pFanout)) == 1 && pRef0->fVisit) &&
331 ((pRef1->Value ^
Gia_ObjFaninC1(pFanout)) == 1 && pRef1->fVisit) ) )
354 if ( p->
pPars->fPropFanout )
360 assert( (
int)pRef->Prio > 0 );
361 if ( p->
pPars->fPropFanout )
363 for ( i = p->
pPars->iFrame; i >= 0; i-- )
386 if ( pRef->Value == 1 )
388 if ( pRef0->Prio > 0 )
390 if ( pRef1->Prio > 0 )
397 if ( pRef0->Prio <= pRef1->Prio )
399 if ( pRef0->Prio > 0 )
404 if ( pRef1->Prio > 0 )
410 if ( pRef0->Prio > 0 )
415 if ( pRef1->Prio > 0 )
442 for ( f = 0; f <= p->
pPars->iFrame; f++ )
474 Abc_Print( 1,
"\nRefinement verification has failed!!!\n" );
539 Vec_Int_t * vPis, * vPPis, * vCos, * vRoAnds, * vSelect = NULL;
572 for ( f = 0; f <= p->
pPars->iFrame; f++ )
587 assert( pRef->fVisit == 0 );
599 assert( pRef->fVisit == 0 );
617 pRef->Value = pRef0->Value;
618 pRef->Prio = pRef0->Prio;
632 Abc_Print( 1,
"Object has value mismatch " );
636 if ( pRef->Value == 1 )
637 pRef->Prio =
Abc_MaxInt( pRef0->Prio, pRef1->Prio );
639 pRef->Prio =
Abc_MinInt( pRef0->Prio, pRef1->Prio );
641 pRef->Prio = pRef0->Prio;
643 pRef->Prio = pRef1->Prio;
644 assert( pRef->fVisit == 0 );
653 pRef->Prio = pRef0->Prio;
654 assert( pRef->fVisit == 0 );
662 if ( pRef->Value != 1 )
663 Abc_Print( 1,
"\nCounter-example verification has failed!!!\n" );
666 if ( pRef->Prio == 0 )
717 int i, nClauses, iFirstClause, * pLit;
721 for ( i = iFirstClause; i < iFirstClause + nClauses; i++ )
722 for ( pLit = p->
pCnf->
pClauses[i]; pLit < p->pCnf->pClauses[i+1]; pLit++ )
756 int i, k, * pMapping, * pObj2Obj;
777 for ( k = 1; k <= 4; k++ )
779 if ( pMapping[k] == -1 )
783 pFanin->
Value = pObj2Obj[pMapping[k]];
789 pObj2Obj[i] = pObj->
Value;
809 pObj->
Value = pObj2Obj[i];
832 int i, k, Offset, * pMapping, * pLits, * pObj2Count, * pObj2Clause;
849 if ( pPars->fPropFanout )
881 for ( k = 1; k <= 4; k++ )
883 if ( pMapping[k] == -1 )
954 for ( k = 1; k <= 4; k++ )
955 if ( pMapping[k] != -1 )
976 if ( pPars->fUseFullProof )
1042 if ( !~pObj->
Value )
1099 if ( p->
pPars->fVerbose )
1100 Abc_Print( 1,
"SAT solver: Var = %d Cla = %d Conf = %d Lrn = %d Reduce = %d Cex = %d Objs+ = %d\n",
1114 if ( p->
pGia0 != NULL )
1147 Counter += (pObj->
fRo && pObj->
fAbs);
1150 Counter += (pObj->
fAnd && pObj->
fAbs);
1153 Counter += (pObj->
fAbs);
1180 if ( Value0 || Value1 )
1182 return Value0 || Value1;
1189 int i, k, nUsageCount;
1194 assert( nUsageCount >= 0 );
1195 if ( nUsageCount == 0 )
1246 if ( !pFanin->
fPi && !pFanin->
fAbs )
1248 else if ( vPis && pFanin->
fPi && !pFanin->
fAbs )
1266 static int Round = 0;
1269 if ( (Round++ % 5) == 0 )
1277 Count += pFanin->
fAbs;
1278 if ( Count == 0 || ((Round & 1) && Count == 1) )
1322 int iVar, iVar1, iVar2;
1328 else if ( pGlaObj->
fRo )
1343 else if ( pGlaObj->
fAnd )
1345 int i, RetValue, nClauses, iFirstClause, * pLit;
1348 for ( i = iFirstClause; i < iFirstClause + nClauses; i++ )
1351 for ( pLit = p->
pCnf->
pClauses[i]; pLit < p->pCnf->pClauses[i+1]; pLit++ )
1400 for ( f = fCur; f >= 0; f-- )
1407 int i, iObj, iFrame;
1462 RetValue =
sat_solver2_solve( pSat, &iLit, &iLit+1, (ABC_INT64_T)nConfMax, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
1471 if ( RetValue ==
l_True )
1529 Abc_Print( 1,
"%9.2f sec", 1.0*Time/CLOCKS_PER_SEC );
1534 Abc_Print( 1,
"%s", (nCoreSize > 0 && nCexes > 0) ?
"\n" :
"\r" );
1547 for ( pGla = p->
pObjs; pGla < p->pObjs + p->
nObjs; pGla++ )
1552 memTot = memAig + memSat + memPro + memMap + memRef + memOth;
1553 ABC_PRMP(
"Memory: AIG ", memAig, memTot );
1554 ABC_PRMP(
"Memory: SAT ", memSat, memTot );
1555 ABC_PRMP(
"Memory: Proof ", memPro, memTot );
1556 ABC_PRMP(
"Memory: Map ", memMap, memTot );
1557 ABC_PRMP(
"Memory: Refine ", memRef, memTot );
1558 ABC_PRMP(
"Memory: Other ", memOth, memTot );
1559 ABC_PRMP(
"Memory: TOTAL ", memTot, memTot );
1611 char * pFileNameDef =
"glabs.aig";
1612 char * pFileName = p->
pPars->pFileVabs ? p->
pPars->pFileVabs : pFileNameDef;
1616 Abc_Print( 1,
"Dumping abstracted model into file \"%s\"...\n", pFileName );
1645 int f, i, iPrev, nConfls, Status, nVarsOld = 0, nCoreSize, fOneIsSent = 0, RetValue = -1;
1649 assert( pPars->nFramesMax == 0 || pPars->nFramesStart <= pPars->nFramesMax );
1654 printf(
"Sequential miter is trivially UNSAT.\n" );
1659 printf(
"Sequential miter is trivially SAT.\n" );
1668 int nFramesMaxOld = pPars->nFramesMax;
1669 int nFramesStartOld = pPars->nFramesStart;
1670 int nTimeOutOld = pPars->nTimeOut;
1671 int nDumpOld = pPars->fDumpVabs;
1672 pPars->nFramesMax = pPars->nFramesStart;
1673 pPars->nFramesStart =
Abc_MinInt( pPars->nFramesStart/2 + 1, 3 );
1674 pPars->nTimeOut = 20;
1675 pPars->fDumpVabs = 0;
1677 pPars->nFramesMax = nFramesMaxOld;
1678 pPars->nFramesStart = nFramesStartOld;
1679 pPars->nTimeOut = nTimeOutOld;
1680 pPars->fDumpVabs = nDumpOld;
1701 if ( p->
pPars->nTimeOut )
1704 if ( p->
pPars->fVerbose )
1706 Abc_Print( 1,
"Running gate-level abstraction (GLA) with the following parameters:\n" );
1707 Abc_Print( 1,
"FrameMax = %d ConfMax = %d Timeout = %d RatioMin = %d %%.\n",
1708 pPars->nFramesMax, pPars->nConfLimit, pPars->nTimeOut, pPars->nRatioMin );
1709 Abc_Print( 1,
"LearnStart = %d LearnDelta = %d LearnRatio = %d %%.\n",
1710 pPars->nLearnedStart, pPars->nLearnedDelta, pPars->nLearnedPerce );
1711 Abc_Print( 1,
" Frame %% Abs PPI FF LUT Confl Cex Vars Clas Lrns Time Mem\n" );
1713 for ( f = i = iPrev = 0; !p->
pPars->nFramesMax || f < p->
pPars->nFramesMax; f++, iPrev = i )
1716 p->
pPars->iFrame = f;
1722 for ( i = 0; ; i++ )
1753 if ( pPars->fAddLayer )
1761 if ( vPPis == NULL )
1805 if ( p->
pPars->fVerbose )
1821 p->
pPars->nFramesNoChange++;
1826 p->
pPars->nFramesNoChange = 0;
1857 if ( p->
pPars->fVerbose )
1860 if ( f > 2 && iPrev > 0 && i == 0 )
1873 if ( p->
pPars->fDumpVabs )
1896 if ( p->
pPars->fVerbose && Status == -1 )
1905 Abc_Print( 1,
"Timeout %d sec in frame %d with a %d-stable abstraction. ", p->
pPars->nTimeOut, f, p->
pPars->nFramesNoChange );
1907 Abc_Print( 1,
"Exceeded %d conflicts in frame %d with a %d-stable abstraction. ", pPars->nConfLimit, f, p->
pPars->nFramesNoChange );
1909 Abc_Print( 1,
"The ratio of abstracted objects is less than %d %% in frame %d. ", pPars->nRatioMin, f );
1911 Abc_Print( 1,
"Abstraction stopped for unknown reason in frame %d. ", f );
1916 Abc_Print( 1,
"GLA completed %d frames with a %d-stable abstraction. ", f, p->
pPars->nFramesNoChange );
1921 if ( p->
pPars->fVerbose )
1926 Abc_Print( 1,
" Gia_ManPerformGlaOld(): CEX verification has failed!\n" );
1927 Abc_Print( 1,
"Counter-example detected in frame %d. ", f );
1928 p->
pPars->iFrame = pCex->iFrame - 1;
1933 if ( p->
pPars->fVerbose )
double Rnm_ManMemoryUsage(Rnm_Man_t *p)
static int sat_solver2_nlearnts(sat_solver2 *s)
typedefABC_NAMESPACE_IMPL_START struct Rfn_Obj_t_ Rfn_Obj_t
DECLARATIONS ///.
static int * Vec_IntArray(Vec_Int_t *p)
static int Gia_ManAppendAnd(Gia_Man_t *p, int iLit0, int iLit1)
static void Gia_ObjTerSimCo(Gia_Obj_t *pObj)
void Gia_GlaSendAbsracted(Gla_Man_t *p, int fVerbose)
void Gia_GlaAddTimeFrame(Gla_Man_t *p, int f)
ABC_DLL int Abc_FrameIsBridgeMode()
static void Gia_ObjTerSimRo(Gia_Man_t *p, Gia_Obj_t *pObj)
Vec_Int_t * Gla_ManRefinement2(Gla_Man_t *p)
static void Gia_ObjTerSimSet0(Gia_Obj_t *pObj)
void Gia_GlaAddToAbs(Gla_Man_t *p, Vec_Int_t *vAbsAdd, int fCheck)
void Gla_ManRefSelect_rec(Gla_Man_t *p, Gia_Obj_t *pObj, int f, Vec_Int_t *vSelect, int Sign)
Vec_Int_t * Gla_ManRefinement(Gla_Man_t *p)
void Gia_ManStop(Gia_Man_t *p)
Aig_Man_t * Gia_ManToAigSimple(Gia_Man_t *p)
static int sat_solver2_nclauses(sat_solver2 *s)
int Gia_ManVerifyCex(Gia_Man_t *pAig, Abc_Cex_t *p, int fDualOut)
DECLARATIONS ///.
void * Sat_ProofCore(sat_solver2 *s)
static int Gia_ManPoNum(Gia_Man_t *p)
static int Gia_ObjFaninC1(Gia_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
void Gla_ManCollect(Gla_Man_t *p, Vec_Int_t *vPis, Vec_Int_t *vPPis, Vec_Int_t *vCos, Vec_Int_t *vRoAnds)
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Aig_ManStop(Aig_Man_t *p)
int Cmd_CommandExecute(void *pAbc, char *pCommandLine)
static Vec_Int_t * Gla_ManCollectPPis(Gla_Man_t *p, Vec_Int_t *vPis)
int Gla_ManGetOutLit(Gla_Man_t *p, int f)
static int Gia_ObjIsTravIdCurrent(Gia_Man_t *p, Gia_Obj_t *pObj)
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)
Gia_Man_t * Gia_ManDupMapped(Gia_Man_t *p, Vec_Int_t *vMapping)
static int lit_var(lit l)
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)
static int Gia_ManAppendCi(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 int Abc_Var2Lit(int Var, int fCompl)
static Vec_Set_t * Vec_SetAlloc(int nPageSize)
int Gla_ManTranslate_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vGla, int nUsageCount)
void Gla_ManAddClauses(Gla_Man_t *p, int iObj, int iFrame, Vec_Int_t *vLits)
void Gla_ManCollectInternal_rec(Gia_Man_t *p, Gia_Obj_t *pGiaObj, Vec_Int_t *vRoAnds)
int Gia_ManToBridgeBadAbs(FILE *pFile)
static void Vec_IntSetEntry(Vec_Int_t *p, int i, int Entry)
#define Gla_ObjForEachFanin(p, pObj, pFanin, i)
sat_solver2 * sat_solver2_new(void)
static int Vec_IntGetEntry(Vec_Int_t *p, int i)
static int Gla_ManGetVar(Gla_Man_t *p, int iObj, int iFrame)
void Gia_ManSetRegNum(Gia_Man_t *p, int nRegs)
Vec_Int_t * Gia_VtaConvertToGla(Gia_Man_t *p, Vec_Int_t *vVta)
Vec_Int_t * Gla_ManUnsatCore(Gla_Man_t *p, int f, sat_solver2 *pSat, int nConfMax, int fVerbose, int *piRetValue, int *pnConfls)
ABC_DLL void Abc_FrameSetStatus(int Status)
int sat_solver2_addclause(sat_solver2 *s, lit *begin, lit *end, int Id)
static int Gla_ObjSatValue(Gla_Man_t *p, int iGia, int f)
static abctime Abc_Clock()
void Gla_ManStop(Gla_Man_t *p)
static int Abc_MaxInt(int a, int b)
static void Vec_IntSort(Vec_Int_t *p, int fReverse)
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
static void Vec_IntReverseOrder(Vec_Int_t *p)
static int sat_solver2_var_value(sat_solver2 *s, int v)
Abc_Cex_t * Abc_CexMakeTriv(int nRegs, int nTruePis, int nTruePos, int iFrameOut)
static void Gla_ObjClearRef(Rfn_Obj_t *p)
#define ABC_PRTP(a, t, T)
double sat_solver2_memory(sat_solver2 *s, int fAll)
static Rfn_Obj_t * Gla_ObjRef(Gla_Man_t *p, Gia_Obj_t *pObj, int f)
int Gia_GlaAbsCount(Gla_Man_t *p, int fRo, int fAnd)
int Gia_VtaPerformInt(Gia_Man_t *pAig, Abs_Par_t *pPars)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
struct Gia_Obj_t_ Gia_Obj_t
#define Gla_ManForEachObjAbs(p, pObj, i)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Abc_MinInt(int a, int b)
struct Gla_Man_t_ Gla_Man_t
static Vec_Int_t * Vec_IntStart(int nSize)
static int Gla_ObjId(Gla_Man_t *p, Gla_Obj_t *pObj)
static int Abc_LitIsCompl(int Lit)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
int sat_solver2_simplify(sat_solver2 *s)
void Rnm_ManStop(Rnm_Man_t *p, int fProfile)
static Prf_Man_t * Prf_ManAlloc()
FUNCTION DECLARATIONS ///.
void sat_solver2_rollback(sat_solver2 *s)
static int Gia_ObjFanin1Copy(Gia_Obj_t *pObj)
static void Vec_IntAddToEntry(Vec_Int_t *p, int i, int Addition)
static int Gia_ObjIsRo(Gia_Man_t *p, Gia_Obj_t *pObj)
ABC_DLL void Abc_FrameSetCex(Abc_Cex_t *pCex)
void Gla_ManExplorePPis(Gla_Man_t *p, Vec_Int_t *vPPis)
static Gia_Obj_t * Gia_ObjRoToRi(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ObjIsRi(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 Gia_ObjSetTravIdCurrent(Gia_Man_t *p, Gia_Obj_t *pObj)
void Abc_CexFreeP(Abc_Cex_t **p)
void Gia_GlaAddToCounters(Gla_Man_t *p, Vec_Int_t *vCore)
#define ABC_NAMESPACE_IMPL_END
static void Vec_IntFill(Vec_Int_t *p, int nSize, int Fill)
void * Abc_FrameGetGlobalFrame()
void Gia_ManStaticFanoutStart(Gia_Man_t *p)
Gia_Man_t * Gia_ManStart(int nObjsMax)
DECLARATIONS ///.
static int Vec_IntUniqify(Vec_Int_t *p)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
Cnf_Dat_t * Cnf_DeriveOther(Aig_Man_t *pAig, int fSkipTtMin)
void Gia_ManFillValue(Gia_Man_t *p)
void Gia_ObjPrint(Gia_Man_t *p, Gia_Obj_t *pObj)
static int * Vec_IntGetEntryP(Vec_Int_t *p, int i)
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)
static void Vec_IntFreeP(Vec_Int_t **p)
static void sat_solver2_bookmark(sat_solver2 *s)
void Gia_GlaSendCancel(Gla_Man_t *p, int fVerbose)
static int Vec_IntCap(Vec_Int_t *p)
static void Abc_Print(int level, const char *format,...)
void Gia_AigerWrite(Gia_Man_t *p, char *pFileName, int fWriteSymbols, int fCompact)
#define Gia_ObjForEachFanoutStatic(p, pObj, pFanout, i)
void Gla_ManCollectFanins(Gla_Man_t *p, Gla_Obj_t *pGla, int iObj, Vec_Int_t *vFanins)
#define Vec_IntForEachEntryDouble(vVec, Entry1, Entry2, i)
static int Gia_ObjFanin0Copy(Gia_Obj_t *pObj)
static int Gia_ObjIsCo(Gia_Obj_t *pObj)
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
#define ABC_NAMESPACE_IMPL_START
static void Abc_InfoSetBit(unsigned *p, int i)
static int sat_solver2_add_buffer(sat_solver2 *pSat, int iVarA, int iVarB, int fCompl, int fMark, int Id)
static Gia_Obj_t * Gla_ManGiaObj(Gla_Man_t *p, Gla_Obj_t *pObj)
static void Prf_ManRestart(Prf_Man_t *p, Vec_Int_t *vId2Pr, int iFirst, int nWidth)
void Gia_ManDupMapped_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Gia_Man_t *pNew)
static Gla_Obj_t * Gla_ManObj(Gla_Man_t *p, int i)
#define Gla_ManForEachObj(p, pObj)
static int Gia_ObjTerSimGet1(Gia_Obj_t *pObj)
static int Vec_IntSize(Vec_Int_t *p)
static void Prf_ManGrow(Prf_Man_t *p, int nWidth)
static int Gla_ManCheckVar(Gla_Man_t *p, int iObj, int iFrame)
void Gla_ManAbsPrintFrame(Gla_Man_t *p, int nCoreSize, int nFrames, int nConfls, int nCexes, abctime Time)
ABC_DLL void Abc_FrameSetNFrames(int nFrames)
static int lit_sign(lit l)
static void Vec_IntShrink(Vec_Int_t *p, int nSizeNew)
void Gia_GlaDumpAbsracted(Gla_Man_t *p, int fVerbose)
void Gia_GlaAddOneSlice(Gla_Man_t *p, int fCur, Vec_Int_t *vCore)
static Gia_Obj_t * Gia_ObjRiToRo(Gia_Man_t *p, Gia_Obj_t *pObj)
#define ABC_PRMP(a, f, F)
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 Gia_Obj_t * Gia_ManConst0(Gia_Man_t *p)
Gla_Man_t * Gla_ManStart2(Gia_Man_t *pGia, Abs_Par_t *pPars)
static void Gia_ObjTerSimSetC(Gia_Obj_t *pObj)
int Gia_ManToBridgeAbsNetlist(FILE *pFile, void *p, int pkg_type)
int Gia_ManPerformGlaOld(Gia_Man_t *pAig, Abs_Par_t *pPars, int fStartVta)
static int sat_solver2_add_const(sat_solver2 *pSat, int iVar, int fCompl, int fMark, int Id)
static void Gia_ObjTerSimSet1(Gia_Obj_t *pObj)
static int Abc_Lit2Var(int Lit)
#define ABC_CALLOC(type, num)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ObjIsPo(Gia_Man_t *p, Gia_Obj_t *pObj)
void Cnf_DataFree(Cnf_Dat_t *p)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
#define Gla_ManForEachObjAbsVec(vVec, p, pObj, i)
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)
static void Prf_ManStopP(Prf_Man_t **p)
Vec_Int_t * Gla_ManTranslate(Gla_Man_t *p)
int Gla_ManCountPPis(Gla_Man_t *p)
struct Gla_Obj_t_ Gla_Obj_t
void Gla_ManRollBack(Gla_Man_t *p)
static int * Vec_IntEntryP(Vec_Int_t *p, int i)
void Gla_ManVerifyUsingTerSim(Gla_Man_t *p, Vec_Int_t *vPis, Vec_Int_t *vPPis, Vec_Int_t *vRoAnds, Vec_Int_t *vCos, Vec_Int_t *vRes)
#define BRIDGE_ABS_NETLIST
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
#define Gia_ManForEachObj1(p, pObj, i)
void Gia_ManIncrementTravId(Gia_Man_t *p)
Abc_Cex_t * Gla_ManDeriveCex(Gla_Man_t *p, Vec_Int_t *vPis)
Gla_Man_t * Gla_ManStart(Gia_Man_t *pGia0, Abs_Par_t *pPars)
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
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)
void Gia_ManRefSetAndPropFanout_rec(Gla_Man_t *p, Gia_Obj_t *pObj, int f, Vec_Int_t *vSelect, int Sign)
static void Vec_IntClear(Vec_Int_t *p)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
char * Abc_UtilStrsav(char *s)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
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 Gia_ObjTerSimSetX(Gia_Obj_t *pObj)
static void Abc_PrintInt(int i)
static int sat_solver2_nconflicts(sat_solver2 *s)
static int Gia_ObjCioId(Gia_Obj_t *pObj)
static int Gia_ManObjNum(Gia_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Abs_Par_t_ Abs_Par_t
INCLUDES ///.
static void Gia_ObjTerSimAnd(Gia_Obj_t *pObj)
#define ABC_FALLOC(type, num)
static abctime sat_solver2_set_runtime_limit(sat_solver2 *s, abctime Limit)
void Gia_GlaPrepareCexAndMap(Gla_Man_t *p, Abc_Cex_t **ppCex, Vec_Int_t **pvMap)
FUNCTION DEFINITIONS ///.
static int Gia_ObjIsPi(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ManCoNum(Gia_Man_t *p)
static int Gia_ManRegNum(Gia_Man_t *p)
void Gla_ManReportMemory(Gla_Man_t *p)