49 if ( pObj->
Value == 0 )
58 return pRepr == NULL || pRepr->
Value == 0;
99 unsigned * pNexts, * pTails;
115 return (
int *)pNexts;
144 for ( iObj = p->
pNexts[i]; iObj; iObj = p->
pNexts[iObj] )
203 if ( nLitsReal != nLits )
204 Abc_Print( 1,
"Detected a mismatch in counting equivalence classes (%d).\n", nLitsReal - nLits );
221 int i,
Counter = 0, Counter0 = 0, CounterX = 0, Proved = 0, nLits;
239 Abc_Print( 1,
"cst =%3d cls =%6d lit =%8d\n", Counter0, Counter, nLits );
255 int i,
Counter = 0, Counter0 = 0, CounterX = 0;
306 int i,
Counter = 0, Counter0 = 0, CounterX = 0, Proved = 0, nLits;
320 Abc_Print( 1,
"cst =%8d cls =%7d lit =%8d unused =%8d proof =%6d mem =%5.2f MB\n",
321 Counter0, Counter, nLits, CounterX, Proved, (Mem == 0.0) ? 8.0*
Gia_ManObjNum(p)/(1<<20) : Mem );
424 Abc_Print( 1,
"Gia_ManEquivReduce(): Equivalence classes are not available.\n" );
429 Abc_Print( 1,
"Gia_ManEquivReduce(): Dual-output miter should have even number of POs.\n" );
537 int i, k, iNode, iRepr, iPrev;
596 int i, k, iNode, iRepr, iPrev;
695 int i, nNodes[2], nDiffs[2];
710 Abc_Print( 1,
"CI+AND = %7d A = %7d B = %7d Ad = %7d Bd = %7d AB = %7d.\n",
714 return (nDiffs[0] + nDiffs[1]) / 2;
756 pObj->
Value = iLitNew;
778 Gia_ManSpecBuild( pNew, p, pObj, vXorLits, fDualOut, fSpeculate, vTrace, vGuide, vMap );
800 Abc_Print( 1,
"Gia_ManSpecReduce(): Equivalence classes are not available.\n" );
824 Abc_Print( 1,
"Speculatively reduced model has no primary outputs.\n" );
854 Vec_Int_t * vTrace = NULL, * vGuide = NULL;
857 Abc_Print( 1,
"Gia_ManSpecReduce(): Equivalence classes are not available.\n" );
862 Abc_Print( 1,
"Gia_ManSpecReduce(): Dual-output miter should have even number of POs.\n" );
886 Gia_ManSpecBuild( pNew, p, pObj, vXorLits, fDualOut, fSpeculate, vTrace, vGuide, NULL );
898 Abc_Print( 1,
"Speculatively reduced model has no primary outputs.\n" );
913 int iLit, nAddPos = 0;
993 Abc_Print( 1,
"Gia_ManSpecReduceInit(): Equivalence classes are not available.\n" );
998 Abc_Print( 1,
"Gia_ManSpecReduceInit(): Circuit is not sequential.\n" );
1003 Abc_Print( 1,
"Gia_ManSpecReduceInit(): Mismatch in the number of registers.\n" );
1008 Abc_Print( 1,
"Gia_ManSpecReduceInit(): Dual-output miter should have even number of POs.\n" );
1031 for ( f = 0; f < nFrames; f++ )
1043 if ( f == nFrames - 1 )
1080 for ( f = 1; ; f++ )
1083 if ( (nMinOutputs == 0 &&
Gia_ManPoNum(pFrames) >= nLits/2+1) ||
1084 (nMinOutputs != 0 &&
Gia_ManPoNum(pFrames) >= nMinOutputs) )
1086 if ( f == nFramesMax )
1096 if ( f == nFramesMax )
1097 Abc_Print( 1,
"Stopped unrolling after %d frames.\n", nFramesMax );
1118 int iRepr, iNode, Ent, k;
1119 int nRemovedLits = 0, nRemovedClas = 0;
1120 int nTotalLits = 0, nTotalClas = 0;
1160 Abc_Print( 1,
"Removed classes = %6d (out of %6d). Removed literals = %6d (out of %6d).\n",
1161 nRemovedClas, nTotalClas, nRemovedLits, nTotalLits );
1179 int i, iLit, nAddPos, nLits = 0;
1182 if ( nLitsAll == 0 )
1184 Abc_Print( 1,
"Gia_ManEquivMark(): Current AIG does not have equivalences.\n" );
1189 if ( pMiter == NULL )
1191 Abc_Print( 1,
"Gia_ManEquivMark(): Input file %s could not be read.\n", pFileName );
1208 Abc_Print( 1,
"Gia_ManEquivMark(): The number of POs is not correct: MiterPONum(%d) != AIGPONum(%d) + AIGFilteredEquivNum(%d).\n",
1215 nLits = iLit = Counter = 0;
1229 assert( nLits == nLitsAll );
1230 assert( iLit == nAddPos );
1237 Abc_Print( 1,
"Gia_ManEquivMark(): The number of POs is not correct: MiterPONum(%d) != AIGPONum(%d) + AIGEquivNum(%d).\n",
1255 assert( nLits == nLitsAll );
1258 Abc_Print( 1,
"Set %d equivalences as proved.\n", Counter );
1277 int i, iObjId, Entry, Prev = -1;
1281 Abc_Print( 1,
"Gia_ManEquivFilter(): Equivalence classes are not defined.\n" );
1285 if ( vPoIds == NULL )
1287 Abc_Print( 1,
"Gia_ManEquivFilter(): Array of disproved POs is not available.\n" );
1301 printf(
"Design POs = %d. SRM POs = %d. Spec POs = %d. Disproved POs = %d.\n",
1309 Abc_Print( 1,
"Gia_ManEquivFilter(): Array of disproved POs contains PO index (%d),\n", Entry );
1315 Abc_Print( 0,
"Gia_ManEquivFilter(): One of the original POs (%d) have failed.\n", Entry );
1316 if ( Prev == Entry )
1318 Abc_Print( 1,
"Gia_ManEquivFilter(): Array of disproved POs contains at least one duplicate entry (%d),\n", Entry );
1354 for ( i = 0; i < 10; i++ )
1378 int i, k, iNode, iRepr;
1379 int iReprBest, iLevelBest, iLevelCur, iMffcBest, iMffcCur;
1394 if ( iLevelBest > iLevelCur || (iLevelBest == iLevelCur && iMffcBest > iMffcCur) )
1397 iLevelBest = iLevelCur;
1398 iMffcBest = iMffcCur;
1404 if ( i == iReprBest )
1416 if ( iNode != iRepr )
1439 if ( pNode == NULL )
1445 if ( pNode == pOld )
1522 Gia_Obj_t * pRepr, * pReprNew, * pObjNew;
1584 int i, iObj, iPrev,
Counter = 0;
1663 if ( i % nSnapshots == 0 )
1768 int nIter, nStart = 0;
1771 Abc_Print( 1,
"Gia_CommandSpecI(): Equivalence classes are not defined.\n" );
1777 for ( nIter = 0; ; nIter++ )
1781 Abc_Print( 1,
"Gia_CommandSpecI: No equivalences left.\n" );
1794 Abc_Print( 1,
"Gia_CommandSpecI: There are only trivial equiv candidates left (PO drivers). Quitting.\n" );
1801 int nFrames = nFramesInit;
1802 int nNodeDelta = 2000;
1803 int nBTLimit = nBTLimitInit;
1804 int nBTLimitAll = 2000000;
1808 Saig_BmcPerform( pTemp, nStart, nFrames, nNodeDelta, 0, nBTLimit, nBTLimitAll, fVerbose, 0, NULL, 0 );
1809 pCex = pTemp->pSeqModel; pTemp->pSeqModel = NULL;
1813 Abc_Print( 1,
"Gia_CommandSpecI(): Internal BMC could not find a counter-example.\n" );
1817 nStart = pCex->iFrame;
1865 Gia_Obj_t * pObj1, * pObj2, * pObjM, * pObj;
1866 int i, iObj, iNext,
Counter = 0;
1869 Abc_Print( 1,
"Equivalences are not defined.\n" );
1873 if ( pGia1 == NULL )
1875 Abc_Print( 1,
"Cannot read first file %s.\n", pName1 );
1879 if ( pGia2 == NULL )
1882 Abc_Print( 1,
"Cannot read second file %s.\n", pName2 );
1886 if ( pMiter == NULL )
1890 Abc_Print( 1,
"Cannot create sequential miter.\n" );
1899 Abc_Print( 1,
"The number of objects in different.\n" );
1907 Abc_Print( 1,
"The AIG structure of the miter does not match.\n" );
1914 if ( pObj1->
Value == ~0 )
1923 if ( pObj2->
Value == ~0 )
1939 int ClassA = -1, ClassB = -1;
1957 for ( iObj = i, iNext =
Gia_ObjNext(pGia, iObj); iObj;
1964 if ( ClassA > 0 && ClassB > 0 )
1966 if ( ClassA > ClassB )
1972 assert( ClassA < ClassB );
1979 Abc_Print( 1,
"The number of two-node classes after filtering = %d.\n", Counter );
2003 Gia_Obj_t * pObj1, * pObj2, * pObjM, * pObj = NULL;
2004 int i, k, iObj, iNext, iPrev, iRepr;
2005 int iLitsOld, iLitsNew;
2008 Abc_Print( 1,
"Equivalences are not defined.\n" );
2012 if ( pGia1 == NULL )
2014 Abc_Print( 1,
"Cannot read first file %s.\n", pName1 );
2018 if ( pGia2 == NULL )
2021 Abc_Print( 1,
"Cannot read second file %s.\n", pName2 );
2025 if ( pMiter == NULL )
2029 Abc_Print( 1,
"Cannot create sequential miter.\n" );
2038 Abc_Print( 1,
"The number of objects in different.\n" );
2046 Abc_Print( 1,
"The AIG structure of the miter does not match.\n" );
2053 if ( pObj1->
Value == ~0 )
2062 if ( pObj2->
Value == ~0 )
2070 iLitsOld = iLitsNew = 0;
2086 int fSeenA = 0, fSeenB = 0;
2106 for ( iObj = i, iNext =
Gia_ObjNext(pGia, iObj); iObj;
2113 if ( fSeenA && fSeenB &&
Vec_IntSize(vNodes) > 1 )
2128 Abc_Print( 1,
"The number of literals: Before = %d. After = %d.\n", iLitsOld, iLitsNew );
2151 int i, k, iObj, iNext, iPrev, iRepr;
2152 int iLitsOld = 0, iLitsNew = 0;
2153 assert( fFlopsOnly ^ fFlopsWith );
2157 if ( fUseRiDrivers )
2191 for ( iObj = i, iNext =
Gia_ObjNext(pGia, iObj); iObj;
2230 for ( iObj = i, iNext =
Gia_ObjNext(pGia, iObj); iObj;
2243 Abc_Print( 1,
"The number of literals: Before = %d. After = %d.\n", iLitsOld, iLitsNew );
Gia_Man_t * Gia_ManDupMarked(Gia_Man_t *p)
Gia_Man_t * Gia_ManEquivToChoices(Gia_Man_t *p, int nSnapshots)
int Gia_ObjCheckTfi_rec(Gia_Man_t *p, Gia_Obj_t *pOld, Gia_Obj_t *pNode, Vec_Ptr_t *vVisited)
static void Gia_ObjSetCopyF(Gia_Man_t *p, int f, Gia_Obj_t *pObj, int iLit)
void Gia_ManCreateRefs(Gia_Man_t *p)
static Gia_Obj_t * Gia_ObjChild0(Gia_Obj_t *pObj)
static void Gia_ObjUnsetRepr(Gia_Man_t *p, int Id)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Gia_ManForEachClassReverse(p, i)
static int Gia_ObjPhaseReal(Gia_Obj_t *pObj)
void Gia_ManStop(Gia_Man_t *p)
#define Gia_ManForEachCo(p, pObj, i)
void Gia_ManPrintStats(Gia_Man_t *p, Gps_Par_t *pPars)
Gia_Man_t * Gia_AigerRead(char *pFileName, int fSkipStrash, int fCheck)
static int Gia_ManPoNum(Gia_Man_t *p)
ABC_NAMESPACE_IMPL_START int Gia_ManCheckTopoOrder_rec(Gia_Man_t *p, Gia_Obj_t *pObj)
DECLARATIONS ///.
int Gia_ManCountChoiceNodes(Gia_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
static Gia_Obj_t * Gia_ManEquivRepr(Gia_Man_t *p, Gia_Obj_t *pObj, int fUseAll, int fDualOut)
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
int Gia_ManHashXor(Gia_Man_t *p, int iLit0, int iLit1)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Aig_ManStop(Aig_Man_t *p)
void Gia_ManEquivPrintOne(Gia_Man_t *p, int i, int Counter)
static int Abc_InfoHasBit(unsigned *p, int i)
Gia_Man_t * Gia_ManSpecReduce(Gia_Man_t *p, int fDualOut, int fSynthesis, int fSpeculate, int fSkipSome, int fVerbose)
static int Gia_ObjFanin1CopyF(Gia_Man_t *p, int f, Gia_Obj_t *pObj)
void Gia_ManFilterEquivsUsingLatches(Gia_Man_t *pGia, int fFlopsOnly, int fFlopsWith, int fUseRiDrivers)
static Gia_Obj_t * Gia_ManPo(Gia_Man_t *p, int v)
static int Gia_ObjFaninLit0p(Gia_Man_t *p, Gia_Obj_t *pObj)
int * Gia_ManDeriveNexts(Gia_Man_t *p)
Gia_Man_t * Gia_ManSpecReduceInitFrames(Gia_Man_t *p, Abc_Cex_t *pInit, int nFramesMax, int *pnFrames, int fDualOut, int nMinOutputs)
void Gia_ManEquivImprove(Gia_Man_t *p)
int Gia_ManSeqMarkUsed(Gia_Man_t *p)
void Gia_ManEquivDeriveReprs(Gia_Man_t *p, Gia_Man_t *pNew, Gia_Man_t *pFinal)
Vec_Int_t * Gia_ManGetDangling(Gia_Man_t *p)
void Gia_ManAddNextEntry_rec(Gia_Man_t *p, Gia_Obj_t *pOld, Gia_Obj_t *pNode)
static int Gia_ManAppendCi(Gia_Man_t *p)
void Gia_ManEquivTransform(Gia_Man_t *p, int fVerbose)
void Gia_ManCleanMark0(Gia_Man_t *p)
static int Gia_ObjIsConst0(Gia_Obj_t *pObj)
Gia_Man_t * Gia_ManSpecReduceInit(Gia_Man_t *p, Abc_Cex_t *pInit, int nFrames, int fDualOut)
static int Gia_ObjIsHead(Gia_Man_t *p, int Id)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
void Gia_ManEquivReduce_rec(Gia_Man_t *pNew, Gia_Man_t *p, Gia_Obj_t *pObj, int fUseAll, int fDualOut)
int Saig_BmcPerform(Aig_Man_t *pAig, int nStart, int nFramesMax, int nNodesMax, int nTimeOut, int nConfMaxOne, int nConfMaxAll, int fVerbose, int fVerbOverwrite, int *piFrames, int fSilent)
Gia_Man_t * Gia_ManEquivRemapDfs(Gia_Man_t *p)
#define ABC_ALLOC(type, num)
static void Vec_IntErase(Vec_Int_t *p)
void Gia_ManSetRegNum(Gia_Man_t *p, int nRegs)
void Gia_ManDeriveReprs(Gia_Man_t *p)
void Gia_ManEquivPrintClasses(Gia_Man_t *p, int fVerbose, float Mem)
int Gia_ManEquivSetColor_rec(Gia_Man_t *p, Gia_Obj_t *pObj, int fOdds)
static void Vec_IntSort(Vec_Int_t *p, int fReverse)
Gia_Man_t * Gia_ManEquivReduceAndRemap(Gia_Man_t *p, int fSeq, int fMiterPairs)
void Gia_ManEquivFilter(Gia_Man_t *p, Vec_Int_t *vPoIds, int fVerbose)
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
static int Abc_LitNotCond(int Lit, int c)
void Gia_ManCleanMark1(Gia_Man_t *p)
int Gia_ManFilterEquivsUsingParts(Gia_Man_t *pGia, char *pName1, char *pName2)
static int Gia_ObjDiffColors2(Gia_Man_t *p, int i, int j)
void Gia_ManPrintStatsClasses(Gia_Man_t *p)
void Cec_ManSimSetDefaultParams(Cec_ParSim_t *p)
#define Gia_ManForEachCi(p, pObj, i)
#define Gia_ManForEachRiRo(p, pObjRi, pObjRo, i)
int Gia_ManCountChoices(Gia_Man_t *p)
static void Gia_ObjSetRepr(Gia_Man_t *p, int Id, int Num)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Gia_ManAndNum(Gia_Man_t *p)
static int Gia_ObjLevel(Gia_Man_t *p, Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntStart(int nSize)
int Gia_ManCombMarkUsed(Gia_Man_t *p)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
int Gia_ManEquivCountClasses(Gia_Man_t *p)
int Cec_ManSeqResimulateCounter(Gia_Man_t *pAig, Cec_ParSim_t *pPars, Abc_Cex_t *pCex)
static void Gia_ObjSetProved(Gia_Man_t *p, int Id)
static int Gia_ObjFanin1Copy(Gia_Obj_t *pObj)
static int Gia_ObjIsRo(Gia_Man_t *p, Gia_Obj_t *pObj)
#define Gia_ManForEachConst(p, i)
static Gia_Obj_t * Gia_ObjRoToRi(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Vec_IntEntry(Vec_Int_t *p, int i)
Gia_Man_t * Gia_ManDupDfs(Gia_Man_t *p)
static int Gia_ObjIsConst(Gia_Man_t *p, int Id)
#define ABC_NAMESPACE_IMPL_END
static void Vec_IntFill(Vec_Int_t *p, int nSize, int Fill)
Gia_Man_t * Gia_ManStart(int nObjsMax)
DECLARATIONS ///.
#define Gia_ClassForEachObj1(p, i, iObj)
ABC_NAMESPACE_IMPL_END ABC_NAMESPACE_IMPL_START int Gia_ManHasNoEquivs(Gia_Man_t *p)
Gia_Man_t * Gia_ManSeqStructSweep(Gia_Man_t *p, int fConst, int fEquiv, int fVerbose)
Aig_Man_t * Gia_ManToAig(Gia_Man_t *p, int fChoices)
int Gia_CommandSpecI(Gia_Man_t *pGia, int nFramesInit, int nBTLimitInit, int fStart, int fCheckMiter, int fVerbose)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
void Gia_ManFillValue(Gia_Man_t *p)
static int Gia_ManCandNum(Gia_Man_t *p)
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)
static void Vec_IntFreeP(Vec_Int_t **p)
#define Gia_ManForEachPi(p, pObj, i)
void Gia_ManEquivFilterTest(Gia_Man_t *p)
static Gia_Obj_t * Gia_ObjNextObj(Gia_Man_t *p, int Id)
static void Abc_Print(int level, const char *format,...)
int Gia_ManEquivCountOne(Gia_Man_t *p, int i)
void Gia_AigerWrite(Gia_Man_t *p, char *pFileName, int fWriteSymbols, int fCompact)
void Cec_ManSimClassCreate(Gia_Man_t *p, Vec_Int_t *vClass)
static int Gia_ObjFanin0Copy(Gia_Obj_t *pObj)
void Gia_ManRemoveBadChoices(Gia_Man_t *p)
#define Gia_ClassForEachObj(p, i, iObj)
static int Gia_ObjColors(Gia_Man_t *p, int Id)
static int Gia_ObjIsCo(Gia_Obj_t *pObj)
static int Gia_ObjNext(Gia_Man_t *p, int Id)
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
#define ABC_NAMESPACE_IMPL_START
static void Gia_ObjSetNext(Gia_Man_t *p, int Id, int Num)
static Gia_Obj_t * Gia_ObjReprObj(Gia_Man_t *p, int Id)
void Gia_ManEquivToChoices_rec(Gia_Man_t *pNew, Gia_Man_t *p, Gia_Obj_t *pObj)
static void Gia_ObjSetColors(Gia_Man_t *p, int Id)
static int Gia_ManCiNum(Gia_Man_t *p)
int Gia_ManFilterEquivsForSpeculation(Gia_Man_t *pGia, char *pName1, char *pName2, int fLatchA, int fLatchB)
static int Vec_IntSize(Vec_Int_t *p)
static int Gia_IsComplement(Gia_Obj_t *p)
Gia_Man_t * Gia_ManSpecReduceTrace(Gia_Man_t *p, Vec_Int_t *vTrace, Vec_Int_t *vMap)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void Gia_ManSpecReduceInit_rec(Gia_Man_t *pNew, Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vXorLits, int f, int fDualOut)
int Cec_ManCheckNonTrivialCands(Gia_Man_t *pAig)
static int Gia_ObjVisitColor(Gia_Man_t *p, int Id, int c)
int Gia_ManEquivCheckLits(Gia_Man_t *p, int nLits)
void Gia_ManEquivFixOutputPairs(Gia_Man_t *p)
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)
static int Gia_ObjIsNone(Gia_Man_t *p, int Id)
static int Abc_Lit2Var(int Lit)
#define ABC_CALLOC(type, num)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
#define Gia_ManForEachClass(p, i)
void Gia_ManSpecBuildInit(Gia_Man_t *pNew, Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vXorLits, int f, int fDualOut)
int Gia_ManCheckTopoOrder(Gia_Man_t *p)
#define ABC_INFINITY
MACRO DEFINITIONS ///.
#define Gia_ManForEachRo(p, pObj, i)
static int Gia_ObjProved(Gia_Man_t *p, int Id)
int Gia_NodeMffcSize(Gia_Man_t *p, Gia_Obj_t *pNode)
static int Abc_LitRegular(int Lit)
static void Gia_ManSpecBuild(Gia_Man_t *pNew, Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vXorLits, int fDualOut, int fSpeculate, Vec_Int_t *vTrace, Vec_Int_t *vGuide, Vec_Int_t *vMap)
void Gia_ManEquivUpdatePointers(Gia_Man_t *p, Gia_Man_t *pNew)
int Gia_ManEquivCountLits(Gia_Man_t *p)
void Gia_ManSetPhase(Gia_Man_t *p)
int Gia_ManLevelNum(Gia_Man_t *p)
int Gia_ObjCheckTfi(Gia_Man_t *p, Gia_Obj_t *pOld, Gia_Obj_t *pNode)
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
#define Gia_ManForEachRi(p, pObj, i)
void Gia_ManHashAlloc(Gia_Man_t *p)
int Gia_ManEquivCountLitsAll(Gia_Man_t *p)
void Gia_ManSpecReduce_rec(Gia_Man_t *pNew, Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vXorLits, int fDualOut, int fSpeculate, Vec_Int_t *vTrace, Vec_Int_t *vGuide, Vec_Int_t *vMap)
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)
static int Gia_ManPiNum(Gia_Man_t *p)
static void Gia_ObjUnsetProved(Gia_Man_t *p, int Id)
static void Vec_IntClear(Vec_Int_t *p)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
char * Abc_UtilStrsav(char *s)
#define Gia_ManForEachPo(p, pObj, i)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
static int Gia_ObjFanin0CopyF(Gia_Man_t *p, int f, Gia_Obj_t *pObj)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
Gia_Man_t * Gia_ManEquivReduce(Gia_Man_t *p, int fUseAll, int fDualOut, int fSkipPhase, int fVerbose)
void Gia_ManEquivMark(Gia_Man_t *p, char *pFileName, int fSkipSome, int fVerbose)
Gia_Man_t * Gia_ManMiter(Gia_Man_t *pAig0, Gia_Man_t *pAig1, int nInsDup, int fDualOut, int fSeq, int fImplic, int fVerbose)
static int Gia_ManObjNum(Gia_Man_t *p)
static int Gia_ObjRepr(Gia_Man_t *p, int Id)
int Gia_ManEquivSetColors(Gia_Man_t *p, int fVerbose)
static void Vec_PtrFree(Vec_Ptr_t *p)
void Gia_ManHashStop(Gia_Man_t *p)
static int Gia_ManCoNum(Gia_Man_t *p)
static int Gia_ObjCopyF(Gia_Man_t *p, int f, Gia_Obj_t *pObj)
static int Gia_ManRegNum(Gia_Man_t *p)