56 Abc_Obj_t * pObj, * pFan0, * pFan1, * pFanC;
75 printf(
"Substracted %d fanouts\n", Counter );
91 Abc_Obj_t * pObj, * pFan0, * pFan1, * pFanC;
108 printf(
"Added %d fanouts\n", Counter );
152 if ( pParams->
fDrop )
167 if ( pParams->
fDrop )
181 for ( pCut = pList; pCut; pCut = pCut->
pNext )
186 if ( pParams->
fDrop )
436 int fDagNode, fTriv, TreeCode = 0;
445 fTriv = fDagNode || !fDag;
548 printf(
"Cuts of the network:\n" );
595 int nNodesTotal = 0, nMffcsTotal = 0;
633 printf(
"Total nodes = %d. Total MFFC nodes = %d.\n", nNodesTotal, nMffcsTotal );
void Abc_NodeFreeCuts(void *p, Abc_Obj_t *pObj)
static int Abc_NtkComputeArea(Abc_Ntk_t *pNtk, Cut_Man_t *p)
void * Abc_NodeGetCutsRecursive(void *p, Abc_Obj_t *pObj, int fDag, int fTree)
static int Abc_NtkIsStrash(Abc_Ntk_t *pNtk)
void Abc_NtkBalanceAttach(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_ObjIsCi(Abc_Obj_t *pObj)
void Abc_NodeGetCutsSeq(void *p, Abc_Obj_t *pObj, int fTriv)
static int Abc_NtkObjNumMax(Abc_Ntk_t *pNtk)
static int Abc_ObjFaninC1(Abc_Obj_t *pObj)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Cut_Cut_t * Cut_OracleComputeCuts(Cut_Oracle_t *p, int Node, int Node0, int Node1, int fCompl0, int fCompl1)
static int Abc_ObjFanoutNum(Abc_Obj_t *pObj)
Cut_Man_t * Abc_NtkSeqCuts(Abc_Ntk_t *pNtk, Cut_Params_t *pParams)
void Cut_ManSetNodeAttrs(Cut_Man_t *p, Vec_Int_t *vFanCounts)
static unsigned * Cut_CutReadTruth(Cut_Cut_t *p)
static int Abc_ObjFaninNum(Abc_Obj_t *pObj)
void Npn_ManSaveOne(unsigned *puTruth, int nVars)
static Vec_Int_t * Abc_NtkGetNodeAttributes(Abc_Ntk_t *pNtk)
static int Abc_ObjFaninC0(Abc_Obj_t *pObj)
int Cut_OracleReadDrop(Cut_Oracle_t *p)
void Abc_NtkCutsAddFanunt(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachCo(pNtk, pCo, i)
static abctime Abc_Clock()
void Cut_NodeSetTriv(Cut_Man_t *p, int Node)
static Abc_Obj_t * Abc_NtkObj(Abc_Ntk_t *pNtk, int i)
static int Vec_PtrSize(Vec_Ptr_t *p)
static Abc_Obj_t * Abc_ObjFanin0(Abc_Obj_t *pObj)
void Cut_ManSetFanoutCounts(Cut_Man_t *p, Vec_Int_t *vFanCounts)
static int Abc_ObjFaninId0(Abc_Obj_t *pObj)
int Cut_ManMappingArea_rec(Cut_Man_t *p, int Node)
static int Abc_ObjIsCo(Abc_Obj_t *pObj)
ABC_DLL int Abc_NodeIsMuxControlType(Abc_Obj_t *pNode)
void Cut_OracleTryDroppingCuts(Cut_Oracle_t *p, int Node)
void Cut_ManIncrementDagNodes(Cut_Man_t *p)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Abc_ObjIsNode(Abc_Obj_t *pObj)
static Vec_Int_t * Vec_IntStart(int nSize)
static void Abc_NtkPrintCuts_(void *p, Abc_Ntk_t *pNtk, int fSeq)
void * Abc_NodeGetCuts(void *p, Abc_Obj_t *pObj, int fDag, int fTree)
ABC_DLL int Abc_NodeIsMuxType(Abc_Obj_t *pNode)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Cut_Cut_t * Cut_NodeUnionCuts(Cut_Man_t *p, Vec_Int_t *vNodes)
void Cut_NodeFreeCuts(Cut_Man_t *p, int Node)
void Cut_ManPrintStats(Cut_Man_t *p)
void Cut_NodeTryDroppingCuts(Cut_Man_t *p, int Node)
static int Vec_IntEntry(Vec_Int_t *p, int i)
Cut_Man_t * Cut_ManStart(Cut_Params_t *pParams)
FUNCTION DEFINITIONS ///.
#define ABC_NAMESPACE_IMPL_END
ABC_DLL int Abc_NodeMffcSize(Abc_Obj_t *pNode)
FUNCTION DEFINITIONS ///.
Cut_Man_t * Abc_NtkCuts(Abc_Ntk_t *pNtk, Cut_Params_t *pParams)
Vec_Int_t * Abc_NtkGetNodeAttributes2(Abc_Ntk_t *pNtk)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static ABC_NAMESPACE_IMPL_START void Abc_NtkPrintCuts(void *p, Abc_Ntk_t *pNtk, int fSeq)
DECLARATIONS ///.
void Abc_NtkCutsOracle(Abc_Ntk_t *pNtk, Cut_Oracle_t *p)
void Abc_NtkCutsSubtractFanunt(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
void Cut_CutPrintList(Cut_Cut_t *pList, int fSeq)
void Cut_OracleNodeSetTriv(Cut_Oracle_t *p, int Node)
ABC_DLL Vec_Ptr_t * Abc_AigDfs(Abc_Ntk_t *pNtk, int fCollectAll, int fCollectCos)
Cut_Cut_t * Cut_NodeComputeCuts(Cut_Man_t *p, int Node, int Node0, int Node1, int fCompl0, int fCompl1, int fTriv, int TreeCode)
#define ABC_NAMESPACE_IMPL_START
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)
#define Abc_NtkForEachCi(pNtk, pCi, i)
Vec_Ptr_t * Abc_NodeMffcInsideCollect(Abc_Obj_t *pNode)
void Cut_OracleSetFanoutCounts(Cut_Oracle_t *p, Vec_Int_t *vFanCounts)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
static void Abc_NtkIncrementTravId(Abc_Ntk_t *p)
ABC_DLL int Abc_NtkIsDfsOrdered(Abc_Ntk_t *pNtk)
ABC_DLL Vec_Int_t * Abc_NtkFanoutCounts(Abc_Ntk_t *pNtk)
void Abc_NtkBalanceDetach(Abc_Ntk_t *pNtk)
int Abc_NtkSubDagSize_rec(Abc_Obj_t *pObj, Vec_Int_t *vAttrs)
static int Abc_ObjFaninId1(Abc_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
static void Vec_IntClear(Vec_Int_t *p)
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
static int Abc_NtkObjNum(Abc_Ntk_t *pNtk)
Cut_Cut_t * Cut_NodeReadCutsNew(Cut_Man_t *p, int Node)
MACRO DEFINITIONS ///.
Cut_Params_t * Cut_ManReadParams(Cut_Man_t *p)
ABC_DLL int Abc_NodeIsExorType(Abc_Obj_t *pNode)
Vec_Int_t * Cut_ManReadNodeAttrs(Cut_Man_t *p)
ABC_DLL Abc_Obj_t * Abc_NodeRecognizeMux(Abc_Obj_t *pNode, Abc_Obj_t **ppNodeT, Abc_Obj_t **ppNodeE)
void * Abc_NodeReadCuts(void *p, Abc_Obj_t *pObj)
int nTotal
DECLARATIONS ///.
static void Abc_NodeSetTravIdCurrent(Abc_Obj_t *p)
static void Vec_PtrFree(Vec_Ptr_t *p)