48 int i, RetValue, Counter;
49 if (
p->vDiffPairs == NULL )
50 p->vDiffPairs = Vec_IntAlloc( Saig_ManRegNum(
p->pAig) );
51 Vec_IntClear(
p->vDiffPairs );
54 pObj0 = Ssw_ObjFrame(
p, pObjLo, 0 );
55 pObj1 = Ssw_ObjFrame(
p, pObjLo, 1 );
57 Vec_IntPush(
p->vDiffPairs, 0 );
58 else if ( pObj0 == Aig_Not(pObj1) )
59 Vec_IntPush(
p->vDiffPairs, 1 );
62 else if ( Aig_ObjPhaseReal(pObj0) != Aig_ObjPhaseReal(pObj1) )
63 Vec_IntPush(
p->vDiffPairs, 1 );
67 Vec_IntPush(
p->vDiffPairs, RetValue!=1 );
70 assert( Vec_IntSize(
p->vDiffPairs) == Saig_ManRegNum(
p->pAig) );
93 int i, k, Value0, Value1, RetValue, fFeasible;
95 assert(
p->pPars->nFramesK > 1 );
96 assert(
p->vDiffPairs && Vec_IntSize(
p->vDiffPairs) == Saig_ManRegNum(
p->pAig) );
103 RetValue = Vec_PtrSize(
p->vCommon );
108 assert( Aig_ObjIsCi(pTemp) );
109 if ( !Saig_ObjIsLo(
p->pAig, pTemp) )
111 assert( Aig_ObjCioId(pTemp) > 0 );
112 Vec_PtrWriteEntry(
p->vCommon, k++, pTemp );
113 if ( Vec_IntEntry(
p->vDiffPairs, Aig_ObjCioId(pTemp) - Saig_ManPiNum(
p->pAig)) )
116 Vec_PtrShrink(
p->vCommon, k );
119 Abc_Print( 1,
"Node = %5d : Supp = %3d. Regs = %3d. Feasible = %s. ",
120 Aig_ObjId(pObj), RetValue, Vec_PtrSize(
p->vCommon),
121 fFeasible?
"yes":
"no " );
129 if ( Value0 != Value1 )
132 Abc_Print( 1,
"%d", Value0 ^ Value1 );
135 Abc_Print( 1,
"\n" );
137 return RetValue && fFeasible;
153 Aig_Obj_t * pObj, * pObj1New, * pObj2New, * pMiter, * pTotal;
156 assert( Vec_PtrSize(vCommon) > 0 );
158 pTotal = Aig_ManConst0(
p->pFrames);
161 assert( Saig_ObjIsLo(
p->pAig, pObj) );
162 pObj1New = Ssw_ObjFrame(
p, pObj, f1 );
163 pObj2New = Ssw_ObjFrame(
p, pObj, f2 );
164 pMiter =
Aig_Exor(
p->pFrames, pObj1New, pObj2New );
165 pTotal =
Aig_Or(
p->pFrames, pTotal, pMiter );
167 if ( Aig_ObjIsConst1(Aig_Regular(pTotal)) )
175 pLits[0] = toLitCond( Ssw_ObjSatNum(
p->pMSat,Aig_Regular(pTotal)), Aig_IsComplement(pTotal) );
187 p->iOutputLit = pLits[0];
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_SupportNodes(Aig_Man_t *p, Aig_Obj_t **ppObjs, int nObjs, Vec_Ptr_t *vSupp)
struct Aig_Obj_t_ Aig_Obj_t
Aig_Obj_t * Aig_Exor(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
Aig_Obj_t * Aig_Or(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
#define Saig_ManForEachLo(p, pObj, i)
void Ssw_CnfNodeAddToSolver(Ssw_Sat_t *p, Aig_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Ssw_Man_t_ Ssw_Man_t
INCLUDES ///.
int Ssw_ManGetSatVarValue(Ssw_Man_t *p, Aig_Obj_t *pObj, int f)
DECLARATIONS ///.
int Ssw_NodesAreEquiv(Ssw_Man_t *p, Aig_Obj_t *pOld, Aig_Obj_t *pNew)
DECLARATIONS ///.
ABC_NAMESPACE_IMPL_START void Ssw_UniqueRegisterPairInfo(Ssw_Man_t *p)
DECLARATIONS ///.
int Ssw_ManUniqueAddConstraint(Ssw_Man_t *p, Vec_Ptr_t *vCommon, int f1, int f2)
int Ssw_ManUniqueOne(Ssw_Man_t *p, Aig_Obj_t *pRepr, Aig_Obj_t *pObj, int fVerbose)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.