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/mioUtils.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'src/map/mio/mioUtils.c') 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