93 printf(
"Abc_NtkIvyBefore(): Converting to SOPs has failed.\n" );
104 printf(
"Warning: The choice nodes in the initial AIG are removed by strashing.\n" );
109 printf(
"AIG check has failed.\n" );
140 int nNodes, fCleanup = 1;
148 printf(
"Warning: AIG cleanup removed %d nodes (this is not a bug).\n", nNodes );
155 printf(
"Abc_NtkStrash: The network check has failed.\n" );
346 pMan =
Ivy_ManResyn0( pTemp = pMan, fUpdateLevel, fVerbose );
371 pMan =
Ivy_ManResyn( pTemp = pMan, fUpdateLevel, fVerbose );
435 if ( pObjIvy == NULL )
438 if ( pObjFraig == NULL )
471 if ( fTransfer == 1 )
537 pNtk->
pModel = (
int *)pMan2->pData, pMan2->pData = NULL;
571 pNtk->
pModel = (
int *)pMan->pData; pMan->pData = NULL;
582 sprintf( pFileName,
"cecmiter.aig" );
584 printf(
"Intermediate reduced miter is written into file \"%s\".\n", pFileName );
587 pNtk->
pModel = (
int *)pMan2->pData, pMan2->pData = NULL;
592 if ( RetValue < 0 && pParams->fUseBdds )
596 printf(
"Attempting BDDs with node limit %d ...\n", pParams->
nBddSizeLimit );
640 printf(
"Abc_NtkIvy(): Converting to SOPs has failed.\n" );
652 printf(
"Warning: The choice nodes in the initial AIG are removed by strashing.\n" );
659 printf(
"AIG check has failed.\n" );
742 Abc_Obj_t * pObj, * pObjNew, * pFaninNew, * pFaninNew0, * pFaninNew1;
779 fprintf( stdout,
"Abc_NtkFromIvy(): Network check has failed.\n" );
798 Abc_Obj_t * pObj, * pObjNew, * pFaninNew, * pFaninNew0, * pFaninNew1;
855 pFaninNew->
pData = pFaninNew1;
856 pFaninNew = pFaninNew1;
858 pFaninNew->
pData = NULL;
877 fprintf( stdout,
"Abc_NtkFromIvySeq(): Network check has failed.\n" );
975 return Ivy_And( pMan, pFanin0, pFanin1 );
982 pSop = (
char *)pNode->
pData;
1024 if ( pCube[i] ==
'1' )
1026 else if ( pCube[i] ==
'0' )
1031 pSum =
Ivy_Exor( pMan, pSum, pAnd );
1033 pSum =
Ivy_Or( pMan, pSum, pAnd );
1062 for ( i = 0; i < nFanins; i++ )
static Abc_Edge_t Abc_EdgeNot(Abc_Edge_t Edge)
static int Ivy_IsComplement(Ivy_Obj_t *p)
ABC_NAMESPACE_IMPL_START Aig_Man_t * Abc_NtkToDar(Abc_Ntk_t *pNtk, int fExors, int fRegisters)
DECLARATIONS ///.
static int Abc_NtkIsStrash(Abc_Ntk_t *pNtk)
static int Abc_NtkIsLogic(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)
static int Abc_NtkHasSop(Abc_Ntk_t *pNtk)
static Ivy_Obj_t * Ivy_ManConst1(Ivy_Man_t *p)
static int Abc_EdgeId(Abc_Edge_t Edge)
static Abc_Obj_t * Abc_EdgeToNode(Abc_Ntk_t *p, Abc_Edge_t Edge)
ABC_DLL int Abc_NodeIsConst(Abc_Obj_t *pNode)
Abc_Ntk_t * Abc_NtkIvyFraig(Abc_Ntk_t *pNtk, int nConfLimit, int fDoSparse, int fProve, int fTransfer, int fVerbose)
static Abc_Edge_t Abc_EdgeFromNode(Abc_Obj_t *pNode)
static Ivy_Obj_t * Ivy_ManPi(Ivy_Man_t *p, int i)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
Abc_Ntk_t * Abc_NtkIvyRewriteSeq(Abc_Ntk_t *pNtk, int fUseZeroCost, int fVerbose)
static Abc_Edge_t Abc_EdgeCreate(int Id, int fCompl)
static int Abc_ObjFaninC1(Abc_Obj_t *pObj)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static int Abc_NtkIsNetlist(Abc_Ntk_t *pNtk)
void Abc_NtkIvyCuts(Abc_Ntk_t *pNtk, int nInputs)
#define Abc_SopForEachCube(pSop, nFanins, pCube)
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
DdNode * Cudd_ReadLogicZero(DdManager *dd)
Ivy_Obj_t * Dec_GraphToNetworkIvy(Ivy_Man_t *pMan, Dec_Graph_t *pGraph)
ABC_DLL int Abc_SopGetCubeNum(char *pSop)
Abc_Ntk_t * Abc_NtkIvyRewrite(Abc_Ntk_t *pNtk, int fUpdateLevel, int fUseZeroCost, int fVerbose)
int timeRetime
DECLARATIONS ///.
Vec_Int_t * Ivy_ManDfs(Ivy_Man_t *p)
static int Abc_ObjFaninNum(Abc_Obj_t *pObj)
static int Abc_NtkHasMapping(Abc_Ntk_t *pNtk)
void Ivy_FraigParamsDefault(Ivy_FraigParams_t *pParams)
FUNCTION DEFINITIONS ///.
Ivy_Obj_t * Ivy_Exor(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
static int Abc_NtkLatchNum(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkIvyStrash(Abc_Ntk_t *pNtk)
static int Abc_ObjFaninC0(Abc_Obj_t *pObj)
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
static int Abc_AigNodeIsConst(Abc_Obj_t *pNode)
static int Abc_NtkCiNum(Abc_Ntk_t *pNtk)
void Ivy_ManMakeSeq(Ivy_Man_t *p, int nLatches, int *pInits)
static int Abc_LatchIsInit0(Abc_Obj_t *pLatch)
#define Abc_NtkForEachCo(pNtk, pCo, i)
static Abc_Obj_t * Abc_NtkCi(Abc_Ntk_t *pNtk, int i)
Dec_Graph_t * Dec_Factor(char *pSop)
FUNCTION DECLARATIONS ///.
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
static void Abc_NtkStrashPerformAig(Abc_Ntk_t *pNtk, Ivy_Man_t *pMan)
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
ABC_DLL int Abc_SopIsExorType(char *pSop)
static abctime Abc_Clock()
static Abc_Obj_t * Abc_NtkObj(Abc_Ntk_t *pNtk, int i)
int Ivy_FraigProve(Ivy_Man_t **ppManAig, void *pPars)
static void Abc_LatchSetInitDc(Abc_Obj_t *pLatch)
Ivy_Man_t * Ivy_FraigMiter(Ivy_Man_t *pManAig, Ivy_FraigParams_t *pParams)
static Abc_Obj_t * Abc_ObjFanin0(Abc_Obj_t *pObj)
ABC_DLL int Abc_NtkGetChoiceNum(Abc_Ntk_t *pNtk)
Ivy_Man_t * Ivy_ManStart()
DECLARATIONS ///.
void Ivy_ManStop(Ivy_Man_t *p)
static Ivy_Obj_t * Ivy_ObjFanin1(Ivy_Obj_t *pObj)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
int Abc_NtkIvyProve(Abc_Ntk_t **ppNtk, void *pPars)
void Aig_ManStop(Aig_Man_t *pMan)
static Abc_Obj_t * Abc_NtkCo(Abc_Ntk_t *pNtk, int i)
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
Ivy_Obj_t * Ivy_Or(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
Vec_Int_t * Ivy_ManDfsSeq(Ivy_Man_t *p, Vec_Int_t **pvLatches)
ABC_DLL Abc_Obj_t * Abc_AigXor(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
static Abc_Obj_t * Abc_NtkCreateBo(Abc_Ntk_t *pNtk)
static int Abc_EdgeIsComplement(Abc_Edge_t Edge)
ABC_DLL Abc_Ntk_t * Abc_NtkCollapse(Abc_Ntk_t *pNtk, int fBddSizeMax, int fDualRail, int fReorder, int fVerbose)
FUNCTION DEFINITIONS ///.
static Ivy_Obj_t * Ivy_ObjFanin0(Ivy_Obj_t *pObj)
static int Abc_ObjIsNode(Abc_Obj_t *pObj)
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)
static Ivy_Obj_t * Abc_NodeStrashAigFactorAig(Ivy_Man_t *pMan, Abc_Obj_t *pNode, char *pSop)
Abc_Ntk_t * Abc_NtkIvySat(Abc_Ntk_t *pNtk, int nConfLimit, int fVerbose)
Ivy_Obj_t * Ivy_ObjCreatePo(Ivy_Man_t *p, Ivy_Obj_t *pDriver)
ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
static Ivy_Obj_t * Abc_NodeStrashAigSopAig(Ivy_Man_t *pMan, Abc_Obj_t *pNode, char *pSop)
Ivy_Man_t * Ivy_ManResyn(Ivy_Man_t *p, int fUpdateLevel, int fVerbose)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
ABC_DLL int Abc_AigCleanup(Abc_Aig_t *pMan)
static Abc_Ntk_t * Abc_NtkFromIvySeq(Abc_Ntk_t *pNtkOld, Ivy_Man_t *pMan, int fHaig)
ABC_DLL int Abc_NtkRewrite(Abc_Ntk_t *pNtk, int fUpdateLevel, int fUseZeros, int fVerbose, int fVeryVerbose, int fPlaceEnable)
FUNCTION DEFINITIONS ///.
static int Ivy_ObjFaninC1(Ivy_Obj_t *pObj)
static Abc_Obj_t * Abc_ObjFanin0Ivy(Abc_Ntk_t *p, Ivy_Obj_t *pObj)
static int Ivy_ObjRefs(Ivy_Obj_t *pObj)
#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 int Abc_LatchIsInitDc(Abc_Obj_t *pLatch)
int Ivy_ManRewriteSeq(Ivy_Man_t *p, int fUseZeroCost, int fVerbose)
FUNCTION DEFINITIONS ///.
static Vec_Int_t * Abc_NtkCollectLatchValuesIvy(Abc_Ntk_t *pNtk, int fUseDcs)
ABC_DLL void Abc_NtkAddDummyBoxNames(Abc_Ntk_t *pNtk)
static Ivy_Obj_t * Ivy_Regular(Ivy_Obj_t *p)
static Abc_Obj_t * Abc_ObjFanin1Ivy(Abc_Ntk_t *p, Ivy_Obj_t *pObj)
static Abc_Obj_t * Abc_NtkCreateLatch(Abc_Ntk_t *pNtk)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
ABC_DLL int Abc_SopIsConst0(char *pSop)
#define Abc_NtkForEachLatch(pNtk, pObj, i)
static int Abc_LatchIsInit1(Abc_Obj_t *pLatch)
static Ivy_Man_t * Abc_NtkToIvy(Abc_Ntk_t *pNtkOld)
static Abc_Edge_t Abc_EdgeNotCond(Abc_Edge_t Edge, int fCond)
void Ioa_WriteAiger(Aig_Man_t *pMan, char *pFileName, int fWriteSymbols, int fCompact)
#define Abc_NtkForEachNode(pNtk, pNode, i)
static Abc_Obj_t * Abc_NtkBox(Abc_Ntk_t *pNtk, int i)
typedefABC_NAMESPACE_HEADER_START struct Ivy_Man_t_ Ivy_Man_t
INCLUDES ///.
void Ivy_ManHaigStart(Ivy_Man_t *p, int fVerbose)
FUNCTION DEFINITIONS ///.
#define ABC_NAMESPACE_IMPL_START
static void Abc_LatchSetInit1(Abc_Obj_t *pLatch)
static Ivy_Obj_t * Abc_NodeStrashAigExorAig(Ivy_Man_t *pMan, Abc_Obj_t *pNode, char *pSop)
void Ivy_ManHaigStop(Ivy_Man_t *p)
static Abc_Obj_t * Abc_ObjRegular(Abc_Obj_t *p)
Abc_Ntk_t * Abc_NtkIvyResyn(Abc_Ntk_t *pNtk, int fUpdateLevel, int fVerbose)
void Abc_NtkTransferPointers(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkAig)
static int Ivy_ObjIsExor(Ivy_Obj_t *pObj)
Ivy_Man_t * Abc_NtkIvyBefore(Abc_Ntk_t *pNtk, int fSeq, int fUseDc)
FUNCTION DEFINITIONS ///.
static Abc_Obj_t * Abc_NtkPo(Abc_Ntk_t *pNtk, int i)
#define Abc_NtkForEachCi(pNtk, pCi, i)
static Abc_Edge_t Abc_EdgeRegular(Abc_Edge_t Edge)
ABC_DLL int Abc_NtkBddToSop(Abc_Ntk_t *pNtk, int fDirect)
#define Dec_GraphForEachLeaf(pGraph, pLeaf, i)
ITERATORS ///.
#define Abc_ObjForEachFanin(pObj, pFanin, i)
ABC_DLL Abc_Ntk_t * Abc_NtkStartFromNoLatches(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
static int Abc_NtkIsBddLogic(Abc_Ntk_t *pNtk)
ABC_DLL Vec_Ptr_t * Abc_NtkSaveCopy(Abc_Ntk_t *pNtk)
static Ivy_Obj_t * Ivy_Not(Ivy_Obj_t *p)
static Ivy_Obj_t * Ivy_NotCond(Ivy_Obj_t *p, int c)
#define Ivy_ManForEachNodeVec(p, vIds, pObj, i)
ABC_DLL Abc_Ntk_t * Abc_NtkBalance(Abc_Ntk_t *pNtk, int fDuplicate, int fSelective, int fUpdateLevel)
FUNCTION DEFINITIONS ///.
static int Ivy_ObjIsBuf(Ivy_Obj_t *pObj)
#define ABC_CALLOC(type, num)
ABC_DLL int Abc_SopGetVarNum(char *pSop)
static void Dec_GraphFree(Dec_Graph_t *pGraph)
Ivy_Man_t * Ivy_FraigPerform(Ivy_Man_t *pManAig, Ivy_FraigParams_t *pParams)
static Abc_Obj_t * Abc_ObjNotCond(Abc_Obj_t *p, int c)
Ivy_Man_t * Ivy_ManResyn0(Ivy_Man_t *p, int fUpdateLevel, int fVerbose)
DECLARATIONS ///.
Ivy_Obj_t * Ivy_ObjCreatePi(Ivy_Man_t *p)
DECLARATIONS ///.
static Abc_Ntk_t * Abc_NtkFromIvy(Abc_Ntk_t *pNtkOld, Ivy_Man_t *pMan)
DECLARATIONS ///.
int Ivy_ManRewritePre(Ivy_Man_t *p, int fUpdateLevel, int fUseZeroCost, int fVerbose)
FUNCTION DEFINITIONS ///.
static Ivy_Obj_t * Ivy_ManPo(Ivy_Man_t *p, int i)
static Ivy_Obj_t * Ivy_ObjEquiv(Ivy_Obj_t *pObj)
#define Abc_NtkForEachPo(pNtk, pPo, i)
static Abc_Obj_t * Abc_NtkCreateBi(Abc_Ntk_t *pNtk)
void Ivy_CutComputeAll(Ivy_Man_t *p, int nInputs)
static Abc_Obj_t * Abc_ObjFanin(Abc_Obj_t *pObj, int i)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
ABC_DLL void Abc_NtkLoadCopy(Abc_Ntk_t *pNtk, Vec_Ptr_t *vCopies)
static int Abc_ObjIsComplement(Abc_Obj_t *p)
Abc_Ntk_t * Abc_NtkIvy(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_NtkCountSelfFeedLatches(Abc_Ntk_t *pNtk)
static void Abc_LatchSetInit0(Abc_Obj_t *pLatch)
ABC_DLL int Abc_SopIsComplement(char *pSop)
Abc_Ntk_t * Abc_NtkIvyHaig(Abc_Ntk_t *pNtk, int nIters, int fUseZeroCost, int fVerbose)
char * Mio_GateReadSop(Mio_Gate_t *pGate)
static int Ivy_ObjFaninC0(Ivy_Obj_t *pObj)
static Ivy_Init_t Ivy_ObjInit(Ivy_Obj_t *pObj)
Abc_Ntk_t * Abc_NtkIvyAfter(Abc_Ntk_t *pNtk, Ivy_Man_t *pMan, int fSeq, int fHaig)
Ivy_Obj_t * Ivy_And(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
int Ivy_ManCheck(Ivy_Man_t *p)
DECLARATIONS ///.
int Ivy_ManCleanup(Ivy_Man_t *p)
int Fra_FraigSat(Aig_Man_t *pMan, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, int nLearnedStart, int nLearnedDelta, int nLearnedPerce, int fFlipBits, int fAndOuts, int fNewSolver, int fVerbose)
ITERATORS ///.
static Ivy_Obj_t * Abc_NodeStrashAig(Ivy_Man_t *pMan, Abc_Obj_t *pNode)
#define Abc_NtkForEachPi(pNtk, pPi, i)
static void Vec_PtrFree(Vec_Ptr_t *p)
Abc_Ntk_t * Abc_NtkIvyResyn0(Abc_Ntk_t *pNtk, int fUpdateLevel, int fVerbose)