Parametrizing standard-cell mapper to account for the fanout delay.

This commit is contained in:
Alan Mishchenko
2013-07-30 00:18:57 -07:00
parent 8e54792cd0
commit f10480f9bc
7 changed files with 68 additions and 16 deletions
+30
View File
@@ -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.]