72 p->nConfMaxStart = nConfMax;
73 p->nConfMax = nConfMax;
74 p->nFramesSweep = Abc_MaxInt( (1<<21)/Aig_ManNodeNum(pMan->pAig), pMan->nFrames );
75 p->fVerbose = fVerbose;
78 p->vTargets = Vec_PtrAlloc( Saig_ManPoNum(
p->pMan->pAig) );
80 Vec_PtrPush(
p->vTargets, Aig_ObjFanin0(pObj) );
82 p->nPatternsAlloc = 512;
84 p->vPatterns = Vec_PtrAllocSimInfo( Aig_ManRegNum(
p->pMan->pAig), Abc_BitWordNum(
p->nPatternsAlloc) );
85 Vec_PtrCleanSimInfo(
p->vPatterns, 0, Abc_BitWordNum(
p->nPatternsAlloc) );
86 p->vHistory = Vec_IntAlloc( 100 );
87 Vec_IntPush(
p->vHistory, 0 );
112 Vec_PtrFree(
p->vTargets );
113 Vec_PtrFree(
p->vPatterns );
114 Vec_IntFree(
p->vHistory );
134 if ( !Ssw_ObjIsConst1Cand(
p->pMan->pAig, pObj) )
155 if (
p->nPatterns >=
p->nPatternsAlloc )
159 pInfo = (
unsigned *)Vec_PtrEntry(
p->vPatterns, i );
160 if ( Abc_InfoHasBit(
p->pMan->pPatWords, Saig_ManPiNum(
p->pMan->pAig) + i ) )
161 Abc_InfoSetBit( pInfo,
p->nPatterns );
180 Aig_Obj_t * pObj, * pObjNew, * pObjLi, * pObjLo;
182 int i, f, RetValue, fFirst = 0;
190 pInfo = (
unsigned *)Vec_PtrEntry( pBmc->vPatterns, i );
191 pObjNew = Aig_NotCond( Aig_ManConst1(
p->pFrames), !Abc_InfoHasBit(pInfo, iPat) );
192 Ssw_ObjSetFrame(
p, pObj, 0, pObjNew );
196 RetValue = pBmc->nFramesSweep;
197 for ( f = 0; f < pBmc->nFramesSweep; f++ )
200 Ssw_ObjSetFrame(
p, Aig_ManConst1(
p->pAig), f, Aig_ManConst1(
p->pFrames) );
206 pObjNew =
Aig_And(
p->pFrames, Ssw_ObjChild0Fra(
p, pObj, f), Ssw_ObjChild1Fra(
p, pObj, f) );
207 Ssw_ObjSetFrame(
p, pObj, f, pObjNew );
214 pBmc->nConfMax *= 10;
217 if ( f > 0 &&
p->pMSat->pSat->stats.conflicts >= pBmc->nConfMax )
224 if (
p->pMSat->pSat->stats.conflicts >= pBmc->nConfMax )
235 pObjNew = Ssw_ObjChild0Fra(
p, pObjLi,f);
236 Ssw_ObjSetFrame(
p, pObjLo, f+1, pObjNew );
242 pBmc->nConfMax /= 10;
246p->timeBmc += Abc_Clock() - clk;
264 int RetValue, Frames, Iter;
275 Abc_Print( 1,
"AIG : C = %6d. Cl = %6d. Nodes = %6d. ConfMax = %6d. FramesMax = %6d.\n",
277 Aig_ManNodeNum(
p->pMan->pAig),
p->nConfMax,
p->nFramesSweep );
280 for ( Iter = 0; Iter <
p->nPatterns; Iter++ )
287 Abc_Print( 1,
"%3d : C = %6d. Cl = %6d. NR = %6d. F = %3d. C = %5d. P = %3d. %s ",
289 Aig_ManNodeNum(
p->pMan->pFrames), Frames, (
int)
p->pMan->pMSat->pSat->stats.conflicts,
p->nPatterns,
290 p->pMan->nSatFailsReal?
"f" :
" " );
291 ABC_PRT(
"T", Abc_Clock() - clk );
296 Abc_Print( 1,
"Target is hit!!!\n" );
299 if (
p->nPatterns >=
p->nPatternsAlloc )
304 pMan->nStrangers = 0;
307 pMan->nSatFailsReal = 0;
308 pMan->nSatCallsUnsat = 0;
309 pMan->nSatCallsSat = 0;
310 pMan->timeSimSat = 0;
312 pMan->timeSatSat = 0;
313 pMan->timeSatUnsat = 0;
314 pMan->timeSatUndec = 0;
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
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 ///.
#define Aig_ManForEachNode(p, pObj, i)
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
#define Saig_ManForEachLiLo(p, pObjLi, pObjLo, i)
#define Saig_ManForEachPo(p, pObj, i)
#define Saig_ManForEachLo(p, pObj, i)
#define Saig_ManForEachPi(p, pObj, i)
int Ssw_ClassesCand1Num(Ssw_Cla_t *p)
void Ssw_ClassesCheck(Ssw_Cla_t *p)
int Ssw_ClassesClassNum(Ssw_Cla_t *p)
void Ssw_CnfNodeAddToSolver(Ssw_Sat_t *p, Aig_Obj_t *pObj)
ABC_NAMESPACE_IMPL_START Ssw_Sat_t * Ssw_SatStart(int fPolarFlip)
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Ssw_Man_t_ Ssw_Man_t
INCLUDES ///.
int Ssw_ManSweepNode(Ssw_Man_t *p, Aig_Obj_t *pObj, int f, int fBmc, Vec_Int_t *vPairs)
void Ssw_ManCleanup(Ssw_Man_t *p)
int Ssw_FilterUsingSemi(Ssw_Man_t *pMan, int fCheckTargets, int nConfMax, int fVerbose)
Ssw_Sem_t * Ssw_SemManStart(Ssw_Man_t *pMan, int nConfMax, int fVerbose)
FUNCTION DEFINITIONS ///.
int Ssw_SemCheckTargets(Ssw_Sem_t *p)
typedefABC_NAMESPACE_IMPL_START struct Ssw_Sem_t_ Ssw_Sem_t
DECLARATIONS ///.
void Ssw_ManFilterBmcSavePattern(Ssw_Sem_t *p)
void Ssw_SemManStop(Ssw_Sem_t *p)
int Ssw_ManFilterBmc(Ssw_Sem_t *pBmc, int iPat, int fCheckTargets)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.