141 int i, nCubes, nCubePairs = 0;
149 nCubePairs += nCubes * (nCubes - 1) / 2;
297 DdNode * bCover, * zCover, * bFunc;
346 if ( pObj->
pData == NULL )
348 printf(
"Node without mapping is encountered.\n" );
375 Counter += pNode->
fExor;
456 int i, nFaninsMax = 0;
467 int i, nFaninsMax = 0;
579 Counter += (pObj->
pCopy != NULL);
763 if ( pThis == pFanin )
834 if ( pFanoutCo == NULL )
957 int i, nDupGates = 0;
1011 unsigned * pType =
ABC_CALLOC(
unsigned, nObjs );
1013 int i, Counts[4] = {0}, Consts[2] = {0}, Inputs[2] = {0};
1024 for ( i = 0; i < nObjs; i++ )
1026 for ( i = 0; i < 4; i++ )
1027 printf(
"%d = %d ", i, Counts[i] );
1028 for ( i = 0; i < 2; i++ )
1029 printf(
"c%d = %d ", i, Consts[i] );
1030 for ( i = 0; i < 2; i++ )
1031 printf(
"i%d = %d ", i, Inputs[i] );
1050 Abc_Obj_t * pNode, * pDriver, * pDriverNew, * pFanin;
1051 int i, k, LevelMax,
nTotal = 0;
1086 int nDupGates = 0, nDupInvs = 0, nDupChange = 0;
1090 int fHasDir = 0, fHasInv = 0, fHasOther = 0;
1156 nTotal += nDupInvs + nDupGates;
1189 int nDupBufs = 0, nDupGates = 0;
1211 nTotal += nDupBufs + nDupGates;
1235 for ( i = p->nSize-1; i > 0; i-- )
1241 p->pArray[i ] = pNode2;
1242 p->pArray[i-1] = pNode1;
1491 if ( argc == util_optind )
1495 fprintf( pErr,
"Empty current network.\n" );
1498 if ( pNtk->
pSpec == NULL )
1500 fprintf( pErr,
"The external spec is not given.\n" );
1503 pFile = fopen( pNtk->
pSpec,
"r" );
1504 if ( pFile == NULL )
1506 fprintf( pErr,
"Cannot open the external spec file \"%s\".\n", pNtk->
pSpec );
1513 if ( pNtk2 == NULL )
1518 else if ( argc == util_optind + 1 )
1522 fprintf( pErr,
"Empty current network.\n" );
1527 if ( pNtk2 == NULL )
1532 else if ( argc == util_optind + 2 )
1535 if ( pNtk1 == NULL )
1538 if ( pNtk2 == NULL )
1548 fprintf( pErr,
"Wrong number of arguments.\n" );
1815 if ( pNode == pConst1 )
1834 pNtk->
vObjs = vObjsNew;
1946 int Value = (int)(ABC_PTRINT_T)pObj->
pCopy;
1992 if ( *pnCutSizeMax < *pnCutSize )
1993 *pnCutSizeMax = *pnCutSize;
1994 (*pnCutSize) -= nDecrem;
2012 int nCutSize = 0, nCutSizeMax = 0;
2022 printf(
"Max cross cut size = %6d. Ratio = %6.2f %%\n", nCutSizeMax, 100.0 * nCutSizeMax/
Abc_NtkObjNum(pNtk) );
2042 pFile = fopen(
"4varfs.txt",
"w" );
2043 for ( i = 1; i < (1<<16)-1; i++ )
2045 fprintf( pFile,
"read_truth " );
2047 fprintf( pFile,
"; clp; st; w 1.blif; map; cec 1.blif\n" );
2088 Vec_Ptr_t * vSupp, * vNodes, * vReverse;
2090 int Iter, i, k,
Counter, CounterCos, CounterCosNew;
2122 CounterCos = CounterCosNew = 0;
2127 if ( pTemp->
fMarkA == 0 )
2132 printf(
"%4d CO %5d : Supp = %5d. Lev = %3d. Cone = %5d. Rev = %5d. COs = %3d (%3d).\n",
2187 printf(
"Choice orig = %3d Choice new = %3d\n", nNodesOld,
Vec_PtrSize(vSupp) );
2233 printf(
"%c=%d ",
'a'+i, pObj->
Level );
2254 if ( pFanout != pNode && pFanout->
Level >= pNode->
Level )
2274 if ( pFanout != pNode && pFanout->
Level > pNode->
Level )
2295 if ( pBuffer == NULL )
2313 pObj->
Level = nLevelMax + 1;
2317 assert( nLevelMax < (1<<18) );
2320 pObj->
Level = (1<<18);
2329 for ( Iter = 0; Iter < nImprove; Iter++ )
2331 int Counter = 0, TotalGain = 0;
2346 if ( CountGain >= 0 )
2350 TotalGain += CountGain;
2354 printf(
"Shifted %5d nodes down with total gain %5d.\n", Counter, TotalGain );
2364 for ( Iter = 0; Iter < nImprove; Iter++ )
2366 int Counter = 0, TotalGain = 0;
2381 if ( CountGain >= 0 )
2385 TotalGain += CountGain;
2389 printf(
"Shifted %5d nodes up with total gain %5d.\n", Counter, TotalGain );
2450 static double GateDelays[20] = { 1.00, 1.00, 2.00, 2.58, 3.00, 3.32, 3.58, 3.81, 4.00, 4.17, 4.32, 4.46, 4.58, 4.70, 4.81, 4.91, 5.00, 5.09, 5.17, 5.25 };
2453 float DelayMax, Delays[15] = {0};
2454 int nFaninMax, i, k;
2457 assert( nFaninMax > 1 && nFaninMax < 15 );
2458 for ( i = 0; i <= nFaninMax; i++ )
2459 Delays[i] = GateDelays[i]/GateDelays[nFaninMax];
2494 Abc_Obj_t * pNodeOr, * pNodeNew, * pFanin;
2495 char * pCube, * pSop = (
char *)pNodeOld->
pData;
2514 if ( Value ==
'0' || Value ==
'1' )
2523 if ( Value !=
'0' && Value !=
'1' )
2537 pNodeOld->
pCopy = pNodeOr;
2557 printf(
"Abc_NtkSopToCubes: The network check has failed.\n" );
2607 if ( pNext != pPivot )
2629 printf(
"Nodes = %d. Size = %d. Ratio = %f.\n",
2718 for ( i = 0; i < nInputs; i++ )
2720 for ( i = 0; i < nOutputs; i++ )
2725 for ( i = 0; i < nOutputs; i++ )
2736 fprintf( stdout,
"Abc_NtkFromPla(): Network check has failed.\n" );
2748 char * pPlas[2] = {
"1000 1\n",
"0110 1\n0011 1\n" };
2769 Abc_Obj_t * pObj, * pFanin, * pObjNew, * pObjNewRoot;
2770 int i, k, j, nCubes, nCubesThis, nSplits;
2771 char * pSopStr, * pSopStr2, * pTempSop, Symb;
2784 if ( nCubes <= nCubesMax )
2790 nSplits = (nCubes / nCubesMax) + (
int)(nCubes % nCubesMax > 0);
2791 pSopStr = (
char *)pObjNewRoot->
pData;
2798 pTempSop = (
char *)pObj->
pData; pObj->
pData = (
char *)
"?";
2799 for ( j = 0; j < nSplits; j++ )
2808 nCubesThis = (j < nCubes / nCubesMax) ? nCubesMax : nCubes % nCubesMax;
2810 Symb = *pSopStr2; *pSopStr2 = 0;
2816 pObj->
pData = pTempSop;
2817 pObj->
pCopy = pObjNewRoot;
2823 fprintf( stdout,
"Abc_NtkDup(): Network check has failed.\n" );
2824 pNtk->
pCopy = pNtkNew;
2854 if ( Counter++ == 0 )
2855 printf(
"Node %d is out of topo order.\n",
Abc_ObjId(pObj) );
2860 printf(
"Topological order does not hold for %d internal nodes.\n", Counter );
2861 return (
int)(Counter == 0);
void Abc_NtkFromPlaTest()
int Abc_NtkGetLitFactNum(Abc_Ntk_t *pNtk)
static unsigned Abc_ObjId(Abc_Obj_t *pObj)
static Abc_Obj_t * Abc_ObjCopyCond(Abc_Obj_t *pObj)
static Vec_Ptr_t * Vec_PtrStart(int nSize)
int Abc_NtkLogicMakeSimpleCos2(Abc_Ntk_t *pNtk, int fDuplicate)
void Cudd_RecursiveDerefZdd(DdManager *table, DdNode *n)
static int Abc_NtkIsStrash(Abc_Ntk_t *pNtk)
static int Abc_NtkIsLogic(Abc_Ntk_t *pNtk)
void Abc_NtkCleanCopy_rec(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 int Abc_ObjIsCi(Abc_Obj_t *pObj)
ABC_DLL int Abc_NodeIsConst(Abc_Obj_t *pNode)
Abc_Ntk_t * Abc_NtkFromPla(char **pPlas, int nInputs, int nOutputs)
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
static int Dec_GraphNodeNum(Dec_Graph_t *pGraph)
static int Abc_NtkObjNumMax(Abc_Ntk_t *pNtk)
int Abc_NtkGetExorNum(Abc_Ntk_t *pNtk)
void Abc_NtkCleanNext(Abc_Ntk_t *pNtk)
int Abc_NtkPrepareTwoNtks(FILE *pErr, Abc_Ntk_t *pNtk, char **argv, int argc, Abc_Ntk_t **ppNtk1, Abc_Ntk_t **ppNtk2, int *pfDelete1, int *pfDelete2)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
int Abc_NtkGetFaninMax(Abc_Ntk_t *pNtk)
int Hop_DagSize(Hop_Obj_t *pObj)
void Abc_NtkCleanMarkC(Abc_Ntk_t *pNtk)
static int Abc_ObjFaninC1(Abc_Obj_t *pObj)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
#define Vec_PtrForEachEntryReverse(Type, vVec, pEntry, i)
static int Vec_PtrPushUnique(Vec_Ptr_t *p, void *Entry)
static int Abc_NtkIsNetlist(Abc_Ntk_t *pNtk)
Abc_Obj_t * Abc_NodeFindCoFanout(Abc_Obj_t *pNode)
int Abc_NtkLogicMakeSimpleCos(Abc_Ntk_t *pNtk, int fDuplicate)
static int Abc_ObjIsLatch(Abc_Obj_t *pObj)
void Abc_NtkReverseTopoOrder(Abc_Ntk_t *p)
#define Abc_SopForEachCube(pSop, nFanins, pCube)
ABC_DLL int Abc_NodeIsConst0(Abc_Obj_t *pNode)
static int Abc_ObjFanoutNum(Abc_Obj_t *pObj)
void Abc_NtkTransferPhases(Abc_Ntk_t *pNtkNew, Abc_Ntk_t *pNtk)
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
ABC_DLL int Abc_SopGetCubeNum(char *pSop)
void Abc_NtkFxuFreeInfo(Fxu_Data_t *p)
void Abc_NtkFixCoDriverProblem(Abc_Obj_t *pDriver, Abc_Obj_t *pNodeCo, int fDuplicate)
ABC_DLL char * Abc_SopCreateAnd(Mem_Flex_t *pMan, int nVars, int *pfCompl)
typedefABC_NAMESPACE_HEADER_START struct FxuDataStruct Fxu_Data_t
INCLUDES ///.
static int Abc_ObjFaninNum(Abc_Obj_t *pObj)
static int Abc_ObjIsBarBuf(Abc_Obj_t *pObj)
static int Abc_NtkHasMapping(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_NtkDupObj(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pObj, int fCopyName)
Vec_Ptr_t * Abc_NtkCollectLatches(Abc_Ntk_t *pNtk)
int Abc_NodeIsMuxType(Abc_Obj_t *pNode)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst1(Abc_Ntk_t *pNtk)
static int Abc_ObjFaninC0(Abc_Obj_t *pObj)
ABC_DLL int Abc_SopGetLitNum(char *pSop)
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
double Abc_NtkGetMappedArea(Abc_Ntk_t *pNtk)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static int Abc_NtkCiNum(Abc_Ntk_t *pNtk)
#define ABC_ALLOC(type, num)
Abc_Obj_t * Abc_NtkAddBuffsOne(Vec_Ptr_t *vBuffs, Abc_Obj_t *pFanin, int Level, int nLevelMax)
#define Abc_NtkForEachCo(pNtk, pCo, i)
void Abc_NtkCleanMarkA(Abc_Ntk_t *pNtk)
Vec_Int_t * Abc_NtkFanoutCounts(Abc_Ntk_t *pNtk)
static void Abc_NtkTopoSetBeg(Abc_Obj_t *p)
int Abc_NtkGetMuxNum(Abc_Ntk_t *pNtk)
int Abc_NtkGetCubePairNum(Abc_Ntk_t *pNtk)
int Abc_NtkFastExtract(Abc_Ntk_t *pNtk, Fxu_Data_t *p)
Dec_Graph_t * Dec_Factor(char *pSop)
FUNCTION DECLARATIONS ///.
int Abc_ObjPointerCompare(void **pp1, void **pp2)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
static int Abc_NtkIsSopLogic(Abc_Ntk_t *pNtk)
#define Abc_CubeForEachVar(pCube, Value, i)
int Abc_NtkGetClauseNum(Abc_Ntk_t *pNtk)
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
ABC_DLL void Abc_AigRehash(Abc_Aig_t *pMan)
static abctime Abc_Clock()
int Abc_NtkAddBuffsEval(Abc_Obj_t *pNode, Abc_Obj_t *pFanin)
static int Vec_PtrSize(Vec_Ptr_t *p)
int Abc_NtkCrossCut(Abc_Ntk_t *pNtk)
static int Abc_NtkIsAigLogic(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_ObjFanin0(Abc_Obj_t *pObj)
static float Abc_MaxFloat(float a, float b)
static int Abc_ObjFaninId0(Abc_Obj_t *pObj)
Vec_Ptr_t * Abc_NtkSaveCopy(Abc_Ntk_t *pNtk)
static int Abc_NtkCoNum(Abc_Ntk_t *pNtk)
static int Abc_ObjIsNone(Abc_Obj_t *pObj)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
static int Abc_ObjIsCo(Abc_Obj_t *pObj)
int Abc_NtkGetBufNum(Abc_Ntk_t *pNtk)
static Abc_Ntk_t * Abc_ObjModel(Abc_Obj_t *pObj)
static Abc_Obj_t * Abc_NtkCo(Abc_Ntk_t *pNtk, int i)
Abc_Ntk_t * Io_Read(char *pFileName, Io_FileType_t FileType, int fCheck, int fBarBufs)
void Abc_NtkCleanMarkAB(Abc_Ntk_t *pNtk)
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 ///.
int Abc_NtkGetFanoutMax(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_SopComplementVar(char *pSop, int iVar)
#define Abc_AigForEachAnd(pNtk, pNode, i)
int Abc_NtkGetCubeNum(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_ObjChild0(Abc_Obj_t *pObj)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
ABC_DLL void Abc_ObjPatchFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFaninOld, Abc_Obj_t *pFaninNew)
Io_FileType_t Io_ReadFileType(char *pFileName)
DECLARATIONS ///.
static void Abc_NtkTopoSetEnd(Abc_Obj_t *p)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
int Abc_NtkLogicHasSimpleCos(Abc_Ntk_t *pNtk)
static int Abc_ObjIsNode(Abc_Obj_t *pObj)
static int Abc_NtkNodeNum(Abc_Ntk_t *pNtk)
static int Abc_MinInt(int a, int b)
ABC_DLL void Abc_NtkAddDummyPoNames(Abc_Ntk_t *pNtk)
int Abc_NtkAddBuffsEval2(Abc_Obj_t *pNode, Abc_Obj_t *pFanin)
static Vec_Int_t * Vec_IntStart(int nSize)
void Abc_VecObjPushUniqueOrderByLevel(Vec_Ptr_t *p, Abc_Obj_t *pNode)
ABC_DLL char * Abc_SopRegister(Mem_Flex_t *pMan, char *pName)
DECLARATIONS ///.
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)
void Abc_NtkInvertConstraints(Abc_Ntk_t *pNtk)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static void * Vec_PtrEntryLast(Vec_Ptr_t *p)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeInv(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
Abc_Obj_t * Abc_NodeHasUniqueCoFanout(Abc_Obj_t *pNode)
static int Abc_ObjLevel(Abc_Obj_t *pObj)
int Abc_NtkIsTopo(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkSplitSop(Abc_Ntk_t *pNtk, int nCubesMax, int fVerbose)
static int Vec_IntEntry(Vec_Int_t *p, int i)
#define ABC_NAMESPACE_IMPL_END
static void Vec_IntFill(Vec_Int_t *p, int nSize, int Fill)
int Abc_NtkCountCopy(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeBuf(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
ABC_DLL Vec_Ptr_t * Abc_NtkNodeSupport(Abc_Ntk_t *pNtk, Abc_Obj_t **ppNodes, int nNodes)
ABC_DLL void Abc_NtkFinalize(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkNew)
static int Abc_AigNodeIsAnd(Abc_Obj_t *pNode)
void Abc_NtkPrintCiLevels(Abc_Ntk_t *pNtk)
int Abc_NtkCountMuxes(Abc_Ntk_t *pNtk)
void Abc_NtkLogicMakeSimpleCosTest(Abc_Ntk_t *pNtk, int fDuplicate)
void Abc_NtkCleanMarkABC(Abc_Ntk_t *pNtk)
DdNode * Cudd_zddIsop(DdManager *dd, DdNode *L, DdNode *U, DdNode **zdd_I)
Abc_Obj_t * Abc_NodeFindNonCoFanout(Abc_Obj_t *pNode)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
void Abc_NtkLoadCopy(Abc_Ntk_t *pNtk, Vec_Ptr_t *vCopies)
void Abc_NodeCollectFanins(Abc_Obj_t *pNode, Vec_Ptr_t *vNodes)
void Abc_NtkCompareCones(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_NtkCreatePi(Abc_Ntk_t *pNtk)
static void Vec_IntFreeP(Vec_Int_t **p)
ABC_DLL Vec_Ptr_t * Abc_NtkDfsReverseNodesContained(Abc_Ntk_t *pNtk, Abc_Obj_t **ppNodes, int nNodes)
static void * Vec_AttFree(Vec_Att_t *p, int fFreeMan)
void Abc_NtkSetDefaultFxParams(Fxu_Data_t *p)
FUNCTION DEFINITIONS ///.
int Abc_NodeFindFanin(Abc_Obj_t *pNode, Abc_Obj_t *pFanin)
#define Abc_NtkForEachBox(pNtk, pObj, i)
void Abc_NtkDetectMatching(Abc_Ntk_t *pNtk)
static void Vec_PtrWriteEntry(Vec_Ptr_t *p, int i, void *Entry)
int Abc_NtkGetBddNodeNum(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachNode(pNtk, pNode, i)
void Abc_NtkCleanCopy(Abc_Ntk_t *pNtk)
void Abc_NtkReverseTopoOrderTest(Abc_Ntk_t *p)
ABC_DLL Vec_Ptr_t * Abc_AigDfs(Abc_Ntk_t *pNtk, int fCollectAll, int fCollectCos)
static int Abc_NtkConstrNum(Abc_Ntk_t *pNtk)
void Abc_NtkReverse_rec(Abc_Obj_t *pObj, Vec_Int_t *vVisited)
#define ABC_NAMESPACE_IMPL_START
void Abc_NtkCompareSupports(Abc_Ntk_t *pNtk)
void Abc_NtkCleanNext_rec(Abc_Ntk_t *pNtk)
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
int Abc_NtkGetLitNum(Abc_Ntk_t *pNtk)
double Mio_GateReadArea(Mio_Gate_t *pGate)
static int Abc_NtkTopoHasBeg(Abc_Obj_t *p)
static int Abc_NodeIsTravIdCurrent(Abc_Obj_t *p)
static int Abc_AigNodeIsChoice(Abc_Obj_t *pNode)
static Abc_Obj_t * Abc_ObjRegular(Abc_Obj_t *p)
int Abc_NtkGetTotalFanins(Abc_Ntk_t *pNtk)
void Abc_NodeCollectFanouts(Abc_Obj_t *pNode, Vec_Ptr_t *vNodes)
static int Vec_IntSize(Vec_Int_t *p)
Abc_Ntk_t * Abc_NtkSopToCubes(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_SopComplement(char *pSop)
#define Abc_ObjForEachFanout(pObj, pFanout, i)
static Abc_Obj_t * Abc_NtkPo(Abc_Ntk_t *pNtk, int i)
void Extra_PrintBinary(FILE *pFile, unsigned Sign[], int nBits)
#define Abc_NtkForEachCi(pNtk, pCi, i)
static int Abc_NtkPoNum(Abc_Ntk_t *pNtk)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
int Abc_NtkCrossCut_rec(Abc_Obj_t *pObj, int *pnCutSize, int *pnCutSizeMax)
int Abc_NtkGetChoiceNum(Abc_Ntk_t *pNtk)
#define Abc_ObjForEachFanin(pObj, pFanin, i)
Vec_Ptr_t * Abc_NtkCollectObjects(Abc_Ntk_t *pNtk)
void Abc_NtkOrderCisCos(Abc_Ntk_t *pNtk)
static int Abc_NtkIsBddLogic(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst0(Abc_Ntk_t *pNtk)
void Abc_NodeSopToCubes(Abc_Obj_t *pNodeOld, Abc_Ntk_t *pNtkNew)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
int Abc_NodeCompareLevelsIncrease(Abc_Obj_t **pp1, Abc_Obj_t **pp2)
static void Abc_NtkIncrementTravId(Abc_Ntk_t *p)
static Abc_Obj_t * Abc_NtkCreateNode(Abc_Ntk_t *pNtk)
static int Abc_ObjIsNet(Abc_Obj_t *pObj)
#define ABC_CALLOC(type, num)
ABC_DLL Abc_Obj_t * Abc_NtkFetchTwinNode(Abc_Obj_t *pNode)
static void Abc_ObjXorFaninC(Abc_Obj_t *pObj, int i)
ABC_NAMESPACE_IMPL_START void * Abc_NtkAttrFree(Abc_Ntk_t *pNtk, int Attr, int fFreeMan)
DECLARATIONS ///.
ABC_DLL int Abc_SopGetVarNum(char *pSop)
static int Abc_ObjCrossCutInc(Abc_Obj_t *pObj)
static int Abc_ObjIsPo(Abc_Obj_t *pObj)
static void Dec_GraphFree(Dec_Graph_t *pGraph)
Abc_Obj_t * Abc_NodeRecognizeMux(Abc_Obj_t *pNode, Abc_Obj_t **ppNodeT, Abc_Obj_t **ppNodeE)
void Io_WriteBlifLogic(Abc_Ntk_t *pNtk, char *pFileName, int fWriteLatches)
FUNCTION DEFINITIONS ///.
static void Vec_PtrClear(Vec_Ptr_t *p)
void Abc_NtkReassignIds(Abc_Ntk_t *pNtk)
static int Abc_NtkTopoHasEnd(Abc_Obj_t *p)
static Abc_Obj_t * Abc_ObjNot(Abc_Obj_t *p)
void Abc_NtkReverseTopoOrder_rec(Abc_Obj_t *pObj, int fThisIsPivot)
int Abc_CountZddCubes(DdManager *dd, DdNode *zCover)
int Abc_NtkCompareConesCompare(int *pNum1, int *pNum2)
static Abc_Ntk_t * Abc_ObjNtk(Abc_Obj_t *pObj)
ABC_DLL Vec_Ptr_t * Abc_NtkDfsNodes(Abc_Ntk_t *pNtk, Abc_Obj_t **ppNodes, int nNodes)
static int Abc_ObjFaninId1(Abc_Obj_t *pObj)
#define Abc_NtkForEachPo(pNtk, pPo, i)
int Abc_NodeCompareLevelsDecrease(Abc_Obj_t **pp1, Abc_Obj_t **pp2)
static Abc_Obj_t * Abc_ObjFanout(Abc_Obj_t *pObj, int i)
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 ///.
void Abc_NtkFillTemp(Abc_Ntk_t *pNtk)
static int Abc_ObjIsComplement(Abc_Obj_t *p)
static void Vec_IntClear(Vec_Int_t *p)
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
static int Abc_NtkObjNum(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_NtkLevel(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_NtkAddDummyPiNames(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_NodeComplement(Abc_Obj_t *pNode)
void Abc_NtkCleanMarkB(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkAddBuffs(Abc_Ntk_t *pNtkInit, int fDirect, int fReverse, int nImprove, int fVerbose)
static Abc_Obj_t * Abc_NtkCreatePo(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_ObjChild1(Abc_Obj_t *pObj)
static void ** Vec_PtrArray(Vec_Ptr_t *p)
ABC_DLL int Abc_SopIsComplement(char *pSop)
void Abc_NtkCleanData(Abc_Ntk_t *pNtk)
float Abc_NtkComputeDelay(Abc_Ntk_t *pNtk)
ABC_DLL char * Abc_SopCreateOr(Mem_Flex_t *pMan, int nVars, int *pfCompl)
int Abc_NodeIsMuxControlType(Abc_Obj_t *pNode)
int Abc_NtkGetMultiRefNum(Abc_Ntk_t *pNtk)
int Abc_NtkGetAigNodeNum(Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_ObjFanout0(Abc_Obj_t *pObj)
Abc_Ntk_t * Abc_NtkAddBuffsInt(Abc_Ntk_t *pNtkInit, int fReverse, int nImprove, int fVerbose)
int nTotal
DECLARATIONS ///.
#define Abc_NtkForEachPi(pNtk, pPi, i)
ABC_DLL void Abc_NodeComplementInput(Abc_Obj_t *pNode, Abc_Obj_t *pFanin)
Vec_Int_t * Abc_NtkGetCiIds(Abc_Ntk_t *pNtk)
static void Abc_NodeSetTravIdCurrent(Abc_Obj_t *p)
int Cudd_DagSize(DdNode *node)
int Abc_NodeIsExorType(Abc_Obj_t *pNode)
static void Vec_PtrFree(Vec_Ptr_t *p)
void Abc_NtkTransferCopy(Abc_Ntk_t *pNtk)