47 if ( Gia_ObjIsTravIdCurrent(
p, pObj) )
49 Gia_ObjSetTravIdCurrent(
p, pObj);
50 if ( Gia_ObjIsCi(pObj) )
52 Vec_IntPush( vSupp, Gia_ObjId(
p, pObj) );
55 assert( Gia_ObjIsAnd(pObj) );
75 Vec_IntClear( vSupp );
77 Gia_ObjSetTravIdCurrent(
p, Gia_ManConst0(
p) );
78 for ( i = 0; i < nNodes; i++ )
80 pObj = Gia_ManObj(
p, pNodes[i] );
81 if ( Gia_ObjIsCo(pObj) )
102 if ( Gia_ObjIsTravIdCurrentId(
p, iObj) )
104 Gia_ObjSetTravIdCurrentId(
p, iObj);
105 pObj = Gia_ManObj(
p, iObj );
106 if ( Gia_ObjIsCi(pObj) )
108 assert( Gia_ObjIsAnd(pObj) );
111 Vec_IntPush( vNodes, iObj );
129 Gia_ObjSetTravIdCurrentId(
p, 0 );
132 Gia_ObjSetTravIdCurrentId(
p, iLeaf );
133 Vec_IntClear( vNodes );
134 for ( i = 0; i < nNodes; i++ )
136 Gia_Obj_t * pObj = Gia_ManObj(
p, pNodes[i] );
137 if ( Gia_ObjIsCo(pObj) )
139 else if ( Gia_ObjIsAnd(pObj) )
158 Vec_Int_t * vNodes = Vec_IntAlloc( Gia_ManAndNum(
p) );
160 Vec_IntPush( vNodes, i );
177 if ( Gia_ObjIsTravIdCurrent(
p, pObj) )
179 Gia_ObjSetTravIdCurrent(
p, pObj);
180 if ( Gia_ObjIsCi(pObj) )
182 Vec_IntPush( vNodes, Gia_ObjId(
p, pObj) );
185 assert( Gia_ObjIsAnd(pObj) );
188 Vec_IntPush( vNodes, Gia_ObjId(
p, pObj) );
207 vNodes = Vec_IntAlloc( 10000 );
209 Gia_ObjSetTravIdCurrent(
p, Gia_ManConst0(
p) );
210 for ( i = 0; i < nNodes; i++ )
212 pObj = Gia_ManObj(
p, pNodes[i] );
213 if ( Gia_ObjIsCo(pObj) )
238 vNodes = Vec_IntAlloc( 100 );
242 iNode = Gia_ObjId(
p, pObj);
245 Vec_IntFree( vNodes );
246 ABC_PRT(
"DFS from each output", Abc_Clock() - clk );
262 if ( Gia_ObjIsTravIdCurrent(
p, pObj) )
264 Gia_ObjSetTravIdCurrent(
p, pObj);
265 if ( Gia_ObjIsCi(pObj) )
267 assert( Gia_ObjIsAnd(pObj) );
306 if ( Gia_ObjIsAnd(pObj) )
308 printf(
"Nodes with small support %d (out of %d)\n", Counter, Gia_ManAndNum(
p) );
309 Abc_PrintTime( 1,
"Time", Abc_Clock() - clk );
329 Gia_ObjSetTravIdCurrent(
p, Gia_ManConst0(
p) );
330 for ( i = 0; i < nNodes; i++ )
332 pObj = Gia_ManObj(
p, pNodes[i] );
333 if ( Gia_ObjIsCo(pObj) )
354 if ( Gia_ObjIsTravIdCurrent(
p, pObj) )
356 Gia_ObjSetTravIdCurrent(
p, pObj);
357 if ( Gia_ObjIsCi(pObj) )
359 assert( Gia_ObjIsAnd(pObj) );
380 Gia_ObjSetTravIdCurrent(
p, Gia_ManConst0(
p) );
381 for ( i = 0; i < nNodes; i++ )
383 pObj = Gia_ManObj(
p, pNodes[i] );
384 if ( Gia_ObjIsCo(pObj) )
407 int nLevels, Level, i;
409 vLevels = Vec_VecStart( nLevels + 1 );
412 Level = Gia_ObjLevel(
p, pObj );
413 assert( Level <= nLevels );
414 Vec_VecPush( vLevels, Level, pObj );
434 int nLevels, Level, i;
436 vLevels = Vec_WecStart( nLevels + 1 );
439 if ( i == 0 || (!Gia_ObjIsCo(pObj) && !Gia_ObjLevel(
p, pObj)) )
441 Level = Gia_ObjLevel(
p, pObj );
442 assert( Level <= nLevels );
443 Vec_WecPush( vLevels, Level, i );
466 vLevels = Vec_VecStart( 100 );
469 assert( Gia_ObjLevel(
p, pObj) > 0 );
472 Vec_VecPush( vLevels, Gia_ObjLevel(
p, Gia_ObjFanin0(pObj)), pObj );
475 if ( !Gia_ObjIsCo(pObj) )
476 Vec_VecPush( vLevels, Gia_ObjLevel(
p, pObj), pObj );
478 vResult = Vec_IntAlloc( Gia_ManObjNum(
p) );
481 Vec_IntPush( vResult, Gia_ObjId(
p, pObj) );
482 Vec_VecFree( vLevels );
500 if ( Gia_ObjIsTravIdCurrentId(
p, Id ) )
502 Gia_ObjSetTravIdCurrentId(
p, Id );
503 pObj = Gia_ManObj(
p, Id );
504 if ( Gia_ObjIsAnd(pObj) )
509 else if ( Gia_ObjIsCi(pObj) )
511 if ( Gia_ObjIsRo(
p, pObj) )
512 Vec_IntPush( vRoots, Gia_ObjId(
p, Gia_ObjRoToRi(
p, pObj)) );
514 else if ( Gia_ObjIsCo(pObj) )
517 Vec_IntPush( vObjs, Id );
524 vRoots = Vec_IntAlloc( 100 );
525 for ( i = 0; i < nPos; i++ )
526 Vec_IntPush( vRoots, Gia_ObjId(
p, Gia_ManPo(
p, pPos[i])) );
529 Gia_ObjSetTravIdCurrentId(
p, 0 );
531 vObjs = Vec_IntAlloc( 1000 );
532 Vec_IntPush( vObjs, 0 );
535 Vec_IntFree( vRoots );
543 for ( i = 0; i < Gia_ManPoNum(
p); i++ )
545 if ( i % 10000 == 0 )
546 printf(
"%8d finished...\r", i );
550 Vec_IntFree( vObjs );
552 Abc_PrintTime( 1,
"Time", Abc_Clock() - clk );
570 if ( Gia_ObjIsTravIdCurrentId(
p, iObj) )
572 Gia_ObjSetTravIdCurrentId(
p, iObj);
573 pObj = Gia_ManObj(
p, iObj );
574 if ( Gia_ObjIsCi(pObj) )
576 assert( Gia_ObjIsAnd(pObj) );
579 Vec_IntPush( vNodes, iObj );
584 Vec_IntClear( vNodes );
604 if ( Gia_ObjIsTravIdCurrentId(
p, iObj) )
606 Gia_ObjSetTravIdCurrentId(
p, iObj);
607 pObj = Gia_ManObj(
p, iObj );
608 if ( Gia_ObjIsCo(pObj) )
610 assert( Gia_ObjIsAnd(pObj) );
613 Vec_IntPush( vNodes, iObj );
618 Vec_IntClear( vNodes );
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Vec_Wec_t * Gia_ManLevelizeR(Gia_Man_t *p)
int Gia_ManSuppSize(Gia_Man_t *p, int *pNodes, int nNodes)
void Gia_ManCollectTfo_rec(Gia_Man_t *p, int iObj, Vec_Int_t *vNodes)
int Gia_ManSuppSize_rec(Gia_Man_t *p, Gia_Obj_t *pObj)
void Gia_ManCollectTfo(Gia_Man_t *p, Vec_Int_t *vRoots, Vec_Int_t *vNodes)
void Gia_ManCollectNodesCis_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vNodes)
void Gia_ManCollectSeq_rec(Gia_Man_t *p, int Id, Vec_Int_t *vRoots, Vec_Int_t *vObjs)
int Gia_ManConeSize_rec(Gia_Man_t *p, Gia_Obj_t *pObj)
Vec_Int_t * Gia_ManOrderReverse(Gia_Man_t *p)
int Gia_ManSuppSizeOne(Gia_Man_t *p, Gia_Obj_t *pObj)
void Gia_ManCollectSeqTest(Gia_Man_t *p)
Vec_Vec_t * Gia_ManLevelize(Gia_Man_t *p)
void Gia_ManCollectAnds_rec(Gia_Man_t *p, int iObj, Vec_Int_t *vNodes)
void Gia_ManCollectTest(Gia_Man_t *p)
void Gia_ManCollectTfi(Gia_Man_t *p, Vec_Int_t *vRoots, Vec_Int_t *vNodes)
int Gia_ManSuppSizeTest(Gia_Man_t *p)
int Gia_ManConeSize(Gia_Man_t *p, int *pNodes, int nNodes)
Vec_Int_t * Gia_ManCollectNodesCis(Gia_Man_t *p, int *pNodes, int nNodes)
void Gia_ManCollectCis(Gia_Man_t *p, int *pNodes, int nNodes, Vec_Int_t *vSupp)
ABC_NAMESPACE_IMPL_START void Gia_ManCollectCis_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vSupp)
DECLARATIONS ///.
Vec_Int_t * Gia_ManCollectAndsAll(Gia_Man_t *p)
void Gia_ManCollectTfi_rec(Gia_Man_t *p, int iObj, Vec_Int_t *vNodes)
Vec_Int_t * Gia_ManCollectSeq(Gia_Man_t *p, int *pPos, int nPos)
void Gia_ManCollectAnds(Gia_Man_t *p, int *pNodes, int nNodes, Vec_Int_t *vNodes, Vec_Int_t *vLeaves)
#define Gia_ManForEachAnd(p, pObj, i)
int Gia_ManLevelRNum(Gia_Man_t *p)
struct Gia_Obj_t_ Gia_Obj_t
struct Gia_Man_t_ Gia_Man_t
void Gia_ManIncrementTravId(Gia_Man_t *p)
#define Gia_ObjForEachFanoutStaticId(p, Id, FanId, i)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
#define Gia_ManForEachCo(p, pObj, i)
int Gia_ManLevelNum(Gia_Man_t *p)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
#define Vec_VecForEachLevelReverse(vGlob, vVec, i)
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.