51 int i, iBox, nBoxIns, nBoxOuts, iShift, nRealCis;
67 assert( iFlop >= 0 && iFlop < nRegs );
78 for ( i = 0; i < nBoxOuts; i++ )
82 for ( i = 0; i < nBoxIns; i++ )
84 for ( i = 0; i < nBoxIns; i++ )
102 for ( i = 0; i < nRealCis - nRegs; i++ )
130 int curCi, curCo, nBoxIns, nBoxOuts;
131 int i, k, iShift, nMarked;
173 for ( k = 0; k < nBoxIns; k++ )
175 for ( k = 0; k < nBoxOuts; k++ )
180 assert( nMarked == 0 || nMarked == nBoxIns + nBoxOuts );
191 assert( pNew->pAigExtra == NULL );
321 if ( pReprs[fanId] == -1 )
329 if ( pReprs[fanId] == -1 )
379 for ( i = 0; i < nBoxes; i++ )
410 int i, nCountReg = 0, nCountCarry = 0;
426 if ( nCountReg || nCountCarry )
427 printf(
"Warning: AIG with boxes has internal fanout in %d complex flops and %d carries.\n", nCountReg, nCountCarry );
449 int i, iLitClp, iLitClp2, iReprClp, fCompl;
450 int nConsts = 0, nReprs = 0;
451 assert( pManTime != NULL );
465 printf(
"Computed %d const objects and %d other objects.\n", nConsts, nReprs );
466 nConsts = nReprs = 0;
481 printf(
"Fixed %d flop inputs and %d box/box connections (out of %d non-flop boxes).\n",
499 if ( pClp2Gia[iReprClp] == -1 )
500 pClp2Gia[iReprClp] = i;
508 pReprs[i] =
Abc_Var2Lit( pClp2Gia[iReprClp], fCompl );
510 if ( pClp2Gia[iReprClp] == 0 )
520 printf(
"Found %d const objects and %d other objects.\n", nConsts, nReprs );
584 int i, Class, nFlops;
586 assert( iDom >= 1 && iDom <= nDoms );
605 pNew->
nRegs = nFlops;
635 for ( iDom = 1; iDom <= nDoms; iDom++ )
int Tim_ManBoxOutputFirst(Tim_Man_t *p, int iBox)
int Tim_ManBoxForCi(Tim_Man_t *p, int iCo)
static int Gia_ManAppendAnd(Gia_Man_t *p, int iLit0, int iLit1)
void Gia_ManCreateRefs(Gia_Man_t *p)
Gia_Man_t * Gia_ManDupUnnormalize(Gia_Man_t *p)
Gia_Man_t * Gia_ManDup(Gia_Man_t *p)
void Gia_ManStop(Gia_Man_t *p)
Aig_Man_t * Gia_ManToAigSimple(Gia_Man_t *p)
Gia_Man_t * Gia_ManUpdateExtraAig(void *pTime, Gia_Man_t *pAig, Vec_Int_t *vBoxPres)
static Vec_Int_t * Vec_IntDup(Vec_Int_t *pVec)
void Gia_ManReprFromAigRepr(Aig_Man_t *pAig, Gia_Man_t *pGia)
void Gia_ManPrintStats(Gia_Man_t *p, Gps_Par_t *pPars)
static int Gia_ManPoNum(Gia_Man_t *p)
static int Gia_ObjFaninC1(Gia_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
static Gia_Obj_t * Gia_ManCi(Gia_Man_t *p, int v)
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
int Gia_ManRegBoxNum(Gia_Man_t *p)
static int Vec_IntCountEntry(Vec_Int_t *p, int Entry)
void Aig_ManStop(Aig_Man_t *p)
static int Gia_ObjIsTravIdCurrent(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Aig_ManObjNum(Aig_Man_t *p)
Gia_Man_t * Gia_ManFraigSweepSimple(Gia_Man_t *p, void *pPars)
static Gia_Obj_t * Gia_ManPo(Gia_Man_t *p, int v)
Gia_Man_t * Gia_ManDupPermFlop(Gia_Man_t *p, Vec_Int_t *vFfPerm)
int Tim_ManBoxOutputLast(Tim_Man_t *p, int iBox)
void Gia_ManSweepComputeOneDomainEquivs(Gia_Man_t *p, Vec_Int_t *vRegClasses, int iDom, void *pParsS, int fConst, int fEquiv, int fVerbose)
static int Gia_ManAppendCi(Gia_Man_t *p)
void Gia_ManCleanMark0(Gia_Man_t *p)
static int Gia_ObjIsConst0(Gia_Obj_t *pObj)
static int Abc_Var2Lit(int Var, int fCompl)
static int Gia_ObjValue(Gia_Obj_t *pObj)
static int Gia_ObjFaninId1p(Gia_Man_t *p, Gia_Obj_t *pObj)
Gia_Obj_t * Gia_ManFraigMarkCis(Gia_Man_t *p, Gia_Obj_t *pObj, int fMark)
static int Gia_ObjRefNum(Gia_Man_t *p, Gia_Obj_t *pObj)
int Tim_ManBoxOutputNum(Tim_Man_t *p, int iBox)
Gia_Man_t * Gia_ManSweepWithBoxes(Gia_Man_t *p, void *pParsC, void *pParsS, int fConst, int fEquiv, int fVerbose)
typedefABC_NAMESPACE_HEADER_START struct Dch_Pars_t_ Dch_Pars_t
INCLUDES ///.
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
static void Vec_IntReverseOrder(Vec_Int_t *p)
static int Abc_LitNotCond(int Lit, int c)
int * Gia_ManFraigSelectReprs(Gia_Man_t *p, Gia_Man_t *pClp, int fVerbose)
int Gia_ManHasDangling(Gia_Man_t *p)
int Tim_ManPiNum(Tim_Man_t *p)
#define Gia_ManForEachCi(p, pObj, i)
Gia_Man_t * Gia_ManEquivReduce(Gia_Man_t *p, int fUseAll, int fDualOut, int fSkipPhase, int fVerbose)
Gia_Man_t * Gia_ManUpdateExtraAig2(void *pTime, Gia_Man_t *pAig, Vec_Int_t *vBoxesLeft)
static int Abc_LitIsCompl(int Lit)
static Gia_Obj_t * Gia_ManPi(Gia_Man_t *p, int v)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void Gia_ManMarkSeqGiaWithBoxes(Gia_Man_t *p, int fSeq)
int Gia_ManBoxNum(Gia_Man_t *p)
DECLARATIONS ///.
void Gia_ManCheckIntegrityWithBoxes(Gia_Man_t *p)
static int Gia_ObjFanin1Copy(Gia_Obj_t *pObj)
Gia_Man_t * Gia_ManDupNormalize(Gia_Man_t *p)
static int Vec_IntEntry(Vec_Int_t *p, int i)
static int Gia_ObjReprSelf(Gia_Man_t *p, int Id)
static int Vec_IntFindMax(Vec_Int_t *p)
Gia_Obj_t * Gia_ManFraigMarkCos(Gia_Man_t *p, Gia_Obj_t *pObj, int fMark)
static void Gia_ObjSetTravIdCurrent(Gia_Man_t *p, Gia_Obj_t *pObj)
#define ABC_NAMESPACE_IMPL_END
int Tim_ManBoxInputLast(Tim_Man_t *p, int iBox)
Gia_Man_t * Gia_ManFraigReduceGia(Gia_Man_t *p, int *pReprs)
Gia_Man_t * Gia_ManStart(int nObjsMax)
DECLARATIONS ///.
Gia_Obj_t * Gia_ManFraigMarkAnd(Gia_Man_t *p, Gia_Obj_t *pObj)
void Gia_ManSeqCleanupClasses(Gia_Man_t *p, int fConst, int fEquiv, int fVerbose)
Vec_Int_t * Gia_ManComputeCarryOuts(Gia_Man_t *p)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
void Gia_ManFillValue(Gia_Man_t *p)
void Gia_ManFraigSweepPerform(Gia_Man_t *p, void *pPars)
int Tim_ManBoxNum(Tim_Man_t *p)
void Gia_ManTransferTiming(Gia_Man_t *p, Gia_Man_t *pGia)
int Cec_ManLSCorrespondenceClasses(Gia_Man_t *pAig, Cec_ParCor_t *pPars)
int Tim_ManBoxInputNum(Tim_Man_t *p, int iBox)
static int Gia_ObjFanin0Copy(Gia_Obj_t *pObj)
static int Gia_ObjIsCo(Gia_Obj_t *pObj)
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
#define ABC_NAMESPACE_IMPL_START
int Gia_ManNonRegBoxNum(Gia_Man_t *p)
Gia_Man_t * Gia_ManDupCollapse(Gia_Man_t *p, Gia_Man_t *pBoxes, Vec_Int_t *vBoxPres, int fSeq)
static int Gia_ManCiNum(Gia_Man_t *p)
static Gia_Obj_t * Gia_ManCo(Gia_Man_t *p, int v)
static int Vec_IntSize(Vec_Int_t *p)
void * Gia_ManUpdateTimMan2(Gia_Man_t *p, Vec_Int_t *vBoxesLeft, int nTermsDiff)
int Gia_ManFraigCheckCis(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
static Gia_Obj_t * Gia_ManConst0(Gia_Man_t *p)
ABC_NAMESPACE_IMPL_START void Gia_ManMarkSeqGiaWithBoxes_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vRoots)
DECLARATIONS ///.
static int Abc_Lit2Var(int Lit)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
Gia_Man_t * Gia_ManFraigCreateGia(Gia_Man_t *p)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
int Gia_ObjFanin0CopyRepr(Gia_Man_t *p, Gia_Obj_t *pObj, int *pReprs)
void Gia_ManSetPhase(Gia_Man_t *p)
void Dch_ComputeEquivalences(Aig_Man_t *pAig, Dch_Pars_t *pPars)
typedefABC_NAMESPACE_HEADER_START struct Tim_Man_t_ Tim_Man_t
INCLUDES ///.
Gia_Man_t * Gia_ManSweepWithBoxesAndDomains(Gia_Man_t *p, void *pParsS, int fConst, int fEquiv, int fVerbose)
void Gia_ManHashAlloc(Gia_Man_t *p)
#define Gia_ManForEachObj1(p, pObj, i)
void Gia_ManIncrementTravId(Gia_Man_t *p)
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
int Tim_ManBoxInputFirst(Tim_Man_t *p, int iBox)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
Gia_Man_t * Gia_ManDupWithBoxes(Gia_Man_t *p, int fSeq)
char * Abc_UtilStrsav(char *s)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
void * Gia_ManUpdateTimMan(Gia_Man_t *p, Vec_Int_t *vBoxPres)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
int Tim_ManPoNum(Tim_Man_t *p)
int Gia_ObjFanin1CopyRepr(Gia_Man_t *p, Gia_Obj_t *pObj, int *pReprs)
static int Gia_ObjCioId(Gia_Obj_t *pObj)
int Gia_ManClockDomainNum(Gia_Man_t *p)
static int Gia_ManObjNum(Gia_Man_t *p)
#define ABC_FALLOC(type, num)
void Gia_ManHashStop(Gia_Man_t *p)
static int Gia_ManCoNum(Gia_Man_t *p)
void Gia_ManDupRemapEquiv(Gia_Man_t *pNew, Gia_Man_t *p)
DECLARATIONS ///.
static int Gia_ManRegNum(Gia_Man_t *p)