From 6d05fde2dc046d16c0d04b06d1755b9c25e6ee1d Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Sun, 16 Sep 2012 22:05:15 -0700 Subject: Added delay multipliers to 'map'. --- src/map/mio/mio.h | 3 ++- src/map/mio/mioUtils.c | 29 +++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) (limited to 'src/map/mio') 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 ); + } } } -- cgit v1.2.3