summaryrefslogtreecommitdiffstats
path: root/src/base/abci
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-09-16 23:34:56 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2012-09-16 23:34:56 -0700
commit7e843d64a934e731943d5975bb9255ebc1cfc719 (patch)
treeb4bb27b82430400d5050982969ead4079fe178e5 /src/base/abci
parent6d05fde2dc046d16c0d04b06d1755b9c25e6ee1d (diff)
downloadabc-7e843d64a934e731943d5975bb9255ebc1cfc719.tar.gz
abc-7e843d64a934e731943d5975bb9255ebc1cfc719.tar.bz2
abc-7e843d64a934e731943d5975bb9255ebc1cfc719.zip
Added delay multipliers to 'map'.
Diffstat (limited to 'src/base/abci')
-rw-r--r--src/base/abci/abcMap.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/base/abci/abcMap.c b/src/base/abci/abcMap.c
index 56348ee7..c9d743eb 100644
--- a/src/base/abci/abcMap.c
+++ b/src/base/abci/abcMap.c
@@ -59,6 +59,7 @@ static Abc_Obj_t * Abc_NodeFromMapSuperChoice_rec( Abc_Ntk_t * pNtkNew, Map_Sup
***********************************************************************/
Abc_Ntk_t * Abc_NtkMap( Abc_Ntk_t * pNtk, double DelayTarget, double AreaMulti, double DelayMulti, int fRecovery, int fSwitching, int fVerbose )
{
+ static int fUseMulti = 0;
int fShowSwitching = 1;
Abc_Ntk_t * pNtkNew;
Map_Man_t * pMan;
@@ -76,12 +77,19 @@ Abc_Ntk_t * Abc_NtkMap( Abc_Ntk_t * pNtk, double DelayTarget, double AreaMulti,
return 0;
}
+ if ( AreaMulti != 0.0 )
+ fUseMulti = 1, printf( "The cell areas are multiplied by the factor: <num_fanins> ^ (%.2f).\n", AreaMulti );
+ if ( DelayMulti != 0.0 )
+ fUseMulti = 1, printf( "The cell delays are multiplied by the factor: <num_fanins> ^ (%.2f).\n", DelayMulti );
+
// penalize large gates by increasing their area
- Mio_LibraryMultiArea( pLib, AreaMulti );
- Mio_LibraryMultiDelay( pLib, DelayMulti );
+ if ( AreaMulti != 0.0 )
+ Mio_LibraryMultiArea( pLib, AreaMulti );
+ if ( DelayMulti != 0.0 )
+ Mio_LibraryMultiDelay( pLib, DelayMulti );
// derive the supergate library
- if ( Abc_FrameReadLibSuper() == NULL && pLib )
+ if ( fUseMulti || Abc_FrameReadLibSuper() == NULL )
{
// printf( "A simple supergate library is derived from gate library \"%s\".\n",
// Mio_LibraryReadName((Mio_Library_t *)Abc_FrameReadLibGen()) );
@@ -90,12 +98,10 @@ Abc_Ntk_t * Abc_NtkMap( Abc_Ntk_t * pNtk, double DelayTarget, double AreaMulti,
}
// return the library to normal
- Mio_LibraryMultiArea( Abc_FrameReadLibGen(), -AreaMulti );
- Mio_LibraryMultiDelay( Abc_FrameReadLibGen(), -DelayMulti );
if ( AreaMulti != 0.0 )
- printf( "The cell areas are multiplied by the factor: <num_fanins> ^ (%.2f).\n", AreaMulti );
+ Mio_LibraryMultiArea( Abc_FrameReadLibGen(), -AreaMulti );
if ( DelayMulti != 0.0 )
- printf( "The cell delay are multiplied by the factor: <num_fanins> ^ (%.2f).\n", DelayMulti );
+ Mio_LibraryMultiDelay( Abc_FrameReadLibGen(), -DelayMulti );
// print a warning about choice nodes
if ( Abc_NtkGetChoiceNum( pNtk ) )