72 int i, iAnd, iSum, Value, nFanins;
87 else if ( Value ==
'0' )
89 else assert( Value ==
'-' );
155 for ( k = 0; k <
nWords; k++ )
181 pObj->
Value = Counter++;
191 int nItems, nCutSize,
nWords;
192 int i, c, v, Lit, Cube,
Counter = 0;
209 int Status =
Kit_TruthIsop( (
unsigned *)pTruth, nVars, vCover, 1 );
222 for ( v = 0; v < nVars; v++ )
224 Lit = 3 & (Cube >> (v << 1));
260 for ( c = 0; c < nCubes; c++ )
272 Vec_Int_t * vOrder, * vFirst, * vCount, * vVisit, * vCube;
273 int i, iFanin, nNodeMax = -1;
279 if ( nNodeMax == nStart )
281 printf(
"The network is unchanged by fast extract.\n" );
290 assert( iFanin >= nInputs );
298 for ( i = 0; i < nInputs; i++ )
300 for ( i = nInputs; i < nNodeMax; i++ )
314 Vec_Int_t * vOrder, * vFirst, * vCount, * vFanins, * vCover;
316 int k, c, v, Lit,
Var, iItem;
320 if ( vOrder == NULL )
344 for ( c = 0; c < nCubes; c++ )
358 for ( c = 0; c < nCubes; c++ )
385 word uTruth = 0, uCube;
386 for ( c = 0; c < nCubes; c++ )
453 extern int Fx_FastExtract(
Vec_Wec_t * vCubes,
int ObjIdMax,
int nNewNodesMax,
int LitCountMax,
int fVerbose,
int fVeryVerbose );
static int * Vec_IntArray(Vec_Int_t *p)
static Vec_Wec_t * Vec_WecAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Abc_Lit2LitV(int *pMap, int Lit)
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
Gia_Man_t * Gia_ManDup(Gia_Man_t *p)
static int Vec_IntCheckUniqueSmall(Vec_Int_t *p)
void Gia_ManStop(Gia_Man_t *p)
#define Gia_ManForEachCo(p, pObj, i)
void Gia_ObjComputeTruthTableStart(Gia_Man_t *p, int nVarsMax)
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
static void Vec_IntFillExtra(Vec_Int_t *p, int nSize, int Fill)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
word * Gia_ObjComputeTruthTableCut(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vLeaves)
int Kit_PlaIsConst0(char *pSop)
DECLARATIONS ///.
static char * Vec_StrArray(Vec_Str_t *p)
static int Abc_Truth6WordNum(int nVars)
static void Vec_WrdPush(Vec_Wrd_t *p, word Entry)
static void Vec_WecFree(Vec_Wec_t *p)
static int Gia_ManAppendCi(Gia_Man_t *p)
static Vec_Int_t * Vec_WecPushLevel(Vec_Wec_t *p)
static int Abc_Var2Lit(int Var, int fCompl)
static int Vec_WrdCap(Vec_Wrd_t *p)
void Gia_ObjComputeTruthTableStop(Gia_Man_t *p)
static void Vec_StrClear(Vec_Str_t *p)
static int Dec_GraphIsConst(Dec_Graph_t *pGraph)
void Gia_ManSetRegNum(Gia_Man_t *p, int nRegs)
Dec_Graph_t * Dec_Factor(char *pSop)
FUNCTION DECLARATIONS ///.
#define Kit_PlaCubeForEachVar(pCube, Value, i)
int Kit_PlaGetCubeNum(char *pSop)
static Vec_Str_t * Vec_StrAlloc(int nCap)
int Dsm_ManTruthToGia(void *p, word *pTruth, Vec_Int_t *vLeaves, Vec_Int_t *vCover)
static int Abc_MaxInt(int a, int b)
static void Vec_StrPush(Vec_Str_t *p, char Entry)
static int Vec_WrdSize(Vec_Wrd_t *p)
Vec_Wrd_t * Gia_ManComputeTruths(Gia_Man_t *p, int nCutSize, int nLutNum, int fReverse)
static Vec_Int_t * Vec_IntStartFull(int nSize)
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
static void Vec_IntReverseOrder(Vec_Int_t *p)
static int Abc_LitNotCond(int Lit, int c)
#define Gia_ManForEachLut(p, i)
#define Gia_ManForEachCi(p, pObj, i)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Dec_GraphIsComplement(Dec_Graph_t *pGraph)
static void Vec_StrWriteEntry(Vec_Str_t *p, int i, char Entry)
int Kit_PlaIsComplement(char *pSop)
static void Vec_IntSelectSort(int *pArray, int nSize)
void Gia_ManFxTopoOrder_rec(Vec_Wec_t *vCubes, Vec_Int_t *vFirst, Vec_Int_t *vCount, Vec_Int_t *vVisit, Vec_Int_t *vOrder, int iObj)
static Vec_Int_t * Vec_IntStart(int nSize)
static int Abc_LitIsCompl(int Lit)
static char Vec_StrEntry(Vec_Str_t *p, int i)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
#define Vec_WecForEachLevel(vGlob, vVec, i)
MACRO DEFINITIONS ///.
static Dec_Node_t * Dec_GraphVar(Dec_Graph_t *pGraph)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Gia_ObjLutSize(Gia_Man_t *p, int Id)
int Kit_TruthIsop(unsigned *puTruth, int nVars, Vec_Int_t *vMemory, int fTryBoth)
FUNCTION DEFINITIONS ///.
static void Vec_IntAddToEntry(Vec_Int_t *p, int i, int Addition)
static void Vec_StrFree(Vec_Str_t *p)
static int Vec_IntEntry(Vec_Int_t *p, int i)
unsigned __int64 word
DECLARATIONS ///.
#define ABC_NAMESPACE_IMPL_END
static void Vec_WrdFree(Vec_Wrd_t *p)
ABC_NAMESPACE_IMPL_START int Gia_ManGraphToAig(Gia_Man_t *p, Dec_Graph_t *pGraph)
DECLARATIONS ///.
void Gia_ManHashStart(Gia_Man_t *p)
Gia_Man_t * Gia_ManStart(int nObjsMax)
DECLARATIONS ///.
static Vec_Str_t * Vec_StrStart(int nSize)
static int * Gia_ObjLutFanins(Gia_Man_t *p, int Id)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
Gia_Man_t * Gia_ManPerformFx(Gia_Man_t *p, int nNewNodesMax, int LitCountMax, int fReverse, int fVerbose, int fVeryVerbose)
void Gia_ManFillValue(Gia_Man_t *p)
void Gia_ManTransferTiming(Gia_Man_t *p, Gia_Man_t *pGia)
#define Kit_PlaForEachCube(pSop, nFanins, pCube)
int Gia_ManLutSizeMax(Gia_Man_t *p)
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)
int Gia_ManFactorNode(Gia_Man_t *p, char *pSop, Vec_Int_t *vLeaves)
Gia_Man_t * Gia_ManFxInsert(Gia_Man_t *p, Vec_Wec_t *vCubes, Vec_Str_t *vCompls)
static Vec_Wrd_t * Vec_WrdAlloc(int nCap)
FUNCTION DEFINITIONS ///.
#define ABC_NAMESPACE_IMPL_START
int Gia_ManAssignNumbers(Gia_Man_t *p)
#define Dec_GraphForEachNode(pGraph, pAnd, i)
static Vec_Int_t * Vec_WecEntry(Vec_Wec_t *p, int i)
int Gia_ManSopToAig(Gia_Man_t *p, char *pSop, Vec_Int_t *vLeaves)
static int Vec_StrSize(Vec_Str_t *p)
static int Gia_ManCiNum(Gia_Man_t *p)
static int Abc_LitNot(int Lit)
static int Vec_IntSize(Vec_Int_t *p)
static int Gia_ManHasMapping(Gia_Man_t *p)
int Fx_FastExtract(Vec_Wec_t *vCubes, int ObjIdMax, int nNewNodesMax, int LitCountMax, int fVerbose, int fVeryVerbose)
Vec_Int_t * Gia_ManFxTopoOrder(Vec_Wec_t *vCubes, int nInputs, int nStart, Vec_Int_t **pvFirst, Vec_Int_t **pvCount)
#define Dec_GraphForEachLeaf(pGraph, pLeaf, i)
ITERATORS ///.
static int Abc_Lit2Var(int Lit)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
Vec_Wec_t * Gia_ManFxRetrieve(Gia_Man_t *p, Vec_Str_t **pvCompl, int fReverse)
static void Dec_GraphFree(Dec_Graph_t *pGraph)
static int Dec_GraphIsVar(Dec_Graph_t *pGraph)
static Dec_Node_t * Dec_GraphNode(Dec_Graph_t *pGraph, int i)
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
static void Vec_IntClear(Vec_Int_t *p)
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
char * Abc_UtilStrsav(char *s)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
int Gia_ManHashOr(Gia_Man_t *p, int iLit0, int iLit1)
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
int Kit_PlaGetVarNum(char *pSop)
static int Gia_ManObjNum(Gia_Man_t *p)
void Gia_ManHashStop(Gia_Man_t *p)
static word * Vec_WrdEntryP(Vec_Wrd_t *p, int i)
static int Gia_ManRegNum(Gia_Man_t *p)