summaryrefslogtreecommitdiffstats
path: root/src/base
diff options
context:
space:
mode:
authorMathias Soeken <mathias.soeken@gmail.com>2016-09-29 22:10:16 -0700
committerMathias Soeken <mathias.soeken@gmail.com>2016-09-29 22:10:16 -0700
commitf5be1575832e2028eed0942aa69315870532669e (patch)
tree8888abf063a2bf70829dcc840c9add39a1d7d9b0 /src/base
parente601df9deac339b7404ef366bf10dc0acad8ad3a (diff)
parent9a35f82d5fd396f04a0baaa50b390281c4673172 (diff)
downloadabc-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.c8
-rw-r--r--src/base/wlc/wlcReadSmt.c25
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
{