21#ifndef ABC__aig__aig__aig_h
22#define ABC__aig__aig__aig_h
212static inline int Aig_CutLeaveNum(
Aig_Cut_t * pCut ) {
return pCut->
nFanins; }
213static inline int * Aig_CutLeaves(
Aig_Cut_t * pCut ) {
return pCut->
pFanins; }
218#define Aig_ObjForEachCut( p, pObj, pCut, i ) \
219 for ( i = 0, pCut = Aig_ObjCuts(p, pObj); i < p->nCutsMax; i++, pCut = Aig_CutNext(pCut) )
221#define Aig_CutForEachLeaf( p, pCut, pLeaf, i ) \
222 for ( i = 0; (i < (int)(pCut)->nFanins) && ((pLeaf) = Aig_ManObj(p, (pCut)->pFanins[i])); i++ )
228static inline unsigned Aig_ObjCutSign(
unsigned ObjId ) {
return (1U << (ObjId & 31)); }
229static inline int Aig_WordCountOnes(
unsigned uWord )
231 uWord = (uWord & 0x55555555) + ((uWord>>1) & 0x55555555);
232 uWord = (uWord & 0x33333333) + ((uWord>>2) & 0x33333333);
233 uWord = (uWord & 0x0F0F0F0F) + ((uWord>>4) & 0x0F0F0F0F);
234 uWord = (uWord & 0x00FF00FF) + ((uWord>>8) & 0x00FF00FF);
235 return (uWord & 0x0000FFFF) + (uWord>>16);
237static inline int Aig_WordFindFirstBit(
unsigned uWord )
240 for ( i = 0; i < 32; i++ )
241 if ( uWord & (1 << i) )
249static inline int Aig_IsComplement(
Aig_Obj_t *
p ) {
return (
int)((ABC_PTRUINT_T)(
p) & 01); }
258static inline int Aig_ManObjNum(
Aig_Man_t *
p ) {
return Vec_PtrSize(
p->vObjs) -
p->nDeleted; }
259static inline int Aig_ManObjNumMax(
Aig_Man_t *
p ) {
return Vec_PtrSize(
p->vObjs); }
260static inline int Aig_ManRegNum(
Aig_Man_t *
p ) {
return p->nRegs; }
261static inline int Aig_ManConstrNum(
Aig_Man_t *
p ) {
return p->nConstrs; }
285static inline int Aig_ObjCioId(
Aig_Obj_t * pObj ) {
assert( !Aig_ObjIsNode(pObj) );
return pObj->
CioId; }
286static inline int Aig_ObjId(
Aig_Obj_t * pObj ) {
return pObj->
Id; }
288static inline int Aig_ObjIsMarkA(
Aig_Obj_t * pObj ) {
return pObj->
fMarkA; }
289static inline void Aig_ObjSetMarkA(
Aig_Obj_t * pObj ) { pObj->
fMarkA = 1; }
290static inline void Aig_ObjClearMarkA(
Aig_Obj_t * pObj ) { pObj->
fMarkA = 0; }
292static inline void Aig_ObjSetTravId(
Aig_Obj_t * pObj,
int TravId ) { pObj->
TravId = TravId; }
296static inline int Aig_ObjIsTravIdPrevious(
Aig_Man_t *
p,
Aig_Obj_t * pObj ) {
return (
int)(pObj->
TravId ==
p->nTravIds - 1); }
298static inline int Aig_ObjPhase(
Aig_Obj_t * pObj ) {
return pObj->
fPhase; }
299static inline int Aig_ObjPhaseReal(
Aig_Obj_t * pObj ) {
return pObj? Aig_Regular(pObj)->
fPhase ^ Aig_IsComplement(pObj) : 1; }
300static inline int Aig_ObjRefs(
Aig_Obj_t * pObj ) {
return pObj->
nRefs; }
301static inline void Aig_ObjRef(
Aig_Obj_t * pObj ) { pObj->
nRefs++; }
303static inline void Aig_ObjClearRef(
Aig_Obj_t * pObj ) { pObj->
nRefs = 0; }
306static inline int Aig_ObjFaninC0(
Aig_Obj_t * pObj ) {
return Aig_IsComplement(pObj->
pFanin0); }
307static inline int Aig_ObjFaninC1(
Aig_Obj_t * pObj ) {
return Aig_IsComplement(pObj->
pFanin1); }
312static inline Aig_Obj_t * Aig_ObjChild0Copy(
Aig_Obj_t * pObj ) {
assert( !Aig_IsComplement(pObj) );
return Aig_ObjFanin0(pObj)? Aig_NotCond((
Aig_Obj_t *)Aig_ObjFanin0(pObj)->pData, Aig_ObjFaninC0(pObj)) : NULL; }
313static inline Aig_Obj_t * Aig_ObjChild1Copy(
Aig_Obj_t * pObj ) {
assert( !Aig_IsComplement(pObj) );
return Aig_ObjFanin1(pObj)? Aig_NotCond((
Aig_Obj_t *)Aig_ObjFanin1(pObj)->pData, Aig_ObjFaninC1(pObj)) : NULL; }
314static inline Aig_Obj_t * Aig_ObjChild0Next(
Aig_Obj_t * pObj ) {
assert( !Aig_IsComplement(pObj) );
return Aig_ObjFanin0(pObj)? Aig_NotCond((
Aig_Obj_t *)Aig_ObjFanin0(pObj)->pNext, Aig_ObjFaninC0(pObj)) : NULL; }
315static inline Aig_Obj_t * Aig_ObjChild1Next(
Aig_Obj_t * pObj ) {
assert( !Aig_IsComplement(pObj) );
return Aig_ObjFanin1(pObj)? Aig_NotCond((
Aig_Obj_t *)Aig_ObjFanin1(pObj)->pNext, Aig_ObjFaninC1(pObj)) : NULL; }
320static inline Aig_Obj_t * Aig_ObjRealCopy(
Aig_Obj_t * pObj ) {
return Aig_NotCond((
Aig_Obj_t *)Aig_Regular(pObj)->pData, Aig_IsComplement(pObj));}
321static inline int Aig_ObjToLit(
Aig_Obj_t * pObj ) {
return Abc_Var2Lit( Aig_ObjId(Aig_Regular(pObj)), Aig_IsComplement(pObj) ); }
322static inline Aig_Obj_t * Aig_ObjFromLit(
Aig_Man_t *
p,
int iLit){
return Aig_NotCond( Aig_ManObj(
p, Abc_Lit2Var(iLit)), Abc_LitIsCompl(iLit) ); }
323static inline int Aig_ObjLevel(
Aig_Obj_t * pObj ) {
assert( !Aig_IsComplement(pObj) );
return pObj->
Level; }
324static inline int Aig_ObjLevelNew(
Aig_Obj_t * pObj ) {
assert( !Aig_IsComplement(pObj) );
return Aig_ObjFanin1(pObj)? 1 + Aig_ObjIsExor(pObj) + Abc_MaxInt(Aig_ObjFanin0(pObj)->Level, Aig_ObjFanin1(pObj)->Level) : Aig_ObjFanin0(pObj)->Level; }
325static inline int Aig_ObjSetLevel(
Aig_Obj_t * pObj,
int i ) {
assert( !Aig_IsComplement(pObj) );
return pObj->
Level = i; }
334 if ( Aig_ObjFanin0(pObj) == pFanin )
return 0;
335 if ( Aig_ObjFanin1(pObj) == pFanin )
return 1;
340 if ( Aig_ObjFanin0(pFanout) == pObj )
return Aig_ObjFaninC0(pObj);
341 if ( Aig_ObjFanin1(pFanout) == pObj )
return Aig_ObjFaninC1(pObj);
350 assert( p1 == NULL || !Aig_ObjIsConst1(Aig_Regular(p1)) );
352 pGhost = Aig_ManGhost(
p);
354 if ( p1 == NULL || Aig_Regular(p0)->Id < Aig_Regular(p1)->Id )
374 pTemp->
Id = Vec_PtrSize(
p->vObjs);
375 Vec_PtrPush(
p->vObjs, pTemp );
393#define Aig_ManForEachCi( p, pObj, i ) \
394 Vec_PtrForEachEntry( Aig_Obj_t *, p->vCis, pObj, i )
395#define Aig_ManForEachCiReverse( p, pObj, i ) \
396 Vec_PtrForEachEntryReverse( Aig_Obj_t *, p->vCis, pObj, i )
398#define Aig_ManForEachCo( p, pObj, i ) \
399 Vec_PtrForEachEntry( Aig_Obj_t *, p->vCos, pObj, i )
400#define Aig_ManForEachCoReverse( p, pObj, i ) \
401 Vec_PtrForEachEntryReverse( Aig_Obj_t *, p->vCos, pObj, i )
403#define Aig_ManForEachObj( p, pObj, i ) \
404 Vec_PtrForEachEntry( Aig_Obj_t *, p->vObjs, pObj, i ) if ( (pObj) == NULL ) {} else
405#define Aig_ManForEachObjReverse( p, pObj, i ) \
406 Vec_PtrForEachEntryReverse( Aig_Obj_t *, p->vObjs, pObj, i ) if ( (pObj) == NULL ) {} else
408#define Aig_ManForEachObjVec( vIds, p, pObj, i ) \
409 for ( i = 0; i < Vec_IntSize(vIds) && (((pObj) = Aig_ManObj(p, Vec_IntEntry(vIds,i))), 1); i++ )
410#define Aig_ManForEachObjVecReverse( vIds, p, pObj, i ) \
411 for ( i = Vec_IntSize(vIds) - 1; i >= 0 && (((pObj) = Aig_ManObj(p, Vec_IntEntry(vIds,i))), 1); i-- )
413#define Aig_ManForEachNode( p, pObj, i ) \
414 Vec_PtrForEachEntry( Aig_Obj_t *, p->vObjs, pObj, i ) if ( (pObj) == NULL || !Aig_ObjIsNode(pObj) ) {} else
415#define Aig_ManForEachNodeReverse( p, pObj, i ) \
416 Vec_PtrForEachEntryReverse( Aig_Obj_t *, p->vObjs, pObj, i ) if ( (pObj) == NULL || !Aig_ObjIsNode(pObj) ) {} else
418#define Aig_ManForEachExor( p, pObj, i ) \
419 Vec_PtrForEachEntry( Aig_Obj_t *, p->vObjs, pObj, i ) if ( (pObj) == NULL || !Aig_ObjIsExor(pObj) ) {} else
420#define Aig_ManForEachExorReverse( p, pObj, i ) \
421 Vec_PtrForEachEntryReverse( Aig_Obj_t *, p->vObjs, pObj, i ) if ( (pObj) == NULL || !Aig_ObjIsExor(pObj) ) {} else
424static inline int Aig_ObjFanout0Int(
Aig_Man_t *
p,
int ObjId ) {
assert(ObjId < p->nFansAlloc);
return p->pFanData[5*ObjId]; }
425static inline int Aig_ObjFanoutNext(
Aig_Man_t *
p,
int iFan ) {
assert(iFan/2 <
p->nFansAlloc);
return p->pFanData[5*(iFan >> 1) + 3 + (iFan & 1)]; }
427#define Aig_ObjForEachFanout( p, pObj, pFanout, iFan, i ) \
428 for ( assert(p->pFanData), i = 0; (i < (int)(pObj)->nRefs) && \
429 (((iFan) = i? Aig_ObjFanoutNext(p, iFan) : Aig_ObjFanout0Int(p, pObj->Id)), 1) && \
430 (((pFanout) = Aig_ManObj(p, iFan>>1)), 1); i++ )
438#define Aig_ManForEachPiSeq( p, pObj, i ) \
439 Vec_PtrForEachEntryStop( Aig_Obj_t *, p->vCis, pObj, i, Aig_ManCiNum(p)-Aig_ManRegNum(p) )
441#define Aig_ManForEachLoSeq( p, pObj, i ) \
442 Vec_PtrForEachEntryStart( Aig_Obj_t *, p->vCis, pObj, i, Aig_ManCiNum(p)-Aig_ManRegNum(p) )
444#define Aig_ManForEachPoSeq( p, pObj, i ) \
445 Vec_PtrForEachEntryStop( Aig_Obj_t *, p->vCos, pObj, i, Aig_ManCoNum(p)-Aig_ManRegNum(p) )
447#define Aig_ManForEachLiSeq( p, pObj, i ) \
448 Vec_PtrForEachEntryStart( Aig_Obj_t *, p->vCos, pObj, i, Aig_ManCoNum(p)-Aig_ManRegNum(p) )
450#define Aig_ManForEachLiLoSeq( p, pObjLi, pObjLo, k ) \
451 for ( k = 0; (k < Aig_ManRegNum(p)) && (((pObjLi) = Aig_ManLi(p, k)), 1) \
452 && (((pObjLo)=Aig_ManLo(p, k)), 1); k++ )
613extern Aig_Man_t *
Aig_ManScl(
Aig_Man_t * pAig,
int fLatchConst,
int fLatchEqual,
int fUseMvSweep,
int nFramesSymb,
int nFramesSatur,
int fVerbose,
int fVeryVerbose );
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
void Aig_ObjPrintVerilog(FILE *pFile, Aig_Obj_t *pObj, Vec_Vec_t *vLevels, int Level)
void Aig_ManFanoutStart(Aig_Man_t *p)
FUNCTION DEFINITIONS ///.
Aig_Obj_t * Aig_ObjRecognizeMux(Aig_Obj_t *pObj, Aig_Obj_t **ppObjT, Aig_Obj_t **ppObjE)
int Aig_ManCoCleanup(Aig_Man_t *p)
int Aig_MmStepReadMemUsage(Aig_MmStep_t *p)
void Aig_ObjCollectCut(Aig_Obj_t *pRoot, Vec_Ptr_t *vLeaves, Vec_Ptr_t *vNodes)
Aig_Man_t * Aig_ManDupRepr(Aig_Man_t *p, int fOrdered)
Aig_Obj_t * Aig_ObjCreate(Aig_Man_t *p, Aig_Obj_t *pGhost)
int Aig_NodeDeref_rec(Aig_Obj_t *pNode, unsigned LevelMin, float *pPower, float *pProbs)
DECLARATIONS ///.
Aig_Man_t * Aig_ManDupSimpleDfsPart(Aig_Man_t *p, Vec_Ptr_t *vPis, Vec_Ptr_t *vCos)
Vec_Ptr_t * Aig_ManOrderPios(Aig_Man_t *p, Aig_Man_t *pOrder)
Aig_Obj_t * Aig_CreateAnd(Aig_Man_t *p, int nVars)
Aig_Man_t * Aig_ManDupOrdered(Aig_Man_t *p)
Aig_Man_t * Aig_ManRehash(Aig_Man_t *p)
void Aig_ManPrintVerbose(Aig_Man_t *p, int fHaig)
int Aig_ManChoiceNum(Aig_Man_t *p)
void Aig_ManCleanMarkB(Aig_Man_t *p)
int Aig_ManSeqCleanup(Aig_Man_t *p)
Vec_Ptr_t * Aig_ManDfsReverse(Aig_Man_t *p)
Vec_Ptr_t * Aig_ManDfsChoices(Aig_Man_t *p)
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
void Aig_MmFlexRestart(Aig_MmFlex_t *p)
Aig_Man_t * Aig_ManDupExor(Aig_Man_t *p)
void Aig_ObjPrintEqn(FILE *pFile, Aig_Obj_t *pObj, Vec_Vec_t *vLevels, int Level)
void Aig_MmFlexStop(Aig_MmFlex_t *p, int fVerbose)
int Aig_MmFixedReadMemUsage(Aig_MmFixed_t *p)
char * Aig_MmStepEntryFetch(Aig_MmStep_t *p, int nBytes)
Aig_Man_t * Aig_ManDupSimple(Aig_Man_t *p)
DECLARATIONS ///.
void Aig_ManSetCioIds(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupLevelized(Aig_Man_t *p)
int Aig_ManLevelNum(Aig_Man_t *p)
void Aig_ManCutStop(Aig_ManCut_t *p)
Aig_Man_t * Aig_ManDupDfs(Aig_Man_t *p)
int Aig_ObjCheckTfi(Aig_Man_t *p, Aig_Obj_t *pNew, Aig_Obj_t *pOld)
int Aig_ManVerifyTopoOrder(Aig_Man_t *p)
DECLARATIONS ///.
void Aig_ManReprStart(Aig_Man_t *p, int nIdMax)
DECLARATIONS ///.
int Aig_ManHasNoGaps(Aig_Man_t *p)
Vec_Ptr_t * Aig_ManPartitionNaive(Aig_Man_t *p, int nPartSize)
Aig_Man_t * Aig_ManDupSimpleDfs(Aig_Man_t *p)
void Aig_ManCleanMarkA(Aig_Man_t *p)
int Aig_ObjRecognizeExor(Aig_Obj_t *pObj, Aig_Obj_t **ppFan0, Aig_Obj_t **ppFan1)
void Aig_ObjOrderInsert(Aig_Man_t *p, int ObjId)
Vec_Ptr_t * Aig_ManSupportsRegisters(Aig_Man_t *p)
void Aig_ManInvertConstraints(Aig_Man_t *pAig)
void Aig_ManFanoutStop(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupTrim(Aig_Man_t *p)
Aig_Obj_t * Aig_Maj(Aig_Man_t *p, Aig_Obj_t *pA, Aig_Obj_t *pB, Aig_Obj_t *pC)
int Aig_NodeMffcExtendCut(Aig_Man_t *p, Aig_Obj_t *pNode, Vec_Ptr_t *vLeaves, Vec_Ptr_t *vResult)
char * Aig_MmFixedEntryFetch(Aig_MmFixed_t *p)
void Aig_ObjDeletePo(Aig_Man_t *p, Aig_Obj_t *pObj)
Aig_Man_t * Aig_ManDupArray(Vec_Ptr_t *vArray)
char * Aig_MmFlexEntryFetch(Aig_MmFlex_t *p, int nBytes)
void Aig_ManStopMemory(Aig_Man_t *p)
void Aig_ObjCreateRepr(Aig_Man_t *p, Aig_Obj_t *pNode1, Aig_Obj_t *pNode2)
void Aig_ManStop(Aig_Man_t *p)
int Aig_NodeRef_rec(Aig_Obj_t *pNode, unsigned LevelMin)
void Aig_ObjDisconnect(Aig_Man_t *p, Aig_Obj_t *pObj)
Aig_Man_t * Aig_ManReduceLaches(Aig_Man_t *p, int fVerbose)
Aig_Obj_t * Aig_Transfer(Aig_Man_t *pSour, Aig_Man_t *pDest, Aig_Obj_t *pObj, int nVars)
Aig_Obj_t * Aig_ManDupSimpleDfs_rec(Aig_Man_t *pNew, Aig_Man_t *p, Aig_Obj_t *pObj)
Aig_Man_t * Rtm_ManRetime(Aig_Man_t *p, int fForward, int nStepsMax, int fVerbose)
void Aig_SupportNodes(Aig_Man_t *p, Aig_Obj_t **ppObjs, int nObjs, Vec_Ptr_t *vSupp)
int Aig_ManSeqCleanupBasic(Aig_Man_t *p)
void Aig_ManStartReverseLevels(Aig_Man_t *p, int nMaxLevelIncrease)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
Aig_Man_t * Aig_ManChoiceConstructive(Vec_Ptr_t *vAigs, int fVerbose)
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
Aig_Man_t * Aig_ManFraigPartitioned(Aig_Man_t *pAig, int nPartSize, int nConfMax, int nLevelMax, int fVerbose)
Aig_Man_t * Aig_ManConstReduce(Aig_Man_t *p, int fUseMvSweep, int nFramesSymb, int nFramesSatur, int fVerbose, int fVeryVerbose)
Aig_Man_t * Aig_ManDupRepres(Aig_Man_t *p)
void Aig_ObjConnect(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pFan0, Aig_Obj_t *pFan1)
void Aig_ManStartMemory(Aig_Man_t *p)
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
int Aig_ManCiCleanup(Aig_Man_t *p)
Aig_Obj_t * Aig_Mux(Aig_Man_t *p, Aig_Obj_t *pC, Aig_Obj_t *p1, Aig_Obj_t *p0)
Aig_Obj_t * Aig_Oper(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1, Aig_Type_t Type)
Aig_Man_t * Aig_ManStartFrom(Aig_Man_t *p)
int Aig_MmFixedReadMaxEntriesUsed(Aig_MmFixed_t *p)
void Aig_ManCleanNext(Aig_Man_t *p)
void Aig_ManVerifyReverseLevel(Aig_Man_t *p)
void Aig_ManFindCut(Aig_Obj_t *pRoot, Vec_Ptr_t *vFront, Vec_Ptr_t *vVisited, int nSizeLimit, int nFanoutLimit)
void Aig_ConeUnmark_rec(Aig_Obj_t *pObj)
void Aig_ManCleanCioIds(Aig_Man_t *p)
int Aig_ObjCollectSuper(Aig_Obj_t *pObj, Vec_Ptr_t *vSuper)
int Aig_SupportSize(Aig_Man_t *p, Aig_Obj_t *pObj)
int Aig_ManAntiCleanup(Aig_Man_t *p)
void Aig_ManStopP(Aig_Man_t **p)
void Aig_ManDumpVerilog(Aig_Man_t *p, char *pFileName)
struct Aig_Obj_t_ Aig_Obj_t
void Aig_NodeIntersectLists(Vec_Ptr_t *vArr1, Vec_Ptr_t *vArr2, Vec_Ptr_t *vArr)
void Aig_ObjPrintVerbose(Aig_Obj_t *pObj, int fHaig)
void Aig_ManStopReverseLevels(Aig_Man_t *p)
void Aig_ManMuxesDeref(Aig_Man_t *pAig, Vec_Ptr_t *vMuxes)
void Aig_TableClear(Aig_Man_t *p)
void Aig_ManReportImprovement(Aig_Man_t *p, Aig_Man_t *pNew)
void Aig_ManMarkValidChoices(Aig_Man_t *p)
int Aig_ManLevels(Aig_Man_t *p)
Aig_Obj_t * Aig_Miter(Aig_Man_t *p, Vec_Ptr_t *vPairs)
void Aig_ManPartDivide(Vec_Ptr_t *vResult, Vec_Int_t *vDomain, int nPartSize, int nOverSize)
void Aig_TableInsert(Aig_Man_t *p, Aig_Obj_t *pObj)
Aig_Man_t * Aig_ManDupDfsGuided(Aig_Man_t *p, Vec_Ptr_t *vPios)
int Aig_ManCountMergeRegs(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupCof(Aig_Man_t *p, int iInput, int Value)
struct Aig_MmFlex_t_ Aig_MmFlex_t
Aig_Obj_t * Aig_Exor(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
struct Aig_Cut_t_ Aig_Cut_t
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
Aig_Man_t * Aig_ManRegCreatePart(Aig_Man_t *pAig, Vec_Int_t *vPart, int *pnCountPis, int *pnCountRegs, int **ppMapBack)
int Aig_ObjCompareIdIncrease(Aig_Obj_t **pp1, Aig_Obj_t **pp2)
Vec_Ptr_t * Aig_ManPartitionSmart(Aig_Man_t *p, int nPartSizeLimit, int fVerbose, Vec_Ptr_t **pvPartSupps)
Aig_Man_t * Aig_ManFrames(Aig_Man_t *pAig, int nFs, int fInit, int fOuts, int fRegs, int fEnlarge, Aig_Obj_t ***ppObjMap)
FUNCTION DEFINITIONS ///.
Aig_Man_t * Aig_ManDupWithoutPos(Aig_Man_t *p)
Aig_Man_t * Aig_ManChoicePartitioned(Vec_Ptr_t *vAigs, int nPartSize, int nConfMax, int nLevelMax, int fVerbose)
void Aig_ObjDelete_rec(Aig_Man_t *p, Aig_Obj_t *pObj, int fFreeTop)
void Aig_ManPrintStats(Aig_Man_t *p)
unsigned * Aig_ManCutTruth(Aig_Obj_t *pRoot, Vec_Ptr_t *vLeaves, Vec_Ptr_t *vNodes, Vec_Ptr_t *vTruthElem, Vec_Ptr_t *vTruthStore)
Aig_ManCut_t * Aig_ComputeCuts(Aig_Man_t *pAig, int nCutsMax, int nLeafMax, int fTruth, int fVerbose)
Aig_Obj_t * Aig_Compose(Aig_Man_t *p, Aig_Obj_t *pRoot, Aig_Obj_t *pFunc, int iVar)
Vec_Ptr_t * Aig_ManRegPartitionSimple(Aig_Man_t *pAig, int nPartSize, int nOverSize)
Vec_Ptr_t * Aig_ManPartitionSmartRegisters(Aig_Man_t *pAig, int nSuppSizeLimit, int fVerbose)
int Aig_NodeMffcLabel(Aig_Man_t *p, Aig_Obj_t *pNode, float *pPower)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
int Aig_ManCleanup(Aig_Man_t *p)
struct Aig_ManCut_t_ Aig_ManCut_t
void Aig_ManReprStop(Aig_Man_t *p)
Aig_Man_t * Aig_ManRemap(Aig_Man_t *p, Vec_Ptr_t *vMap)
DECLARATIONS ///.
void Aig_ManMuxesRef(Aig_Man_t *pAig, Vec_Ptr_t *vMuxes)
void Aig_ObjPatchFanin0(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pFaninNew)
void Aig_ObjOrderRemove(Aig_Man_t *p, int ObjId)
void Aig_ManFlipFirstPo(Aig_Man_t *p)
void Aig_ObjClearReverseLevel(Aig_Man_t *p, Aig_Obj_t *pObj)
Vec_Ptr_t * Aig_ManSupportsInverse(Aig_Man_t *p)
Aig_Man_t * Aig_ManRetimeFrontier(Aig_Man_t *p, int nStepsMax)
void Aig_ManCleanMarkAB(Aig_Man_t *p)
Vec_Vec_t * Aig_ManLevelize(Aig_Man_t *p)
void Aig_ObjOrderAdvance(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupNodes(Aig_Man_t *pMan, Vec_Ptr_t *vArray)
void Aig_ManResetRefs(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupSimpleWithHints(Aig_Man_t *p, Vec_Int_t *vHints)
void Aig_ManVerifyLevel(Aig_Man_t *p)
void Aig_ObjReplace(Aig_Man_t *p, Aig_Obj_t *pObjOld, Aig_Obj_t *pObjNew, int fUpdateLevel)
void Aig_NodeUnionLists(Vec_Ptr_t *vArr1, Vec_Ptr_t *vArr2, Vec_Ptr_t *vArr)
Aig_MmFixed_t * Aig_MmFixedStart(int nEntrySize, int nEntriesMax)
FUNCTION DEFINITIONS ///.
Vec_Ptr_t * Aig_ManDfs(Aig_Man_t *p, int fNodesOnly)
Aig_Obj_t * Aig_CreateExor(Aig_Man_t *p, int nVars)
Aig_Man_t * Aig_ManDupRepresDfs(Aig_Man_t *p)
Vec_Ptr_t * Aig_ManDfsNodes(Aig_Man_t *p, Aig_Obj_t **ppNodes, int nNodes)
void Aig_ObjAddFanout(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pFanout)
void Aig_ManOrderStop(Aig_Man_t *p)
Aig_Obj_t * Aig_TableLookup(Aig_Man_t *p, Aig_Obj_t *pGhost)
Aig_Man_t * Aig_ManDupUnsolvedOutputs(Aig_Man_t *p, int fAddRegs)
void * Aig_ManReleaseData(Aig_Man_t *p)
Aig_Obj_t * Aig_Multi(Aig_Man_t *p, Aig_Obj_t **pArgs, int nArgs, Aig_Type_t Type)
int Aig_NodeMffcLabelCut(Aig_Man_t *p, Aig_Obj_t *pNode, Vec_Ptr_t *vLeaves)
int Aig_ManCountReprs(Aig_Man_t *p)
int Aig_TransferMappedClasses(Aig_Man_t *pAig, Aig_Man_t *pPart, int *pMapBack)
void Aig_MmStepStop(Aig_MmStep_t *p, int fVerbose)
void Aig_ObjCollectMulti(Aig_Obj_t *pFunc, Vec_Ptr_t *vSuper)
int Aig_ObjRequiredLevel(Aig_Man_t *p, Aig_Obj_t *pObj)
Vec_Ptr_t * Aig_ManRegPartitionSmart(Aig_Man_t *pAig, int nPartSize)
Vec_Ptr_t * Aig_ManMiterPartitioned(Aig_Man_t *p1, Aig_Man_t *p2, int nPartSize, int fSmart)
Aig_Man_t * Aig_ManDupOneOutput(Aig_Man_t *p, int iPoNum, int fAddRegs)
int Aig_NodeMffcSupp(Aig_Man_t *p, Aig_Obj_t *pNode, int LevelMin, Vec_Ptr_t *vSupp)
int Aig_DagSize(Aig_Obj_t *pObj)
void Aig_MmFixedRestart(Aig_MmFixed_t *p)
Aig_MmFlex_t * Aig_MmFlexStart()
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
int Aig_TableCountEntries(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupReprBasic(Aig_Man_t *p)
Aig_Obj_t * Aig_TableLookupTwo(Aig_Man_t *p, Aig_Obj_t *pFanin0, Aig_Obj_t *pFanin1)
Aig_Man_t * Aig_ManExtractMiter(Aig_Man_t *p, Aig_Obj_t *pNode1, Aig_Obj_t *pNode2)
Aig_Man_t * Aig_ManScl(Aig_Man_t *pAig, int fLatchConst, int fLatchEqual, int fUseMvSweep, int nFramesSymb, int nFramesSatur, int fVerbose, int fVeryVerbose)
char * Aig_FileNameGenericAppend(char *pBase, char *pSuffix)
Vec_Ptr_t * Aig_ManRegProjectOnehots(Aig_Man_t *pAig, Aig_Man_t *pPart, Vec_Ptr_t *vOnehots, int fVerbose)
word Aig_ManRandom64(int fReset)
void Aig_MmFixedEntryRecycle(Aig_MmFixed_t *p, char *pEntry)
void Aig_ManCheckPhase(Aig_Man_t *p)
Aig_Obj_t * Aig_CreateOr(Aig_Man_t *p, int nVars)
Aig_Obj_t * Aig_ObjReal_rec(Aig_Obj_t *pObj)
Aig_Man_t * Aig_ManDupOrpos(Aig_Man_t *p, int fAddRegs)
void Aig_ManCheckMarkA(Aig_Man_t *p)
void Aig_ObjDelete(Aig_Man_t *p, Aig_Obj_t *pObj)
void Aig_ObjCleanData_rec(Aig_Obj_t *pObj)
Aig_Obj_t * Aig_IthVar(Aig_Man_t *p, int i)
FUNCTION DEFINITIONS ///.
int Aig_MmFlexReadMemUsage(Aig_MmFlex_t *p)
Vec_Ptr_t * Aig_Support(Aig_Man_t *p, Aig_Obj_t *pObj)
void Aig_ManSetPhase(Aig_Man_t *pAig)
Vec_Ptr_t * Aig_ManMuxesCollect(Aig_Man_t *pAig)
struct Aig_MmFixed_t_ Aig_MmFixed_t
Aig_MmStep_t * Aig_MmStepStart(int nSteps)
int Aig_ObjIsMuxType(Aig_Obj_t *pObj)
void Aig_MmFixedStop(Aig_MmFixed_t *p, int fVerbose)
void Aig_ManCleanData(Aig_Man_t *p)
Aig_Man_t * Aig_ManCreateMiter(Aig_Man_t *p1, Aig_Man_t *p2, int fImpl)
void Aig_ManTransferRepr(Aig_Man_t *pNew, Aig_Man_t *p)
void Aig_ManUpdateReverseLevel(Aig_Man_t *p, Aig_Obj_t *pObjNew)
Aig_Obj_t * Aig_Or(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
void Aig_TableProfile(Aig_Man_t *p)
Vec_Ptr_t * Aig_ManDfsPreorder(Aig_Man_t *p, int fNodesOnly)
void Aig_ManUpdateLevel(Aig_Man_t *p, Aig_Obj_t *pObjNew)
void Aig_ObjRemoveFanout(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pFanout)
Vec_Ptr_t * Aig_ManSupports(Aig_Man_t *p)
void Aig_ManRandomInfo(Vec_Ptr_t *vInfo, int iInputStart, int iWordStart, int iWordStop)
int Aig_ManChoiceLevel(Aig_Man_t *p)
void Aig_ManOrderStart(Aig_Man_t *p)
DECLARATIONS ///.
void Aig_MmStepEntryRecycle(Aig_MmStep_t *p, char *pEntry, int nBytes)
ABC_DLL int Aig_ManCheck(Aig_Man_t *p)
FUNCTION DECLARATIONS ///.
void Aig_ManComputeSccs(Aig_Man_t *p)
void Aig_TableDelete(Aig_Man_t *p, Aig_Obj_t *pObj)
unsigned Aig_ManRandom(int fReset)
void Aig_ManDump(Aig_Man_t *p)
void Aig_ManDumpBlif(Aig_Man_t *p, char *pFileName, Vec_Ptr_t *vPiNames, Vec_Ptr_t *vPoNames)
struct Aig_MmStep_t_ Aig_MmStep_t
Aig_Obj_t * Aig_MiterTwo(Aig_Man_t *p, Vec_Ptr_t *vNodes1, Vec_Ptr_t *vNodes2)
void Aig_ManShow(Aig_Man_t *pMan, int fHaig, Vec_Ptr_t *vBold)
void Aig_ObjPrint(Aig_Man_t *p, Aig_Obj_t *pObj)
Vec_Ptr_t * Aig_ManDfsAll(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupFlopsOnly(Aig_Man_t *p)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
unsigned __int64 word
DECLARATIONS ///.
Vec_Ptr_t * unfold2_type_II
void(* pImpFunc)(void *, void *)
Vec_Ptr_t * unfold2_type_I
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.