Commit 43d8b8be by Alan Mishchenko

Changes to enable smarter simulation.

parent b8de7a28
...@@ -833,7 +833,12 @@ static Vec_Int_t * Ssw_RarFindStartingState( Aig_Man_t * pAig, Abc_Cex_t * pCex ...@@ -833,7 +833,12 @@ static Vec_Int_t * Ssw_RarFindStartingState( Aig_Man_t * pAig, Abc_Cex_t * pCex
// record the new pattern // record the new pattern
vInit = Vec_IntAlloc( Saig_ManRegNum(pAig) ); vInit = Vec_IntAlloc( Saig_ManRegNum(pAig) );
Saig_ManForEachLo( pAig, pObj, i ) Saig_ManForEachLo( pAig, pObj, i )
{
//printf( "%d", pObj->fMarkB );
Vec_IntPush( vInit, pObj->fMarkB ); Vec_IntPush( vInit, pObj->fMarkB );
}
//printf( "\n" );
Aig_ManCleanMarkB( pAig );
return vInit; return vInit;
} }
...@@ -975,7 +980,10 @@ int Ssw_RarSignalFilter( Aig_Man_t * pAig, int nFrames, int nWords, int nBinSize ...@@ -975,7 +980,10 @@ int Ssw_RarSignalFilter( Aig_Man_t * pAig, int nFrames, int nWords, int nBinSize
// compute starting state if needed // compute starting state if needed
assert( p->vInits == NULL ); assert( p->vInits == NULL );
if ( pCex ) if ( pCex )
{
p->vInits = Ssw_RarFindStartingState( pAig, pCex ); p->vInits = Ssw_RarFindStartingState( pAig, pCex );
printf( "Beginning simulation from the state derived using the counter-example.\n" );
}
else else
p->vInits = Vec_IntStart( Aig_ManRegNum(pAig) ); p->vInits = Vec_IntStart( Aig_ManRegNum(pAig) );
// duplicate the array // duplicate the array
......
...@@ -25438,6 +25438,11 @@ int Abc_CommandAbc9Equiv3( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -25438,6 +25438,11 @@ int Abc_CommandAbc9Equiv3( Abc_Frame_t * pAbc, int argc, char ** argv )
} }
if ( fUseCex ) if ( fUseCex )
{ {
if ( pAbc->pCex == NULL )
{
Abc_Print( 0, "Abc_CommandAbc9Equiv3(): Counter-example is not available.\n" );
return 0;
}
if ( pAbc->pCex->nPis != Gia_ManPiNum(pAbc->pGia) ) if ( pAbc->pCex->nPis != Gia_ManPiNum(pAbc->pGia) )
{ {
Abc_Print( -1, "Abc_CommandAbc9Equiv3(): The number of PIs differs in cex (%d) and in AIG (%d).\n", Abc_Print( -1, "Abc_CommandAbc9Equiv3(): The number of PIs differs in cex (%d) and in AIG (%d).\n",
...@@ -25450,6 +25455,7 @@ int Abc_CommandAbc9Equiv3( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -25450,6 +25455,7 @@ int Abc_CommandAbc9Equiv3( Abc_Frame_t * pAbc, int argc, char ** argv )
// else // else
// pAbc->Status = Ssw_RarSignalFilterGia2( pAbc->pGia, nFrames, nWords, nBinSize, nRounds, TimeOut, fUseCex? pAbc->pCex: NULL, fLatchOnly, fVerbose ); // pAbc->Status = Ssw_RarSignalFilterGia2( pAbc->pGia, nFrames, nWords, nBinSize, nRounds, TimeOut, fUseCex? pAbc->pCex: NULL, fLatchOnly, fVerbose );
// pAbc->nFrames = pAbc->pGia->pCexSeq->iFrame; // pAbc->nFrames = pAbc->pGia->pCexSeq->iFrame;
if ( pAbc->pGia->pCexSeq )
Abc_FrameReplaceCex( pAbc, &pAbc->pGia->pCexSeq ); Abc_FrameReplaceCex( pAbc, &pAbc->pGia->pCexSeq );
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment