52 assert( Gia_ObjIsAnd(pObj) );
53 assert( !Gia_ObjIsBuf(pObj) );
65 pObj->
fMark0 = Gia_ObjIsAnd(pObj) && !Gia_ObjIsBuf(pObj);
105 assert( Gia_ManRegNum(
p) == 0 );
106 assert( nOutputs < Gia_ManCoNum(
p) );
133 if ( Gia_ObjIsCo(pObj) )
135 if ( Gia_ObjIsRo(
p, pObj) )
137 Vec_IntPush( vRoots, Gia_ObjId(
p, Gia_ObjRoToRi(
p, pObj)) );
140 assert( Gia_ObjIsAnd(pObj) );
162 Gia_ManConst0(
p)->fMark0 = 0;
168 Vec_IntFree( vRoots );
204 unsigned * pCi2Lit, * pMaps;
205 int i, iLit, nFanins = 1, Counter0 = 0, Counter = 0;
207 Gia_ObjFanin0(pObjRi)->Value = 0;
209 if ( Gia_ObjFanin0(pObjRi)->Value == 0 )
210 Gia_ObjFanin0(pObjRi)->Value = 2*nFanins++;
215 iLit = Gia_ObjFanin0Copy( pObjRi );
216 if ( Gia_ObjFaninId0p(
p, pObjRi) == 0 && Gia_ObjFaninC0(pObjRi) == 0 )
217 pCi2Lit[Gia_ManPiNum(
p)+i] = 0, Counter0++;
218 else if ( ~pMaps[iLit] )
219 pCi2Lit[Gia_ManPiNum(
p)+i] = pMaps[iLit], Counter++;
221 pMaps[iLit] = Abc_Var2Lit( Gia_ObjId(
p, pObjRo), 0 );
239 if ( Counter0 || Counter )
261 if ( Gia_ManRegNum(
p) == 0 )
264 printf(
"Performing sequential cleanup.\n" );
268 if ( fConst && Gia_ManRegNum(
p) )
275 if ( fVerbose && fEquiv )
276 printf(
"Merging combinationally equivalent flops.\n" );
284 if ( Gia_ManRegNum(
p) == 0 )
#define ABC_FALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
int Gia_ManCombMarkUsed(Gia_Man_t *p)
int Gia_ManSeqMarkUsed(Gia_Man_t *p)
int Gia_ManSeqMarkUsed_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vRoots)
Gia_Man_t * Gia_ManReduceEquiv(Gia_Man_t *p, int fVerbose)
ABC_NAMESPACE_IMPL_START int Gia_ManCombMarkUsed_rec(Gia_Man_t *p, Gia_Obj_t *pObj)
DECLARATIONS ///.
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
Gia_Man_t * Gia_ManSeqStructSweep(Gia_Man_t *p, int fConst, int fEquiv, int fVerbose)
Gia_Man_t * Gia_ManCleanupOutputs(Gia_Man_t *p, int nOutputs)
Gia_Man_t * Gia_ManSeqCleanup(Gia_Man_t *p)
void Gia_ManStop(Gia_Man_t *p)
void Gia_ManReportImprovement(Gia_Man_t *p, Gia_Man_t *pNew)
#define Gia_ManForEachBuf(p, pObj, i)
Gia_Man_t * Gia_ManDupDfsCiMap(Gia_Man_t *p, int *pCi2Lit, Vec_Int_t *vLits)
Vec_Int_t * Gia_ManCollectPoIds(Gia_Man_t *p)
#define Gia_ManForEachPi(p, pObj, i)
struct Gia_Obj_t_ Gia_Obj_t
Gia_Man_t * Gia_ManDupMarked(Gia_Man_t *p)
struct Gia_Man_t_ Gia_Man_t
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
#define Gia_ManForEachCo(p, pObj, i)
#define Gia_ManForEachRiRo(p, pObjRi, pObjRo, i)
Gia_Man_t * Gia_ManReduceConst(Gia_Man_t *pAig, int fVerbose)
void Gia_ManSetMark0(Gia_Man_t *p)
#define Gia_ManForEachRi(p, pObj, i)