50 p->vIns = Vec_PtrAlloc( 8 );
51 p->vOuts = Vec_PtrAlloc( 8 );
52 p->Id = Vec_PtrSize( pMan->vGroups );
53 Vec_PtrPush( pMan->vGroups,
p );
72 Vec_PtrWriteEntry(
p->pMan->vGroups,
p->Id, NULL );
73 Vec_PtrFreeP( &
p->vIns );
74 Vec_PtrFreeP( &
p->vOuts );
75 Vec_PtrFreeP( &
p->vNodes );
93 if ( Aig_ObjIsTravIdCurrent(pAig, pObj) )
95 Aig_ObjSetTravIdCurrent(pAig, pObj);
96 if ( Aig_ObjIsConst1(pObj) )
98 if ( Aig_ObjIsCo(pObj) )
103 assert( Aig_ObjIsAnd(pObj) );
106 Vec_PtrPush( vNodes, pObj );
125 vNodes = Vec_PtrAlloc( 100 );
128 Aig_ObjSetTravIdCurrent( pGroup->
pMan->pAig, pObj );
130 Aig_ObjSetTravIdPrevious( pGroup->
pMan->pAig, pObj );
149 if ( Aig_ObjIsTravIdCurrent(pAig, pObj) )
151 Aig_ObjSetTravIdCurrent(pAig, pObj);
152 if ( Aig_ObjIsConst1(pObj) )
156 Vec_PtrPush( vSupp, pObj );
159 assert( Aig_ObjIsAnd(pObj) );
181 Vec_PtrPush(
p->vOuts, pObj );
183 if ( Aig_ObjIsCo(pObj) )
214 Vec_PtrPush(
p->vOuts, pObj );
236 Vec_PtrPush(
p->vIns, pObj );
259 Vec_PtrPush(
p->vIns, pObj );
261 Vec_PtrPushUnique(
p->vIns, pObj );
264 Vec_PtrPush(
p->vOuts, pObj );
266 Vec_PtrPushUnique(
p->vOuts, pObj );
288 if ( Aig_ObjIsTravIdCurrent(
p, pObj) )
290 if ( Aig_ObjIsTravIdPrevious(
p, pObj) )
292 Aig_ObjSetTravIdCurrent(
p, pObj);
295 Aig_ObjSetTravIdCurrent(
p, pObj);
296 assert( Aig_ObjIsNode(pObj) );
322 Aig_ObjSetTravIdCurrent( pMan->pAig, pObj );
325 if ( !Aig_ObjIsTravIdCurrent( pMan->pAig, pObj ) )
326 Vec_PtrPush(
p->vOuts, pObj );
334 if ( Aig_ObjIsTravIdCurrent( pMan->pAig, pObj ) )
335 Vec_PtrPush(
p->vIns, pObj );
360 assert( pMan->vGroups == NULL );
361 pMan->vGroups = Vec_PtrAlloc( 1000 );
391 int i, k, Span = 0, SpanMax = 0;
395 if ( Vec_IntEntry(
p->vVarBegs, pVar->
Id) == i )
398 if ( Vec_IntEntry(
p->vVarBegs, pVar->
Id) == i )
401 SpanMax = Abc_MaxInt( SpanMax, Span );
402printf(
"%d ", Span );
405 if ( Vec_IntEntry(
p->vVarEnds, pVar->
Id) == i )
408 if ( Vec_IntEntry(
p->vVarEnds, pVar->
Id) == i )
412printf(
"Max = %d\n", SpanMax );
432 if ( pObj->
Id == iVar )
435 if ( pObj->
Id == iVar )
457 if ( Vec_IntEntry(
p->vObj2Var, i) < 0 )
459 printf(
"%3d :", i );
460 for ( k = 0; k < Vec_IntEntry(
p->vVarBegs, i); k++ )
462 for ( ; k <= Vec_IntEntry(
p->vVarEnds, i); k++ )
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
#define Aig_ManForEachObj(p, pObj, i)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
struct Aig_Obj_t_ Aig_Obj_t
#define Aig_ManForEachNode(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
#define Aig_ManForEachObjVec(vIds, p, pObj, i)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Llb_Grp_t * Llb_ManGroupCreateFromCuts(Llb_Man_t *pMan, Vec_Int_t *vCut1, Vec_Int_t *vCut2)
int Llb_ManGroupHasVar(Llb_Man_t *p, int iGroup, int iVar)
void Llb_ManGroupStop(Llb_Grp_t *p)
Llb_Grp_t * Llb_ManGroupCreate(Llb_Man_t *pMan, Aig_Obj_t *pObj)
void Llb_ManGroupCollect_rec(Aig_Man_t *pAig, Aig_Obj_t *pObj, Vec_Ptr_t *vNodes)
Vec_Ptr_t * Llb_ManGroupCollect(Llb_Grp_t *pGroup)
void Llb_ManPrintSpan(Llb_Man_t *p)
Llb_Grp_t * Llb_ManGroupCreateFirst(Llb_Man_t *pMan)
Llb_Grp_t * Llb_ManGroupsCombine(Llb_Grp_t *p1, Llb_Grp_t *p2)
void Llb_ManPrepareGroups(Llb_Man_t *pMan)
void Llb_ManGroupMarkNodes_rec(Aig_Man_t *p, Aig_Obj_t *pObj)
void Llb_ManGroupCreate_rec(Aig_Man_t *pAig, Aig_Obj_t *pObj, Vec_Ptr_t *vSupp)
void Llb_ManPrintHisto(Llb_Man_t *p)
ABC_NAMESPACE_IMPL_START Llb_Grp_t * Llb_ManGroupAlloc(Llb_Man_t *pMan)
DECLARATIONS ///.
Llb_Grp_t * Llb_ManGroupCreateLast(Llb_Man_t *pMan)
typedefABC_NAMESPACE_HEADER_START struct Llb_Man_t_ Llb_Man_t
INCLUDES ///.
struct Llb_Grp_t_ Llb_Grp_t
#define Saig_ManForEachLi(p, pObj, i)
#define Saig_ManForEachLo(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.