49 if ( pCover0 == NULL || pCover1 == NULL )
84 if ( pCover0 == NULL || pCover1 == NULL )
121 int i, nCubes, fCompl0, fCompl1;
219 printf(
"%20s : Cone = %5d. Supp = %5d. ",
225 printf(
"Cubes = %5d. ", nCubes );
257 else if ( pCov0 && pCov0->
nLits == 0 )
258 pCover0 = pCov0->
pNext;
260 pCover0 = p->pOne0, p->pOne0->
pNext = pCov0;
265 else if ( pCov1 && pCov1->
nLits == 0 )
266 pCover1 = pCov1->
pNext;
268 pCover1 = p->pOne1, p->pOne1->
pNext = pCov1;
270 if ( pCover0 == NULL || pCover1 == NULL )
286 if ( p->nCubes > 10 )
330 if ( p->nCubes > 3000 )
337 if ( pCover && pCover->
nLits == 0 )
340 pCover = pCover->
pNext;
347 pCube->
pNext = pCover;
398 printf(
"%20s : Cone = %5d. Supp = %5d. ",
404 printf(
"Cubes = %5d. ", nCubes );
static void Min_CubeRecycle(Min_Man_t *p, Min_Cube_t *pCube)
static int Abc_NtkIsStrash(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_ObjFaninC1(Abc_Obj_t *pObj)
static Min_Cube_t * Min_CubeAllocVar(Min_Man_t *p, int iVar, int fCompl)
static Min_Cube_t * Min_CubeDup(Min_Man_t *p, Min_Cube_t *pCopy)
static int Min_CubesDisjoint(Min_Cube_t *pCube0, Min_Cube_t *pCube1)
static int Abc_ObjFaninC0(Abc_Obj_t *pObj)
#define Abc_NtkForEachCo(pNtk, pCo, i)
static Abc_Obj_t * Abc_ObjFanin0(Abc_Obj_t *pObj)
Min_Man_t * Min_ManAlloc(int nVars)
DECLARATIONS ///.
static Min_Cube_t * Min_CubesProduct(Min_Man_t *p, Min_Cube_t *pCube0, Min_Cube_t *pCube1)
static int Abc_ObjIsNode(Abc_Obj_t *pObj)
int Abc_NodeDeriveSops(Min_Man_t *p, Abc_Obj_t *pRoot, Vec_Ptr_t *vSupp, Vec_Ptr_t *vNodes)
Min_Cube_t * Min_CoverCollect(Min_Man_t *p, int nSuppSize)
void Abc_NtkTestSop(Abc_Ntk_t *pNtk)
Min_Cube_t * Abc_NodeDeriveCover(Min_Man_t *p, Min_Cube_t *pCov0, Min_Cube_t *pCov1, int fComp0, int fComp1)
void Min_EsopAddCube(Min_Man_t *p, Min_Cube_t *pCube)
#define ABC_NAMESPACE_IMPL_END
ABC_DLL Vec_Ptr_t * Abc_NtkNodeSupport(Abc_Ntk_t *pNtk, Abc_Obj_t **ppNodes, int nNodes)
static int Min_CoverCountCubes(Min_Cube_t *pCover)
ABC_DLL void Abc_NtkCleanNext(Abc_Ntk_t *pNtk)
ABC_NAMESPACE_IMPL_START Min_Cube_t * Abc_NodeDeriveCoverPro(Min_Man_t *p, Min_Cube_t *pCover0, Min_Cube_t *pCover1)
DECLARATIONS ///.
void Abc_NtkTestEsop(Abc_Ntk_t *pNtk)
#define ABC_NAMESPACE_IMPL_START
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
#define Min_CoverForEachCube(pCover, pCube)
static Min_Cube_t * Min_CubeAlloc(Min_Man_t *p)
FUNCTION DEFINITIONS ///.
ABC_DLL void Abc_NtkCleanCopy(Abc_Ntk_t *pNtk)
ABC_DLL Vec_Ptr_t * Abc_NtkDfsNodes(Abc_Ntk_t *pNtk, Abc_Obj_t **ppNodes, int nNodes)
int Abc_NodeDeriveEsops(Min_Man_t *p, Abc_Obj_t *pRoot, Vec_Ptr_t *vSupp, Vec_Ptr_t *vNodes)
void Min_SopAddCube(Min_Man_t *p, Min_Cube_t *pCube)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Min_Cube_t * Abc_NodeDeriveCoverSum(Min_Man_t *p, Min_Cube_t *pCover0, Min_Cube_t *pCover1)
void Min_EsopMinimize(Min_Man_t *p)
FUNCTION DEFINITIONS ///.
void Min_SopMinimize(Min_Man_t *p)
FUNCTION DEFINITIONS ///.
void Min_ManClean(Min_Man_t *p, int nSupp)
typedefABC_NAMESPACE_HEADER_START struct Min_Man_t_ Min_Man_t
DECLARATIONS ///.
static void Vec_PtrFree(Vec_Ptr_t *p)
void Min_ManFree(Min_Man_t *p)