49 assert( pCexAbs->iPo == 0 );
52 pCex->iFrame = pCexAbs->iFrame;
53 pCex->iPo = pCexAbs->iPo;
55 for ( f = 0; f <= pCexAbs->iFrame; f++ )
58 if (
Abc_InfoHasBit( pCexAbs->pData, pCexAbs->nRegs + pCexAbs->nPis * f + i ) )
61 Abc_InfoSetBit( pCex->pData, pCex->nRegs + pCex->nPis * f + iPiNum );
67 Abc_Print( 1,
"Gia_ManCexRemap(): Counter-example is invalid.\n" );
73 Abc_Print( 1,
"Counter-example verification is successful.\n" );
74 Abc_Print( 1,
"Output %d of miter \"%s\" was asserted in frame %d. \n", pCex->iPo, p->
pName, pCex->iFrame );
104 Abc_Print( 1,
"Gia_ManGlaRefine(): Abstraction gate map is missing.\n" );
113 Abc_Print( 1,
"Gia_ManGlaRefine(): The PI counts in GLA and in CEX do not match.\n" );
119 Abc_Print( 1,
"Gia_ManGlaRefine(): The initial counter-example is invalid.\n" );
134 for ( f = 0; f <= pCex->iFrame; f++ )
140 else if (
Abc_InfoHasBit(pCex->pData, pCex->nRegs + pCex->nPis * f + i) )
161 Abc_Print( 1,
"Procedure &gla_refine found a real counter-example in frame %d.\n", pCexNew->iFrame );
167 if ( pCexNew == NULL )
189 Abc_Print( 1,
"Counter-example minimization has failed.\n" );
192 for ( f = 0; f <= pCare->iFrame; f++ )
193 for ( i = 0; i < pCare->nPis; i++ )
194 if (
Abc_InfoHasBit( pCare->pData, pCare->nRegs + f * pCare->nPis + i ) )
211 Abc_Print( 1,
"Essential bits = %d. Additional objects = %d. ", nOnes,
Counter );
218 Abc_Print( 1,
"Procedure &gla_refine found a real counter-example in frame %d.\n", pCexNew->iFrame );
255 int RetValue, i, k, iBit = 0;
256 assert( iFrame >= 0 && iFrame <= p->iFrame );
260 for ( i = 0, iBit = p->nRegs; i <= p->iFrame; i++ )
274 if ( i == p->iFrame )
279 assert( iBit == p->nBits );
301 int RetValue, i, k, iBit = 0;
302 assert( iFrame >= 0 && iFrame <= p->iFrame );
306 for ( i = iFrame, iBit += p->nRegs +
Gia_ManPiNum(pAig) * iFrame; i <= p->iFrame; i++ )
315 if ( i == p->iFrame )
320 assert( iBit == p->nBits );
324 printf(
"Shortened CEX holds for the abstraction of the fast-forwarded model.\n" );
326 printf(
"Shortened CEX does not hold for the abstraction of the fast-forwarded model.\n" );
383 Abc_Print( 1,
"Gia_ManNewRefine(): Abstraction gate map is missing.\n" );
387 Abc_Print( 1,
"Refining with %d-frame CEX, starting in frame %d, with %d extra frames.\n", pCex->iFrame, iFrameStart, iFrameExtra );
394 Abc_Print( 1,
"Gia_ManNewRefine(): The PI counts in GLA and in CEX do not match.\n" );
403 Abc_Print( 1,
"Gia_ManNewRefine(): The initial counter-example is invalid.\n" );
409 Abc_Print( 1,
"Gia_ManNewRefine(): The initial counter-example is correct.\n" );
433 pPars->nFramesMax = pCex->iFrame - iFrameStart + 1 + iFrameExtra;
434 pPars->fVerbose = fVerbose;
static void Gia_ObjTerSimCo(Gia_Obj_t *pObj)
static void Gia_ObjTerSimRo(Gia_Man_t *p, Gia_Obj_t *pObj)
static void Gia_ObjTerSimSet0(Gia_Obj_t *pObj)
void Gia_ManStop(Gia_Man_t *p)
Aig_Man_t * Gia_ManToAigSimple(Gia_Man_t *p)
static Vec_Int_t * Vec_IntDup(Vec_Int_t *pVec)
#define Gia_ManForEachCo(p, pObj, i)
int Gia_ManVerifyCex(Gia_Man_t *pAig, Abc_Cex_t *p, int fDualOut)
DECLARATIONS ///.
void Gia_ManGlaCollect(Gia_Man_t *p, Vec_Int_t *vGateClasses, Vec_Int_t **pvPis, Vec_Int_t **pvPPis, Vec_Int_t **pvFlops, Vec_Int_t **pvNodes)
static int Gia_ObjFaninC1(Gia_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Aig_ManStop(Aig_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 Gia_Obj_t * Gia_ManPo(Gia_Man_t *p, int v)
void Gia_ManCleanMark0(Gia_Man_t *p)
Gia_Man_t * Gia_ManDupAbsGates(Gia_Man_t *p, Vec_Int_t *vGateClasses)
int Gia_ManPerformGla(Gia_Man_t *p, Abs_Par_t *pPars)
static void Vec_BitWriteEntry(Vec_Bit_t *p, int i, int Entry)
static abctime Abc_Clock()
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
typedefABC_NAMESPACE_HEADER_START struct Vec_Bit_t_ Vec_Bit_t
INCLUDES ///.
static int * Vec_BitArray(Vec_Bit_t *p)
void Abs_ParSetDefaults(Abs_Par_t *p)
DECLARATIONS ///.
#define Gia_ManForEachRiRo(p, pObjRi, pObjRo, i)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static Vec_Bit_t * Vec_BitStart(int nSize)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Gia_Man_t * Gia_ManTransformFlops(Gia_Man_t *p, Vec_Int_t *vFlops, Vec_Int_t *vInit)
static int Gia_ObjIsRo(Gia_Man_t *p, Gia_Obj_t *pObj)
Abc_Cex_t * Saig_ManCbaFindCexCareBits(Aig_Man_t *pAig, Abc_Cex_t *pCex, int nInputs, int fVerbose)
static int Vec_IntEntry(Vec_Int_t *p, int i)
#define ABC_NAMESPACE_IMPL_END
#define Gia_ManForEachAnd(p, pObj, i)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
Vec_Int_t * Gia_ManGetStateAndCheckCex(Gia_Man_t *pAig, Abc_Cex_t *p, int iFrame)
static void Vec_IntFreeP(Vec_Int_t **p)
#define Gia_ManForEachPi(p, pObj, i)
static void Abc_Print(int level, const char *format,...)
void Gia_ManCheckCex(Gia_Man_t *pAig, Abc_Cex_t *p, int iFrame)
ABC_NAMESPACE_IMPL_START Abc_Cex_t * Gia_ManCexRemap(Gia_Man_t *p, Abc_Cex_t *pCexAbs, Vec_Int_t *vPis)
DECLARATIONS ///.
int Gia_ManGlaRefine(Gia_Man_t *p, Abc_Cex_t *pCex, int fMinCut, int fVerbose)
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
#define ABC_NAMESPACE_IMPL_START
static void Abc_InfoSetBit(unsigned *p, int i)
static int Gia_ObjTerSimGet1(Gia_Obj_t *pObj)
static int Vec_IntSize(Vec_Int_t *p)
Gia_Man_t * Gia_ManDupFlip(Gia_Man_t *p, int *pInitState)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
static Gia_Obj_t * Gia_ManConst0(Gia_Man_t *p)
static void Gia_ObjTerSimSetC(Gia_Obj_t *pObj)
static void Gia_ObjTerSimSet1(Gia_Obj_t *pObj)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
static void Vec_BitFree(Vec_Bit_t *p)
#define Gia_ManForEachRo(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
void Abc_CexFree(Abc_Cex_t *p)
static int Gia_ManPiNum(Gia_Man_t *p)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
int Gia_ManNewRefine(Gia_Man_t *p, Abc_Cex_t *pCex, int iFrameStart, int iFrameExtra, int fVerbose)
static void Gia_ObjTerSimSetX(Gia_Obj_t *pObj)
void Nwk_ManDeriveMinCut(Gia_Man_t *p, int fVerbose)
static int Gia_ObjCioId(Gia_Obj_t *pObj)
static int Gia_ManObjNum(Gia_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Abs_Par_t_ Abs_Par_t
INCLUDES ///.
static void Gia_ObjTerSimAnd(Gia_Obj_t *pObj)
static int Gia_ManRegNum(Gia_Man_t *p)