101 int nFrames, RetValue, nIter;
105 float TimeLeft = 0.0;
120 printf(
"Original miter: Latches = %5d. Nodes = %6d.\n",
133 printf(
"Sequential cleanup: Latches = %5d. Nodes = %6d. ",
152 printf(
"Phase abstraction: Latches = %5d. Nodes = %6d. ",
167 printf(
"Forward retiming: Latches = %5d. Nodes = %6d. ",
200 nIter = pPars2->nIters;
205 if ( pTemp->pSeqModel )
208 printf(
"Fra_FraigSec(): Counter-example verification has FAILED.\n" );
210 printf(
"The counter-example is invalid because of phase abstraction.\n" );
225 printf(
"Networks are NOT EQUIVALENT after simulation. " );
230 printf(
"SOLUTION: FAIL " );
245 printf(
"Latch-corr (I=%3d): Latches = %5d. Nodes = %6d. ",
273 printf(
"Fraiging: Latches = %5d. Nodes = %6d. ",
279 if ( pNew->nRegs == 0 )
314 printf(
"Min-reg retiming: Latches = %5d. Nodes = %6d. ",
323 for ( nFrames = 1; nFrames <= pParSec->
nFramesMax; nFrames *= 2 )
347 pPars2->nFramesK = nFrames;
348 pPars2->nBTLimit = pParSec->
nBTLimit;
352 if ( RetValue == -1 && pPars2->nConflicts > pPars2->nBTLimitGlobal )
355 printf(
"Global conflict limit (%d) exceeded.\n", pPars2->nBTLimitGlobal );
382 printf(
"K-step (K=%2d,I=%3d): Latches = %5d. Nodes = %6d. ",
386 if ( RetValue != -1 )
404 printf(
"Min-reg retiming: Latches = %5d. Nodes = %6d. ",
422 printf(
"Rewriting: Latches = %5d. Nodes = %6d. ",
434 printf(
"Seq simulation : Latches = %5d. Nodes = %6d. ",
443 printf(
"The counter-example is invalid because of phase abstraction.\n" );
456 printf(
"Networks are NOT EQUIVALENT after simulation. " );
461 printf(
"SOLUTION: FAIL " );
499 if ( pPars->fVerbose )
500 printf(
"Solving output %2d (out of %2d):\n", i,
Saig_ManPoNum(pNew) );
502 pTemp =
Aig_ManScl( pAux = pTemp, 1, 1, 0, -1, -1, 0, 0 );
507 if ( pTemp->pSeqModel )
530 printf(
"Solving output %3d (out of %3d) using interpolation.\r", i,
Saig_ManPoNum(pNew) );
535 printf(
"Interpolation left %d (out of %d) outputs unsolved \n", Counter,
Saig_ManPoNum(pNew) );
541 pNew =
Aig_ManScl( pTemp = pNew, 1, 1, 0, -1, -1, 0, 0 );
548 if ( pNewOrpos->pSeqModel )
551 pCex = pNew->pSeqModel = pNewOrpos->pSeqModel; pNewOrpos->pSeqModel = NULL;
560 printf(
"Property proved using interpolation. " );
561 else if ( RetValue == 0 )
562 printf(
"Property DISPROVED in frame %d using interpolation. ", Depth );
563 else if ( RetValue == -1 )
564 printf(
"Property UNDECIDED after interpolation. " );
595 pPars->fVerbose = pParSec->
fVerbose;
597 printf(
"Running property directed reachability...\n" );
599 if ( pNew->pSeqModel )
609 printf(
"Networks are equivalent. " );
614 printf(
"SOLUTION: PASS " );
618 else if ( RetValue == 0 )
620 if ( pNew->pSeqModel == NULL )
628 for ( i = 0; i < pNew->nTruePis; i++ )
633 printf(
"Networks are NOT EQUIVALENT. " );
638 printf(
"SOLUTION: FAIL " );
651 printf(
"Networks are UNDECIDED. " );
656 printf(
"SOLUTION: UNDECIDED " );
659 if ( !TimeOut && !pParSec->
fSilent )
661 static int Counter = 1;
662 char pFileName[1000];
664 sprintf( pFileName,
"sm%02d.aig", Counter++ );
666 printf(
"The unsolved reduced miter is written into file \"%s\".\n", pFileName );
669 if ( pNew->pSeqModel )
672 printf(
"The counter-example is invalid because of phase abstraction.\n" );
680 if ( ppResult != NULL )
void Bbr_ManSetDefaultParams(Saig_ParBbr_t *p)
FUNCTION DEFINITIONS ///.
static int Saig_ManPoNum(Aig_Man_t *p)
Aig_Man_t * Saig_ManRetimeMinArea(Aig_Man_t *p, int nMaxIters, int fForwardOnly, int fBackwardOnly, int fInitial, int fVerbose)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
void Aig_ManStop(Aig_Man_t *p)
void Pdr_ManSetDefaultParams(Pdr_Par_t *pPars)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Pdr_Par_t_ Pdr_Par_t
INCLUDES ///.
Fra_Sml_t * Fra_SmlSimulateSeq(Aig_Man_t *pAig, int nPref, int nFrames, int nWords, int fCheckMiter)
ABC_NAMESPACE_IMPL_START Abc_Cex_t * Abc_CexAlloc(int nRegs, int nRealPis, int nFrames)
DECLARATIONS ///.
Aig_Man_t * Fra_FraigEquivence(Aig_Man_t *pManAig, int nConfMax, int fProve)
int Saig_ManVerifyCex(Aig_Man_t *pAig, Abc_Cex_t *p)
typedefABC_NAMESPACE_HEADER_START struct Ssw_Pars_t_ Ssw_Pars_t
INCLUDES ///.
Aig_Man_t * Aig_ManDupOrdered(Aig_Man_t *p)
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
Aig_Man_t * Ssw_SignalCorrespondence(Aig_Man_t *pAig, Ssw_Pars_t *pPars)
static Aig_Obj_t * Aig_ManConst0(Aig_Man_t *p)
static abctime Abc_Clock()
static int Aig_ManNodeNum(Aig_Man_t *p)
Aig_Man_t * Saig_ManRetimeForward(Aig_Man_t *p, int nMaxIters, int fVerbose)
static int Aig_ManCoNum(Aig_Man_t *p)
Abc_Cex_t * Fra_SmlGetCounterExample(Fra_Sml_t *p)
Aig_Man_t * Ssw_LatchCorrespondence(Aig_Man_t *pAig, Ssw_Pars_t *pPars)
Aig_Man_t * Aig_ManReduceLaches(Aig_Man_t *p, int fVerbose)
void Aig_ObjPatchFanin0(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pFaninNew)
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
Aig_Man_t * Aig_ManScl(Aig_Man_t *pAig, int fLatchConst, int fLatchEqual, int fUseMvSweep, int nFramesSymb, int nFramesSatur, int fVerbose, int fVeryVerbose)
Aig_Man_t * Dar_ManCompress2(Aig_Man_t *pAig, int fBalance, int fUpdateLevel, int fFanout, int fPower, int fVerbose)
int Inter_ManPerformInterpolation(Aig_Man_t *pAig, Inter_ManParams_t *pPars, int *piFrame)
void Ssw_ManSetDefaultParams(Ssw_Pars_t *p)
DECLARATIONS ///.
Aig_Man_t * Aig_ManConstReduce(Aig_Man_t *p, int fUseMvSweep, int nFramesSymb, int nFramesSatur, int fVerbose, int fVeryVerbose)
static int Aig_ManCiNum(Aig_Man_t *p)
void Inter_ManSetDefaultParams(Inter_ManParams_t *p)
MACRO DEFINITIONS ///.
Aig_Man_t * Aig_ManDupSimpleDfs(Aig_Man_t *p)
void Ioa_WriteAiger(Aig_Man_t *pMan, char *pFileName, int fWriteSymbols, int fCompact)
static int Saig_ManRegNum(Aig_Man_t *p)
Aig_Man_t * Saig_ManDupOrpos(Aig_Man_t *p)
DECLARATIONS ///.
static Aig_Obj_t * Aig_ManConst1(Aig_Man_t *p)
static void Abc_InfoSetBit(unsigned *p, int i)
Aig_Man_t * Aig_ManDupUnsolvedOutputs(Aig_Man_t *p, int fAddRegs)
void Abc_FrameSetSave1(void *pAig)
static int Aig_ManRegNum(Aig_Man_t *p)
int Pdr_ManSolve(Aig_Man_t *p, Pdr_Par_t *pPars)
static int Saig_ManPiNum(Aig_Man_t *p)
MACRO DEFINITIONS ///.
Aig_Man_t * Aig_ManDupOneOutput(Aig_Man_t *p, int iPoNum, int fAddRegs)
Abc_Cex_t * Abc_CexDup(Abc_Cex_t *p, int nRegsNew)
int Fra_FraigCec(Aig_Man_t **ppAig, int nConfLimit, int fVerbose)
#define Saig_ManForEachPo(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
int Fra_FraigMiterStatus(Aig_Man_t *p)
DECLARATIONS ///.
void Ssw_ManSetDefaultParamsLcorr(Ssw_Pars_t *p)
int Aig_ManCleanup(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupSimple(Aig_Man_t *p)
DECLARATIONS ///.
int Saig_ManFindFailedPoCex(Aig_Man_t *pAig, Abc_Cex_t *p)
typedefABC_NAMESPACE_HEADER_START struct Inter_ManParams_t_ Inter_ManParams_t
INCLUDES ///.
Aig_Man_t * Saig_ManPhaseAbstractAuto(Aig_Man_t *p, int fVerbose)
void Fra_SmlStop(Fra_Sml_t *p)
int Aig_ManVerifyUsingBdds(Aig_Man_t *p, Saig_ParBbr_t *pPars)