72 unsigned * pInfoCand, * pInfoMiter;
79 for ( w = 0; w <
nWords; w++ )
80 if ( pInfoCand[w] & pInfoMiter[w] )
85 for ( w = 0; w <
nWords; w++ )
86 if ( ~pInfoCand[w] & pInfoMiter[w] )
111 if ( p->nPatts == 32 * p->nPattWords )
133 Aig_Obj_t * pMiter, * pCand, * pMiterFrame, * pCandFrame, * pMiterPart, * pCandPart;
134 int i, k, RetValue, nCalls;
137 for ( i = iStart; i < iStart + nOutputs; i++ )
181 if ( p->pPars->fVerbose )
205 int nCallsUnsat = p->nCallsUnsat;
206 int nCallsSat = p->nCallsSat;
207 int nCallsUndec = p->nCallsUndec;
208 int nCallsFiltered = p->nCallsFiltered;
210 p->pPart =
Cgt_ManDupPartition( p->pFrame, p->pPars->nVarsMin, p->pPars->nFlopsMin, iStart, p->pCare, p->vSuppsInv, &nOutputs );
218 iStop = iStart + nOutputs;
219 if ( p->pPars->fVeryVerbose )
221 printf(
"%5d : D =%4d. C =%5d. Var =%6d. Pr =%5d. Cex =%5d. F =%4d. Saved =%6d. ",
222 iStart, iStop-iStart,
Aig_ManCoNum(p->pPart)-nOutputs, p->pSat->size,
223 p->nCallsUnsat-nCallsUnsat,
224 p->nCallsSat -nCallsSat,
225 p->nCallsUndec-nCallsUndec,
226 p->nCallsFiltered-nCallsFiltered );
258 p->vUseful = vUseful;
269 vGatesAll = p->vGatesAll;
291 if ( pPars->fAreaOnly )
303 if ( pPars->fVerbose )
309 if ( pPars->fVerbose )
313 printf(
"Nodes: Before CG = %6d. After CG = %6d. (%6.2f %%). Total after CG = %6d.\n",
void Cgt_SimulationRecord(Cgt_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
void Cgt_ManStop(Cgt_Man_t *p)
static void Vec_VecPush(Vec_Vec_t *p, int Level, void *Entry)
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Cgt_ManClean(Cgt_Man_t *p)
ABC_NAMESPACE_IMPL_START void Cgt_SetDefaultParams(Cgt_Par_t *p)
DECLARATIONS ///.
Vec_Vec_t * Cgt_ClockGatingInt(Aig_Man_t *pAig, Aig_Man_t *pCare, Cgt_Par_t *pPars, Vec_Int_t *vUseful)
static void sat_solver_compress(sat_solver *s)
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
static int Aig_IsComplement(Aig_Obj_t *p)
static void Vec_PtrCleanSimInfo(Vec_Ptr_t *vInfo, int iWord, int nWords)
static Aig_Obj_t * Aig_Regular(Aig_Obj_t *p)
unsigned Aig_ManRandom(int fReset)
static Aig_Obj_t * Aig_Not(Aig_Obj_t *p)
static abctime Abc_Clock()
static void Vec_VecFree(Vec_Vec_t *p)
static int Aig_ManNodeNum(Aig_Man_t *p)
static int sat_solver_var_value(sat_solver *s, int v)
int Cgt_SimulationFilter(Cgt_Man_t *p, Aig_Obj_t *pCandPart, Aig_Obj_t *pMiterPart)
static int Aig_ManCoNum(Aig_Man_t *p)
Aig_Man_t * Cgt_ClockGating(Aig_Man_t *pAig, Aig_Man_t *pCare, Cgt_Par_t *pPars)
static void Bar_ProgressUpdate(Bar_Progress_t *p, int nItemsCur, char *pString)
#define ABC_NAMESPACE_IMPL_END
Cgt_Man_t * Cgt_ManCreate(Aig_Man_t *pAig, Aig_Man_t *pCare, Cgt_Par_t *pPars)
DECLARATIONS ///.
void Cgt_ClockGatingRangeCheck(Cgt_Man_t *p, int iStart, int nOutputs)
Aig_Man_t * Cgt_ManDupPartition(Aig_Man_t *pFrame, int nVarsMin, int nFlopsMin, int iStart, Aig_Man_t *pCare, Vec_Vec_t *vSuppsInv, int *pnOutputs)
static Aig_Obj_t * Saig_ManLi(Aig_Man_t *p, int i)
typedefABC_NAMESPACE_HEADER_START struct Cgt_Par_t_ Cgt_Par_t
INCLUDES ///.
static int Saig_ManRegNum(Aig_Man_t *p)
static int Aig_ManObjNumMax(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static void Abc_InfoSetBit(unsigned *p, int i)
int Cgt_ClockGatingRange(Cgt_Man_t *p, int iStart)
void * Cnf_DataWriteIntoSolver(Cnf_Dat_t *p, int nFrames, int fInit)
#define Aig_ManForEachObj(p, pObj, i)
Cnf_Dat_t * Cnf_DeriveSimple(Aig_Man_t *p, int nOutputs)
Aig_Man_t * Cgt_ManDeriveAigForGating(Cgt_Man_t *p)
static int Vec_VecSize(Vec_Vec_t *p)
Aig_Man_t * Cgt_ManDeriveGatedAig(Aig_Man_t *pAig, Vec_Vec_t *vGates, int fReduce, int *pnUsedNodes)
static void Vec_PtrReallocSimInfo(Vec_Ptr_t *vInfo)
static int Abc_BitWordNum(int nBits)
static int Aig_ObjId(Aig_Obj_t *pObj)
Vec_Vec_t * Cgt_ManDecideSimple(Aig_Man_t *pAig, Vec_Vec_t *vGatesAll, int nOdcMax, int fVerbose)
Vec_Vec_t * Cgt_ManDecideArea(Aig_Man_t *pAig, Vec_Vec_t *vGatesAll, int nOdcMax, int fVerbose)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
int Cgt_CheckImplication(Cgt_Man_t *p, Aig_Obj_t *pGate, Aig_Obj_t *pFlop)
DECLARATIONS ///.
void Bar_ProgressStop(Bar_Progress_t *p)
Bar_Progress_t * Bar_ProgressStart(FILE *pFile, int nItemsTotal)
FUNCTION DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Cgt_Man_t_ Cgt_Man_t
INCLUDES ///.
static Vec_Ptr_t * Vec_PtrAllocSimInfo(int nEntries, int nWords)
void Cgt_ManDetectCandidates(Aig_Man_t *pAig, Vec_Int_t *vUseful, Aig_Obj_t *pObj, int nLevelMax, Vec_Ptr_t *vCands)
MACRO DEFINITIONS ///.
Vec_Vec_t * Cgt_ClockGatingCandidates(Aig_Man_t *pAig, Aig_Man_t *pCare, Cgt_Par_t *pPars, Vec_Int_t *vUseful)