51 p->nObjs = Aig_ManObjNumMax( pAig );
54 p->vAig2Frm = Vec_PtrAlloc( 0 );
55 Vec_PtrFill(
p->vAig2Frm, 2 *
p->nObjs, NULL );
74 Vec_PtrFree(
p->vAig2Frm );
93 if ( --pNode->
nRefs > 0 )
96 if ( Aig_ObjIsCi(pNode) || Aig_ObjIsConst1(pNode) )
106 if ( pNode->
nRefs++ > 0 )
109 if ( Aig_ObjIsCi(pNode) || Aig_ObjIsConst1(pNode) )
117 pNode0 = Aig_Regular(pNode0);
118 pNode1 = Aig_Regular(pNode1);
119 Aig_ObjRef( pNode0 );
120 Aig_ObjRef( pNode1 );
123 Aig_ObjDeref( pNode0 );
124 Aig_ObjDeref( pNode1 );
125 assert( Count0 == Count1 );
142 Aig_Obj_t * pObjNew, * pObjNew2, * pObjRepr, * pObjReprNew, * pMiter;
144 pObjRepr = Aig_ObjRepr(pAig, pObj);
145 if ( pObjRepr == NULL )
150 pObjNew = Ssw_ObjFrame(
p, pObj, iFrame );
152 pObjReprNew = Ssw_ObjFrame(
p, pObjRepr, iFrame );
156 assert( pObjNew != Aig_Not(pObjReprNew) );
157 if ( pObjNew == pObjReprNew )
162 assert( pObjNew != pObjReprNew );
163 if ( pObjNew == Aig_Not(pObjReprNew) )
168 pObjNew2 = Aig_NotCond( pObjReprNew, pObj->
fPhase ^ pObjRepr->
fPhase );
170 Ssw_ObjSetFrame(
p, pObj, iFrame, pObjNew2 );
174 if (
p->pPars->nSkipLimit ) {
180 else if (
p->pPars->nSkip == 0 || rand() %
p->pPars->nSkip == 0 ) {
187 pMiter =
Aig_Exor( pFrames, pObjNew, pObjNew2 );
188 Aig_ObjCreateCo( pFrames, Aig_NotCond(pMiter, Aig_ObjPhaseReal(pMiter)) );
206 Aig_Obj_t * pObj, * pObjLi, * pObjLo, * pObjNew;
209 assert( Aig_ManRegNum(
p->pAig) > 0 );
210 assert( Aig_ManRegNum(
p->pAig) < Aig_ManCiNum(
p->pAig) );
211 p->nConstrTotal =
p->nConstrReduced = 0;
220 if (
p->pPars->nSkip )
222 for ( f = 0; f <
p->pPars->nFramesK; f++ )
225 Ssw_ObjSetFrame(
p, Aig_ManConst1(
p->pAig), f, Aig_ManConst1(pFrames) );
229 pObjNew->
fPhase = (
p->vInits != NULL) && Vec_IntEntry(
p->vInits, iLits++);
230 Ssw_ObjSetFrame(
p, pObj, f, pObjNew );
234 Ssw_FramesConstrainNode(
p, pFrames,
p->pAig, pObj, f, 1 );
238 pObjNew =
Aig_And( pFrames, Ssw_ObjChild0Fra(
p, pObj, f), Ssw_ObjChild1Fra(
p, pObj, f) );
239 Ssw_ObjSetFrame(
p, pObj, f, pObjNew );
240 Ssw_FramesConstrainNode(
p, pFrames,
p->pAig, pObj, f, 1 );
244 Ssw_ObjSetFrame(
p, pObj, f, Ssw_ObjChild0Fra(
p, pObj,f) );
247 Ssw_ObjSetFrame(
p, pObjLo, f+1, Ssw_ObjFrame(
p, pObjLi,f) );
249 assert(
p->vInits == NULL || Vec_IntSize(
p->vInits) == iLits + Saig_ManPiNum(
p->pAig) );
256 assert( pFrames->pData == NULL );
278 assert( Aig_ManRegNum(
p->pAig) > 0 );
279 assert( Aig_ManRegNum(
p->pAig) < Aig_ManCiNum(
p->pAig) );
280 p->nConstrTotal =
p->nConstrReduced = 0;
284 pFrames->pName = Abc_UtilStrsav(
p->pAig->pName );
286 Ssw_ObjSetFrame(
p, Aig_ManConst1(
p->pAig), 0, Aig_ManConst1(pFrames) );
294 Ssw_FramesConstrainNode(
p, pFrames,
p->pAig, pObj, 0, 0 );
298 pObjNew =
Aig_And( pFrames, Ssw_ObjChild0Fra(
p, pObj, 0), Ssw_ObjChild1Fra(
p, pObj, 0) );
299 Ssw_ObjSetFrame(
p, pObj, 0, pObjNew );
300 Ssw_FramesConstrainNode(
p, pFrames,
p->pAig, pObj, 0, 0 );
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
void Aig_ManStop(Aig_Man_t *p)
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
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_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
#define Aig_ManForEachNode(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
int Aig_ManCleanup(Aig_Man_t *p)
#define Aig_ManForEachCo(p, pObj, i)
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
#define Saig_ManForEachLiLo(p, pObjLi, pObjLo, i)
#define Saig_ManForEachLi(p, pObj, i)
#define Saig_ManForEachLo(p, pObj, i)
#define Saig_ManForEachPi(p, pObj, i)
ABC_NAMESPACE_IMPL_START Ssw_Frm_t * Ssw_FrmStart(Aig_Man_t *pAig)
DECLARATIONS ///.
int Aig_ManConeSize(Aig_Obj_t *pNode0, Aig_Obj_t *pNode1)
int Aig_ObjRef_rec(Aig_Obj_t *pNode)
Aig_Man_t * Ssw_FramesWithClasses(Ssw_Man_t *p)
void Ssw_FrmStop(Ssw_Frm_t *p)
Aig_Man_t * Ssw_SpeculativeReduction(Ssw_Man_t *p)
int Aig_ObjDeref_rec(Aig_Obj_t *pNode)
typedefABC_NAMESPACE_HEADER_START struct Ssw_Man_t_ Ssw_Man_t
INCLUDES ///.
struct Ssw_Frm_t_ Ssw_Frm_t