47 int iFan0, iFan1, iTemp;
48 assert( !Aig_IsComplement(pObj) );
51 assert( !Aig_ObjIsConst1(pObj) );
52 if ( Aig_ObjIsNode(pObj) )
57 if ( --
p->pRefs[iFan0] == 0 )
59 iFan0 = Fsim_Var2Lit( iFan0, Aig_ObjFaninC0(pObj) );
60 if ( --
p->pRefs[iFan1] == 0 )
62 iFan1 = Fsim_Var2Lit( iFan1, Aig_ObjFaninC1(pObj) );
63 if (
p->pAig->pEquivs )
66 else if ( Aig_ObjIsPo(pObj) )
68 assert( Aig_ObjRefs(pObj) == 0 );
70 if ( --
p->pRefs[iFan0] == 0 )
72 iFan0 = Fsim_Var2Lit( iFan0, Aig_ObjFaninC0(pObj) );
78 Vec_IntPush(
p->vCis2Ids, Aig_ObjPioNum(pObj) );
81 iTemp = iFan0, iFan0 = iFan1, iFan1 = iTemp;
82 p->pFans0[
p->nObjs] = iFan0;
83 p->pFans1[
p->nObjs] = iFan1;
84 p->pRefs[
p->nObjs] = Aig_ObjRefs(pObj);
85 if (
p->pRefs[
p->nObjs] )
86 if (
p->nCrossCutMax < ++
p->nCrossCut )
87 p->nCrossCutMax =
p->nCrossCut;
88 return pObj->
iData =
p->nObjs++;
111 p->nPis = Saig_ManPiNum(pAig);
112 p->nPos = Saig_ManPoNum(pAig);
113 p->nCis = Aig_ManPiNum(pAig);
114 p->nCos = Aig_ManPoNum(pAig);
115 p->nNodes = Aig_ManNodeNum(pAig);
116 nObjs =
p->nCis +
p->nCos +
p->nNodes + 2;
120 p->vCis2Ids = Vec_IntAlloc( Aig_ManPiNum(pAig) );
122 p->pFans0[0] =
p->pFans1[0] = 0;
123 p->pFans0[1] =
p->pFans1[1] = 0;
126 pObj = Aig_ManConst1( pAig );
128 p->pRefs[1] = Aig_ObjRefs(pObj);
131 Aig_ManForEachPi( pAig, pObj, i )
132 if ( Aig_ObjRefs(pObj) == 0 )
134 Aig_ManForEachPo( pAig, pObj, i )
136 assert( Vec_IntSize(
p->vCis2Ids) == Aig_ManPiNum(pAig) );
143 p->pRefs[pObj->
iData] = Aig_ObjRefs(pObj);
146 p->vLos = Vec_IntAlloc( Aig_ManRegNum(pAig) );
148 Vec_IntPush(
p->vLos, pObj->
iData );
150 p->vLis = Vec_IntAlloc( Aig_ManRegNum(pAig) );
152 Vec_IntPush(
p->vLis, pObj->
iData );
154 p->nFront = 1 + (int)(1.1 *
p->nCrossCutMax);
171 Vec_IntFree(
p->vCis2Ids );
172 Vec_IntFree(
p->vLos );
173 Vec_IntFree(
p->vLis );
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
#define Aig_ManForEachObj(p, pObj, i)
struct Aig_Obj_t_ Aig_Obj_t
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
void Aig_ManCleanData(Aig_Man_t *p)
void Fsim_ManFront(Fsim_Man_t *p, int fCompressAig)
FUNCTION DECLARATIONS ///.
void Fsim_ManDelete(Fsim_Man_t *p)
ABC_NAMESPACE_IMPL_START int Fsim_ManCreate_rec(Fsim_Man_t *p, Aig_Obj_t *pObj)
DECLARATIONS ///.
void Fsim_ManTest(Aig_Man_t *pAig)
Fsim_Man_t * Fsim_ManCreate(Aig_Man_t *pAig)
typedefABC_NAMESPACE_HEADER_START struct Fsim_Man_t_ Fsim_Man_t
INCLUDES ///.
#define Saig_ManForEachLi(p, pObj, i)
#define Saig_ManForEachLo(p, pObj, i)