57static inline Abc_Edge_t Abc_EdgeCreate(
int Id,
int fCompl ) {
return (Id << 1) | fCompl; }
58static inline int Abc_EdgeId(
Abc_Edge_t Edge ) {
return Edge >> 1; }
59static inline int Abc_EdgeIsComplement(
Abc_Edge_t Edge ) {
return Edge & 1; }
63static inline Abc_Edge_t Abc_EdgeFromNode(
Abc_Obj_t * pNode ) {
return Abc_EdgeCreate( Abc_ObjRegular(pNode)->Id, Abc_ObjIsComplement(pNode) ); }
64static inline Abc_Obj_t * Abc_EdgeToNode(
Abc_Ntk_t *
p,
Abc_Edge_t Edge ) {
return Abc_ObjNotCond( Abc_NtkObj(
p, Abc_EdgeId(Edge)), Abc_EdgeIsComplement(Edge) ); }
66static inline Abc_Obj_t * Abc_ObjFanin0Ivy(
Abc_Ntk_t *
p,
Ivy_Obj_t * pObj ) {
return Abc_ObjNotCond( Abc_EdgeToNode(
p, Ivy_ObjFanin0(pObj)->TravId), Ivy_ObjFaninC0(pObj) ); }
67static inline Abc_Obj_t * Abc_ObjFanin1Ivy(
Abc_Ntk_t *
p,
Ivy_Obj_t * pObj ) {
return Abc_ObjNotCond( Abc_EdgeToNode(
p, Ivy_ObjFanin1(pObj)->TravId), Ivy_ObjFaninC1(pObj) ); }
92 assert( !Abc_NtkIsNetlist(pNtk) );
93 if ( Abc_NtkIsBddLogic(pNtk) )
97 printf(
"Abc_NtkIvyBefore(): Converting to SOPs has failed.\n" );
108 printf(
"Warning: The choice nodes in the initial AIG are removed by strashing.\n" );
110 pMan = Abc_NtkToIvy( pNtk );
113 printf(
"AIG check has failed.\n" );
120 int nLatches = Abc_NtkLatchNum(pNtk);
121 Vec_Int_t * vInit = Abc_NtkCollectLatchValuesIvy( pNtk, fUseDc );
123 Vec_IntFree( vInit );
144 int nNodes, fCleanup = 1;
147 pNtkAig = Abc_NtkFromIvySeq( pNtk, pMan, fHaig );
149 pNtkAig = Abc_NtkFromIvy( pNtk, pMan );
152 printf(
"Warning: AIG cleanup removed %d nodes (this is not a bug).\n", nNodes );
159 printf(
"Abc_NtkStrash: The network check has failed.\n" );
350 pMan =
Ivy_ManResyn0( pTemp = pMan, fUpdateLevel, fVerbose );
375 pMan =
Ivy_ManResyn( pTemp = pMan, fUpdateLevel, fVerbose );
431 pObj->
pCopy = Abc_NtkCi(pNtkAig, i);
433 pObj->
pCopy = Abc_NtkCo(pNtkAig, i);
435 pObj->
pCopy = Abc_NtkBox(pNtkAig, i);
439 if ( pObjIvy == NULL )
441 pObjFraig = Ivy_ObjEquiv( pObjIvy );
442 if ( pObjFraig == NULL )
444 pObj->
pCopy = Abc_EdgeToNode( pNtkAig, Ivy_Regular(pObjFraig)->TravId );
445 pObj->
pCopy = Abc_ObjNotCond( pObj->
pCopy, Ivy_IsComplement(pObjFraig) );
475 if ( fTransfer == 1 )
481 Vec_PtrFree( vCopies );
486 pNtkAig->
pModel = (
int *)pMan->pData; pMan->pData = NULL;
511 assert( Abc_NtkIsStrash(pNtk) || Abc_NtkIsLogic(pNtk) );
518 if ( !Abc_NtkIsStrash(pNtk) )
525 pObj = Abc_NtkPo(pNtk,0);
526 pFanin = Abc_ObjFanin0(pObj);
527 if ( Abc_ObjFanin0(pObj)->fPhase != (
unsigned)Abc_ObjFaninC0(pObj) )
542 pNtk->
pModel = (
int *)pMan2->pData, pMan2->pData = NULL;
576 pNtk->
pModel = (
int *)pMan->pData; pMan->pData = NULL;
587 sprintf( pFileName,
"cecmiter.aig" );
589 printf(
"Intermediate reduced miter is written into file \"%s\".\n", pFileName );
592 pNtk->
pModel = (
int *)pMan2->pData, pMan2->pData = NULL;
598 if ( RetValue < 0 && pParams->fUseBdds )
602 printf(
"Attempting BDDs with node limit %d ...\n", pParams->
nBddSizeLimit );
609 RetValue = ( (Abc_NtkNodeNum(pNtk) == 1) && (Abc_ObjFanin0(Abc_NtkPo(pNtk,0))->pData == Cudd_ReadLogicZero((DdManager *)pNtk->
pManFunc)) );
639 Vec_Int_t * vInit = Abc_NtkCollectLatchValuesIvy( pNtk, 0 );
641 assert( !Abc_NtkIsNetlist(pNtk) );
642 if ( Abc_NtkIsBddLogic(pNtk) )
646 Vec_IntFree( vInit );
647 printf(
"Abc_NtkIvy(): Converting to SOPs has failed.\n" );
659 printf(
"Warning: The choice nodes in the initial AIG are removed by strashing.\n" );
662 pMan = Abc_NtkToIvy( pNtk );
665 Vec_IntFree( vInit );
666 printf(
"AIG check has failed.\n" );
749 Abc_Obj_t * pObj, * pObjNew, * pFaninNew, * pFaninNew0, * pFaninNew1;
755 Ivy_ManConst1(pMan)->TravId = Abc_EdgeFromNode(
Abc_AigConst1(pNtk) );
757 Ivy_ManPi(pMan, i)->TravId = Abc_EdgeFromNode( pObj->
pCopy );
763 pFaninNew0 = Abc_ObjFanin0Ivy( pNtk, pNode );
764 if ( Ivy_ObjIsBuf(pNode) )
766 pNode->
TravId = Abc_EdgeFromNode( pFaninNew0 );
770 pFaninNew1 = Abc_ObjFanin1Ivy( pNtk, pNode );
772 if ( Ivy_ObjIsExor(pNode) )
776 pNode->
TravId = Abc_EdgeFromNode( pObjNew );
781 pFaninNew = Abc_ObjFanin0Ivy( pNtk, Ivy_ManPo(pMan, i) );
784 Vec_IntFree( vNodes );
786 fprintf( stdout,
"Abc_NtkFromIvy(): Network check has failed.\n" );
805 Abc_Obj_t * pObj, * pObjNew, * pFaninNew, * pFaninNew0, * pFaninNew1;
812 Ivy_ManConst1(pMan)->TravId = Abc_EdgeFromNode(
Abc_AigConst1(pNtk) );
814 Ivy_ManPi(pMan, i)->TravId = Abc_EdgeFromNode( pObj->
pCopy );
819 pObjNew = Abc_NtkCreateLatch( pNtk );
820 pFaninNew0 = Abc_NtkCreateBi( pNtk );
821 pFaninNew1 = Abc_NtkCreateBo( pNtk );
825 Abc_LatchSetInitDc( pObjNew );
827 Abc_LatchSetInit1( pObjNew );
829 Abc_LatchSetInit0( pObjNew );
831 pNode->
TravId = Abc_EdgeFromNode( pFaninNew1 );
838 pFaninNew0 = Abc_ObjFanin0Ivy( pNtk, pNode );
839 if ( Ivy_ObjIsBuf(pNode) )
841 pNode->
TravId = Abc_EdgeFromNode( pFaninNew0 );
845 pFaninNew1 = Abc_ObjFanin1Ivy( pNtk, pNode );
847 if ( Ivy_ObjIsExor(pNode) )
851 pNode->
TravId = Abc_EdgeFromNode( pObjNew );
853 if ( fHaig && pNode->
pEquiv && Ivy_ObjRefs(pNode) > 0 )
855 pFaninNew = Abc_EdgeToNode( pNtk, pNode->
TravId );
858 for ( pTemp = pNode->
pEquiv; pTemp != pNode; pTemp = Ivy_Regular(pTemp->
pEquiv) )
860 pFaninNew1 = Abc_EdgeToNode( pNtk, pTemp->
TravId );
862 pFaninNew->
pData = pFaninNew1;
863 pFaninNew = pFaninNew1;
865 pFaninNew->
pData = NULL;
872 pFaninNew = Abc_ObjFanin0Ivy( pNtk, Ivy_ManPo(pMan, i) );
878 pFaninNew = Abc_ObjFanin0Ivy( pNtk, pNode );
881 Vec_IntFree( vLatches );
882 Vec_IntFree( vNodes );
884 fprintf( stdout,
"Abc_NtkFromIvySeq(): Network check has failed.\n" );
906 assert( Abc_NtkHasSop(pNtkOld) || Abc_NtkIsStrash(pNtkOld) );
909 if ( Abc_NtkIsStrash(pNtkOld) )
914 Abc_NtkStrashPerformAig( pNtkOld, pMan );
918 pFanin = (
Ivy_Obj_t *)Abc_ObjFanin0(pObj)->pCopy;
919 pFanin = Ivy_NotCond( pFanin, Abc_ObjFaninC0(pObj) );
951 Vec_PtrFree( vNodes );
971 assert( Abc_ObjIsNode(pNode) );
974 if ( Abc_NtkIsStrash(pNode->
pNtk) )
976 if ( Abc_AigNodeIsConst(pNode) )
977 return Ivy_ManConst1(pMan);
978 pFanin0 = (
Ivy_Obj_t *)Abc_ObjFanin0(pNode)->pCopy;
979 pFanin0 = Ivy_NotCond( pFanin0, Abc_ObjFaninC0(pNode) );
980 pFanin1 = (
Ivy_Obj_t *)Abc_ObjFanin1(pNode)->pCopy;
981 pFanin1 = Ivy_NotCond( pFanin1, Abc_ObjFaninC1(pNode) );
982 return Ivy_And( pMan, pFanin0, pFanin1 );
986 if ( Abc_NtkHasMapping(pNode->
pNtk) )
989 pSop = (
char *)pNode->
pData;
997 return Abc_NodeStrashAigFactorAig( pMan, pNode, pSop );
998 return Abc_NodeStrashAigSopAig( pMan, pNode, pSop );
1021 nFanins = Abc_ObjFaninNum( pNode );
1024 pSum = Ivy_Not( Ivy_ManConst1(pMan) );
1028 pAnd = Ivy_ManConst1(pMan);
1031 if ( pCube[i] ==
'1' )
1033 else if ( pCube[i] ==
'0' )
1038 pSum =
Ivy_Exor( pMan, pSum, pAnd );
1040 pSum =
Ivy_Or( pMan, pSum, pAnd );
1044 pSum = Ivy_Not(pSum);
1065 nFanins = Abc_ObjFaninNum( pNode );
1068 pSum = Ivy_Not( Ivy_ManConst1(pMan) );
1069 for ( i = 0; i < nFanins; i++ )
1071 pFanin = Abc_ObjFanin( pNode, i );
1075 pSum = Ivy_Not(pSum);
1105 pNode->
pFunc = Abc_ObjFanin(pRoot,i)->pCopy;
1111 Dec_GraphFree( pFForm );
1131 vArray = Vec_IntAlloc( Abc_NtkLatchNum(pNtk) );
1134 if ( fUseDcs || Abc_LatchIsInitDc(pLatch) )
1136 else if ( Abc_LatchIsInit1(pLatch) )
1138 else if ( Abc_LatchIsInit0(pLatch) )
1156static inline Ivy_Obj_t * Gia_ObjChild0Copy3(
Ivy_Obj_t ** ppNodes,
Gia_Obj_t * pObj,
int Id ) {
return Ivy_NotCond( ppNodes[Gia_ObjFaninId0(pObj, Id)], Gia_ObjFaninC0(pObj) ); }
1157static inline Ivy_Obj_t * Gia_ObjChild1Copy3(
Ivy_Obj_t ** ppNodes,
Gia_Obj_t * pObj,
int Id ) {
return Ivy_NotCond( ppNodes[Gia_ObjFaninId1(pObj, Id)], Gia_ObjFaninC1(pObj) ); }
1169 if ( Gia_ObjIsAnd(pObj) )
1170 ppNodes[i] =
Ivy_And( pNew, Gia_ObjChild0Copy3(ppNodes, pObj, i), Gia_ObjChild1Copy3(ppNodes, pObj, i) );
1171 else if ( Gia_ObjIsCi(pObj) )
1173 else if ( Gia_ObjIsCo(pObj) )
1174 ppNodes[i] =
Ivy_ObjCreatePo( pNew, Gia_ObjChild0Copy3(ppNodes, pObj, Gia_ObjId(
p, pObj)) );
1175 else if ( Gia_ObjIsConst0(pObj) )
1176 ppNodes[i] = Ivy_Not(Ivy_ManConst1(pNew));
1179 assert( i == 0 || Ivy_ObjId(ppNodes[i]) == i );
1184static inline int Gia_ObjChild0Copy4(
int * pNodes,
Ivy_Obj_t * pObj ) {
return Abc_LitNotCond( pNodes[Ivy_Regular(pObj->
pFanin0)->Id], Ivy_IsComplement(pObj->
pFanin0) ); }
1185static inline int Gia_ObjChild1Copy4(
int * pNodes,
Ivy_Obj_t * pObj ) {
return Abc_LitNotCond( pNodes[Ivy_Regular(pObj->
pFanin1)->Id], Ivy_IsComplement(pObj->
pFanin1) ); }
1191 int i, * pNodes =
ABC_FALLOC(
int, Ivy_ManObjIdMax(
p) + 1 );
1193 pNew->
pName = Abc_UtilStrsav(
"from_ivy" );
1196 if ( Ivy_ObjIsAnd(pObj) )
1197 pNodes[pObj->
Id] = Gia_ManAppendAnd( pNew, Gia_ObjChild0Copy4(pNodes, pObj), Gia_ObjChild1Copy4(pNodes, pObj) );
1198 else if ( Ivy_ObjIsCi(pObj) )
1199 pNodes[pObj->
Id] = Gia_ManAppendCi( pNew );
1200 else if ( Ivy_ObjIsCo(pObj) )
1201 pNodes[pObj->
Id] = Gia_ManAppendCo( pNew, Gia_ObjChild0Copy4(pNodes, pObj) );
1202 else if ( Ivy_ObjIsConst1(pObj) )
1203 pNodes[pObj->
Id] = 1;
1221 pParams->
fProve = fUseProve;
Abc_Ntk_t * Abc_NtkIvyResyn0(Abc_Ntk_t *pNtk, int fUpdateLevel, int fVerbose)
void Ivy_CutComputeAll(Ivy_Man_t *p, int nInputs)
Gia_Man_t * Gia_ManIvyFraig(Gia_Man_t *p, int nConfLimit, int fUseProve, int fVerbose)
void Aig_ManStop(Aig_Man_t *pMan)
void Abc_NtkIvyCuts(Abc_Ntk_t *pNtk, int nInputs)
Ivy_Obj_t * Dec_GraphToNetworkIvy(Ivy_Man_t *pMan, Dec_Graph_t *pGraph)
Abc_Ntk_t * Abc_NtkIvyRewriteSeq(Abc_Ntk_t *pNtk, int fUseZeroCost, int fVerbose)
Abc_Ntk_t * Abc_NtkIvyHaig(Abc_Ntk_t *pNtk, int nIters, int fUseZeroCost, int fVerbose)
Abc_Ntk_t * Abc_NtkIvyStrash(Abc_Ntk_t *pNtk)
void Abc_NtkTransferPointers(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkAig)
int Abc_NtkIvyProve(Abc_Ntk_t **ppNtk, void *pPars)
ABC_NAMESPACE_IMPL_START Aig_Man_t * Abc_NtkToDar(Abc_Ntk_t *pNtk, int fExors, int fRegisters)
DECLARATIONS ///.
Gia_Man_t * Gia_ManIvyFraigTest(Gia_Man_t *p, int nConfLimit, int fVerbose)
Ivy_Man_t * Abc_NtkIvyBefore(Abc_Ntk_t *pNtk, int fSeq, int fUseDc)
FUNCTION DEFINITIONS ///.
int timeRetime
DECLARATIONS ///.
Abc_Ntk_t * Abc_NtkIvyAfter(Abc_Ntk_t *pNtk, Ivy_Man_t *pMan, int fSeq, int fHaig)
Ivy_Man_t * Gia_ManToIvySimple(Gia_Man_t *p)
Gia_Man_t * Gia_ManFromIvySimple(Ivy_Man_t *p)
Abc_Ntk_t * Abc_NtkIvyFraig(Abc_Ntk_t *pNtk, int nConfLimit, int fDoSparse, int fProve, int fTransfer, int fVerbose)
Abc_Ntk_t * Abc_NtkIvyResyn(Abc_Ntk_t *pNtk, int fUpdateLevel, int fVerbose)
Abc_Ntk_t * Abc_NtkIvySat(Abc_Ntk_t *pNtk, int nConfLimit, int fVerbose)
Abc_Ntk_t * Abc_NtkIvyRewrite(Abc_Ntk_t *pNtk, int fUpdateLevel, int fUseZeroCost, int fVerbose)
Abc_Ntk_t * Abc_NtkIvy(Abc_Ntk_t *pNtk)
struct Abc_Obj_t_ Abc_Obj_t
#define Abc_NtkForEachCo(pNtk, pCo, i)
ABC_DLL int Abc_NtkCountSelfFeedLatches(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
ABC_DLL Abc_Obj_t * Abc_AigXor(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
ABC_DLL int Abc_SopIsConst0(char *pSop)
#define Abc_NtkForEachPo(pNtk, pPo, i)
ABC_DLL void Abc_NtkAddDummyBoxNames(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachLatch(pNtk, pObj, i)
ABC_DLL int Abc_NtkGetChoiceNum(Abc_Ntk_t *pNtk)
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
#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)
ABC_DLL Abc_Ntk_t * Abc_NtkCollapse(Abc_Ntk_t *pNtk, int fBddSizeMax, int fDualRail, int fReorder, int fReverse, int fDumpOrder, int fVerbose)
DECLARATIONS ///.
struct Abc_Aig_t_ Abc_Aig_t
struct Abc_Ntk_t_ Abc_Ntk_t
ABC_DLL void Abc_NtkLoadCopy(Abc_Ntk_t *pNtk, Vec_Ptr_t *vCopies)
ABC_DLL int Abc_NtkRewrite(Abc_Ntk_t *pNtk, int fUpdateLevel, int fUseZeros, int fVerbose, int fVeryVerbose, int fPlaceEnable)
FUNCTION DEFINITIONS ///.
ABC_DLL int Abc_NodeIsConst(Abc_Obj_t *pNode)
ABC_DLL int Abc_AigCleanup(Abc_Aig_t *pMan)
ABC_DLL Abc_Obj_t * Abc_AigAnd(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
#define Abc_SopForEachCube(pSop, nFanins, pCube)
#define Abc_NtkForEachPi(pNtk, pPi, i)
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
ABC_DLL int Abc_SopGetVarNum(char *pSop)
ABC_DLL int Abc_SopIsExorType(char *pSop)
#define Abc_NtkForEachCi(pNtk, pCi, i)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL Vec_Ptr_t * Abc_NtkSaveCopy(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_SopIsComplement(char *pSop)
ABC_DLL Abc_Ntk_t * Abc_NtkBalance(Abc_Ntk_t *pNtk, int fDuplicate, int fSelective, int fUpdateLevel)
FUNCTION DEFINITIONS ///.
ABC_DLL int Abc_SopGetCubeNum(char *pSop)
ABC_DLL int Abc_NtkRefactor(Abc_Ntk_t *pNtk, int nNodeSizeMax, int nMinSaved, int nConeSizeMax, int fUpdateLevel, int fUseZeros, int fUseDcs, int fVerbose)
ABC_DLL int Abc_NtkBddToSop(Abc_Ntk_t *pNtk, int fMode, int nCubeLimit, int fCubeSort)
ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachNode(pNtk, pNode, i)
#define ABC_FALLOC(type, num)
#define ABC_INFINITY
MACRO DEFINITIONS ///.
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
struct Dec_Node_t_ Dec_Node_t
#define Dec_GraphForEachLeaf(pGraph, pLeaf, i)
ITERATORS ///.
Dec_Graph_t * Dec_Factor(char *pSop)
FUNCTION DECLARATIONS ///.
struct Dec_Graph_t_ Dec_Graph_t
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 ///.
int Gia_ManFindFailedPoCex(Gia_Man_t *pAig, Abc_Cex_t *p, int nOutputs)
Gia_Man_t * Gia_ManStart(int nObjsMax)
FUNCTION DEFINITIONS ///.
struct Gia_Obj_t_ Gia_Obj_t
struct Gia_Man_t_ Gia_Man_t
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
void Ioa_WriteAiger(Aig_Man_t *pMan, char *pFileName, int fWriteSymbols, int fCompact)
struct Prove_ParamsStruct_t_ Prove_Params_t
Ivy_Man_t * Ivy_ManResyn0(Ivy_Man_t *p, int fUpdateLevel, int fVerbose)
DECLARATIONS ///.
Ivy_Man_t * Ivy_FraigPerform(Ivy_Man_t *pManAig, Ivy_FraigParams_t *pParams)
int Ivy_ManCheck(Ivy_Man_t *p)
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Ivy_Man_t_ Ivy_Man_t
INCLUDES ///.
int Ivy_ManRewriteSeq(Ivy_Man_t *p, int fUseZeroCost, int fVerbose)
FUNCTION DEFINITIONS ///.
void Ivy_ManMakeSeq(Ivy_Man_t *p, int nLatches, int *pInits)
Ivy_Man_t * Ivy_ManResyn(Ivy_Man_t *p, int fUpdateLevel, int fVerbose)
Ivy_Obj_t * Ivy_Exor(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
int Ivy_ManCleanup(Ivy_Man_t *p)
Vec_Int_t * Ivy_ManDfsSeq(Ivy_Man_t *p, Vec_Int_t **pvLatches)
Ivy_Man_t * Ivy_ManStart()
DECLARATIONS ///.
#define Ivy_ManForEachObj(p, pObj, i)
void Ivy_FraigParamsDefault(Ivy_FraigParams_t *pParams)
FUNCTION DEFINITIONS ///.
Ivy_Obj_t * Ivy_ObjCreatePo(Ivy_Man_t *p, Ivy_Obj_t *pDriver)
struct Ivy_FraigParams_t_ Ivy_FraigParams_t
Vec_Int_t * Ivy_ManDfs(Ivy_Man_t *p)
void Ivy_ManStop(Ivy_Man_t *p)
struct Ivy_Obj_t_ Ivy_Obj_t
Ivy_Obj_t * Ivy_Or(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
void Ivy_ManHaigStop(Ivy_Man_t *p)
void Ivy_ManHaigStart(Ivy_Man_t *p, int fVerbose)
FUNCTION DEFINITIONS ///.
#define Ivy_ManForEachNodeVec(p, vIds, pObj, i)
Ivy_Obj_t * Ivy_ObjCreatePi(Ivy_Man_t *p)
DECLARATIONS ///.
int Ivy_ManRewritePre(Ivy_Man_t *p, int fUpdateLevel, int fUseZeroCost, int fVerbose)
FUNCTION DEFINITIONS ///.
Ivy_Man_t * Ivy_FraigMiter(Ivy_Man_t *pManAig, Ivy_FraigParams_t *pParams)
Ivy_Obj_t * Ivy_And(Ivy_Man_t *p, Ivy_Obj_t *p0, Ivy_Obj_t *p1)
int Ivy_FraigProve(Ivy_Man_t **ppManAig, void *pPars)
char * Mio_GateReadSop(Mio_Gate_t *pGate)
struct Mio_GateStruct_t_ Mio_Gate_t
Abc_Cex_t * Abc_CexDeriveFromCombModel(int *pModel, int nPis, int nRegs, int iPo)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.