120 assert( Gia_ObjIsAnd(pObj) );
122 pFanin = Gia_ObjFanin0(pObj);
123 if ( pFanin->
fMark0 || Gia_ObjFaninC0(pObj) )
124 pLits[(*pnLits)++] = Gia_Var2Lit(Gia_ObjId(
p, pFanin), Gia_ObjFaninC0(pObj));
127 pFanin = Gia_ObjFanin1(pObj);
128 if ( pFanin->
fMark0 || Gia_ObjFaninC1(pObj) )
129 pLits[(*pnLits)++] = Gia_Var2Lit(Gia_ObjId(
p, pFanin), Gia_ObjFaninC1(pObj));
148 int i, nWordsUsed, nSuperSize = 0, Super[2*
GIA_LIMIT];
150 assert( Gia_ObjIsAnd(pObj) );
157 ((
Gia_ObjSat1_t *)pObjPlace)->nFans = Gia_Var2Lit( nSuperSize, 0 );
159 nWordsUsed = nSuperSize;
160 for ( i = 0; i < nSuperSize; i++ )
162 pFanin = Gia_ManObj(
p, Gia_Lit2Var(Super[i]) );
170 assert( Gia_LitIsCompl(Super[i]) );
208 int nOnset0, nOnset1, nOffset0, nOffset1;
209 assert( Gia_ObjIsAnd(pObj) );
210 pFanin = Gia_ObjFanin0(pObj);
212 nOnset0 = 1, nOffset0 = 1;
216 if ( Gia_ObjFaninC0(pObj) )
223 pFanin = Gia_ObjFanin1(pObj);
225 nOnset1 = 1, nOffset1 = 1;
229 if ( Gia_ObjFaninC1(pObj) )
236 *pnOnset = nOnset0 * nOnset1;
237 *pnOffset = nOffset0 + nOffset1;
254 int Level0 = 0, Level1 = 0;
255 assert( Gia_ObjIsAnd(pObj) );
258 pFanin = Gia_ObjFanin0(pObj);
263 pFanin = Gia_ObjFanin1(pObj);
268 return Abc_MaxInt( Level0, Level1 );
285 int nNodes0 = 0, nNodes1 = 0;
286 assert( Gia_ObjIsAnd(pObj) );
288 pFanin = Gia_ObjFanin0(pObj);
291 pFanin = Gia_ObjFanin1(pObj);
294 return nNodes0 + nNodes1 + 1;
311 assert( Gia_ObjIsAnd(pObj) );
313 pFanin = Gia_ObjFanin0(pObj);
315 printf(
"%s%d", Gia_ObjFaninC0(pObj)?
"!":
"", Gia_ObjId(
p,pFanin) );
318 if ( Gia_ObjFaninC0(pObj) )
321 if ( Gia_ObjFaninC0(pObj) )
324 printf(
"%s", (Step & 1)?
" + " :
"*" );
325 pFanin = Gia_ObjFanin1(pObj);
327 printf(
"%s%d", Gia_ObjFaninC1(pObj)?
"!":
"", Gia_ObjId(
p,pFanin) );
330 if ( Gia_ObjFaninC1(pObj) )
333 if ( Gia_ObjFaninC1(pObj) )
352 int nStored, Storage[1000], * pStart;
355 int i, nLevels, nLeaves, nNodes, nCount[2*
GIA_LIMIT+2] = {0}, nCountAll = 0;
356 int Num0 = 0, Num1 = 0;
357 clock_t clk = clock();
358 int nWords = 0, nWords2 = 0;
365 if ( Gia_ObjIsCo(pObj) )
366 Gia_ObjFanin0(pObj)->fMark0 = 1;
367 else if ( Gia_ObjIsCi(pObj) )
369 else if ( Gia_ObjIsAnd(pObj) )
388 memcpy( pStart, Storage,
sizeof(
int) * nStored );
390 nLeaves = nNodes = 0;
392 nWords += nLeaves + nNodes;
402 printf(
"%8d : And = %3d. Lev = %2d. Clauses = %3d. (%3d + %3d).\n", i, nNodes, nLevels, Num0+Num1, Num0, Num1 );
414 printf(
"%2d=%6d %7.2f %% %7.2f %%\n", i, nCount[i], 100.0*nCount[i]/nCountAll, 100.0*i*nCount[i]/Gia_ManAndNum(
p) );
416 ABC_PRMn(
"MemoryReal", 4*nWords2 );
417 printf(
"%5.2f bpn ", 4.0*nWords2/Gia_ManObjNum(
p) );
418 ABC_PRT(
"Time", clock() - clk );
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_MmFlexStop(Aig_MmFlex_t *p, int fVerbose)
char * Aig_MmFlexEntryFetch(Aig_MmFlex_t *p, int nBytes)
struct Aig_MmFlex_t_ Aig_MmFlex_t
Aig_MmFlex_t * Aig_MmFlexStart()
int Gia_ManSatPartCountNodes(Gia_Man_t *p, Gia_Obj_t *pObj)
void Gia_ManSatExperiment(Gia_Man_t *p)
struct Gia_ObjSat_t_ Gia_ObjSat_t
struct Gia_ObjSat1_t_ Gia_ObjSat1_t
struct Gia_ManSat_t_ Gia_ManSat_t
Gia_ManSat_t * Gia_ManSatStart()
FUNCTION DEFINITIONS ///.
int Gia_ManSatPartCreate_rec(Gia_Man_t *p, Gia_Obj_t *pObj, int *pObjPlace, int *pStore)
int Gia_ManSatPartCount(Gia_Man_t *p, Gia_Obj_t *pObj, int *pnLeaves, int *pnNodes)
int Gia_ManSatPartCreate(Gia_Man_t *p, Gia_Obj_t *pObj, int *pStore)
void Gia_ManSatPartPrint(Gia_Man_t *p, Gia_Obj_t *pObj, int Step)
void Gia_ManSatStop(Gia_ManSat_t *p)
#define GIA_LIMIT
DECLARATIONS ///.
void Gia_ManSatPartCollectSuper(Gia_Man_t *p, Gia_Obj_t *pObj, int *pLits, int *pnLits)
void Gia_ManSatPartCountClauses(Gia_Man_t *p, Gia_Obj_t *pObj, int *pnOnset, int *pnOffset)
struct Gia_ObjSat2_t_ Gia_ObjSat2_t
#define Gia_ManForEachAnd(p, pObj, i)
void Gia_ManCreateValueRefs(Gia_Man_t *p)
struct Gia_Obj_t_ Gia_Obj_t
struct Gia_Man_t_ Gia_Man_t
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.