31static inline int Gia_ObjChild0Copy(
Aig_Obj_t * pObj ) {
return Gia_LitNotCond( Aig_ObjFanin0(pObj)->iData, Aig_ObjFaninC0(pObj) ); }
32static inline int Gia_ObjChild1Copy(
Aig_Obj_t * pObj ) {
return Gia_LitNotCond( Aig_ObjFanin1(pObj)->iData, Aig_ObjFaninC1(pObj) ); }
57 int i, * pOuts0, * pOuts1;
58 Aig_ManSetPioNumbers(
p );
61 pNew->
pName = Gia_UtilStrsav(
p->pName );
62 pNew->
pSpec = Gia_UtilStrsav(
p->pSpec );
68 if ( Aig_ObjIsAnd(pObj) )
70 else if ( Aig_ObjIsPi(pObj) )
71 pObj->
iData = Gia_ManAppendCi( pNew );
72 else if ( Aig_ObjIsPo(pObj) )
73 pOuts0[ Aig_ObjPioNum(pObj) ] = Gia_ObjChild0Copy(pObj);
74 else if ( Aig_ObjIsConst1(pObj) )
83 if ( Aig_ObjIsAnd(pObj) )
85 else if ( Aig_ObjIsPi(pObj) )
86 pObj->
iData = Gia_ManAppendCi( pNew );
87 else if ( Aig_ObjIsPo(pObj) )
88 pOuts1[ Aig_ObjPioNum(pObj) ] = Gia_ObjChild0Copy(pObj);
89 else if ( Aig_ObjIsConst1(pObj) )
95 Gia_ManAppendCo( pNew, pOuts0[0] );
96 Gia_ManAppendCo( pNew, pOuts1[0] );
97 Gia_ManAppendCo( pNew, pOuts0[1] );
98 Gia_ManAppendCo( pNew, Gia_LitNot(pOuts1[1]) );
99 for ( i = 2; i < Aig_ManPoNum(
p); i++ )
100 Gia_ManAppendCo( pNew, Gia_LitNot(
Gia_ManHashXor(pNew, pOuts0[i], pOuts1[i]) ) );
135 p->vGiaLits = Vec_PtrAlloc( 100 );
155 Vec_PtrFree(
p->vGiaLits );
174 Gia_ManConst0(
p)->fMark1 = 0;
180 pObj = Gia_ManCi(
p, Gia_Lit2Var(Entry) );
181 pObj->
fMark1 = !Gia_LitIsCompl(Entry);
184 pObj->
fMark1 = (Gia_ObjFanin0(pObj)->fMark1 ^ Gia_ObjFaninC0(pObj)) &
185 (Gia_ObjFanin1(pObj)->fMark1 ^ Gia_ObjFaninC1(pObj));
187 pObj->
fMark1 = Gia_ObjFanin0(pObj)->fMark1 ^ Gia_ObjFaninC0(pObj);
206 int fVeryVerbose = 0;
209 int i, iVar, status, iOut;
210 clock_t clk = clock();
216 Vec_PtrClear(
p->vGiaLits );
218 Vec_PtrPush(
p->vGiaLits, Gia_ObjChild0(Gia_ManPo(
p->pGia, 0)) );
219 Vec_PtrPush(
p->vGiaLits, Gia_ObjChild0(Gia_ManPo(
p->pGia, 1)) );
220 Vec_PtrPush(
p->vGiaLits, Gia_ObjChild0(Gia_ManPo(
p->pGia, 2)) );
221 Vec_PtrPush(
p->vGiaLits, Gia_ObjChild0(Gia_ManPo(
p->pGia, 3)) );
222 for ( i = 0; i < nCands; i++ )
225 iOut = Gia_Lit2Var(pCands[i]) - 2 *
p->pCnf->nVars;
227 Vec_PtrPush(
p->vGiaLits, Gia_ObjChild0(Gia_ManPo(
p->pGia, 4 + iOut)) );
241 else if ( status == 1 )
278 pData = (
unsigned *)Vec_PtrEntry(
p->vDivCexes, i );
279 iOut = iVar - 2 *
p->pCnf->nVars;
281 if ( Gia_ManPo(
p->pGia, 4 + iOut )->fMark1 )
283 assert( Aig_InfoHasBit(pData,
p->nCexes) );
284 Aig_InfoXorBit( pData,
p->nCexes );
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
#define Aig_ManForEachObj(p, pObj, i)
struct Aig_Obj_t_ Aig_Obj_t
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Gia_ManStop(Gia_Man_t *p)
#define Gia_ManForEachAnd(p, pObj, i)
Tas_Man_t * Tas_ManAlloc(Gia_Man_t *pAig, int nBTLimit)
void Gia_ManHashAlloc(Gia_Man_t *p)
Gia_Man_t * Gia_ManStart(int nObjsMax)
FUNCTION DEFINITIONS ///.
struct Gia_Obj_t_ Gia_Obj_t
Vec_Int_t * Tas_ReadModel(Tas_Man_t *p)
int Tas_ManSolveArray(Tas_Man_t *p, Vec_Ptr_t *vObjs)
int Gia_ManHashXor(Gia_Man_t *p, int iLit0, int iLit1)
void Gia_ManFillValue(Gia_Man_t *p)
struct Gia_Man_t_ Gia_Man_t
void Gia_ManCleanPhase(Gia_Man_t *p)
void Gia_ManCleanMark0(Gia_Man_t *p)
void Gia_ManCreateRefs(Gia_Man_t *p)
void Tas_ManStop(Tas_Man_t *p)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
#define Gia_ManForEachCo(p, pObj, i)
#define Gia_ManForEachCi(p, pObj, i)
void Gia_ManHashStop(Gia_Man_t *p)
void Gia_ManCleanMark1(Gia_Man_t *p)
Gia_Man_t * Gia_ManCreateResubMiter(Aig_Man_t *p)
FUNCTION DEFINITIONS ///.
int Abc_NtkMfsTryResubOnceGia(Mfs_Man_t *p, int *pCands, int nCands)
void Abc_NtkMfsConstructGia(Mfs_Man_t *p)
void Abc_NtkMfsDeconstructGia(Mfs_Man_t *p)
void Abc_NtkMfsResimulate(Gia_Man_t *p, Vec_Int_t *vCex)
struct Mfs_Man_t_ Mfs_Man_t
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.