102 for ( pNext = pObj? pObj->
pCopy : pObj; pObj; pObj = pNext, pNext = pObj? pObj->
pCopy : pObj )
107 pFanin->
pCopy = pFanin;
108 pFanin->
pData = pFanin;
113 pFanin->
pCopy = pFanin;
114 pFanin->
pData = pFanin;
214 for ( i =
Abc_NtkPiNum(pNtkNew) - 1; i >= 2*nLatches; i-- )
231 for ( i =
Abc_NtkPiNum(pNtkNew) - 1; i >= 2*nLatches; i-- )
242 printf(
"Abc_NtkTransRel: The network check has failed.\n" );
271 for ( i = 0; i < nVars; i++ )
292 Abc_Obj_t * pMiter, * pObj, * pObj0, * pObj1;
298 for ( i = 0; i < nVars; i++ )
302 pMiter = pObj0->
pCopy;
304 pObj1->
pCopy = pMiter;
329 Abc_Ntk_t * pNtkFront, * pNtkReached, * pNtkNext, * pNtkTemp;
330 int i, v, nVars, nNodesOld, nNodesNew, nNodesPrev;
351 for ( i = 0; i < nIters; i++ )
358 for ( v = 0; v < nVars; v++ )
361 if ( fSynthesis && (v % 3 == 2) )
379 printf(
"Fixed point is reached!\n" );
387 pNtkReached =
Abc_NtkMiterAnd( pNtkTemp = pNtkReached, pNtkFront, 1, 0 );
400 printf(
"I = %3d : Reach = %6d Fr = %6d FrM = %6d %7.2f %% ",
401 i + 1,
Abc_NtkNodeNum(pNtkReached), nNodesOld, nNodesNew, 100.0*(nNodesNew-nNodesPrev)/nNodesPrev );
407 fprintf( stdout,
"Reachability analysis stopped after %d iterations.\n", nIters );
413 for ( i = 2*nVars - 1; i >= nVars; i-- )
423 printf(
"Abc_NtkReachability: The network check has failed.\n" );
static int Abc_NtkIsStrash(Abc_Ntk_t *pNtk)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
static Abc_Obj_t * Abc_ObjFanin1(Abc_Obj_t *pObj)
ABC_DLL Abc_Obj_t * Abc_AigOr(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkReachability(Abc_Ntk_t *pNtkRel, int nIters, int fVerbose)
static int Abc_ObjFanoutNum(Abc_Obj_t *pObj)
static int Abc_NtkBoxNum(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachLatchOutput(pNtk, pObj, i)
static Abc_Obj_t * Abc_ObjChild1Copy(Abc_Obj_t *pObj)
ABC_DLL Abc_Obj_t * Abc_NtkDupObj(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pObj, int fCopyName)
static int Abc_NtkLatchNum(Abc_Ntk_t *pNtk)
static int Abc_ObjFaninC0(Abc_Obj_t *pObj)
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static int Abc_NtkCiNum(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachCo(pNtk, pCo, i)
static Abc_Obj_t * Abc_NtkCi(Abc_Ntk_t *pNtk, int i)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
ABC_DLL char * Abc_ObjAssignName(Abc_Obj_t *pObj, char *pName, char *pSuffix)
static abctime Abc_Clock()
ABC_NAMESPACE_IMPL_START void Abc_NtkSynthesize(Abc_Ntk_t **ppNtk, int fMoreEffort)
DECLARATIONS ///.
static Abc_Obj_t * Abc_ObjFanin0(Abc_Obj_t *pObj)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_ObjChild1Data(Abc_Obj_t *pObj)
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
ABC_DLL Abc_Ntk_t * Abc_NtkAlloc(Abc_NtkType_t Type, Abc_NtkFunc_t Func, int fUseMemMan)
DECLARATIONS ///.
ABC_DLL void Abc_ObjPatchFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFaninOld, Abc_Obj_t *pFaninNew)
Abc_Ntk_t * Abc_NtkIvyFraig(Abc_Ntk_t *pNtk, int nConfLimit, int fDoSparse, int fProve, int fTransfer, int fVerbose)
static int Abc_NtkNodeNum(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_AigAnd(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
Abc_Ntk_t * Abc_NtkSwapVariables(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_ObjChild0Copy(Abc_Obj_t *pObj)
ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
ABC_DLL void Abc_NtkDeleteObj(Abc_Obj_t *pObj)
ABC_DLL int Abc_AigCleanup(Abc_Aig_t *pMan)
ABC_DLL int Abc_NtkRewrite(Abc_Ntk_t *pNtk, int fUpdateLevel, int fUseZeros, int fVerbose, int fVeryVerbose, int fPlaceEnable)
FUNCTION DEFINITIONS ///.
ABC_DLL Abc_Obj_t * Abc_AigMiter(Abc_Aig_t *pMan, Vec_Ptr_t *vPairs, int fImplic)
#define ABC_NAMESPACE_IMPL_END
ABC_DLL int Abc_NtkRefactor(Abc_Ntk_t *pNtk, int nNodeSizeMax, int nConeSizeMax, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose)
FUNCTION DEFINITIONS ///.
static Abc_Obj_t * Abc_NtkCreatePi(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkTransRel(Abc_Ntk_t *pNtk, int fInputs, int fVerbose)
int Abc_NtkQuantify(Abc_Ntk_t *pNtk, int fUniv, int iVar, int fVerbose)
#define Abc_NtkForEachNode(pNtk, pNode, i)
#define ABC_NAMESPACE_IMPL_START
static Abc_Obj_t * Abc_ObjChild0Data(Abc_Obj_t *pObj)
static int Abc_NodeIsTravIdCurrent(Abc_Obj_t *p)
static Abc_Obj_t * Abc_ObjRegular(Abc_Obj_t *p)
Abc_Ntk_t * Abc_NtkInitialState(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_NtkPo(Abc_Ntk_t *pNtk, int i)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Abc_NtkPiNum(Abc_Ntk_t *pNtk)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
ABC_DLL void Abc_NtkCleanData(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachLatchInput(pNtk, pObj, i)
ABC_DLL Abc_Ntk_t * Abc_NtkBalance(Abc_Ntk_t *pNtk, int fDuplicate, int fSelective, int fUpdateLevel)
FUNCTION DEFINITIONS ///.
static void Abc_ObjXorFaninC(Abc_Obj_t *pObj, int i)
ABC_DLL void Abc_NtkCleanCopy(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_ObjNotCond(Abc_Obj_t *p, int c)
static Abc_Obj_t * Abc_ObjNot(Abc_Obj_t *p)
static Abc_Obj_t * Abc_NtkPi(Abc_Ntk_t *pNtk, int i)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
ABC_DLL Abc_Ntk_t * Abc_NtkMiterAnd(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fOr, int fCompl2)
ABC_DLL Vec_Ptr_t * Abc_NtkDfsReverseNodes(Abc_Ntk_t *pNtk, Abc_Obj_t **ppNodes, int nNodes)
static Abc_Obj_t * Abc_NtkCreatePo(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachPi(pNtk, pPi, i)
static void Vec_PtrFree(Vec_Ptr_t *p)