diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2017-02-10 13:31:29 -0800 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2017-02-10 13:31:29 -0800 |
commit | fce2b16a602dcdd3bef8529e51f9a06c2aaf1fec (patch) | |
tree | ae372f6d7b959646f9b1a1dafab20c8680e2c53a | |
parent | f2d096c9f04acf95e959842d63b6febf2f8eb786 (diff) | |
download | abc-fce2b16a602dcdd3bef8529e51f9a06c2aaf1fec.tar.gz abc-fce2b16a602dcdd3bef8529e51f9a06c2aaf1fec.tar.bz2 abc-fce2b16a602dcdd3bef8529e51f9a06c2aaf1fec.zip |
Re-introducing floating-point activity in the SAT solver.
-rw-r--r-- | src/base/abci/abc.c | 8 | ||||
-rw-r--r-- | src/proof/pdr/pdr.h | 1 | ||||
-rw-r--r-- | src/proof/pdr/pdrInt.h | 1 | ||||
-rw-r--r-- | src/proof/pdr/pdrMan.c | 3 |
4 files changed, 11 insertions, 2 deletions
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 26e9c0f8..72fcafe2 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -26157,7 +26157,7 @@ int Abc_CommandPdr( Abc_Frame_t * pAbc, int argc, char ** argv ) int c; Pdr_ManSetDefaultParams( pPars ); Extra_UtilGetoptReset(); - while ( ( c = Extra_UtilGetopt( argc, argv, "MFCDRTHGSaxrmuyfsipdegoncvwzh" ) ) != EOF ) + while ( ( c = Extra_UtilGetopt( argc, argv, "MFCDRTHGSaxrmuyfsipdegonctvwzh" ) ) != EOF ) { switch ( c ) { @@ -26308,6 +26308,9 @@ int Abc_CommandPdr( Abc_Frame_t * pAbc, int argc, char ** argv ) case 'c': pPars->fCtgs ^= 1; break; + case 't': + pPars->fUseAbs ^= 1; + break; case 'v': pPars->fVerbose ^= 1; break; @@ -26349,7 +26352,7 @@ int Abc_CommandPdr( Abc_Frame_t * pAbc, int argc, char ** argv ) return 0; usage: - Abc_Print( -2, "usage: pdr [-MFCDRTHGS <num>] [-axrmuyfsipdegoncvwzh]\n" ); + Abc_Print( -2, "usage: pdr [-MFCDRTHGS <num>] [-axrmuyfsipdegonctvwzh]\n" ); Abc_Print( -2, "\t model checking using property directed reachability (aka IC3)\n" ); Abc_Print( -2, "\t pioneered by Aaron R. Bradley (http://theory.stanford.edu/~arbrad/)\n" ); Abc_Print( -2, "\t with improvements by Niklas Een (http://een.se/niklas/)\n" ); @@ -26378,6 +26381,7 @@ usage: Abc_Print( -2, "\t-o : toggle using property output as inductive hypothesis [default = %s]\n", pPars->fUsePropOut? "yes": "no" ); Abc_Print( -2, "\t-n : * toggle skipping \'down\' in generalization [default = %s]\n", pPars->fSkipDown? "yes": "no" ); Abc_Print( -2, "\t-c : * toggle handling CTGs in \'down\' [default = %s]\n", pPars->fCtgs? "yes": "no" ); + Abc_Print( -2, "\t-t : toggle using abstraction [default = %s]\n", pPars->fUseAbs? "yes": "no" ); Abc_Print( -2, "\t-v : toggle printing optimization summary [default = %s]\n", pPars->fVerbose? "yes": "no" ); Abc_Print( -2, "\t-w : toggle printing detailed stats default = %s]\n", pPars->fVeryVerbose? "yes": "no" ); Abc_Print( -2, "\t-z : toggle suppressing report about solved outputs [default = %s]\n", pPars->fNotVerbose? "yes": "no" ); diff --git a/src/proof/pdr/pdr.h b/src/proof/pdr/pdr.h index 66990bfb..33397588 100644 --- a/src/proof/pdr/pdr.h +++ b/src/proof/pdr/pdr.h @@ -63,6 +63,7 @@ struct Pdr_Par_t_ int fSkipGeneral; // skips expensive generalization step int fSkipDown; // skips the application of down int fCtgs; // handle CTGs in down + int fUseAbs; // use abstraction int fVerbose; // verbose output` int fVeryVerbose; // very verbose output int fNotVerbose; // not printing line by line progress diff --git a/src/proof/pdr/pdrInt.h b/src/proof/pdr/pdrInt.h index dae20f0c..fb671700 100644 --- a/src/proof/pdr/pdrInt.h +++ b/src/proof/pdr/pdrInt.h @@ -90,6 +90,7 @@ struct Pdr_Man_t_ int * pOrder; // ordering of the lits Vec_Int_t * vActVars; // the counter of activation variables int iUseFrame; // the first used frame + Vec_Int_t * vAbs; // abstraction (mapping abstracted flop ID into its PPIs number) // terminary simulation Txs_Man_t * pTxs; // internal use diff --git a/src/proof/pdr/pdrMan.c b/src/proof/pdr/pdrMan.c index f9a14a07..b2df5e01 100644 --- a/src/proof/pdr/pdrMan.c +++ b/src/proof/pdr/pdrMan.c @@ -286,6 +286,8 @@ Pdr_Man_t * Pdr_ManStart( Aig_Man_t * pAig, Pdr_Par_t * pPars, Vec_Int_t * vPrio p->vCi2Rem = Vec_IntAlloc( 100 ); // CIs to be removed p->vRes = Vec_IntAlloc( 100 ); // final result p->pCnfMan = Cnf_ManStart(); + if ( p->vAbs ) + p->vAbs = Vec_IntStart( Aig_ManRegNum(pAig) ); // ternary simulation p->pTxs = pPars->fNewXSim ? Txs_ManStart( p, pAig, p->vPrio ) : NULL; // additional AIG data-members @@ -368,6 +370,7 @@ void Pdr_ManStop( Pdr_Man_t * p ) Vec_WecFreeP( &p->vVLits ); // CNF manager Cnf_ManStop( p->pCnfMan ); + Vec_IntFreeP( &p->vAbs ); // terminary simulation if ( p->pPars->fNewXSim ) Txs_ManStop( p->pTxs ); |