52 assert( ((
unsigned)(ABC_PTRUINT_T)pObj->
pData) & 0xffff0000 );
109 assert( ((
unsigned)(ABC_PTRUINT_T)pFanin->pCopy) & 0xffff0000 );
140 unsigned * pTruth, * pTruth0, * pTruth1;
144 assert( ((
unsigned)(ABC_PTRUINT_T)pObj->
pData) & 0xffff0000 );
145 return (
unsigned *)pObj->
pData;
148 pTruth = (
unsigned *)
Vec_PtrEntry( vTtNodes, (*piCount)++ );
160 pObj->
pData = pTruth;
181 unsigned * pTruth = NULL;
182 int i, k, iCount = 0;
200 assert( ((
unsigned)(ABC_PTRUINT_T)pFanin->pCopy) & 0xffff0000 );
241 for ( i = 0; i < p->
nCuts; i++ )
244 for ( k = 0; k < (int)pCut->
nLeaves; k++ )
278 int i, k, nCands, fLeavesOnly, RetValue;
296 p->
pRefs[(int)(ABC_PTRUINT_T)pFanin->
pCopy]++;
304 for ( i = 0; i < nCands; i++ )
310 if ( p->
pRefs[(
int)(ABC_PTRUINT_T)pFanin->
pCopy] > 1 )
339 for ( i = 0; i < (int)pDom->
nLeaves; i++ )
341 for ( k = 0; k < (int)pCut->
nLeaves; k++ )
368 for ( i = 0; i < nCuts; i++ )
377 for ( k = 0; k < (int)pCutNew->
nLeaves; k++ )
380 if ( k == (
int)pCutNew->
nLeaves )
427 printf(
"LEAVES:\n" );
429 printf(
"%d,", pObj->
Id );
432 printf(
"\nNODES:\n" );
435 printf(
"%d,", pObj->
Id );
457 for ( i = 0; i < pCut->
nLeaves; i++ )
481 int i, k, j, nLeavesNew;
507 nLeavesNew = pCut->
nLeaves - 1;
510 if ( (pCut->
uSign[(pFanin->
Id & 32) > 0] & (1 << (pFanin->
Id & 31))) )
512 if ( ++nLeavesNew > p->
pPars->nVarsMax )
520 for ( i = 0; i < (int)pCut->
nLeaves; i++ )
521 if ( pCut->
pLeaves[i] != Node )
528 for ( k = 0; k < (int)pCutNew->
nLeaves; k++ )
537 for ( j = pCutNew->
nLeaves; j > k; j-- )
557 for ( i = 0; i < (int)pCutNew->
nNodes; i++ )
558 if ( pCutNew->
pNodes[i] == Node )
560 for ( k = i; k < (int)pCutNew->
nNodes - 1; k++ )
562 pCutNew->
pNodes[k] = Node;
565 if ( i == (
int)pCutNew->
nNodes )
591 int i, k, Temp, nMffc, fChanges;
609 for ( i = 0; i < p->
nCuts; i++ )
616 for ( k = 0; k < (int)pCut->
nLeaves; k++ )
631 if ( p->
pPars->fSatur )
636 for ( i = 0; i < p->
nCuts; i++ )
646 if ( pCut->
Weight <= 1.001 )
660 for ( i = 0; i < p->
nEvals - 1; i++ )
671 }
while ( fChanges );
static void Kit_TruthAndPhase(unsigned *pOut, unsigned *pIn0, unsigned *pIn1, int nVars, int fCompl0, int fCompl1)
int pLeaves[LPK_SIZE_MAX]
static Hop_Obj_t * Hop_ObjFanin1(Hop_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
static int Abc_ObjIsCi(Abc_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct cloudManager CloudManager
static void Kit_TruthFill(unsigned *pOut, int nVars)
#define Cloud_NotCond(p, c)
static int Abc_ObjFanoutNum(Abc_Obj_t *pObj)
static int Abc_ObjFaninNum(Abc_Obj_t *pObj)
unsigned * Lpk_CutTruth_rec(Hop_Man_t *pMan, Hop_Obj_t *pObj, int nVars, Vec_Ptr_t *vTtNodes, int *piCount)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
ABC_NAMESPACE_IMPL_START CloudNode * Lpk_CutTruthBdd_rec(CloudManager *dd, Hop_Man_t *pMan, Hop_Obj_t *pObj, int nVars)
DECLARATIONS ///.
#define Lpk_CutForEachNodeReverse(pNtk, pCut, pObj, i)
static Abc_Obj_t * Abc_NtkObj(Abc_Ntk_t *pNtk, int i)
static int Hop_ObjFaninC1(Hop_Obj_t *pObj)
static int Vec_PtrSize(Vec_Ptr_t *p)
CloudNode * Cloud_bddAnd(CloudManager *dd, CloudNode *f, CloudNode *g)
static int Hop_ObjIsAnd(Hop_Obj_t *pObj)
void Hop_ObjCleanData_rec(Hop_Obj_t *pObj)
void Lpk_NodeCutSignature(Lpk_Cut_t *pCut)
static Hop_Obj_t * Hop_ManPi(Hop_Man_t *p, int i)
static int Abc_ObjIsNode(Abc_Obj_t *pObj)
Lpk_Cut_t pCuts[LPK_CUTS_MAX]
CloudNode * Lpk_CutTruthBdd(Lpk_Man_t *p, Lpk_Cut_t *pCut)
void Lpk_NodeCutsOne(Lpk_Man_t *p, Lpk_Cut_t *pCut, int Node)
int Lpk_NodeCuts(Lpk_Man_t *p)
#define Lpk_CutForEachLeaf(pNtk, pCut, pObj, i)
MACRO DEFINITIONS ///.
#define ABC_NAMESPACE_IMPL_END
static int Hop_IsComplement(Hop_Obj_t *p)
ABC_DLL int Abc_NodeMffcLabel(Abc_Obj_t *pNode)
static void Kit_TruthNot(unsigned *pOut, unsigned *pIn, int nVars)
static Hop_Obj_t * Hop_ObjFanin0(Hop_Obj_t *pObj)
static int Hop_ObjIsConst1(Hop_Obj_t *pObj)
int Lpk_NodeCutsOneFilter(Lpk_Cut_t *pCuts, int nCuts, Lpk_Cut_t *pCutNew)
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static int Abc_NodeIsTravIdCurrent(Abc_Obj_t *p)
static int Lpk_NodeCutsOneDominance(Lpk_Cut_t *pDom, Lpk_Cut_t *pCut)
static int Hop_ObjFaninC0(Hop_Obj_t *pObj)
#define Abc_ObjForEachFanin(pObj, pFanin, i)
void Lpk_NodePrintCut(Lpk_Man_t *p, Lpk_Cut_t *pCut, int fLeavesOnly)
int Lpk_NodeCutsCheckDsd(Lpk_Man_t *p, Lpk_Cut_t *pCut)
#define Lpk_CutForEachNode(pNtk, pCut, pObj, i)
static void Kit_TruthCopy(unsigned *pOut, unsigned *pIn, int nVars)
unsigned * Lpk_CutTruth(Lpk_Man_t *p, Lpk_Cut_t *pCut, int fInv)
static int Lpk_LutNumLuts(int nVarsMax, int nLutK)
static void Vec_PtrClear(Vec_Ptr_t *p)
static Vec_Ptr_t * Vec_VecEntry(Vec_Vec_t *p, int i)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
static Hop_Obj_t * Hop_Regular(Hop_Obj_t *p)
#define LPK_SIZE_MAX
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Hop_Man_t_ Hop_Man_t
INCLUDES ///.
void Lpk_NodeRecordImpact(Lpk_Man_t *p)