summaryrefslogtreecommitdiffstats
path: root/src/proof/abs
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-09-20 20:13:40 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2012-09-20 20:13:40 -0700
commitb5306c156677b7fffe3ec34ee061f57fc0a7671a (patch)
treea6d4eac54a65105b37b0ad7d98fc8c5ec590ecf7 /src/proof/abs
parent5f09917c22f69670a62a8ea49dcaea299b4bf95a (diff)
downloadabc-b5306c156677b7fffe3ec34ee061f57fc0a7671a.tar.gz
abc-b5306c156677b7fffe3ec34ee061f57fc0a7671a.tar.bz2
abc-b5306c156677b7fffe3ec34ee061f57fc0a7671a.zip
Added simplification before the concurrent call to PDR.
Diffstat (limited to 'src/proof/abs')
-rw-r--r--src/proof/abs/abs.h3
-rw-r--r--src/proof/abs/absGla.c2
-rw-r--r--src/proof/abs/absPth.c23
3 files changed, 16 insertions, 12 deletions
diff --git a/src/proof/abs/abs.h b/src/proof/abs/abs.h
index 11eda38c..5b4f89be 100644
--- a/src/proof/abs/abs.h
+++ b/src/proof/abs/abs.h
@@ -69,6 +69,7 @@ struct Abs_Par_t_
int fDumpVabs; // dumps the abstracted model
int fDumpMabs; // dumps the original AIG with abstraction map
int fCallProver; // calls the prover
+ int fSimpProver; // calls simplification before prover
char * pFileVabs; // dumps the abstracted model into this file
int fVerbose; // verbose flag
int fVeryVerbose; // print additional information
@@ -108,7 +109,7 @@ extern int Gia_ManPerformGlaOld( Gia_Man_t * p, Abs_Par_t * pPars,
/*=== absIter.c =========================================================*/
extern Gia_Man_t * Gia_ManShrinkGla( Gia_Man_t * p, int nFrameMax, int nTimeOut, int fUsePdr, int fUseSat, int fUseBdd, int fVerbose );
/*=== absPth.c =========================================================*/
-extern void Gia_GlaProveAbsracted( Gia_Man_t * p, int fVerbose );
+extern void Gia_GlaProveAbsracted( Gia_Man_t * p, int fSimpProver, int fVerbose );
extern void Gia_GlaProveCancel( int fVerbose );
extern int Gia_GlaProveCheck( int fVerbose );
/*=== absVta.c =========================================================*/
diff --git a/src/proof/abs/absGla.c b/src/proof/abs/absGla.c
index 80ef6ccf..2b2cb8ea 100644
--- a/src/proof/abs/absGla.c
+++ b/src/proof/abs/absGla.c
@@ -1797,7 +1797,7 @@ int Gia_ManPerformGla( Gia_Man_t * pAig, Abs_Par_t * pPars )
if ( iFrameTryToProve >= 0 )
Gia_GlaProveCancel( pPars->fVerbose );
// prove new one
- Gia_GlaProveAbsracted( pAig, pPars->fVeryVerbose );
+ Gia_GlaProveAbsracted( pAig, pPars->fSimpProver, pPars->fVeryVerbose );
iFrameTryToProve = f;
p->nPdrCalls++;
}
diff --git a/src/proof/abs/absPth.c b/src/proof/abs/absPth.c
index fc3a92fe..d1fed950 100644
--- a/src/proof/abs/absPth.c
+++ b/src/proof/abs/absPth.c
@@ -46,9 +46,9 @@ ABC_NAMESPACE_IMPL_START
#ifndef ABC_USE_PTHREADS
-void Gia_GlaProveAbsracted( Gia_Man_t * p, int fVerbose ) {}
-void Gia_GlaProveCancel( int fVerbose ) {}
-int Gia_GlaProveCheck( int fVerbose ) { return 0; }
+void Gia_GlaProveAbsracted( Gia_Man_t * p, int fSimpProver, int fVerbose ) {}
+void Gia_GlaProveCancel( int fVerbose ) {}
+int Gia_GlaProveCheck( int fVerbose ) { return 0; }
#else // pthreads are used
@@ -134,7 +134,7 @@ void * Abs_ProverThread( void * pArg )
assert(0);
return NULL;
}
-void Gia_GlaProveAbsracted( Gia_Man_t * pGia, int fVerbose )
+void Gia_GlaProveAbsracted( Gia_Man_t * pGia, int fSimpProver, int fVerbose )
{
extern Aig_Man_t * Dar_ManRwsat( Aig_Man_t * pAig, int fBalance, int fVerbose );
Abs_ThData_t * pThData;
@@ -152,16 +152,19 @@ void Gia_GlaProveAbsracted( Gia_Man_t * pGia, int fVerbose )
pAig = Gia_ManToAigSimple( pAbs );
Gia_ManStop( pAbs );
// simplify abstraction
- Ssw_ManSetDefaultParams( pPars );
- pPars->nFramesK = 4;
- pAig = Ssw_SignalCorrespondence( pTemp = pAig, pPars );
+ if ( fSimpProver )
+ {
+ Ssw_ManSetDefaultParams( pPars );
+ pPars->nFramesK = 4;
+ pAig = Ssw_SignalCorrespondence( pTemp = pAig, pPars );
//printf( "\n" );
//Aig_ManPrintStats( pTemp );
//Aig_ManPrintStats( pAig );
- Aig_ManStop( pTemp );
+ Aig_ManStop( pTemp );
+ }
// synthesize abstraction
- pAig = Dar_ManRwsat( pTemp = pAig, 0, 0 );
- Aig_ManStop( pTemp );
+// pAig = Dar_ManRwsat( pTemp = pAig, 0, 0 );
+// Aig_ManStop( pTemp );
// reset the proof
status = pthread_mutex_lock(&g_mutex); assert( status == 0 );
g_fAbstractionProved = 0;