31 #define KIT_FACTOR_MEM_LIMIT (1<<20)
111 Kit_Sop_t * cDiv = &Div, * cQuo = &Quo, * cRem = &Rem, * cCom = &Com;
112 Kit_Edge_t eNodeDiv, eNodeQuo, eNodeRem, eNodeAnd;
169 Kit_Sop_t * cDiv = &Div, * cQuo = &Quo, * cRem = &Rem;
170 Kit_Edge_t eNodeDiv, eNodeQuo, eNodeRem, eNodeAnd;
202 int i, iLit = -1, nLits, nLits1, nLits2;
206 for ( i = nStart; i < nFinish; i++ )
218 nLits2 = nLits - nLits1;
223 for ( i = nStart; i < nFinish; i++ )
226 if ( nLits == nLits1 )
266 int nCubes1, nCubes2;
271 nCubes2 = nCubes - nCubes1;
330 printf(
"Vars = %2d. Cubes = %3d. FFNodes = %3d. FF_memory = %3d.\n",
void Kit_SopBestLiteralCover(Kit_Sop_t *cResult, Kit_Sop_t *cSop, unsigned uCube, int nLits, Vec_Int_t *vMemory)
static unsigned Kit_SopCube(Kit_Sop_t *cSop, int i)
#define KIT_FACTOR_MEM_LIMIT
DECLARATIONS ///.
void Kit_SopDivideByCube(Kit_Sop_t *cSop, Kit_Sop_t *cDiv, Kit_Sop_t *vQuo, Kit_Sop_t *vRem, Vec_Int_t *vMemory)
int Kit_SopDivisor(Kit_Sop_t *cResult, Kit_Sop_t *cSop, int nLits, Vec_Int_t *vMemory)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static Kit_Edge_t Kit_SopFactorTrivialCube(Kit_Graph_t *pFForm, unsigned uCube, int nLits)
static Kit_Edge_t Kit_EdgeCreate(int Node, int fCompl)
int Kit_SopIsCubeFree(Kit_Sop_t *cSop)
static Kit_Edge_t Kit_SopFactorLF_rec(Kit_Graph_t *pFForm, Kit_Sop_t *cSop, Kit_Sop_t *cSimple, int nLits, Vec_Int_t *vMemory)
void Kit_SopDivideInternal(Kit_Sop_t *cSop, Kit_Sop_t *cDiv, Kit_Sop_t *vQuo, Kit_Sop_t *vRem, Vec_Int_t *vMemory)
void Kit_SopCommonCubeCover(Kit_Sop_t *cResult, Kit_Sop_t *cSop, Vec_Int_t *vMemory)
static int Kit_CubeHasLit(unsigned uCube, int i)
void Kit_SopMakeCubeFree(Kit_Sop_t *cSop)
static void Vec_IntGrow(Vec_Int_t *p, int nCapMin)
void Kit_FactorTest(unsigned *pTruth, int nVars)
Kit_Edge_t Kit_GraphAddNodeAnd(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void Kit_GraphFree(Kit_Graph_t *pGraph)
Kit_Graph_t * Kit_SopFactor(Vec_Int_t *vCover, int fCompl, int nVars, Vec_Int_t *vMemory)
FUNCTION DEFINITIONS ///.
int Kit_TruthIsop(unsigned *puTruth, int nVars, Vec_Int_t *vMemory, int fTryBoth)
FUNCTION DEFINITIONS ///.
static int Vec_IntEntry(Vec_Int_t *p, int i)
#define ABC_NAMESPACE_IMPL_END
static Kit_Edge_t Kit_SopFactor_rec(Kit_Graph_t *pFForm, Kit_Sop_t *cSop, int nLits, Vec_Int_t *vMemory)
Kit_Graph_t * Kit_GraphCreate(int nLeaves)
DECLARATIONS ///.
Kit_Graph_t * Kit_GraphCreateConst1()
Kit_Edge_t Kit_SopFactorTrivialCube_rec(Kit_Graph_t *pFForm, unsigned uCube, int nStart, int nFinish)
int Kit_SopFactorVerify(Vec_Int_t *cSop, Kit_Graph_t *pFForm, int nVars)
Kit_Graph_t * Kit_GraphCreateConst0()
#define ABC_NAMESPACE_IMPL_START
typedefABC_NAMESPACE_HEADER_START struct Kit_Sop_t_ Kit_Sop_t
INCLUDES ///.
static int Vec_IntSize(Vec_Int_t *p)
static void Kit_GraphSetRoot(Kit_Graph_t *pGraph, Kit_Edge_t eRoot)
Kit_Edge_t Kit_GraphAddNodeOr(Kit_Graph_t *pGraph, Kit_Edge_t eEdge0, Kit_Edge_t eEdge1)
void Kit_SopCreateInverse(Kit_Sop_t *cResult, Vec_Int_t *vInput, int nVars, Vec_Int_t *vMemory)
static int Kit_GraphNodeNum(Kit_Graph_t *pGraph)
static void Kit_GraphComplement(Kit_Graph_t *pGraph)
static void Vec_IntFree(Vec_Int_t *p)
Kit_Edge_t Kit_SopFactorTrivial_rec(Kit_Graph_t *pFForm, unsigned *pCubes, int nCubes, int nLits)
static int Kit_SopCubeNum(Kit_Sop_t *cSop)
static Kit_Edge_t Kit_SopFactorTrivial(Kit_Graph_t *pFForm, Kit_Sop_t *cSop, int nLits)