mirror of https://github.com/YosysHQ/abc.git
Bug fix in &bmcs.
This commit is contained in:
parent
a64957a526
commit
1f5ab6d751
|
|
@ -57,7 +57,8 @@ struct Bmcs_Man_t_
|
||||||
int fStopNow; // signal when it is time to stop
|
int fStopNow; // signal when it is time to stop
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline int * Bmcs_ManCopies( Bmcs_Man_t * p, int f ) { return (int*)Vec_PtrEntry(&p->vGia2Fr, f % Vec_PtrSize(&p->vGia2Fr)); }
|
//static inline int * Bmcs_ManCopies( Bmcs_Man_t * p, int f ) { return (int*)Vec_PtrEntry(&p->vGia2Fr, f % Vec_PtrSize(&p->vGia2Fr)); }
|
||||||
|
static inline int * Bmcs_ManCopies( Bmcs_Man_t * p, int f ) { return (int*)Vec_PtrEntry(&p->vGia2Fr, f); }
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
/// FUNCTION DEFINITIONS ///
|
/// FUNCTION DEFINITIONS ///
|
||||||
|
|
@ -344,9 +345,10 @@ Bmcs_Man_t * Bmcs_ManStart( Gia_Man_t * pGia, Bmc_AndPar_t * pPars )
|
||||||
p->pGia = pGia;
|
p->pGia = pGia;
|
||||||
p->pFrames = Gia_ManStart( 3*Gia_ManObjNum(pGia) ); Gia_ManHashStart(p->pFrames);
|
p->pFrames = Gia_ManStart( 3*Gia_ManObjNum(pGia) ); Gia_ManHashStart(p->pFrames);
|
||||||
p->pClean = NULL;
|
p->pClean = NULL;
|
||||||
Vec_PtrFill( &p->vGia2Fr, Gia_ManCountTents(pGia)+1, NULL );
|
// Vec_PtrFill( &p->vGia2Fr, Gia_ManCountTents(pGia)+1, NULL );
|
||||||
for ( i = 0; i < Vec_PtrSize(&p->vGia2Fr); i++ )
|
// for ( i = 0; i < Vec_PtrSize(&p->vGia2Fr); i++ )
|
||||||
Vec_PtrWriteEntry( &p->vGia2Fr, i, ABC_FALLOC(int, Gia_ManObjNum(pGia)) );
|
// Vec_PtrWriteEntry( &p->vGia2Fr, i, ABC_FALLOC(int, Gia_ManObjNum(pGia)) );
|
||||||
|
Vec_PtrGrow( &p->vGia2Fr, 1000 );
|
||||||
Vec_IntGrow( &p->vFr2Sat, 3*Gia_ManCiNum(pGia) );
|
Vec_IntGrow( &p->vFr2Sat, 3*Gia_ManCiNum(pGia) );
|
||||||
Vec_IntPush( &p->vFr2Sat, 0 );
|
Vec_IntPush( &p->vFr2Sat, 0 );
|
||||||
Vec_IntGrow( &p->vCiMap, 3*Gia_ManCiNum(pGia) );
|
Vec_IntGrow( &p->vCiMap, 3*Gia_ManCiNum(pGia) );
|
||||||
|
|
@ -456,9 +458,12 @@ Gia_Man_t * Bmcs_ManUnfold( Bmcs_Man_t * p, int f )
|
||||||
Gia_Man_t * pNew = NULL; Gia_Obj_t * pObj;
|
Gia_Man_t * pNew = NULL; Gia_Obj_t * pObj;
|
||||||
int i, iLitFrame, iLitClean, fTrivial = 1;
|
int i, iLitFrame, iLitClean, fTrivial = 1;
|
||||||
int nFrameObjs = Gia_ManObjNum(p->pFrames);
|
int nFrameObjs = Gia_ManObjNum(p->pFrames);
|
||||||
|
int * pCopies;
|
||||||
// unfold this timeframe
|
// unfold this timeframe
|
||||||
int * pCopies = Bmcs_ManCopies( p, f );
|
Vec_PtrPush( &p->vGia2Fr, ABC_FALLOC(int, Gia_ManObjNum(p->pGia)) );
|
||||||
memset( pCopies, 0xFF, sizeof(int)*Gia_ManObjNum(p->pGia) );
|
assert( Vec_PtrSize(&p->vGia2Fr) == f+1 );
|
||||||
|
pCopies = Bmcs_ManCopies( p, f );
|
||||||
|
//memset( pCopies, 0xFF, sizeof(int)*Gia_ManObjNum(p->pGia) );
|
||||||
pCopies[0] = 0;
|
pCopies[0] = 0;
|
||||||
assert( Gia_ManPoNum(p->pFrames) == f * Gia_ManPoNum(p->pGia) );
|
assert( Gia_ManPoNum(p->pFrames) == f * Gia_ManPoNum(p->pGia) );
|
||||||
Gia_ManForEachPo( p->pGia, pObj, i )
|
Gia_ManForEachPo( p->pGia, pObj, i )
|
||||||
|
|
@ -600,6 +605,7 @@ int Bmcs_ManPerformOne( Gia_Man_t * pGia, Bmc_AndPar_t * pPars )
|
||||||
satoko_assump_pop( p->pSats[0] );
|
satoko_assump_pop( p->pSats[0] );
|
||||||
if ( status == SATOKO_UNSAT )
|
if ( status == SATOKO_UNSAT )
|
||||||
{
|
{
|
||||||
|
if ( i == Gia_ManPoNum(pGia)-1 )
|
||||||
Bmcs_ManPrintFrame( p, f, nClauses, -1, clkStart );
|
Bmcs_ManPrintFrame( p, f, nClauses, -1, clkStart );
|
||||||
if( pPars->pFuncOnFrameDone)
|
if( pPars->pFuncOnFrameDone)
|
||||||
pPars->pFuncOnFrameDone(f, i, 0);
|
pPars->pFuncOnFrameDone(f, i, 0);
|
||||||
|
|
@ -780,6 +786,7 @@ int Bmcs_ManPerformMulti( Gia_Man_t * pGia, Bmc_AndPar_t * pPars )
|
||||||
status = Bmcs_ManPerform_Solve( p, iLit, WorkerThread, ThData, pPars->nProcs, &Solver );
|
status = Bmcs_ManPerform_Solve( p, iLit, WorkerThread, ThData, pPars->nProcs, &Solver );
|
||||||
if ( status == SATOKO_UNSAT )
|
if ( status == SATOKO_UNSAT )
|
||||||
{
|
{
|
||||||
|
if ( i == Gia_ManPoNum(pGia)-1 )
|
||||||
Bmcs_ManPrintFrame( p, f, nClauses, Solver, clkStart );
|
Bmcs_ManPrintFrame( p, f, nClauses, Solver, clkStart );
|
||||||
if( pPars->pFuncOnFrameDone )
|
if( pPars->pFuncOnFrameDone )
|
||||||
pPars->pFuncOnFrameDone(f, i, 0);
|
pPars->pFuncOnFrameDone(f, i, 0);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue