From f10480f9bcbe89c8d15f47609a7bfbce3f5a938e Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Tue, 30 Jul 2013 00:18:57 -0700 Subject: Parametrizing standard-cell mapper to account for the fanout delay. --- src/map/mapper/mapperCreate.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/map/mapper/mapperCreate.c') diff --git a/src/map/mapper/mapperCreate.c b/src/map/mapper/mapperCreate.c index 3d64bfee..baf21858 100644 --- a/src/map/mapper/mapperCreate.c +++ b/src/map/mapper/mapperCreate.c @@ -264,6 +264,7 @@ void Map_ManFree( Map_Man_t * p ) if ( p->pCounters ) ABC_FREE( p->pCounters ); Extra_MmFixedStop( p->mmNodes ); Extra_MmFixedStop( p->mmCuts ); + ABC_FREE( p->pNodeDelays ); ABC_FREE( p->pInputArrivals ); ABC_FREE( p->pOutputRequireds ); ABC_FREE( p->pInputs ); @@ -274,6 +275,35 @@ void Map_ManFree( Map_Man_t * p ) } +/**Function************************************************************* + + Synopsis [Creates node delays.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +void Map_ManCreateNodeDelays( Map_Man_t * p, int LogFan ) +{ + Map_Node_t * pNode; + int k; + assert( p->pNodeDelays == NULL ); + p->pNodeDelays = ABC_CALLOC( float, p->vNodesAll->nSize ); + for ( k = 0; k < p->vNodesAll->nSize; k++ ) + { + pNode = p->vNodesAll->pArray[k]; + if ( pNode->nRefs == 0 ) + continue; + p->pNodeDelays[k] = 0.014426 * LogFan * p->pSuperLib->tDelayInv.Worst * log( (double)pNode->nRefs ); // 1.4426 = 1/ln(2) +// printf( "%d = %d (%.2f) ", k, pNode->nRefs, p->pNodeDelays[k] ); + } +// printf( "\n" ); +} + + /**Function************************************************************* Synopsis [Deallocates the mapping manager.] -- cgit v1.2.3