summaryrefslogtreecommitdiffstats
path: root/src/map/mio
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-09-16 22:05:15 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2012-09-16 22:05:15 -0700
commit6d05fde2dc046d16c0d04b06d1755b9c25e6ee1d (patch)
tree6c3e8ea87c81b5c578726b232b2caea45b582609 /src/map/mio
parentbbf4b8bc1e35f33b9150963059396ae25bc13a54 (diff)
downloadabc-6d05fde2dc046d16c0d04b06d1755b9c25e6ee1d.tar.gz
abc-6d05fde2dc046d16c0d04b06d1755b9c25e6ee1d.tar.bz2
abc-6d05fde2dc046d16c0d04b06d1755b9c25e6ee1d.zip
Added delay multipliers to 'map'.
Diffstat (limited to 'src/map/mio')
-rw-r--r--src/map/mio/mio.h3
-rw-r--r--src/map/mio/mioUtils.c29
2 files changed, 27 insertions, 5 deletions
diff --git a/src/map/mio/mio.h b/src/map/mio/mio.h
index a7b3f669..7bccc3a1 100644
--- a/src/map/mio/mio.h
+++ b/src/map/mio/mio.h
@@ -150,7 +150,8 @@ extern void Mio_DeriveGateDelays( Mio_Gate_t * pGate,
float * ptDelaysRes, float * ptPinDelayMax );
extern Mio_Gate_t * Mio_GateCreatePseudo( int nInputs );
extern void Mio_LibraryShiftDelay( Mio_Library_t * pLib, double Shift );
-extern void Mio_LibraryShiftArea( Mio_Library_t * pLib, double Shift );
+extern void Mio_LibraryMultiArea( Mio_Library_t * pLib, double Multi );
+extern void Mio_LibraryMultiDelay( Mio_Library_t * pLib, double Multi );
ABC_NAMESPACE_HEADER_END
diff --git a/src/map/mio/mioUtils.c b/src/map/mio/mioUtils.c
index c2022186..0583276a 100644
--- a/src/map/mio/mioUtils.c
+++ b/src/map/mio/mioUtils.c
@@ -610,7 +610,7 @@ void Mio_LibraryShiftDelay( Mio_Library_t * pLib, double Shift )
/**Function*************************************************************
- Synopsis [Multiply areas of all gates by values proportional to fanin count.]
+ Synopsis [Multiply areas/delays by values proportional to fanin count.]
Description []
@@ -619,14 +619,35 @@ void Mio_LibraryShiftDelay( Mio_Library_t * pLib, double Shift )
SeeAlso []
***********************************************************************/
-void Mio_LibraryShiftArea( Mio_Library_t * pLib, double Shift )
+void Mio_LibraryMultiArea( Mio_Library_t * pLib, double Multi )
{
Mio_Gate_t * pGate;
Mio_LibraryForEachGate( pLib, pGate )
{
+ if ( pGate->nInputs < 2 )
+ continue;
// printf( "Before %8.3f ", pGate->dArea );
- pGate->dArea *= pow( pGate->nInputs, Shift );
-// printf( "After %8.3f Inputs = %d. Factor = %8.3f\n", pGate->dArea, pGate->nInputs, pow( pGate->nInputs, Shift ) );
+ pGate->dArea *= pow( pGate->nInputs, Multi );
+// printf( "After %8.3f Inputs = %d. Factor = %8.3f\n", pGate->dArea, pGate->nInputs, pow( pGate->nInputs, Multi ) );
+ }
+}
+void Mio_LibraryMultiDelay( Mio_Library_t * pLib, double Multi )
+{
+ Mio_Gate_t * pGate;
+ Mio_Pin_t * pPin;
+ Mio_LibraryForEachGate( pLib, pGate )
+ {
+ if ( pGate->nInputs < 2 )
+ continue;
+// printf( "Before %8.3f ", pGate->dDelayMax );
+ pGate->dDelayMax *= pow( pGate->nInputs, Multi );
+// printf( "After %8.3f Inputs = %d. Factor = %8.3f\n", pGate->dDelayMax, pGate->nInputs, pow( pGate->nInputs, Multi ) );
+ Mio_GateForEachPin( pGate, pPin )
+ {
+ pPin->dDelayBlockRise *= pow( pGate->nInputs, Multi );
+ pPin->dDelayBlockFall *= pow( pGate->nInputs, Multi );
+ pPin->dDelayBlockMax *= pow( pGate->nInputs, Multi );
+ }
}
}