summaryrefslogtreecommitdiffstats
path: root/src/base
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-11-15 10:59:57 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2012-11-15 10:59:57 -0800
commitc2e467d55b188cb1fa5db534a23a4dd6e8291078 (patch)
tree9b40bfc4a54de26481d10eb1801fe6fe0e083ca3 /src/base
parent2eb2402b01541ed672ac2b7e742f1e1aa38542e8 (diff)
downloadabc-c2e467d55b188cb1fa5db534a23a4dd6e8291078.tar.gz
abc-c2e467d55b188cb1fa5db534a23a4dd6e8291078.tar.bz2
abc-c2e467d55b188cb1fa5db534a23a4dd6e8291078.zip
Added switch 'cexcut -n' to generate only one bad state.
Diffstat (limited to 'src/base')
-rw-r--r--src/base/abci/abc.c104
1 files changed, 18 insertions, 86 deletions
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c
index 9f072f5f..b490d3e3 100644
--- a/src/base/abci/abc.c
+++ b/src/base/abci/abc.c
@@ -22593,9 +22593,10 @@ int Abc_CommandCexCut( Abc_Frame_t * pAbc, int argc, char ** argv )
int iFrStart = 0;
int iFrStop = ABC_INFINITY;
int fCombOnly = 0;
+ int fUseOne = 0;
int fVerbose = 0;
Extra_UtilGetoptReset();
- while ( ( c = Extra_UtilGetopt( argc, argv, "FGcvh" ) ) != EOF )
+ while ( ( c = Extra_UtilGetopt( argc, argv, "FGcnvh" ) ) != EOF )
{
switch ( c )
{
@@ -22624,6 +22625,9 @@ int Abc_CommandCexCut( Abc_Frame_t * pAbc, int argc, char ** argv )
case 'c':
fCombOnly ^= 1;
break;
+ case 'n':
+ fUseOne ^= 1;
+ break;
case 'v':
fVerbose ^= 1;
break;
@@ -22658,7 +22662,7 @@ int Abc_CommandCexCut( Abc_Frame_t * pAbc, int argc, char ** argv )
extern Abc_Ntk_t * Abc_NtkFromAigPhase( Aig_Man_t * pMan );
Abc_Ntk_t * pNtkNew;
Aig_Man_t * pAig = Abc_NtkToDar( pAbc->pNtkCur, 0, 1 );
- Aig_Man_t * pAigNew = Bmc_AigTargetStates( pAig, pAbc->pCex, iFrStart, iFrStop, fCombOnly, fVerbose );
+ Aig_Man_t * pAigNew = Bmc_AigTargetStates( pAig, pAbc->pCex, iFrStart, iFrStop, fCombOnly, fUseOne, fVerbose );
Aig_ManStop( pAig );
if ( pAigNew == NULL )
{
@@ -22671,6 +22675,15 @@ int Abc_CommandCexCut( Abc_Frame_t * pAbc, int argc, char ** argv )
// update the network
Abc_FrameReplaceCurrentNetwork( pAbc, pNtkNew );
}
+/*
+ pGiaNew = Bmc_GiaTargetStates( pAbc->pGia, pAbc->pCex, iFrStart, iFrStop, fCombOnly, fUseOne, fVerbose );
+ if ( pGiaNew == NULL )
+ {
+ Abc_Print( 1, "Command has failed.\n");
+ return 0;
+ }
+ Abc_CommandUpdate9( pAbc, pGiaNew );
+*/
return 0;
usage:
@@ -22678,7 +22691,8 @@ usage:
Abc_Print( -2, "\t creates logic for bad states using the current CEX\n" );
Abc_Print( -2, "\t-F num : 0-based number of the starting frame [default = %d]\n", iFrStart );
Abc_Print( -2, "\t-G num : 0-based number of the ending frame [default = %d]\n", iFrStop );
- Abc_Print( -2, "\t-c : toggle outputting combinational unate circuit [default = %s]\n", fCombOnly? "yes": "no" );
+ Abc_Print( -2, "\t-c : toggle outputting unate combinational circuit [default = %s]\n", fCombOnly? "yes": "no" );
+ Abc_Print( -2, "\t-n : toggle generating only one bad state [default = %s]\n", fUseOne? "yes": "no" );
Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
Abc_Print( -2, "\t-h : print the command usage\n");
return 1;
@@ -28813,89 +28827,7 @@ usage:
***********************************************************************/
int Abc_CommandAbc9CexCut( Abc_Frame_t * pAbc, int argc, char ** argv )
{
- Gia_Man_t * pGiaNew;
- int c;
- int iFrStart = 0;
- int iFrStop = ABC_INFINITY;
- int fCombOnly = 0;
- int fVerbose = 0;
- Extra_UtilGetoptReset();
- while ( ( c = Extra_UtilGetopt( argc, argv, "FGcvh" ) ) != EOF )
- {
- switch ( c )
- {
- case 'F':
- if ( globalUtilOptind >= argc )
- {
- Abc_Print( -1, "Command line switch \"-F\" should be followed by an integer.\n" );
- goto usage;
- }
- iFrStart = atoi(argv[globalUtilOptind]);
- globalUtilOptind++;
- if ( iFrStart < 0 )
- goto usage;
- break;
- case 'G':
- if ( globalUtilOptind >= argc )
- {
- Abc_Print( -1, "Command line switch \"-G\" should be followed by an integer.\n" );
- goto usage;
- }
- iFrStop = atoi(argv[globalUtilOptind]);
- globalUtilOptind++;
- if ( iFrStop < 0 )
- goto usage;
- break;
- case 'c':
- fCombOnly ^= 1;
- break;
- case 'v':
- fVerbose ^= 1;
- break;
- case 'h':
- goto usage;
- default:
- Abc_Print( -2, "Unknown switch.\n");
- goto usage;
- }
- }
-
- if ( pAbc->pCex == NULL )
- {
- Abc_Print( 1, "There is no current cex.\n");
- return 0;
- }
- if ( pAbc->pGia == NULL )
- {
- Abc_Print( 1, "There is no AIG in the &-space.\n");
- return 0;
- }
- if ( !Gia_ManVerifyCex( pAbc->pGia, pAbc->pCex, 0 ) )
- {
- Abc_Print( 1, "Current CEX does not fail AIG \"%s\" in the &-space.\n", Gia_ManName(pAbc->pGia) );
- return 0;
- }
- if ( iFrStop == ABC_INFINITY )
- iFrStop = pAbc->pCex->iFrame;
-
- pGiaNew = Bmc_GiaTargetStates( pAbc->pGia, pAbc->pCex, iFrStart, iFrStop, fCombOnly, fVerbose );
- if ( pGiaNew == NULL )
- {
- Abc_Print( 1, "Command has failed.\n");
- return 0;
- }
- Abc_CommandUpdate9( pAbc, pGiaNew );
- return 0;
-
-usage:
- Abc_Print( -2, "usage: &cexcut [-FG num] [-cvh]\n" );
- Abc_Print( -2, "\t creates logic for bad states using the current CEX\n" );
- Abc_Print( -2, "\t-F num : 0-based number of the starting frame [default = %d]\n", iFrStart );
- Abc_Print( -2, "\t-G num : 0-based number of the ending frame [default = %d]\n", iFrStop );
- Abc_Print( -2, "\t-c : toggle producing combinational unate circuit [default = %s]\n", fCombOnly? "yes": "no" );
- Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
- Abc_Print( -2, "\t-h : print the command usage\n");
- return 1;
+ return -1;
}
/**Function*************************************************************