summaryrefslogtreecommitdiffstats
path: root/src/base
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-01-25 06:19:51 +0700
committerAlan Mishchenko <alanmi@berkeley.edu>2013-01-25 06:19:51 +0700
commitedd4b2a29c3a75709b6394fd205384dd0fe90e5d (patch)
treee98553d01cc60a0ac9acaa03fd4c91cde79d9079 /src/base
parentaa9c87cf8d9d3e729ef5ab263c34d531a8f73d07 (diff)
downloadabc-edd4b2a29c3a75709b6394fd205384dd0fe90e5d.tar.gz
abc-edd4b2a29c3a75709b6394fd205384dd0fe90e5d.tar.bz2
abc-edd4b2a29c3a75709b6394fd205384dd0fe90e5d.zip
Added switch &trim -V <num> to remove const POs with specific value <num>.
Diffstat (limited to 'src/base')
-rw-r--r--src/base/abci/abc.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c
index 56aaed9e..25a7638c 100644
--- a/src/base/abci/abc.c
+++ b/src/base/abci/abc.c
@@ -24324,15 +24324,27 @@ int Abc_CommandAbc9Trim( Abc_Frame_t * pAbc, int argc, char ** argv )
{
Gia_Man_t * pTemp, * pTemp2;
int c;
+ int OutValue = -1;
int fTrimCis = 1;
int fTrimCos = 1;
int fDualOut = 0;
int fPoFedByPi = 0;
Extra_UtilGetoptReset();
- while ( ( c = Extra_UtilGetopt( argc, argv, "iocdh" ) ) != EOF )
+ while ( ( c = Extra_UtilGetopt( argc, argv, "Viocdh" ) ) != EOF )
{
switch ( c )
{
+ case 'V':
+ if ( globalUtilOptind >= argc )
+ {
+ Abc_Print( -1, "Command line switch \"-V\" should be followed by an integer.\n" );
+ goto usage;
+ }
+ OutValue = atoi(argv[globalUtilOptind]);
+ globalUtilOptind++;
+ if ( OutValue < 0 )
+ goto usage;
+ break;
case 'i':
fTrimCis ^= 1;
break;
@@ -24356,7 +24368,7 @@ int Abc_CommandAbc9Trim( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_Print( -1, "Abc_CommandAbc9Trim(): There is no AIG.\n" );
return 1;
}
- pTemp = Gia_ManDupTrimmed( pAbc->pGia, fTrimCis, fTrimCos, fDualOut );
+ pTemp = Gia_ManDupTrimmed( pAbc->pGia, fTrimCis, fTrimCos, fDualOut, OutValue );
if ( fPoFedByPi )
{
extern Gia_Man_t * Gia_ManDupTrimmed2( Gia_Man_t * p );
@@ -24367,8 +24379,9 @@ int Abc_CommandAbc9Trim( Abc_Frame_t * pAbc, int argc, char ** argv )
return 0;
usage:
- Abc_Print( -2, "usage: &trim [-iocdh]\n" );
+ Abc_Print( -2, "usage: &trim [-V num] [-iocdh]\n" );
Abc_Print( -2, "\t removes PIs without fanout and PO driven by constants\n" );
+ Abc_Print( -2, "\t-V num : the value (0 or 1) of POs to remove [default = both]\n" );
Abc_Print( -2, "\t-i : toggle removing PIs [default = %s]\n", fTrimCis? "yes": "no" );
Abc_Print( -2, "\t-o : toggle removing POs [default = %s]\n", fTrimCos? "yes": "no" );
Abc_Print( -2, "\t-c : toggle additionally removing POs fed by PIs [default = %s]\n", fPoFedByPi? "yes": "no" );