diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2014-10-08 10:41:20 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2014-10-08 10:41:20 -0700 |
commit | e4d58876714197bc3597846bf3224c0cdf8b1c66 (patch) | |
tree | e8105c4f4ce5609a5944210754166f1afb7d5c74 /src/base | |
parent | bd0373daf5e5c5206b8272cf92eac7ce88af731e (diff) | |
download | abc-e4d58876714197bc3597846bf3224c0cdf8b1c66.tar.gz abc-e4d58876714197bc3597846bf3224c0cdf8b1c66.tar.bz2 abc-e4d58876714197bc3597846bf3224c0cdf8b1c66.zip |
Detection of threshold functions.
Diffstat (limited to 'src/base')
-rw-r--r-- | src/base/abci/abc.c | 25 | ||||
-rw-r--r-- | src/base/abci/abcDec.c | 3 |
2 files changed, 25 insertions, 3 deletions
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 15bfc76b..3408144a 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -16256,10 +16256,11 @@ usage: ***********************************************************************/ int Abc_CommandDsdFilter( Abc_Frame_t * pAbc, int argc, char ** argv ) { + extern void Id_DsdManTuneThresh( If_DsdMan_t * p, int fUnate, int fThresh, int fVerbose ); If_DsdMan_t * pDsd = (If_DsdMan_t *)Abc_FrameReadManDsd(); - int c, nLimit = 0, nLutSize = -1, fCleanOccur = 0, fCleanMarks = 0, fVerbose = 0; + int c, nLimit = 0, nLutSize = -1, fCleanOccur = 0, fCleanMarks = 0, fInvMarks = 0, fUnate = 0, fThresh = 0, fVerbose = 0; Extra_UtilGetoptReset(); - while ( ( c = Extra_UtilGetopt( argc, argv, "LKomvh" ) ) != EOF ) + while ( ( c = Extra_UtilGetopt( argc, argv, "LKomiutvh" ) ) != EOF ) { switch ( c ) { @@ -16287,6 +16288,15 @@ int Abc_CommandDsdFilter( Abc_Frame_t * pAbc, int argc, char ** argv ) case 'm': fCleanMarks ^= 1; break; + case 'i': + fInvMarks ^= 1; + break; + case 'u': + fUnate ^= 1; + break; + case 't': + fThresh ^= 1; + break; case 'v': fVerbose ^= 1; break; @@ -16309,15 +16319,24 @@ int Abc_CommandDsdFilter( Abc_Frame_t * pAbc, int argc, char ** argv ) If_DsdManCleanOccur( pDsd, fVerbose ); if ( fCleanMarks ) If_DsdManCleanMarks( pDsd, fVerbose ); + if ( fInvMarks ) + If_DsdManInvertMarks( pDsd, fVerbose ); + if ( fUnate ) + Id_DsdManTuneThresh( pDsd, 1, 0, fVerbose ); + if ( fThresh ) + Id_DsdManTuneThresh( pDsd, 0, 1, fVerbose ); return 0; usage: - Abc_Print( -2, "usage: dsd_filter [-LK num] [-omvh]\n" ); + Abc_Print( -2, "usage: dsd_filter [-LK num] [-omiutvh]\n" ); Abc_Print( -2, "\t filtering structured and modifying parameters of DSD manager\n" ); Abc_Print( -2, "\t-L num : remove structures with fewer occurrences that this [default = %d]\n", nLimit ); Abc_Print( -2, "\t-K num : new LUT size to set for the DSD manager [default = %d]\n", nLutSize ); Abc_Print( -2, "\t-o : toggles cleaning occurrence counters [default = %s]\n", fCleanOccur? "yes": "no" ); Abc_Print( -2, "\t-m : toggles cleaning matching marks [default = %s]\n", fCleanMarks? "yes": "no" ); + Abc_Print( -2, "\t-i : toggles inverting matching marks [default = %s]\n", fInvMarks? "yes": "no" ); + Abc_Print( -2, "\t-u : toggles marking unate functions [default = %s]\n", fUnate? "yes": "no" ); + Abc_Print( -2, "\t-t : toggles marking threshold functions [default = %s]\n", fThresh? "yes": "no" ); Abc_Print( -2, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" ); Abc_Print( -2, "\t-h : print the command usage\n"); return 1; diff --git a/src/base/abci/abcDec.c b/src/base/abci/abcDec.c index 3ed73c26..5e4f848a 100644 --- a/src/base/abci/abcDec.c +++ b/src/base/abci/abcDec.c @@ -502,6 +502,9 @@ void Abc_TruthDecPerform( Abc_TtStore_t * p, int DecType, int fVerbose ) vCover = Vec_IntAlloc( 1 << 16 ); for ( i = 0; i < p->nFuncs; i++ ) { +// extern int Abc_IsopTest( word * pFunc, int nVars, Vec_Int_t * vCover ); +// Abc_IsopTest( p->pFuncs[i], p->nVars, vCover ); +// continue; if ( fVerbose ) printf( "%7d : ", i ); pSopStr = Kit_PlaFromTruthNew( (unsigned *)p->pFuncs[i], p->nVars, vCover, vStr ); |