118 int i, k, f, iFanout = -1;
250 pMiter =
Aig_Or( pNew, pMiter, pTemp );
269 Aig_Obj_t * pObj, * pObjLi, * pObjLo, * pCare, * pMiter;
283 if ( p->pPars->nOdcMax > 0 )
307 pMiter =
Aig_And( pNew, pMiter, pCare );
371 Aig_Obj_t * pLeaf, * pPi, * pPo, * pObjAig;
395 if ( pObjAig == NULL )
456 for ( i = iStart; i < iStart + nFlopsMin && i <
Aig_ManCoNum(pFrame); i++ )
477 if ( pnOutputs != NULL )
508 pTotal =
Aig_Or( pNew, pTotal, pGate );
527 Aig_Obj_t * pObj, * pObjNew, * pObjLi, * pObjLo, * pGateNew;
570 if ( pnUsedNodes != NULL )
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
int Aig_ObjCompareIdIncrease(Aig_Obj_t **pp1, Aig_Obj_t **pp2)
#define Aig_ObjForEachFanout(p, pObj, pFanout, iFan, i)
static Vec_Ptr_t * Vec_PtrStart(int nSize)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
static int Aig_ObjFaninId0(Aig_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
Aig_Obj_t * Cgt_ManDupPartition_rec(Aig_Man_t *pNew, Aig_Man_t *pAig, Aig_Obj_t *pObj, Vec_Ptr_t *vLeaves)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static int Aig_ObjIsTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
static int Aig_ManObjNum(Aig_Man_t *p)
#define Saig_ManForEachLiLo(p, pObjLi, pObjLo, i)
Aig_Obj_t * Aig_Exor(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
#define Vec_VecForEachEntry(Type, vGlob, pEntry, i, k)
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
ABC_NAMESPACE_IMPL_START void Cgt_ManDetectCandidates_rec(Aig_Man_t *pAig, Vec_Int_t *vUseful, Aig_Obj_t *pObj, int nLevelMax, Vec_Ptr_t *vCands)
DECLARATIONS ///.
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
static Aig_Obj_t * Aig_ObjChild1CopyVec(Vec_Ptr_t *vCopy, Aig_Obj_t *pObj)
static int Aig_IsComplement(Aig_Obj_t *p)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
static void Vec_PtrSort(Vec_Ptr_t *p, int(*Vec_PtrSortCompare)()) ___unused
static Aig_Obj_t * Aig_Regular(Aig_Obj_t *p)
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
void Cgt_ManCollectVisited_rec(Aig_Man_t *pAig, Aig_Obj_t *pObj, Vec_Ptr_t *vVisited)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static Aig_Obj_t * Aig_ManConst0(Aig_Man_t *p)
static int Aig_ObjFaninId1(Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjFanin1(Aig_Obj_t *pObj)
static int Vec_PtrSize(Vec_Ptr_t *p)
Aig_Obj_t * Cgt_ManBuildClockGate(Aig_Man_t *pNew, Vec_Ptr_t *vGates)
static void Aig_ObjSetTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
static int Aig_ManNodeNum(Aig_Man_t *p)
void Cgt_ManCollectVisited(Aig_Man_t *pAig, Vec_Ptr_t *vFanout, Vec_Ptr_t *vVisited)
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
static int Aig_ObjIsNode(Aig_Obj_t *pObj)
static int Aig_ManCoNum(Aig_Man_t *p)
#define Aig_ManForEachNode(p, pObj, i)
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
static Aig_Obj_t * Aig_ManCi(Aig_Man_t *p, int i)
static Aig_Obj_t * Aig_ObjChild0CopyVec(Vec_Ptr_t *vCopy, Aig_Obj_t *pObj)
static int Vec_IntEntry(Vec_Int_t *p, int i)
Aig_Obj_t * Cgt_ManConstructCareCondition(Cgt_Man_t *p, Aig_Man_t *pNew, Aig_Obj_t *pObjLo, Vec_Ptr_t *vCopy0, Vec_Ptr_t *vCopy1)
#define ABC_NAMESPACE_IMPL_END
Aig_Man_t * Cgt_ManDupPartition(Aig_Man_t *pFrame, int nVarsMin, int nFlopsMin, int iStart, Aig_Man_t *pCare, Vec_Vec_t *vSuppsInv, int *pnOutputs)
static Aig_Obj_t * Aig_ObjChild1Copy(Aig_Obj_t *pObj)
Aig_Obj_t * Aig_Or(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
static Aig_Obj_t * Aig_ObjChild0Copy(Aig_Obj_t *pObj)
void Aig_ManSetCioIds(Aig_Man_t *p)
static int Aig_ObjFaninC0(Aig_Obj_t *pObj)
static void Vec_PtrWriteEntry(Vec_Ptr_t *p, int i, void *Entry)
static int Aig_ManObjNumMax(Aig_Man_t *p)
static Aig_Obj_t * Aig_ManConst1(Aig_Man_t *p)
static Vec_Int_t * Vec_VecEntryInt(Vec_Vec_t *p, int i)
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static Aig_Obj_t * Aig_ManCo(Aig_Man_t *p, int i)
void Cgt_ManConstructCare(Aig_Man_t *pNew, Aig_Man_t *pCare, Vec_Vec_t *vSuppsInv, Vec_Ptr_t *vLeaves)
static int Aig_ManRegNum(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)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void Cgt_ManDetectFanout_rec(Aig_Man_t *pAig, Aig_Obj_t *pObj, int nOdcMax, Vec_Ptr_t *vFanout)
void Aig_ManCleanMarkAB(Aig_Man_t *p)
Aig_Man_t * Cgt_ManDeriveAigForGating(Cgt_Man_t *p)
Aig_Obj_t * Cgt_ManConstructCare_rec(Aig_Man_t *pCare, Aig_Obj_t *pObj, Aig_Man_t *pNew)
static int Aig_ObjFaninC1(Aig_Obj_t *pObj)
Aig_Man_t * Cgt_ManDeriveGatedAig(Aig_Man_t *pAig, Vec_Vec_t *vGates, int fReduce, int *pnUsedNodes)
static int Aig_ObjLevel(Aig_Obj_t *pObj)
void Cgt_ManDetectFanout(Aig_Man_t *pAig, Aig_Obj_t *pObj, int nOdcMax, Vec_Ptr_t *vFanout)
#define Saig_ManForEachPo(p, pObj, i)
static int Aig_ObjId(Aig_Obj_t *pObj)
static void Vec_PtrClear(Vec_Ptr_t *p)
void Aig_ManCleanNext(Aig_Man_t *p)
static Vec_Ptr_t * Vec_VecEntry(Vec_Vec_t *p, int i)
static int Aig_ObjRefs(Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_NotCond(Aig_Obj_t *p, int c)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
static int Aig_ObjIsCi(Aig_Obj_t *pObj)
static void Vec_PtrShrink(Vec_Ptr_t *p, int nSizeNew)
char * Abc_UtilStrsav(char *s)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
static int Saig_ObjIsPi(Aig_Man_t *p, Aig_Obj_t *pObj)
int Aig_ManCleanup(Aig_Man_t *p)
static int Aig_ObjIsCo(Aig_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Cgt_Man_t_ Cgt_Man_t
INCLUDES ///.
static int Aig_ObjCioId(Aig_Obj_t *pObj)
void Cgt_ManDetectCandidates(Aig_Man_t *pAig, Vec_Int_t *vUseful, Aig_Obj_t *pObj, int nLevelMax, Vec_Ptr_t *vCands)
MACRO DEFINITIONS ///.
static void Vec_PtrFree(Vec_Ptr_t *p)