Commit 299099a4 by Alan Mishchenko

Updates for the new BMC engine.

parent 26c0e937
...@@ -618,6 +618,15 @@ int Gia_ManBmcCheckOutputs( Gia_Man_t * pFrames, int iStart, int iStop ) ...@@ -618,6 +618,15 @@ int Gia_ManBmcCheckOutputs( Gia_Man_t * pFrames, int iStart, int iStop )
return 0; return 0;
return 1; return 1;
} }
int Gia_ManBmcFindFirst( Gia_Man_t * pFrames )
{
Gia_Obj_t * pObj;
int i;
Gia_ManForEachPo( pFrames, pObj, i )
if ( Gia_ObjChild0(pObj) != Gia_ManConst0(pFrames) )
return i;
return -1;
}
/**Function************************************************************* /**Function*************************************************************
...@@ -723,11 +732,16 @@ int Gia_ManBmcPerform( Gia_Man_t * pGia, Bmc_AndPar_t * pPars ) ...@@ -723,11 +732,16 @@ int Gia_ManBmcPerform( Gia_Man_t * pGia, Bmc_AndPar_t * pPars )
nFramesMax = Gia_ManPoNum(p->pFrames) / Gia_ManPoNum(pGia); nFramesMax = Gia_ManPoNum(p->pFrames) / Gia_ManPoNum(pGia);
if ( pPars->fVerbose ) if ( pPars->fVerbose )
{ {
printf( "Performed unfolding for %d frames. ", nFramesMax ); printf( "Unfolding for %d frames with first non-trivial PO %d. ", nFramesMax, Gia_ManBmcFindFirst(p->pFrames) );
Abc_PrintTime( 1, "Unfolding time", Abc_Clock() - clk ); Abc_PrintTime( 1, "Time", Abc_Clock() - clk );
} }
if ( pPars->fVerbose ) if ( pPars->fVerbose )
Gia_ManPrintStats( p->pFrames, NULL ); Gia_ManPrintStats( p->pFrames, NULL );
if ( pPars->fDumpFrames )
{
Gia_AigerWrite( p->pFrames, "frames.aig", 0, 0 );
printf( "Dumped unfolded frames into file \"frames.aig\".\n" );
}
for ( f = 0; f < nFramesMax; f++ ) for ( f = 0; f < nFramesMax; f++ )
{ {
if ( !Gia_ManBmcCheckOutputs( p->pFrames, f * Gia_ManPoNum(pGia), (f+1) * Gia_ManPoNum(pGia) ) ) if ( !Gia_ManBmcCheckOutputs( p->pFrames, f * Gia_ManPoNum(pGia), (f+1) * Gia_ManPoNum(pGia) ) )
...@@ -777,14 +791,6 @@ int Gia_ManBmcPerform( Gia_Man_t * pGia, Bmc_AndPar_t * pPars ) ...@@ -777,14 +791,6 @@ int Gia_ManBmcPerform( Gia_Man_t * pGia, Bmc_AndPar_t * pPars )
} }
if ( RetValue == -2 ) if ( RetValue == -2 )
RetValue = -1; RetValue = -1;
// dump unfolded frames
if ( pPars->fDumpFrames )
{
p->pFrames = Gia_ManCleanup( p->pFrames );
Gia_AigerWrite( p->pFrames, "frames.aig", 0, 0 );
printf( "Dumped unfolded frames into file \"frames.aig\".\n" );
Gia_ManStop( p->pFrames );
}
// cleanup // cleanup
Gia_ManStop( p->pFrames ); Gia_ManStop( p->pFrames );
Bmc_MnaFree( p ); Bmc_MnaFree( p );
......
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