51 vPiOuts = Vec_IntAlloc( Gia_ManPiNum(
p) );
53 pNew->
pName = Abc_UtilStrsav(
p->pName );
54 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
56 Gia_ManConst0(
p)->Value = 0;
58 Vec_IntPush( vPiOuts, Gia_ManAppendCi(pNew) );
60 pObj->
Value = Gia_ManAppendCi( pNew );
62 pObj->
Value = Gia_ManAppendCi( pNew );
64 pObj->
Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
66 pObj->
Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
68 pObj->
Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
70 Gia_ManAppendCo( pNew, Vec_IntEntry(vPiOuts, i) );
72 Vec_IntFree( vPiOuts );
89 if ( pObj->
Value != ~0 )
91 assert( Gia_ObjIsAnd(pObj) );
94 return pObj->
Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
114 pNew->
pName = Abc_UtilStrsav(
p->pName );
115 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
117 Gia_ManConst0(
p)->Value = 0;
119 pObj->
Value = Gia_ManAppendCi( pNew );
120 for ( i = Gia_ManPiNum(
p) - nFlopsOld; i < Gia_ManPiNum(
p); i++ )
121 Gia_ManPi(
p, i)->Value = Gia_ManAppendCi( pNew );
125 Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
146 int nFlopsOld = Gia_ManRegNum(
p);
149 printf(
"Original AIG:\n" );
157 printf(
"After PI trimming:\n" );
165 printf(
"After PI-2-FF transformation:\n" );
180 printf(
"After min-area retiming:\n" );
189 printf(
"After FF-2-PI transformation:\n" );
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
Gia_Man_t * Gia_ManDupFf2In(Gia_Man_t *p, int nFlopsOld)
ABC_NAMESPACE_IMPL_START Gia_Man_t * Gia_ManDupIn2Ff(Gia_Man_t *p)
DECLARATIONS ///.
Gia_Man_t * Abs_RpmPerformOld(Gia_Man_t *p, int fVerbose)
int Gia_ManDupFf2In_rec(Gia_Man_t *pNew, Gia_Obj_t *pObj)
void Aig_ManStop(Aig_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Aig_Man_t * Gia_ManToAigSimple(Gia_Man_t *p)
Gia_Man_t * Gia_ManFromAigSimple(Aig_Man_t *p)
void Gia_ManStop(Gia_Man_t *p)
#define Gia_ManForEachRo(p, pObj, i)
#define Gia_ManForEachPo(p, pObj, i)
#define Gia_ManForEachAnd(p, pObj, i)
Gia_Man_t * Gia_ManDupTrimmed(Gia_Man_t *p, int fTrimCis, int fTrimCos, int fDualOut, int OutValue)
void Gia_ManSetRegNum(Gia_Man_t *p, int nRegs)
#define Gia_ManForEachPi(p, pObj, i)
Gia_Man_t * Gia_ManStart(int nObjsMax)
FUNCTION DEFINITIONS ///.
struct Gia_Obj_t_ Gia_Obj_t
void Gia_ManFillValue(Gia_Man_t *p)
struct Gia_Man_t_ Gia_Man_t
void Gia_ManPrintStats(Gia_Man_t *p, Gps_Par_t *pPars)
#define Gia_ManForEachRi(p, pObj, i)
Aig_Man_t * Saig_ManRetimeMinArea(Aig_Man_t *p, int nMaxIters, int fForwardOnly, int fBackwardOnly, int fInitial, int fVerbose)