49 assert( pCex->nBits == pCex->nRegs + pCex->nPis * (pCex->iFrame + 1) );
63 for ( k = 0; k < pCex->nRegs; k++ )
66 if ( k < pCex->nRegs )
67 Abc_Print( 0,
"The CEX has flop values different from 0, but they are currently not used by \"resim\".\n" );
73 for ( w = 0; w <
nWords; w++ )
76 for ( i = pCex->nRegs; i < pCex->nBits; i++ )
79 for ( w = 0; w <
nWords; w++ )
88 for ( w = 0; w <
nWords; w++ )
114 for ( w = 0; w <
nWords; w++ )
121 for ( w = 0; w <
nWords; w++ )
139 unsigned * pInfo0, * pInfo1;
147 for ( w = 0; w < p->
nWords; w++ )
148 pInfo1[w] = pInfo0[w];
156 for ( w = 0; w < p->
nWords; w++ )
157 pInfo1[w] = pInfo0[w];
163 for ( w = 0; w < p->
nWords; w++ )
164 pInfo1[w] = pInfo0[w];
222 Abc_Print( 1,
"Cec_ManSeqResimulateCounter(): Counter-example is not available.\n" );
225 if ( pAig->
pReprs == NULL )
227 Abc_Print( 1,
"Cec_ManSeqResimulateCounter(): Equivalence classes are not available.\n" );
232 Abc_Print( 1,
"Cec_ManSeqResimulateCounter(): Not a sequential AIG.\n" );
238 Abc_Print( 1,
"Cec_ManSeqResimulateCounter(): The number of PIs in the AIG and the counter-example differ.\n" );
242 Abc_Print( 1,
"Resimulating %d timeframes.\n", pPars->
nFrames + pCex->iFrame + 1 );
276 if ( pAig->
pReprs == NULL )
299 if ( pAig->
pReprs == NULL )
338 int r, nPats, RetValue = 0;
339 if ( pAig->
pReprs == NULL )
341 Abc_Print( 1,
"Cec_ManSeqSemiformal(): Equivalence classes are not available.\n" );
346 Abc_Print( 1,
"Cec_ManSeqSemiformal(): Not a sequential AIG.\n" );
356 pParsSat->nBTLimit = pPars->
nBTLimit;
357 pParsSat->fVerbose = pPars->
fVerbose;
358 if ( pParsSat->fVerbose )
365 for ( r = 0; r < pPars->
nRounds; r++ )
369 Abc_Print( 1,
"Cec_ManSeqSemiformal: There are only trivial equiv candidates left (PO drivers). Quitting.\n" );
378 Abc_Print( 1,
"Quitting refinement because miter could not be unrolled.\n" );
383 Abc_Print( 1,
"Unrolled for %d frames.\n", nFramesReal );
395 assert( pState->iPo >= 0 );
419 Abc_Print( 1,
"Cec_ManSeqSemiformal(): An output of the miter is asserted. Refinement stopped.\n" );
433 Abc_Print( 1,
"The number of POs that are not const-0 candidates = %d.\n", nNonConsts );
Gia_Man_t * Gia_ManSpecReduce(Gia_Man_t *p, int fDualOut, int fSynthesis, int fReduce, int fSkipSome, int fVerbose)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
void Gia_ManStop(Gia_Man_t *p)
static int Gia_ManPoNum(Gia_Man_t *p)
static int Abc_InfoHasBit(unsigned *p, int i)
ABC_NAMESPACE_IMPL_START Abc_Cex_t * Abc_CexAlloc(int nRegs, int nRealPis, int nFrames)
DECLARATIONS ///.
static int Gia_ObjIsCand(Gia_Obj_t *pObj)
void Gia_ManCleanMark0(Gia_Man_t *p)
int Cec_ManSimSimulateRound(Cec_ManSim_t *p, Vec_Ptr_t *vInfoCis, Vec_Ptr_t *vInfoCos)
void Cec_ManSimStop(Cec_ManSim_t *p)
ABC_NAMESPACE_IMPL_START void Cec_ManSeqDeriveInfoFromCex(Vec_Ptr_t *vInfo, Gia_Man_t *pAig, Abc_Cex_t *pCex)
DECLARATIONS ///.
static abctime Abc_Clock()
static int Vec_PtrSize(Vec_Ptr_t *p)
void Gia_ManEquivPrintClasses(Gia_Man_t *p, int fVerbose, float Mem)
Cec_ManSim_t * Cec_ManSimStart(Gia_Man_t *pAig, Cec_ParSim_t *pPars)
unsigned Gia_ManRandom(int fReset)
FUNCTION DEFINITIONS ///.
int Cec_ManSeqResimulateInfo(Gia_Man_t *pAig, Vec_Ptr_t *vSimInfo, Abc_Cex_t *pBestState, int fCheckMiter)
void Cec_ManSimSetDefaultParams(Cec_ParSim_t *p)
void Gia_ManCreateValueRefs(Gia_Man_t *p)
int Cec_ManSeqResimulate(Cec_ManSim_t *p, Vec_Ptr_t *vInfo)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
Gia_Man_t * Gia_ManSpecReduceInitFrames(Gia_Man_t *p, Abc_Cex_t *pInit, int nFramesMax, int *pnFrames, int fDualOut, int nMinOutputs)
static void Vec_StrFree(Vec_Str_t *p)
static int Gia_ObjIsConst(Gia_Man_t *p, int Id)
#define ABC_NAMESPACE_IMPL_END
void Cec_ManSeqDeriveInfoInitRandom(Vec_Ptr_t *vInfo, Gia_Man_t *pAig, Abc_Cex_t *pCex)
Gia_Man_t * Gia_ManSeqStructSweep(Gia_Man_t *p, int fConst, int fEquiv, int fVerbose)
static void Abc_Print(int level, const char *format,...)
void Gia_AigerWrite(Gia_Man_t *p, char *pFileName, int fWriteSymbols, int fCompact)
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static int Vec_PtrReadWordsSimInfo(Vec_Ptr_t *p)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
int Cec_ManCheckNonTrivialCands(Gia_Man_t *pAig)
Vec_Str_t * Cec_ManSatSolveSeq(Vec_Ptr_t *vPatts, Gia_Man_t *pAig, Cec_ParSat_t *pPars, int nRegs, int *pnPats)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
int Cec_ManSeqResimulateCounter(Gia_Man_t *pAig, Cec_ParSim_t *pPars, Abc_Cex_t *pCex)
typedefABC_NAMESPACE_HEADER_START struct Cec_ParSat_t_ Cec_ParSat_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
static int Gia_ManPiNum(Gia_Man_t *p)
#define Gia_ManForEachPo(p, pObj, i)
int Cec_ManSeqSemiformal(Gia_Man_t *pAig, Cec_ParSmf_t *pPars)
int Cec_ManCountNonConstOutputs(Gia_Man_t *pAig)
void Cec_ManSatSetDefaultParams(Cec_ParSat_t *p)
DECLARATIONS ///.
static int Gia_ObjRepr(Gia_Man_t *p, int Id)
static Vec_Ptr_t * Vec_PtrAllocSimInfo(int nEntries, int nWords)
static void Vec_PtrFree(Vec_Ptr_t *p)
static int Gia_ManRegNum(Gia_Man_t *p)