56 pObjNew = Abc_NtkCreateNode( pNtk );
57 for ( i = 0; i < (int)
p->nVars; i++ )
61 pTruth = Lpk_FunTruth(
p, 0);
93 for ( i = 0; i < (int)pFun->
nVars; i++ )
96 if ( !Abc_ObjIsComplement(pFanin) )
99 assert( Abc_ObjIsComplement(pFanin) );
104 Vec_PtrWriteEntry( vLeaves, pFun->
Id, Abc_ObjNot(pRes) );
124 assert( nLeavesOld < Vec_PtrSize(vLeaves) );
127 Vec_PtrWriteEntry( vLeaves, i, Abc_ObjNot(pFanin) );
130 Vec_PtrShrink( vLeaves, nLeavesOld );
154 assert(
p->nLutK >= 3 &&
p->nLutK <= 6 );
157 if ( Lpk_LutNumLuts(
p->nVars,
p->nLutK) > (
int)
p->nAreaLim )
171 if ( pResDsd && (pResDsd->
nBSVars == (
int)
p->nLutK || pResDsd->
nBSVars == (
int)
p->nLutK - 1) &&
177 assert( p2->nVars <= (
int)
p->nLutK );
192 else if ( pResMux && pResDsd )
202 assert( pResMux == NULL || pResDsd == NULL );
219 assert( p2->nVars <= (
int)
p->nLutK );
244 Vec_PtrShrink( vLeaves, nLeavesOld );
262 int nLeaves = Vec_PtrSize( vLeaves );
263 pFun =
Lpk_FunCreate( pNtk, vLeaves, pTruth, nLutK, AreaLim, DelayLim );
264 if ( puSupps[0] || puSupps[1] )
275 memcpy( pFun->
puSupps, puSupps,
sizeof(
unsigned) * 2 * nLeaves );
struct Abc_Obj_t_ Abc_Obj_t
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
struct Abc_Ntk_t_ Abc_Ntk_t
ABC_DLL int Abc_ObjLevelNew(Abc_Obj_t *pObj)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Hop_Man_t_ Hop_Man_t
INCLUDES ///.
struct Hop_Obj_t_ Hop_Obj_t
Hop_Obj_t * Kit_TruthToHop(Hop_Man_t *pMan, unsigned *pTruth, int nVars, Vec_Int_t *vMemory)
ABC_NAMESPACE_IMPL_START Abc_Obj_t * Lpk_ImplementFun(Lpk_Man_t *pMan, Abc_Ntk_t *pNtk, Vec_Ptr_t *vLeaves, Lpk_Fun_t *p)
DECLARATIONS ///.
int Lpk_Decompose_rec(Lpk_Man_t *pMan, Lpk_Fun_t *p)
Abc_Obj_t * Lpk_Decompose(Lpk_Man_t *p, Abc_Ntk_t *pNtk, Vec_Ptr_t *vLeaves, unsigned *pTruth, unsigned *puSupps, int nLutK, int AreaLim, int DelayLim)
FUNCTION DECLARATIONS ///.
Abc_Obj_t * Lpk_Implement_rec(Lpk_Man_t *pMan, Abc_Ntk_t *pNtk, Vec_Ptr_t *vLeaves, Lpk_Fun_t *pFun)
void Lpk_DecomposeClean(Vec_Ptr_t *vLeaves, int nLeavesOld)
Abc_Obj_t * Lpk_Implement(Lpk_Man_t *pMan, Abc_Ntk_t *pNtk, Vec_Ptr_t *vLeaves, int nLeavesOld)
Lpk_Res_t * Lpk_DsdAnalize(Lpk_Man_t *pMan, Lpk_Fun_t *p, int nShared)
Lpk_Fun_t * Lpk_DsdSplit(Lpk_Man_t *pMan, Lpk_Fun_t *p, char *pCofVars, int nCofVars, unsigned uBoundSet)
ABC_NAMESPACE_IMPL_START Lpk_Res_t * Lpk_MuxAnalize(Lpk_Man_t *pMan, Lpk_Fun_t *p)
DECLARATIONS ///.
Lpk_Fun_t * Lpk_MuxSplit(Lpk_Man_t *pMan, Lpk_Fun_t *p, int Var, int Pol)
void Lpk_FunFree(Lpk_Fun_t *p)
int Lpk_SuppDelay(unsigned uSupp, int *pDelays)
int Lpk_FunSuppMinimize(Lpk_Fun_t *p)
void Lpk_FunComputeCofSupps(Lpk_Fun_t *p)
Lpk_Fun_t * Lpk_FunCreate(Abc_Ntk_t *pNtk, Vec_Ptr_t *vLeaves, unsigned *pTruth, int nLutK, int AreaLim, int DelayLim)
struct Lpk_Fun_t_ Lpk_Fun_t
struct Lpk_Man_t_ Lpk_Man_t
struct Lpk_Res_t_ Lpk_Res_t
#define Vec_PtrForEachEntryStart(Type, vVec, pEntry, i, Start)
#define Vec_PtrForEachEntryStop(Type, vVec, pEntry, i, Stop)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.