52 if ( p->pHaig == NULL && pObj->
pEquiv )
67 if ( p->pHaig == NULL && pObj->
pEquiv )
150 if ( pvLatches == NULL )
153 *pvLatches = vLatches;
255 int i, k, Level, LevelMax;
256 assert( p->vRequired == NULL );
279 p->vRequired = vLevelsR;
302 fprintf( stdout,
"Manager contains combinational loop!\n" );
303 fprintf( stdout,
"Node \"%d\" is encountered twice on the following path:\n",
Ivy_ObjId(pObj) );
304 fprintf( stdout,
" %d",
Ivy_ObjId(pObj) );
320 fprintf( stdout,
" -> (%d",
Ivy_ObjId(pObj) );
322 fprintf( stdout,
" %d",
Ivy_ObjId(pTemp) );
323 fprintf( stdout,
")" );
340 fprintf( stdout,
" -> %d",
Ivy_ObjId(pObj) );
347 fprintf( stdout,
" -> %d",
Ivy_ObjId(pObj) );
432 unsigned LevelMax = pObj->
Level;
439 pObj->
Level = LevelMax;
441 pTemp->
Level = LevelMax;
466 printf(
"CI %d has a choice, which will not be visualized.\n", pObj->
Id );
static int Ivy_IsComplement(Ivy_Obj_t *p)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
void Ivy_ManCollectCone_rec(Ivy_Obj_t *pObj, Vec_Ptr_t *vCone)
static void Vec_VecPush(Vec_Vec_t *p, int Level, void *Entry)
static Vec_Vec_t * Vec_VecAlloc(int nCap)
FUNCTION DEFINITIONS ///.
int Ivy_ManIsAcyclic(Ivy_Man_t *p)
Vec_Int_t * Ivy_ManDfsSeq(Ivy_Man_t *p, Vec_Int_t **pvLatches)
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
static int Ivy_ObjLevelNew(Ivy_Obj_t *pObj)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static int Vec_PtrPushUnique(Vec_Ptr_t *p, void *Entry)
ABC_NAMESPACE_IMPL_START void Ivy_ManDfs_rec(Ivy_Man_t *p, Ivy_Obj_t *pObj, Vec_Int_t *vNodes)
DECLARATIONS ///.
static int Ivy_ObjFaninId1(Ivy_Obj_t *pObj)
Vec_Int_t * Ivy_ManDfs(Ivy_Man_t *p)
static int Ivy_ManBufNum(Ivy_Man_t *p)
#define Ivy_ManForEachPo(p, pObj, i)
#define Ivy_ManForEachLatch(p, pObj, i)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static int Ivy_ManLatchNum(Ivy_Man_t *p)
int Ivy_ManIsAcyclic_rec(Ivy_Man_t *p, Ivy_Obj_t *pObj)
static int Ivy_ObjIsMarkA(Ivy_Obj_t *pObj)
int Ivy_ManSetLevels(Ivy_Man_t *p, int fHaig)
static void Vec_VecFree(Vec_Vec_t *p)
static int Ivy_ObjIsLatch(Ivy_Obj_t *pObj)
static Ivy_Obj_t * Ivy_ObjFanin1(Ivy_Obj_t *pObj)
static Ivy_Obj_t * Ivy_ObjFanin0(Ivy_Obj_t *pObj)
static int Ivy_ObjIsTravIdPrevious(Ivy_Man_t *p, Ivy_Obj_t *pObj)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
int Ivy_ManLevels(Ivy_Man_t *p)
static int Ivy_ManObjIdMax(Ivy_Man_t *p)
static int Ivy_ObjFaninId0(Ivy_Obj_t *pObj)
static Vec_Int_t * Vec_IntStart(int nSize)
#define Ivy_ManForEachCo(p, pObj, i)
void Ivy_ManIncrementTravId(Ivy_Man_t *p)
DECLARATIONS ///.
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Vec_Vec_t * Ivy_ManLevelize(Ivy_Man_t *p)
static void Ivy_ObjSetTravIdPrevious(Ivy_Man_t *p, Ivy_Obj_t *pObj)
static void Ivy_ObjSetMarkA(Ivy_Obj_t *pObj)
static void Ivy_ObjClearMarkA(Ivy_Obj_t *pObj)
Vec_Int_t * Ivy_ManRequiredLevels(Ivy_Man_t *p)
static int Vec_IntEntry(Vec_Int_t *p, int i)
static int Ivy_ObjRefs(Ivy_Obj_t *pObj)
#define ABC_NAMESPACE_IMPL_END
static Ivy_Obj_t * Ivy_Regular(Ivy_Obj_t *p)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Ivy_ObjIsTravIdCurrent(Ivy_Man_t *p, Ivy_Obj_t *pObj)
static int Ivy_ObjIsNode(Ivy_Obj_t *pObj)
void Ivy_ManCollectCone(Ivy_Obj_t *pObj, Vec_Ptr_t *vFront, Vec_Ptr_t *vCone)
#define Ivy_ManForEachCi(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Ivy_Man_t_ Ivy_Man_t
INCLUDES ///.
#define ABC_NAMESPACE_IMPL_START
static int Ivy_ObjIsAnd(Ivy_Obj_t *pObj)
static int Ivy_ObjIsExor(Ivy_Obj_t *pObj)
static int Vec_IntSize(Vec_Int_t *p)
static int Ivy_ObjIsConst1(Ivy_Obj_t *pObj)
#define Ivy_ManForEachNodeVec(p, vIds, pObj, i)
static int Ivy_ObjIsBuf(Ivy_Obj_t *pObj)
static void Vec_PtrClear(Vec_Ptr_t *p)
static int Ivy_ObjIsCi(Ivy_Obj_t *pObj)
static int Ivy_ManNodeNum(Ivy_Man_t *p)
#define Ivy_ManForEachObj(p, pObj, i)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
int Ivy_ManSetLevels_rec(Ivy_Obj_t *pObj, int fHaig)
static int Ivy_ObjId(Ivy_Obj_t *pObj)
#define Vec_VecForEachEntryReverseReverse(Type, vGlob, pEntry, i, k)
static void Ivy_ObjSetTravIdCurrent(Ivy_Man_t *p, Ivy_Obj_t *pObj)