summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2014-06-15 16:28:05 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2014-06-15 16:28:05 -0700
commite2637595f8758c33e3921a9bd84ec8e640b8ea4d (patch)
treebbee3a608964346af1ab2d061c282a1bc5ee4b96 /src
parentcf993a9d90937c2d8d4ff443109c5307dcf1bcc5 (diff)
downloadabc-e2637595f8758c33e3921a9bd84ec8e640b8ea4d.tar.gz
abc-e2637595f8758c33e3921a9bd84ec8e640b8ea4d.tar.bz2
abc-e2637595f8758c33e3921a9bd84ec8e640b8ea4d.zip
Updates and bug fixes.
Diffstat (limited to 'src')
-rw-r--r--src/aig/gia/gia.h1
-rw-r--r--src/aig/gia/giaBalance.c6
-rw-r--r--src/aig/gia/giaMuxes.c1
-rw-r--r--src/base/abci/abc.c16
4 files changed, 21 insertions, 3 deletions
diff --git a/src/aig/gia/gia.h b/src/aig/gia/gia.h
index 463f11e6..bc6fae06 100644
--- a/src/aig/gia/gia.h
+++ b/src/aig/gia/gia.h
@@ -252,6 +252,7 @@ struct Jf_Par_t_
int nRounds;
int nRoundsEla;
int nRelaxRatio;
+ int nCoarseLimit;
int nVerbLimit;
int DelayTarget;
int fAreaOnly;
diff --git a/src/aig/gia/giaBalance.c b/src/aig/gia/giaBalance.c
index 749a7c1e..abb6dd19 100644
--- a/src/aig/gia/giaBalance.c
+++ b/src/aig/gia/giaBalance.c
@@ -1046,7 +1046,11 @@ Gia_Man_t * Gia_ManAigSyn2( Gia_Man_t * p, int fOldAlgo, int fCoarsen, int fCutM
else
pNew = Lf_ManPerformMapping( pTemp = pNew, pPars );
if ( fVerbose ) Gia_ManPrintStats( pNew, NULL );
-// Gia_ManStop( pTemp );
+ if ( pTemp != pNew )
+ {
+ Gia_ManAigTransferPiLevels( pNew, pTemp );
+ Gia_ManStop( pTemp );
+ }
// perform balancing
pNew = Gia_ManAreaBalance( pTemp = pNew, 0, ABC_INFINITY, fVeryVerbose, 0 );
if ( fVerbose ) Gia_ManPrintStats( pNew, NULL );
diff --git a/src/aig/gia/giaMuxes.c b/src/aig/gia/giaMuxes.c
index db44e219..85db6e76 100644
--- a/src/aig/gia/giaMuxes.c
+++ b/src/aig/gia/giaMuxes.c
@@ -97,6 +97,7 @@ Gia_Man_t * Gia_ManDupMuxes( Gia_Man_t * p, int Limit )
Gia_Obj_t * pObj, * pFan0, * pFan1, * pFanC;
int i;
assert( p->pMuxes == NULL );
+ assert( Limit >= 2 );
ABC_FREE( p->pRefs );
Gia_ManCreateRefs( p );
// start the new manager
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c
index 068a355d..5bb79eef 100644
--- a/src/base/abci/abc.c
+++ b/src/base/abci/abc.c
@@ -30889,7 +30889,7 @@ int Abc_CommandAbc9Lf( Abc_Frame_t * pAbc, int argc, char ** argv )
Gia_Man_t * pNew; int c;
Lf_ManSetDefaultPars( pPars );
Extra_UtilGetoptReset();
- while ( ( c = Extra_UtilGetopt( argc, argv, "KCFARDWaekmgpvwh" ) ) != EOF )
+ while ( ( c = Extra_UtilGetopt( argc, argv, "KCFARLDWaekmgpvwh" ) ) != EOF )
{
switch ( c )
{
@@ -30954,6 +30954,17 @@ int Abc_CommandAbc9Lf( Abc_Frame_t * pAbc, int argc, char ** argv )
if ( pPars->nRelaxRatio < 0 )
goto usage;
break;
+ case 'L':
+ if ( globalUtilOptind >= argc )
+ {
+ Abc_Print( 1, "Command line switch \"-R\" should be followed by a floating point number.\n" );
+ return 0;
+ }
+ pPars->nCoarseLimit = atoi(argv[globalUtilOptind]);
+ globalUtilOptind++;
+ if ( pPars->nCoarseLimit < 0 )
+ goto usage;
+ break;
case 'D':
if ( globalUtilOptind >= argc )
{
@@ -31026,13 +31037,14 @@ usage:
sprintf(Buffer, "best possible" );
else
sprintf(Buffer, "%d", pPars->DelayTarget );
- Abc_Print( -2, "usage: &lf [-KCFARD num] [-akmgpvwh]\n" );
+ Abc_Print( -2, "usage: &lf [-KCFARLD num] [-akmgpvwh]\n" );
Abc_Print( -2, "\t performs technology mapping of the network\n" );
Abc_Print( -2, "\t-K num : LUT size for the mapping (2 <= K <= %d) [default = %d]\n", pPars->nLutSizeMax, pPars->nLutSize );
Abc_Print( -2, "\t-C num : the max number of priority cuts (1 <= C <= %d) [default = %d]\n", pPars->nCutNumMax, pPars->nCutNum );
Abc_Print( -2, "\t-F num : the number of area flow rounds [default = %d]\n", pPars->nRounds );
Abc_Print( -2, "\t-A num : the number of exact area rounds [default = %d]\n", pPars->nRoundsEla );
Abc_Print( -2, "\t-R num : the delay relaxation ratio (num >= 0) [default = %d]\n", pPars->nRelaxRatio );
+ Abc_Print( -2, "\t-L num : the fanout limit for coarsening XOR/MUX (num >= 2) [default = %d]\n", pPars->nCoarseLimit );
Abc_Print( -2, "\t-D num : sets the delay constraint for the mapping [default = %s]\n", Buffer );
Abc_Print( -2, "\t-a : toggles area-oriented mapping [default = %s]\n", pPars->fAreaOnly? "yes": "no" );
Abc_Print( -2, "\t-e : toggles edge vs node minimization [default = %s]\n", pPars->fOptEdge? "yes": "no" );