127 if ( pIfMan == NULL )
152 if ( pNtkNew == NULL )
169 printf(
"Abc_NtkIf: The network check has failed.\n" );
204 printf(
"Warning: The mapper will allocate %.1f GB for to represent the subject graph with %d AIG nodes.\n",
339 printf(
"Added %d buffers/inverters to decouple the CO drivers.\n", nDupGates );
341 printf(
"Duplicated %d gates to decouple the CO drivers.\n", nDupGates );
374 int i, iVar0, iVar1, iLit0, iLit1;
375 Hop_Obj_t * piLit0, * piLit1, * piLit = NULL;
383 piLit =
Hop_And( pMan, piLit0, piLit1 );
463 assert( RetValue == 0 || RetValue == 1 );
493 for ( i = 0; i < (int)pCutBest->
nLeaves; i++ )
574 for ( pTemp = pIfObj; pTemp; pTemp = pTemp->
pEquiv )
577 if ( gFunc0 == (
void *)1 )
580 if ( gFunc1 == (
void *)1 )
618 if ( gFunc == (
void *)1 )
620 printf(
"Abc_NodeIfToHop(): Computing local AIG has failed.\n" );
645 float Flow0 =
Abc_Int2Float((
int)(ABC_PTRINT_T)(*ppNode0)->pCopy);
646 float Flow1 =
Abc_Int2Float((
int)(ABC_PTRINT_T)(*ppNode1)->pCopy);
758 if ( pDriver == NULL )
void If_CutRotatePins(If_Man_t *p, If_Cut_t *pCut)
static unsigned Abc_ObjId(Abc_Obj_t *pObj)
static int Gia_ManAppendAnd(Gia_Man_t *p, int iLit0, int iLit1)
static int Abc_NtkIsStrash(Abc_Ntk_t *pNtk)
static int Abc_MapBox2Prev(Vec_Ptr_t *vDrivers, Vec_Int_t *vMapIn, Vec_Int_t *vMapOut, int Id)
static If_Obj_t * If_NotCond(If_Obj_t *p, int c)
static Vec_Ptr_t * Abc_NtkFindGoodOrder(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)
void Abc_NtkMarkMux(Abc_Obj_t *pDriver, Abc_Obj_t **ppNode1, Abc_Obj_t **ppNode2)
#define If_ManForEachNode(p, pObj, i)
void Gia_ManStop(Gia_Man_t *p)
static int Abc_NtkObjNumMax(Abc_Ntk_t *pNtk)
static int If_ObjId(If_Obj_t *pObj)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
static void * If_ObjCopy(If_Obj_t *pObj)
Hop_Obj_t * Hop_And(Hop_Man_t *p, Hop_Obj_t *p0, Hop_Obj_t *p1)
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
int Abc_ObjCompareFlow(Abc_Obj_t **ppNode0, Abc_Obj_t **ppNode1)
static int Abc_ObjFaninC1(Abc_Obj_t *pObj)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
If_Man_t * If_ManStart(If_Par_t *pPars)
FUNCTION DEFINITIONS ///.
static int If_ObjIsAnd(If_Obj_t *pObj)
#define If_CutForEachLeaf(p, pCut, pLeaf, i)
static int Abc_ObjFanoutNum(Abc_Obj_t *pObj)
static int If_CutLeaveNum(If_Cut_t *pCut)
void Abc_NtkBidecResyn(Abc_Ntk_t *pNtk, int fVerbose)
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
#define If_CutForEachLeafReverse(p, pCut, pLeaf, i)
static void If_CutSetData(If_Cut_t *pCut, void *pData)
Hop_Obj_t * Abc_RecToHop3(Hop_Man_t *pMan, If_Man_t *pIfMan, If_Cut_t *pCut, If_Obj_t *pIfObj)
static int Gia_ManAppendCi(Gia_Man_t *p)
static int If_ObjFaninC0(If_Obj_t *pObj)
Hop_Obj_t * Abc_NodeIfToHop_rec(Hop_Man_t *pHopMan, If_Man_t *pIfMan, If_Obj_t *pIfObj, Vec_Ptr_t *vVisited)
ABC_DLL char * Abc_SopCreateAnd(Mem_Flex_t *pMan, int nVars, int *pfCompl)
Hop_Obj_t * Abc_NodeBuildFromMiniInt(Hop_Man_t *pMan, Vec_Int_t *vAig, int nLeaves)
static If_Obj_t * Abc_ObjIfCopy(Abc_Obj_t *pNode)
DdNode * Kit_TruthToBdd(DdManager *dd, unsigned *pTruth, int nVars, int fMSBonTop)
ABC_DLL char * Abc_SopCreateFromIsop(Mem_Flex_t *pMan, int nVars, Vec_Int_t *vCover)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst1(Abc_Ntk_t *pNtk)
static int Abc_ObjFaninC0(Abc_Obj_t *pObj)
Abc_Ntk_t * Abc_NtkIf(Abc_Ntk_t *pNtk, If_Par_t *pPars)
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
ABC_DLL float * Abc_NtkGetCoRequiredFloats(Abc_Ntk_t *pNtk)
static If_Obj_t * If_ObjFanin0(If_Obj_t *pObj)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static int If_ObjIsCi(If_Obj_t *pObj)
#define Abc_NtkForEachCo(pNtk, pCo, i)
static If_Cut_t * If_ObjCutBest(If_Obj_t *pObj)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
static abctime Abc_Clock()
static Hop_Obj_t * Hop_Not(Hop_Obj_t *p)
static Abc_Obj_t * Abc_ObjFanin0(Abc_Obj_t *pObj)
static int Abc_LitNotCond(int Lit, int c)
static int Abc_NtkCoNum(Abc_Ntk_t *pNtk)
void If_ManComputeSwitching(If_Man_t *pIfMan)
FUNCTION DEFINITIONS ///.
Hop_Obj_t * Kit_TruthToHop(Hop_Man_t *pMan, unsigned *pTruth, int nVars, Vec_Int_t *vMemory)
static int Abc_ObjIsNone(Abc_Obj_t *pObj)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
If_Obj_t * If_ManCreateCo(If_Man_t *p, If_Obj_t *pDriver)
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
void If_DsdManAllocIsops(If_DsdMan_t *p, int nLutSize)
#define Abc_AigForEachAnd(pNtk, pNode, i)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int If_ObjFaninC1(If_Obj_t *pObj)
static word * If_CutTruthW(If_Man_t *p, If_Cut_t *pCut)
static int Abc_ObjIsNode(Abc_Obj_t *pObj)
static Hop_Obj_t * Abc_NodeIfToHop(Hop_Man_t *pHopMan, If_Man_t *pIfMan, If_Obj_t *pIfObj)
#define If_ManForEachCi(p, pObj, i)
static int Abc_LitIsCompl(int Lit)
ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
static int Abc_Float2Int(float Val)
ABC_DLL void Abc_NtkDeleteObj(Abc_Obj_t *pObj)
ABC_DLL int Abc_NodeIsMuxType(Abc_Obj_t *pNode)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
ABC_NAMESPACE_IMPL_START If_Man_t * Abc_NtkToIf(Abc_Ntk_t *pNtk, If_Par_t *pPars)
DECLARATIONS ///.
static void * Vec_PtrEntryLast(Vec_Ptr_t *p)
static If_Obj_t * If_ManCo(If_Man_t *p, int i)
int Kit_TruthIsop(unsigned *puTruth, int nVars, Vec_Int_t *vMemory, int fTryBoth)
FUNCTION DEFINITIONS ///.
static void Abc_MapBoxSetPrevNext(Vec_Ptr_t *vDrivers, Vec_Int_t *vMapIn, Vec_Int_t *vMapOut, int Id)
static int Vec_IntEntry(Vec_Int_t *p, int i)
unsigned __int64 word
DECLARATIONS ///.
#define ABC_NAMESPACE_IMPL_END
static void If_ObjSetCopy(If_Obj_t *pObj, void *pCopy)
static If_Obj_t * If_ManConst1(If_Man_t *p)
Gia_Man_t * Gia_ManStart(int nObjsMax)
DECLARATIONS ///.
Abc_Obj_t * Abc_NodeFromIf_rec(Abc_Ntk_t *pNtkNew, If_Man_t *pIfMan, If_Obj_t *pIfObj, Vec_Int_t *vCover)
int If_DsdManVarNum(If_DsdMan_t *p)
static unsigned * If_CutTruth(If_Man_t *p, If_Cut_t *pCut)
static If_Obj_t * If_ManCi(If_Man_t *p, int i)
static If_Obj_t * If_ObjFanin1(If_Obj_t *pObj)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
ABC_DLL void * Abc_FrameReadManDsd()
static void * If_CutData(If_Cut_t *pCut)
int If_CutSopBalanceEval(If_Man_t *p, If_Cut_t *pCut, Vec_Int_t *vAig)
#define Vec_IntForEachEntryDouble(vVec, Entry1, Entry2, i)
static void Vec_PtrWriteEntry(Vec_Ptr_t *p, int i, void *Entry)
Hop_Obj_t * Abc_NodeIfToHop2_rec(Hop_Man_t *pHopMan, If_Man_t *pIfMan, If_Obj_t *pIfObj, Vec_Ptr_t *vVisited)
void Abc_NtkFindGoodOrder_rec(Abc_Obj_t *pNode, Vec_Ptr_t *vNodes)
static void Abc_TtFlip(word *pTruth, int nWords, int iVar)
ABC_DLL Vec_Ptr_t * Abc_AigDfs(Abc_Ntk_t *pNtk, int fCollectAll, int fCollectCos)
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static int If_ManObjNum(If_Man_t *p)
static int If_CutLeafBit(If_Cut_t *pCut, int i)
ABC_DLL int Abc_NtkLogicMakeSimpleCos(Abc_Ntk_t *pNtk, int fDuplicate)
static int Vec_IntEntryLast(Vec_Int_t *p)
static void If_ObjSetChoice(If_Obj_t *pObj, If_Obj_t *pEqu)
static int Abc_NodeIsTravIdCurrent(Abc_Obj_t *p)
static int Abc_AigNodeIsChoice(Abc_Obj_t *pNode)
static If_Obj_t * If_Regular(If_Obj_t *p)
static Abc_Obj_t * Abc_ObjEquiv(Abc_Obj_t *pObj)
static Abc_Obj_t * Abc_ObjRegular(Abc_Obj_t *p)
static int Vec_IntSize(Vec_Int_t *p)
ABC_DLL void Abc_SopComplement(char *pSop)
static char * Abc_NtkName(Abc_Ntk_t *pNtk)
ABC_DLL float * Abc_NtkGetCiArrivalFloats(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachCi(pNtk, pCi, i)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Abc_TtWordNum(int nVars)
#define If_ManForEachCo(p, pObj, i)
ABC_DLL int Abc_NtkSweep(Abc_Ntk_t *pNtk, int fVerbose)
static Hop_Obj_t * Hop_NotCond(Hop_Obj_t *p, int c)
void If_ManCreateChoice(If_Man_t *p, If_Obj_t *pRepr)
int If_ManPerformMapping(If_Man_t *p)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst0(Abc_Ntk_t *pNtk)
int If_DsdManLutSize(If_DsdMan_t *p)
void If_ManCleanCutData(If_Man_t *p)
static int Abc_NtkPiNum(Abc_Ntk_t *pNtk)
static void Abc_NtkIncrementTravId(Abc_Ntk_t *p)
static Abc_Obj_t * Abc_NtkCreateNode(Abc_Ntk_t *pNtk)
If_Obj_t * If_ManCreateCi(If_Man_t *p)
static int Abc_Lit2Var(int Lit)
static float Abc_Int2Float(int Num)
#define ABC_INFINITY
MACRO DEFINITIONS ///.
ABC_DLL void Abc_NtkCleanCopy(Abc_Ntk_t *pNtk)
static Abc_Ntk_t * Abc_NtkFromIf(If_Man_t *pIfMan, Abc_Ntk_t *pNtk)
static Abc_Obj_t * Abc_ObjNotCond(Abc_Obj_t *p, int c)
If_Obj_t * If_ManCreateAnd(If_Man_t *p, If_Obj_t *pFan0, If_Obj_t *pFan1)
void If_ManCleanNodeCopy(If_Man_t *p)
DECLARATIONS ///.
static void Vec_PtrClear(Vec_Ptr_t *p)
ABC_DLL char * Abc_FrameReadFlag(char *pFlag)
static Hop_Obj_t * Hop_ManConst0(Hop_Man_t *p)
int If_CutDsdBalanceEval(If_Man_t *p, If_Cut_t *pCut, Vec_Int_t *vAig)
Hop_Obj_t * Abc_NodeBuildFromMini(Hop_Man_t *pMan, If_Man_t *p, If_Cut_t *pCut, int fUseDsd)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
static int Abc_MapBox2Next(Vec_Ptr_t *vDrivers, Vec_Int_t *vMapIn, Vec_Int_t *vMapOut, int Id)
static void Vec_IntClear(Vec_Int_t *p)
static int Abc_NtkObjNum(Abc_Ntk_t *pNtk)
Vec_Int_t * Gia_ManComputeSwitchProbs(Gia_Man_t *pGia, int nFrames, int nPref, int fProbOne)
char * Abc_UtilStrsav(char *s)
ABC_DLL void Abc_NodeComplement(Abc_Obj_t *pNode)
static void ** Vec_PtrArray(Vec_Ptr_t *p)
void If_ManStop(If_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Hop_Man_t_ Hop_Man_t
INCLUDES ///.
Hop_Obj_t * Hop_IthVar(Hop_Man_t *p, int i)
FUNCTION DEFINITIONS ///.
ABC_DLL Abc_Obj_t * Abc_NodeRecognizeMux(Abc_Obj_t *pNode, Abc_Obj_t **ppNodeT, Abc_Obj_t **ppNodeE)
ABC_DLL int Abc_ObjLevelNew(Abc_Obj_t *pObj)
static void Abc_NodeSetTravIdCurrent(Abc_Obj_t *p)
void Abc_NtkBddReorder(Abc_Ntk_t *pNtk, int fVerbose)
static void Vec_PtrFree(Vec_Ptr_t *p)