54 pObjFraig = Ssw_ObjFrame(
p, pObj, 0 );
55 if ( pObjFraig == Aig_ManConst0(
p->pFrames) )
60 assert( !Aig_IsComplement(pObjFraig) );
61 assert( Aig_ObjIsCi(pObjFraig) );
62 pInfo = (
unsigned *)Vec_PtrEntry(
p->vSimInfo, Aig_ObjCioId(pObjFraig) );
80 int RetValue1, RetValue2;
90 Vec_PtrCleanSimInfo(
p->vSimInfo, 0, 1 );
93p->timeSimSat += Abc_Clock() - clk;
94 return RetValue1 > 0 || RetValue2 > 0;
112 int i, nVarNum, Value;
115 nVarNum = Ssw_ObjSatNum(
p->pMSat, pObj );
117 Value = sat_solver_var_value(
p->pMSat->pSat, nVarNum );
120 pInfo = (
unsigned *)Vec_PtrEntry(
p->vSimInfo, Aig_ObjCioId(pObj) );
121 Abc_InfoSetBit( pInfo,
p->nPatterns );
139 assert( !Aig_IsComplement(pObj) );
140 if ( Ssw_ObjFrame(
p, pObj, 0 ) )
142 assert( Aig_ObjIsNode(pObj) );
145 pObjNew =
Aig_And(
p->pFrames, Ssw_ObjChild0Fra(
p, pObj, 0), Ssw_ObjChild1Fra(
p, pObj, 0) );
146 Ssw_ObjSetFrame(
p, pObj, 0, pObjNew );
162 Aig_Obj_t * pObjFraig, * pObjReprFraig, * pObjLi;
165 assert( Aig_ObjIsCi(pObj) );
166 assert( Aig_ObjIsCi(pObjRepr) || Aig_ObjIsConst1(pObjRepr) );
168 if (
p->nCallsCount > 100 &&
p->nCallsUnsat <
p->nCallsSat )
170 if ( ++
p->nCallsDelta < 0 )
176 pObjLi = Saig_ObjLoToLi(
p->pAig, pObj );
178 pObjFraig = Ssw_ObjChild0Fra(
p, pObjLi, 0 );
180 if ( Aig_ObjIsCi(pObjRepr) )
182 pObjLi = Saig_ObjLoToLi(
p->pAig, pObjRepr );
184 pObjReprFraig = Ssw_ObjChild0Fra(
p, pObjLi, 0 );
187 pObjReprFraig = Ssw_ObjFrame(
p, pObjRepr, 0 );
188p->timeReduce += Abc_Clock() - clk;
190 if ( Aig_Regular(pObjFraig) == Aig_Regular(pObjReprFraig) )
196 if ( (pObj->
fPhase == pObjRepr->
fPhase) != (Aig_ObjPhaseReal(pObjFraig) == Aig_ObjPhaseReal(pObjReprFraig)) )
204 RetValue =
Ssw_NodesAreEquiv(
p, Aig_Regular(pObjReprFraig), Aig_Regular(pObjFraig) );
210 if ( RetValue == -1 )
248 Ssw_ObjSetFrame(
p, Aig_ManConst1(
p->pAig), 0, Aig_ManConst1(
p->pFrames) );
255 pRepr = Aig_ObjRepr(
p->pAig, pObj );
262 pTemp = Aig_NotCond( Ssw_ObjFrame(
p, pRepr, 0), pRepr->
fPhase ^ pObj->
fPhase );
263 Ssw_ObjSetFrame(
p, pObj, 0, pTemp );
269 p->vSimInfo = Vec_PtrAllocSimInfo( Aig_ManCiNum(
p->pFrames), 1 );
270 Vec_PtrCleanSimInfo(
p->vSimInfo, 0, 1 );
275 vClass = Vec_PtrAlloc( 100 );
277 p->nCallsCount =
p->nCallsSat =
p->nCallsUnsat = 0;
283 if ( Ssw_ObjIsConst1Cand(
p->pAig, pObj ) )
289 if ( Vec_PtrSize(vClass) == 0 )
293 if ( Aig_ObjRepr(
p->pAig, pTemp) == pObj )
296 if (
p->nPatterns == 32 )
301 if (
p->nPatterns == 32 )
304 if (
p->pPars->nSatVarMax &&
305 p->pMSat->nSatVars >
p->pPars->nSatVarMax &&
306 p->nRecycleCalls >
p->pPars->nRecycleCalls )
308 p->nVarsMax = Abc_MaxInt(
p->nVarsMax,
p->pMSat->nSatVars );
309 p->nCallsMax = Abc_MaxInt(
p->nCallsMax,
p->pMSat->nSolverCalls );
313 p->nRecycleCalls = 0;
320 if (
p->nPatterns > 0 )
323 Vec_PtrFree( vClass );
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_ManSetCioIds(Aig_Man_t *p)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
struct Aig_Obj_t_ Aig_Obj_t
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
#define Saig_ManForEachLo(p, pObj, i)
#define Saig_ManForEachPi(p, pObj, i)
int Ssw_ClassesRefineConst1(Ssw_Cla_t *p, int fRecursive)
void Ssw_ClassesCollectClass(Ssw_Cla_t *p, Aig_Obj_t *pRepr, Vec_Ptr_t *vClass)
void Ssw_ClassesRemoveNode(Ssw_Cla_t *p, Aig_Obj_t *pObj)
int Ssw_ClassesRefine(Ssw_Cla_t *p, int fRecursive)
void Ssw_SatStop(Ssw_Sat_t *p)
ABC_NAMESPACE_IMPL_START Ssw_Sat_t * Ssw_SatStart(int fPolarFlip)
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Ssw_Man_t_ Ssw_Man_t
INCLUDES ///.
void Ssw_SmlSimulateOneFrame(Ssw_Sml_t *p)
void Ssw_SmlObjSetWord(Ssw_Sml_t *p, Aig_Obj_t *pObj, unsigned Word, int iWord, int iFrame)
int Ssw_NodesAreEquiv(Ssw_Man_t *p, Aig_Obj_t *pOld, Aig_Obj_t *pNew)
DECLARATIONS ///.
void Ssw_SmlObjAssignConst(Ssw_Sml_t *p, Aig_Obj_t *pObj, int fConst1, int iFrame)
ABC_NAMESPACE_IMPL_START void Ssw_ManSweepTransfer(Ssw_Man_t *p)
DECLARATIONS ///.
int Ssw_ManSweepLatch(Ssw_Man_t *p)
void Ssw_ManBuildCone_rec(Ssw_Man_t *p, Aig_Obj_t *pObj)
int Ssw_ManSweepResimulate(Ssw_Man_t *p)
void Ssw_ManSweepLatchOne(Ssw_Man_t *p, Aig_Obj_t *pObjRepr, Aig_Obj_t *pObj)
void Ssw_SmlAddPattern(Ssw_Man_t *p, Aig_Obj_t *pRepr, Aig_Obj_t *pCand)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.