Commit b5306c15 by Alan Mishchenko

Added simplification before the concurrent call to PDR.

parent 5f09917c
...@@ -28164,7 +28164,7 @@ int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -28164,7 +28164,7 @@ int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv )
int c, fNewAlgo = 1; int c, fNewAlgo = 1;
Abs_ParSetDefaults( pPars ); Abs_ParSetDefaults( pPars );
Extra_UtilGetoptReset(); Extra_UtilGetoptReset();
while ( ( c = Extra_UtilGetopt( argc, argv, "FSCLDETRPBAtfardmnscbpqwvh" ) ) != EOF ) while ( ( c = Extra_UtilGetopt( argc, argv, "FSCLDETRPBAtfardmnscbpquwvh" ) ) != EOF )
{ {
switch ( c ) switch ( c )
{ {
...@@ -28323,6 +28323,9 @@ int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -28323,6 +28323,9 @@ int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv )
case 'q': case 'q':
pPars->fCallProver ^= 1; pPars->fCallProver ^= 1;
break; break;
case 'u':
pPars->fSimpProver ^= 1;
break;
case 'v': case 'v':
pPars->fVerbose ^= 1; pPars->fVerbose ^= 1;
break; break;
...@@ -28371,7 +28374,7 @@ int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -28371,7 +28374,7 @@ int Abc_CommandAbc9Gla( Abc_Frame_t * pAbc, int argc, char ** argv )
return 0; return 0;
usage: usage:
Abc_Print( -2, "usage: &gla [-FSCLDETRPB num] [-A file] [-fardmnscbpqwvh]\n" ); Abc_Print( -2, "usage: &gla [-FSCLDETRPB num] [-A file] [-fardmnscbpquwvh]\n" );
Abc_Print( -2, "\t fixed-time-frame gate-level proof- and cex-based abstraction\n" ); Abc_Print( -2, "\t fixed-time-frame gate-level proof- and cex-based abstraction\n" );
Abc_Print( -2, "\t-F num : the max number of timeframes to unroll [default = %d]\n", pPars->nFramesMax ); Abc_Print( -2, "\t-F num : the max number of timeframes to unroll [default = %d]\n", pPars->nFramesMax );
Abc_Print( -2, "\t-S num : the starting time frame (0=unused) [default = %d]\n", pPars->nFramesStart ); Abc_Print( -2, "\t-S num : the starting time frame (0=unused) [default = %d]\n", pPars->nFramesStart );
...@@ -28395,6 +28398,7 @@ usage: ...@@ -28395,6 +28398,7 @@ usage:
Abc_Print( -2, "\t-b : toggle CNF construction without hashing [default = %s]\n", pPars->fSkipHash? "yes": "no" ); Abc_Print( -2, "\t-b : toggle CNF construction without hashing [default = %s]\n", pPars->fSkipHash? "yes": "no" );
Abc_Print( -2, "\t-p : toggle using full-proof for UNSAT cores [default = %s]\n", pPars->fUseFullProof? "yes": "no" ); Abc_Print( -2, "\t-p : toggle using full-proof for UNSAT cores [default = %s]\n", pPars->fUseFullProof? "yes": "no" );
Abc_Print( -2, "\t-q : toggle calling the prover [default = %s]\n", pPars->fCallProver? "yes": "no" ); Abc_Print( -2, "\t-q : toggle calling the prover [default = %s]\n", pPars->fCallProver? "yes": "no" );
Abc_Print( -2, "\t-u : toggle enabling simplifation before calling the prover [default = %s]\n", pPars->fSimpProver? "yes": "no" );
Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", pPars->fVerbose? "yes": "no" ); Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", pPars->fVerbose? "yes": "no" );
Abc_Print( -2, "\t-w : toggle printing more verbose information [default = %s]\n", pPars->fVeryVerbose? "yes": "no" ); Abc_Print( -2, "\t-w : toggle printing more verbose information [default = %s]\n", pPars->fVeryVerbose? "yes": "no" );
Abc_Print( -2, "\t-h : print the command usage\n"); Abc_Print( -2, "\t-h : print the command usage\n");
......
...@@ -69,6 +69,7 @@ struct Abs_Par_t_ ...@@ -69,6 +69,7 @@ struct Abs_Par_t_
int fDumpVabs; // dumps the abstracted model int fDumpVabs; // dumps the abstracted model
int fDumpMabs; // dumps the original AIG with abstraction map int fDumpMabs; // dumps the original AIG with abstraction map
int fCallProver; // calls the prover int fCallProver; // calls the prover
int fSimpProver; // calls simplification before prover
char * pFileVabs; // dumps the abstracted model into this file char * pFileVabs; // dumps the abstracted model into this file
int fVerbose; // verbose flag int fVerbose; // verbose flag
int fVeryVerbose; // print additional information int fVeryVerbose; // print additional information
...@@ -108,7 +109,7 @@ extern int Gia_ManPerformGlaOld( Gia_Man_t * p, Abs_Par_t * pPars, ...@@ -108,7 +109,7 @@ extern int Gia_ManPerformGlaOld( Gia_Man_t * p, Abs_Par_t * pPars,
/*=== absIter.c =========================================================*/ /*=== absIter.c =========================================================*/
extern Gia_Man_t * Gia_ManShrinkGla( Gia_Man_t * p, int nFrameMax, int nTimeOut, int fUsePdr, int fUseSat, int fUseBdd, int fVerbose ); extern Gia_Man_t * Gia_ManShrinkGla( Gia_Man_t * p, int nFrameMax, int nTimeOut, int fUsePdr, int fUseSat, int fUseBdd, int fVerbose );
/*=== absPth.c =========================================================*/ /*=== 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 void Gia_GlaProveCancel( int fVerbose );
extern int Gia_GlaProveCheck( int fVerbose ); extern int Gia_GlaProveCheck( int fVerbose );
/*=== absVta.c =========================================================*/ /*=== absVta.c =========================================================*/
......
...@@ -1797,7 +1797,7 @@ int Gia_ManPerformGla( Gia_Man_t * pAig, Abs_Par_t * pPars ) ...@@ -1797,7 +1797,7 @@ int Gia_ManPerformGla( Gia_Man_t * pAig, Abs_Par_t * pPars )
if ( iFrameTryToProve >= 0 ) if ( iFrameTryToProve >= 0 )
Gia_GlaProveCancel( pPars->fVerbose ); Gia_GlaProveCancel( pPars->fVerbose );
// prove new one // prove new one
Gia_GlaProveAbsracted( pAig, pPars->fVeryVerbose ); Gia_GlaProveAbsracted( pAig, pPars->fSimpProver, pPars->fVeryVerbose );
iFrameTryToProve = f; iFrameTryToProve = f;
p->nPdrCalls++; p->nPdrCalls++;
} }
......
...@@ -46,9 +46,9 @@ ABC_NAMESPACE_IMPL_START ...@@ -46,9 +46,9 @@ ABC_NAMESPACE_IMPL_START
#ifndef ABC_USE_PTHREADS #ifndef ABC_USE_PTHREADS
void Gia_GlaProveAbsracted( Gia_Man_t * p, int fVerbose ) {} void Gia_GlaProveAbsracted( Gia_Man_t * p, int fSimpProver, int fVerbose ) {}
void Gia_GlaProveCancel( int fVerbose ) {} void Gia_GlaProveCancel( int fVerbose ) {}
int Gia_GlaProveCheck( int fVerbose ) { return 0; } int Gia_GlaProveCheck( int fVerbose ) { return 0; }
#else // pthreads are used #else // pthreads are used
...@@ -134,7 +134,7 @@ void * Abs_ProverThread( void * pArg ) ...@@ -134,7 +134,7 @@ void * Abs_ProverThread( void * pArg )
assert(0); assert(0);
return NULL; 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 ); extern Aig_Man_t * Dar_ManRwsat( Aig_Man_t * pAig, int fBalance, int fVerbose );
Abs_ThData_t * pThData; Abs_ThData_t * pThData;
...@@ -152,16 +152,19 @@ void Gia_GlaProveAbsracted( Gia_Man_t * pGia, int fVerbose ) ...@@ -152,16 +152,19 @@ void Gia_GlaProveAbsracted( Gia_Man_t * pGia, int fVerbose )
pAig = Gia_ManToAigSimple( pAbs ); pAig = Gia_ManToAigSimple( pAbs );
Gia_ManStop( pAbs ); Gia_ManStop( pAbs );
// simplify abstraction // simplify abstraction
Ssw_ManSetDefaultParams( pPars ); if ( fSimpProver )
pPars->nFramesK = 4; {
pAig = Ssw_SignalCorrespondence( pTemp = pAig, pPars ); Ssw_ManSetDefaultParams( pPars );
pPars->nFramesK = 4;
pAig = Ssw_SignalCorrespondence( pTemp = pAig, pPars );
//printf( "\n" ); //printf( "\n" );
//Aig_ManPrintStats( pTemp ); //Aig_ManPrintStats( pTemp );
//Aig_ManPrintStats( pAig ); //Aig_ManPrintStats( pAig );
Aig_ManStop( pTemp ); Aig_ManStop( pTemp );
}
// synthesize abstraction // synthesize abstraction
pAig = Dar_ManRwsat( pTemp = pAig, 0, 0 ); // pAig = Dar_ManRwsat( pTemp = pAig, 0, 0 );
Aig_ManStop( pTemp ); // Aig_ManStop( pTemp );
// reset the proof // reset the proof
status = pthread_mutex_lock(&g_mutex); assert( status == 0 ); status = pthread_mutex_lock(&g_mutex); assert( status == 0 );
g_fAbstractionProved = 0; g_fAbstractionProved = 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