115 ppStore[pObj->
Level] = pObj;
121 aArea += If_ManScanMapping_rec( p, pLeaf, ppStore );
142 assert( !p->pPars->fLiftLeaves );
157 aArea += If_ManScanMapping_rec( p,
If_ObjFanin0(pObj), ppStore );
160 for ( i = p->nLevelMax; i >= 0; i-- )
161 for ( pObj = ppStore[i]; pObj; pObj = pObj->pCopy )
184 assert( !p->pPars->fLiftLeaves );
198 aArea += If_ManScanMapping_rec( p,
If_ObjFanin0(pObj), ppStore );
202 for ( i = 0; i <= p->nLevelMax; i++ )
203 for ( pObj = ppStore[i]; pObj; pObj = pObj->pCopy )
228 return If_ManScanMappingSeq_rec( p,
If_ObjFanin0(pObj), vMapped );
238 aArea += If_ManScanMappingSeq_rec( p, pLeaf, vMapped );
261 assert( p->pPars->fLiftLeaves );
269 aArea += If_ManScanMappingSeq_rec( p,
If_ObjFanin0(pObj), p->vMapped );
319 int i, nCutSize = 0, nCutSizeMax = 0;
325 if ( nCutSizeMax < ++nCutSize )
326 nCutSizeMax = nCutSize;
338 for ( pFanin = pObj; pFanin; pFanin = pFanin->
pEquiv )
376 ppStore[pObj->
Level] = pObj;
380 for ( pObj = ppStore[i]; pObj; pObj = (
If_Obj_t *)pObj->
pCopy )
417 p->
dPower += pSwitching? pSwitching[pLeaf->
Id] : 0.0;
491 int i, k, nLeaves, * ppLeaves;
502 for ( k = 0; k < nLeaves; k++ )
608 printf(
"Object is NULL." );
611 printf(
"Obj %4d : ",
If_ObjId(pObj) );
613 printf(
"constant 1" );
619 printf(
"AND( %4d%s, %4d%s )",
float If_ManScanMappingDirect(If_Man_t *p)
float If_ManScanMappingSeq(If_Man_t *p)
ABC_NAMESPACE_IMPL_START void If_ManCleanNodeCopy(If_Man_t *p)
DECLARATIONS ///.
static int If_ObjIsLatch(If_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
static int If_ObjId(If_Obj_t *pObj)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void If_ObjPrint(If_Obj_t *pObj)
void If_ManResetOriginalRefs(If_Man_t *p)
static float If_CutLutArea(If_Man_t *p, If_Cut_t *pCut)
static int If_ObjIsAnd(If_Obj_t *pObj)
#define If_CutForEachLeaf(p, pCut, pLeaf, i)
static int If_ObjIsCo(If_Obj_t *pObj)
static int If_CutLeaveNum(If_Cut_t *pCut)
static void If_CutSetData(If_Cut_t *pCut, void *pData)
void If_ManMarkMapping(If_Man_t *p)
static int If_ObjFaninC0(If_Obj_t *pObj)
void If_CutTraverse(If_Man_t *p, If_Obj_t *pRoot, If_Cut_t *pCut, Vec_Ptr_t *vNodes)
int If_ManCountSpecialPos(If_Man_t *p)
void If_ManCleanMarkV(If_Man_t *p)
static If_Obj_t * If_ObjFanin0(If_Obj_t *pObj)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static void If_CutTraverse_rec(If_Obj_t *pNode, Vec_Ptr_t *vNodes)
#define ABC_ALLOC(type, num)
static int If_ObjIsCi(If_Obj_t *pObj)
static If_Cut_t * If_ObjCutBest(If_Obj_t *pObj)
int If_ManCrossCut(If_Man_t *p)
#define If_CutForEachLeafSeq(p, pCut, pLeaf, Shift, i)
#define If_ManForEachPo(p, pObj, i)
Vec_Ptr_t * If_ManReverseOrder(If_Man_t *p)
for(p=first;p->value< newval;p=p->next)
Vec_Int_t * If_ManCollectMappingInt(If_Man_t *p)
#define If_ManForEachObj(p, pObj, i)
static int If_ObjFaninC1(If_Obj_t *pObj)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int * If_CutLeaves(If_Cut_t *pCut)
#define ABC_NAMESPACE_IMPL_END
static void If_ObjSetCopy(If_Obj_t *pObj, void *pCopy)
static If_Obj_t * If_ObjFanin1(If_Obj_t *pObj)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
float If_ManScanMapping(If_Man_t *p)
void If_CutTraverseTest(If_Man_t *p, If_Obj_t *pRoot, If_Cut_t *pCut)
#define ABC_NAMESPACE_IMPL_START
static int If_ManObjNum(If_Man_t *p)
Vec_Ptr_t * If_ManCollectMappingDirect(If_Man_t *p)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
#define If_ManForEachCo(p, pObj, i)
static int If_ObjIsConst1(If_Obj_t *pObj)
float If_ManMarkMapping_rec(If_Man_t *p, If_Obj_t *pObj)
static void Vec_PtrClear(Vec_Ptr_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
void If_ManCleanCutData(If_Man_t *p)
static void Vec_PtrFree(Vec_Ptr_t *p)