diff options
author | Mathias Soeken <mathias.soeken@gmail.com> | 2016-09-29 22:10:16 -0700 |
---|---|---|
committer | Mathias Soeken <mathias.soeken@gmail.com> | 2016-09-29 22:10:16 -0700 |
commit | f5be1575832e2028eed0942aa69315870532669e (patch) | |
tree | 8888abf063a2bf70829dcc840c9add39a1d7d9b0 /src/base | |
parent | e601df9deac339b7404ef366bf10dc0acad8ad3a (diff) | |
parent | 9a35f82d5fd396f04a0baaa50b390281c4673172 (diff) | |
download | abc-f5be1575832e2028eed0942aa69315870532669e.tar.gz abc-f5be1575832e2028eed0942aa69315870532669e.tar.bz2 abc-f5be1575832e2028eed0942aa69315870532669e.zip |
Merged alanmi/abc into default
Diffstat (limited to 'src/base')
-rw-r--r-- | src/base/abci/abc.c | 8 | ||||
-rw-r--r-- | src/base/wlc/wlcReadSmt.c | 25 |
2 files changed, 25 insertions, 8 deletions
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 8322f27c..1d92e017 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -25838,7 +25838,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, "MFCDRTHGaxrmsipdgovwzh" ) ) != EOF ) + while ( ( c = Extra_UtilGetopt( argc, argv, "MFCDRTHGaxrmsipdegovwzh" ) ) != EOF ) { switch ( c ) { @@ -25954,6 +25954,9 @@ int Abc_CommandPdr( Abc_Frame_t * pAbc, int argc, char ** argv ) case 'd': pPars->fDumpInv ^= 1; break; + case 'e': + pPars->fUseSupp ^= 1; + break; case 'g': pPars->fSkipGeneral ^= 1; break; @@ -26001,7 +26004,7 @@ int Abc_CommandPdr( Abc_Frame_t * pAbc, int argc, char ** argv ) return 0; usage: - Abc_Print( -2, "usage: pdr [-MFCDRTHG <num>] [-axrmsipdgovwzh]\n" ); + Abc_Print( -2, "usage: pdr [-MFCDRTHG <num>] [-axrmsipdegovwzh]\n" ); Abc_Print( -2, "\t model checking using property directed reachability (aka IC3)\n" ); Abc_Print( -2, "\t pioneered by Aaron Bradley (http://ecee.colorado.edu/~bradleya/ic3/)\n" ); Abc_Print( -2, "\t with improvements by Niklas Een (http://een.se/niklas/)\n" ); @@ -26021,6 +26024,7 @@ usage: Abc_Print( -2, "\t-i : toggle clause pushing from an intermediate timeframe [default = %s]\n", pPars->fShiftStart? "yes": "no" ); Abc_Print( -2, "\t-p : toggle reusing proof-obligations in the last timeframe [default = %s]\n", pPars->fReuseProofOblig? "yes": "no" ); Abc_Print( -2, "\t-d : toggle dumping invariant (valid if init state is all-0) [default = %s]\n", pPars->fDumpInv? "yes": "no" ); + Abc_Print( -2, "\t-e : toggle using only support variables in the invariant [default = %s]\n", pPars->fUseSupp? "yes": "no" ); Abc_Print( -2, "\t-g : toggle skipping expensive generalization step [default = %s]\n", pPars->fSkipGeneral? "yes": "no" ); Abc_Print( -2, "\t-o : toggle using property output as inductive hypothesis [default = %s]\n", pPars->fUsePropOut? "yes": "no" ); Abc_Print( -2, "\t-v : toggle printing optimization summary [default = %s]\n", pPars->fVerbose? "yes": "no" ); diff --git a/src/base/wlc/wlcReadSmt.c b/src/base/wlc/wlcReadSmt.c index fcd47274..580401df 100644 --- a/src/base/wlc/wlcReadSmt.c +++ b/src/base/wlc/wlcReadSmt.c @@ -981,12 +981,25 @@ Wlc_Ntk_t * Smt_PrsBuild2( Smt_Prs_t * p ) assert( !strcmp("Bool", Smt_VecEntryName(p, vFans, 3)) ); Range = 1; pValue = Smt_VecEntryName(p, vFans, 4); - if ( !strcmp("false", pValue) ) - pValue = "#b0"; - else if ( !strcmp("true", pValue) ) - pValue = "#b1"; - else assert( 0 ); - Status = Smt_PrsBuildConstant( pNtk, pValue, Range, pName ); + if ( pValue != NULL ) + { + if ( !strcmp("false", pValue) ) + pValue = "#b0"; + else if ( !strcmp("true", pValue) ) + pValue = "#b1"; + else assert( 0 ); + Status = Smt_PrsBuildConstant( pNtk, pValue, Range, pName ); + } + else + { + iObj = Smt_PrsBuild2_rec( pNtk, p, Vec_IntEntry(vFans, 4), -1, pName ); + if ( iObj == 0 ) + { + Wlc_NtkFree( pNtk ); pNtk = NULL; + goto finish; + } + continue; + } } else { |