56 if ( Aig_ObjIsTravIdCurrent(pAig, pObj) )
58 Aig_ObjSetTravIdCurrent(pAig, pObj);
59 if ( Aig_ObjIsCo(pObj) )
61 Vec_PtrPush( vFanout, pObj );
81 Vec_PtrClear( vFanout );
104 if ( Saig_ObjIsPo(pAig, pObj) )
106 vGates = Vec_VecEntry( vGatesAll, Aig_ObjCioId(pObj) - Saig_ManPoNum(pAig) );
107 if ( Vec_PtrFind( vGates, pGate ) == -1 )
129 vFanout = Vec_PtrAlloc( 100 );
130 vGatesFull = Vec_PtrAlloc( 100 );
133 pGateR = Aig_Regular(pGate);
139 Vec_PtrPush( vGatesFull, pGate );
141 Vec_PtrFree( vFanout );
143 Aig_Regular(pGate)->fMarkA = 0;
164 int i, nTransSaved = 0;
169 return (
float)100.0*nTransSaved/32/nFrames/
nWords/Vec_VecSize(vGates);
191 Aig_Obj_t * pObjLi, * pObjLo, * pCand, * pCandBest;
192 int i, k, nHitsCur, nHitsMax, Counter = 0;
194 int nTransTotal = 0, nTransSaved = 0;
195 vGates = Vec_VecStart( Saig_ManRegNum(pAig) );
201 vCands = Vec_VecEntry( vGatesAll, i );
206 printf(
"Clock gate candidate is invalid!\n" );
209 if ( nHitsMax < nHitsCur )
215 if ( pCandBest != NULL )
217 Vec_VecPush( vGates, i, pCandBest );
219 nTransSaved += nHitsMax;
221 nTransTotal += 32 * nFrames *
nWords;
226 printf(
"Gating signals = %6d. Gated flops = %6d. (Total flops = %6d.)\n",
227 Vec_VecSizeSize(vGatesAll), Counter, Saig_ManRegNum(pAig) );
231 ABC_PRT(
"Time", Abc_Clock() - clk );
260 int i, k, Counter = 0;
266 Aig_Regular(pGate)->fMarkA = 1;
268 vGates = Vec_VecStart( Saig_ManRegNum(pAig) );
270 if ( Aig_Regular(pGate)->fMarkA )
271 Vec_VecPush( vGates, i, pGate );
274 Aig_Regular(pGate)->fMarkA = 0;
278 Counter += (int)(Vec_PtrSize(vOne) > 0);
284 printf(
"Gating signals = %6d. Gated flops = %6d. (Total flops = %6d.)\n",
285 Vec_VecSizeSize(vGatesAll), Counter, Saig_ManRegNum(pAig) );
286 printf(
"Complete gates = %6d. Gated transitions = %5.2f %%. ",
288 ABC_PRT(
"Time", Abc_Clock() - clk );
290 Vec_PtrFree( vCompletes );
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
#define Aig_ObjForEachFanout(p, pObj, pFanout, iFan, i)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
struct Aig_Obj_t_ Aig_Obj_t
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
int Ssw_SmlCountEqual(Ssw_Sml_t *p, Aig_Obj_t *pObjLi, Aig_Obj_t *pObjLo)
int Ssw_SmlNodeCountOnesRealVec(Ssw_Sml_t *p, Vec_Ptr_t *vObjs)
int Ssw_SmlCountXorImplication(Ssw_Sml_t *p, Aig_Obj_t *pObjLi, Aig_Obj_t *pObjLo, Aig_Obj_t *pCand)
int Ssw_SmlNodeCountOnesReal(Ssw_Sml_t *p, Aig_Obj_t *pObj)
void Cgt_ManCollectFanoutPos(Aig_Man_t *pAig, Aig_Obj_t *pObj, Vec_Ptr_t *vFanout)
int Cgt_ManCheckGateComplete(Aig_Man_t *pAig, Vec_Vec_t *vGatesAll, Aig_Obj_t *pGate, Vec_Ptr_t *vFanout)
void Cgt_ManCollectFanoutPos_rec(Aig_Man_t *pAig, Aig_Obj_t *pObj, Vec_Ptr_t *vFanout)
FUNCTION DEFINITIONS ///.
Vec_Ptr_t * Cgt_ManCompleteGates(Aig_Man_t *pAig, Vec_Vec_t *vGatesAll, int nOdcMax, int fVerbose)
Vec_Vec_t * Cgt_ManDecideSimple(Aig_Man_t *pAig, Vec_Vec_t *vGatesAll, int nOdcMax, int fVerbose)
ABC_NAMESPACE_IMPL_START int Ssw_SmlCheckXorImplication(Ssw_Sml_t *p, Aig_Obj_t *pObjLi, Aig_Obj_t *pObjLo, Aig_Obj_t *pCand)
DECLARATIONS ///.
float Cgt_ManComputeCoverage(Aig_Man_t *pAig, Vec_Vec_t *vGates)
Vec_Vec_t * Cgt_ManDecideArea(Aig_Man_t *pAig, Vec_Vec_t *vGatesAll, int nOdcMax, int fVerbose)
#define Saig_ManForEachLiLo(p, pObjLi, pObjLo, i)
struct Ssw_Sml_t_ Ssw_Sml_t
Ssw_Sml_t * Ssw_SmlSimulateSeq(Aig_Man_t *pAig, int nPref, int nFrames, int nWords)
void Ssw_SmlStop(Ssw_Sml_t *p)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
#define Vec_VecForEachEntry(Type, vGlob, pEntry, i, k)
#define Vec_VecForEachLevel(vGlob, vVec, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.