Go to the source code of this file.
|
static ABC_NAMESPACE_IMPL_START int | Ivy_ObjIsExorType (Ivy_Obj_t *p0, Ivy_Obj_t *p1, Ivy_Obj_t **ppFan0, Ivy_Obj_t **ppFan1) |
| DECLARATIONS ///. More...
|
|
Ivy_Obj_t * | Ivy_Oper (Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1, Ivy_Type_t Type) |
| FUNCTION DEFINITIONS ///. More...
|
|
Ivy_Obj_t * | Ivy_And (Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1) |
|
Ivy_Obj_t * | Ivy_Exor (Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1) |
|
Ivy_Obj_t * | Ivy_Or (Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1) |
|
Ivy_Obj_t * | Ivy_Mux (Ivy_Man_t *p, Ivy_Obj_t *pC, Ivy_Obj_t *p1, Ivy_Obj_t *p0) |
|
Ivy_Obj_t * | Ivy_Maj (Ivy_Man_t *p, Ivy_Obj_t *pA, Ivy_Obj_t *pB, Ivy_Obj_t *pC) |
|
Ivy_Obj_t * | Ivy_Multi_rec (Ivy_Man_t *p, Ivy_Obj_t **ppObjs, int nObjs, Ivy_Type_t Type) |
|
Ivy_Obj_t * | Ivy_Multi (Ivy_Man_t *p, Ivy_Obj_t **pArgs, int nArgs, Ivy_Type_t Type) |
|
Ivy_Obj_t * | Ivy_Miter (Ivy_Man_t *p, Vec_Ptr_t *vPairs) |
|
Ivy_Obj_t * | Ivy_Latch (Ivy_Man_t *p, Ivy_Obj_t *pObj, Ivy_Init_t Init) |
|
Function*************************************************************
Synopsis [Performs canonicization step.]
Description [The argument nodes can be complemented.]
SideEffects []
SeeAlso []
Definition at line 84 of file ivyOper.c.
93 return p0 ==
p->pConst1 ? p1 :
Ivy_Not(
p->pConst1);
95 return p1 ==
p->pConst1 ? p0 :
Ivy_Not(
p->pConst1);
static Ivy_Obj_t * Ivy_Regular(Ivy_Obj_t *p)
Ivy_Obj_t * Ivy_CanonAnd(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
static Ivy_Obj_t * Ivy_Not(Ivy_Obj_t *p)
Function*************************************************************
Synopsis [Performs canonicization step.]
Description [The argument nodes can be complemented.]
SideEffects []
SeeAlso []
Definition at line 113 of file ivyOper.c.
Ivy_Obj_t * Ivy_Or(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
static Ivy_Obj_t * Ivy_Not(Ivy_Obj_t *p)
Ivy_Obj_t * Ivy_And(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
Function*************************************************************
Synopsis [Performs canonicization step.]
Description []
SideEffects []
SeeAlso []
Definition at line 287 of file ivyOper.c.
Ivy_Obj_t * Ivy_CanonLatch(Ivy_Man_t *p, Ivy_Obj_t *pObj, Ivy_Init_t Init)
Function*************************************************************
Synopsis [Implements ITE operation.]
Description []
SideEffects []
SeeAlso []
Definition at line 209 of file ivyOper.c.
211 return Ivy_Or(
p,
Ivy_Or(
p,
Ivy_And(
p, pA, pB),
Ivy_And(
p, pA, pC)),
Ivy_And(
p, pB, pC) );
Ivy_Obj_t * Ivy_Or(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
Ivy_Obj_t * Ivy_And(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
Function*************************************************************
Synopsis [Implements the miter.]
Description []
SideEffects []
SeeAlso []
Definition at line 264 of file ivyOper.c.
267 assert( vPairs->nSize > 0 );
268 assert( vPairs->nSize % 2 == 0 );
270 for ( i = 0; i < vPairs->nSize; i += 2 )
272 vPairs->nSize = vPairs->nSize/2;
Ivy_Obj_t * Ivy_Exor(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
static Ivy_Obj_t * Ivy_Not(Ivy_Obj_t *p)
Ivy_Obj_t * Ivy_Multi_rec(Ivy_Man_t *p, Ivy_Obj_t **ppObjs, int nObjs, Ivy_Type_t Type)
Function*************************************************************
Synopsis [Old code.]
Description []
SideEffects []
SeeAlso []
Definition at line 246 of file ivyOper.c.
Ivy_Obj_t * Ivy_Multi_rec(Ivy_Man_t *p, Ivy_Obj_t **ppObjs, int nObjs, Ivy_Type_t Type)
Function*************************************************************
Synopsis [Constructs the well-balanced tree of gates.]
Description [Disregards levels and possible logic sharing.]
SideEffects []
SeeAlso []
Definition at line 225 of file ivyOper.c.
231 pObj2 =
Ivy_Multi_rec(
p, ppObjs + nObjs/2, nObjs - nObjs/2, Type );
232 return Ivy_Oper(
p, pObj1, pObj2, Type );
Ivy_Obj_t * Ivy_Multi_rec(Ivy_Man_t *p, Ivy_Obj_t **ppObjs, int nObjs, Ivy_Type_t Type)
Ivy_Obj_t * Ivy_Oper(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1, Ivy_Type_t Type)
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Implements ITE operation.]
Description []
SideEffects []
SeeAlso []
Definition at line 158 of file ivyOper.c.
160 Ivy_Obj_t * pTempA1, * pTempA2, * pTempB1, * pTempB2, * pTemp;
169 if ( pTempA1 && pTempA2 )
172 if ( pTemp )
return Ivy_Not(pTemp);
174 Count0 = (pTempA1 != NULL) + (pTempA2 != NULL);
178 if ( pTempB1 && pTempB2 )
181 if ( pTemp )
return pTemp;
183 Count1 = (pTempB1 != NULL) + (pTempB2 != NULL);
185 if ( Count0 >= Count1 )
187 pTempA1 = pTempA1? pTempA1 :
Ivy_And(
p, pC, p1);
189 return Ivy_Or(
p, pTempA1, pTempA2 );
Ivy_Obj_t * Ivy_TableLookup(Ivy_Man_t *p, Ivy_Obj_t *pObj)
FUNCTION DEFINITIONS ///.
Ivy_Obj_t * Ivy_Or(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
Ivy_Obj_t * Ivy_Exor(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
static Ivy_Obj_t * Ivy_ObjCreateGhost(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1, Ivy_Type_t Type, Ivy_Init_t Init)
static Ivy_Obj_t * Ivy_Not(Ivy_Obj_t *p)
Ivy_Obj_t * Ivy_And(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
DECLARATIONS ///.
CFile****************************************************************
FileName [ivyOper.c]
SystemName [ABC: Logic synthesis and verification system.]
PackageName [And-Inverter Graph package.]
Synopsis [AIG operations.]
Author [Alan Mishchenko]
Affiliation [UC Berkeley]
Date [Ver. 1.0. Started - May 11, 2006.]
Revision [
- Id:
- ivyOper.c,v 1.00 2006/05/11 00:00:00 alanmi Exp
]
Definition at line 31 of file ivyOper.c.
static int Ivy_IsComplement(Ivy_Obj_t *p)
static Ivy_Obj_t * Ivy_ObjFanin1(Ivy_Obj_t *pObj)
static Ivy_Obj_t * Ivy_ObjFanin0(Ivy_Obj_t *pObj)
static int Ivy_ObjFaninC1(Ivy_Obj_t *pObj)
static Ivy_Obj_t * Ivy_Regular(Ivy_Obj_t *p)
static Ivy_Obj_t * Ivy_ObjChild0(Ivy_Obj_t *pObj)
static int Ivy_ObjIsAnd(Ivy_Obj_t *pObj)
static Ivy_Obj_t * Ivy_ObjChild1(Ivy_Obj_t *pObj)
static int Ivy_ObjFaninC0(Ivy_Obj_t *pObj)
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Perform one operation.]
Description [The argument nodes can be complemented.]
SideEffects []
SeeAlso []
Definition at line 63 of file ivyOper.c.
Ivy_Obj_t * Ivy_Exor(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
Ivy_Obj_t * Ivy_And(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
Function*************************************************************
Synopsis [Implements Boolean OR.]
Description []
SideEffects []
SeeAlso []
Definition at line 142 of file ivyOper.c.
static Ivy_Obj_t * Ivy_Not(Ivy_Obj_t *p)
Ivy_Obj_t * Ivy_And(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)