From 53e7d1f9ef0b13e63f2b316c6f1de253fec6f42e Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Thu, 22 Mar 2018 10:10:09 -0700 Subject: Adding switch 'scorr -f' to dump inductive invariant as an AIG. --- src/base/abci/abc.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/base/abci') diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 4d0ddfea..016c0a59 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -20581,7 +20581,7 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv ) // set defaults Ssw_ManSetDefaultParams( pPars ); Extra_UtilGetoptReset(); - while ( ( c = Extra_UtilGetopt( argc, argv, "PQFCLSIVMNcmplkofdseqvwh" ) ) != EOF ) + while ( ( c = Extra_UtilGetopt( argc, argv, "PQFCLSIVMNcmplkodsefqvwh" ) ) != EOF ) { switch ( c ) { @@ -20713,9 +20713,9 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv ) case 'o': pPars->fOutputCorr ^= 1; break; - case 'f': - pPars->fSemiFormal ^= 1; - break; +// case 'f': +// pPars->fSemiFormal ^= 1; +// break; case 'd': pPars->fDynamic ^= 1; break; @@ -20725,6 +20725,9 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv ) case 'e': pPars->fEquivDump ^= 1; break; + case 'f': + pPars->fEquivDump2 ^= 1; + break; case 'q': pPars->fStopWhenGone ^= 1; break; @@ -20787,6 +20790,11 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv ) else Abc_Print( 0, "Performing constraint-based scorr without constraints.\n" ); } + if ( pPars->fEquivDump && pPars->fEquivDump2 ) + { + Abc_Print( 0, "Command line switches \'-e\' and \'-f\' cannot be used at the same time.\n" ); + return 0; + } // get the new network pNtkRes = Abc_NtkDarSeqSweep2( pNtk, pPars ); @@ -20800,7 +20808,7 @@ int Abc_CommandSeqSweep2( Abc_Frame_t * pAbc, int argc, char ** argv ) return 0; usage: - Abc_Print( -2, "usage: scorr [-PQFCLSIVMN ] [-cmplkodseqvwh]\n" ); + Abc_Print( -2, "usage: scorr [-PQFCLSIVMN ] [-cmplkodsefqvwh]\n" ); Abc_Print( -2, "\t performs sequential sweep using K-step induction\n" ); Abc_Print( -2, "\t-P num : max partition size (0 = no partitioning) [default = %d]\n", pPars->nPartSize ); Abc_Print( -2, "\t-Q num : partition overlap (0 = no overlap) [default = %d]\n", pPars->nOverSize ); @@ -20823,6 +20831,7 @@ usage: Abc_Print( -2, "\t-d : toggle dynamic addition of constraints [default = %s]\n", pPars->fDynamic? "yes": "no" ); Abc_Print( -2, "\t-s : toggle local simulation in the cone of influence [default = %s]\n", pPars->fLocalSim? "yes": "no" ); Abc_Print( -2, "\t-e : toggle dumping disproved internal equivalences [default = %s]\n", pPars->fEquivDump? "yes": "no" ); + Abc_Print( -2, "\t-f : toggle dumping proved internal equivalences [default = %s]\n", pPars->fEquivDump2? "yes": "no" ); Abc_Print( -2, "\t-q : toggle quitting when PO is not a constant candidate [default = %s]\n", pPars->fStopWhenGone? "yes": "no" ); Abc_Print( -2, "\t-w : toggle printout of flop equivalences [default = %s]\n", pPars->fFlopVerbose? "yes": "no" ); Abc_Print( -2, "\t-v : toggle verbose output [default = %s]\n", pPars->fVerbose? "yes": "no" ); -- cgit v1.2.3