Commit 5b80d704 by Alan Mishchenko

Improved abstraction refinement.

parent d01c0807
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include "gia.h" #include "gia.h"
#include "giaAbsRef.h" #include "giaAbsRef.h"
#include "giaAbsRef2.h" //#include "giaAbsRef2.h"
#include "sat/cnf/cnf.h" #include "sat/cnf/cnf.h"
#include "sat/bsat/satSolver2.h" #include "sat/bsat/satSolver2.h"
#include "base/main/main.h" #include "base/main/main.h"
...@@ -52,7 +52,7 @@ struct Ga2_Man_t_ ...@@ -52,7 +52,7 @@ struct Ga2_Man_t_
int nMarked; // total number of marked nodes and flops int nMarked; // total number of marked nodes and flops
// refinement // refinement
Rnm_Man_t * pRnm; // refinement manager Rnm_Man_t * pRnm; // refinement manager
Rf2_Man_t * pRf2; // refinement manager // Rf2_Man_t * pRf2; // refinement manager
// SAT solver and variables // SAT solver and variables
Vec_Ptr_t * vId2Lit; // mapping, for each timeframe, of object ID into SAT literal Vec_Ptr_t * vId2Lit; // mapping, for each timeframe, of object ID into SAT literal
sat_solver2 * pSat; // incremental SAT solver sat_solver2 * pSat; // incremental SAT solver
...@@ -396,7 +396,7 @@ Ga2_Man_t * Ga2_ManStart( Gia_Man_t * pGia, Gia_ParVta_t * pPars ) ...@@ -396,7 +396,7 @@ Ga2_Man_t * Ga2_ManStart( Gia_Man_t * pGia, Gia_ParVta_t * pPars )
Vec_IntPush( p->vAbs, 0 ); Vec_IntPush( p->vAbs, 0 );
// refinement // refinement
p->pRnm = Rnm_ManStart( pGia ); p->pRnm = Rnm_ManStart( pGia );
p->pRf2 = Rf2_ManStart( pGia ); // p->pRf2 = Rf2_ManStart( pGia );
// SAT solver and variables // SAT solver and variables
p->vId2Lit = Vec_PtrAlloc( 1000 ); p->vId2Lit = Vec_PtrAlloc( 1000 );
// temporaries // temporaries
...@@ -459,7 +459,7 @@ void Ga2_ManStop( Ga2_Man_t * p ) ...@@ -459,7 +459,7 @@ void Ga2_ManStop( Ga2_Man_t * p )
Vec_IntFree( p->vLits ); Vec_IntFree( p->vLits );
Vec_IntFree( p->vIsopMem ); Vec_IntFree( p->vIsopMem );
Rnm_ManStop( p->pRnm, p->pPars->fVerbose ); Rnm_ManStop( p->pRnm, p->pPars->fVerbose );
Rf2_ManStop( p->pRf2, p->pPars->fVerbose ); // Rf2_ManStop( p->pRf2, p->pPars->fVerbose );
ABC_FREE( p->pTable ); ABC_FREE( p->pTable );
ABC_FREE( p->pSopSizes ); ABC_FREE( p->pSopSizes );
ABC_FREE( p->pSops[1] ); ABC_FREE( p->pSops[1] );
...@@ -1224,11 +1224,9 @@ Vec_Int_t * Ga2_ManRefine( Ga2_Man_t * p ) ...@@ -1224,11 +1224,9 @@ Vec_Int_t * Ga2_ManRefine( Ga2_Man_t * p )
Gia_Obj_t * pObj; Gia_Obj_t * pObj;
int i; int i;
Ga2_GlaPrepareCexAndMap( p, &pCex, &vMap ); Ga2_GlaPrepareCexAndMap( p, &pCex, &vMap );
// Rf2_ManRefine( p->pRf2, pCex, vMap, p->pPars->fPropFanout, 1 );
// Rf2_ManRefine( p->pRf2, pCex, vMap, p->pPars->fPropFanout, 1 );
vVec = Rnm_ManRefine( p->pRnm, pCex, vMap, p->pPars->fPropFanout, 1 ); vVec = Rnm_ManRefine( p->pRnm, pCex, vMap, p->pPars->fPropFanout, 1 );
// printf( "Refinement %d\n", Vec_IntSize(vVec) ); // printf( "Refinement %d\n", Vec_IntSize(vVec) );
Abc_CexFree( pCex ); Abc_CexFree( pCex );
if ( Vec_IntSize(vVec) == 0 ) if ( Vec_IntSize(vVec) == 0 )
{ {
......
...@@ -1170,23 +1170,25 @@ static inline void Vec_IntSort( Vec_Int_t * p, int fReverse ) ...@@ -1170,23 +1170,25 @@ static inline void Vec_IntSort( Vec_Int_t * p, int fReverse )
Synopsis [Leaves only unique entries.] Synopsis [Leaves only unique entries.]
Description [] Description [Returns the number of duplicated entried found.]
SideEffects [] SideEffects []
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
static inline void Vec_IntUniqify( Vec_Int_t * p ) static inline int Vec_IntUniqify( Vec_Int_t * p )
{ {
int i, k; int i, k, RetValue;
if ( p->nSize < 2 ) if ( p->nSize < 2 )
return; return 0;
Vec_IntSort( p, 0 ); Vec_IntSort( p, 0 );
for ( i = k = 1; i < p->nSize; i++ ) for ( i = k = 1; i < p->nSize; i++ )
if ( p->pArray[i] != p->pArray[i-1] ) if ( p->pArray[i] != p->pArray[i-1] )
p->pArray[k++] = p->pArray[i]; p->pArray[k++] = p->pArray[i];
RetValue = p->nSize - k;
p->nSize = k; p->nSize = k;
return RetValue;
} }
/**Function************************************************************* /**Function*************************************************************
......
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