diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2007-09-30 08:01:00 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2007-09-30 08:01:00 -0700 |
commit | e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7 (patch) | |
tree | de3ffe87c3e17950351e3b7d97fa18318bd5ea9a /src/map/mapper/mapperCore.c | |
parent | 7d7e60f2dc84393cd4c5db22d2eaf7b1fb1a79b2 (diff) | |
download | abc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.tar.gz abc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.tar.bz2 abc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.zip |
Version abc70930
Diffstat (limited to 'src/map/mapper/mapperCore.c')
-rw-r--r-- | src/map/mapper/mapperCore.c | 228 |
1 files changed, 0 insertions, 228 deletions
diff --git a/src/map/mapper/mapperCore.c b/src/map/mapper/mapperCore.c deleted file mode 100644 index 5d4854e6..00000000 --- a/src/map/mapper/mapperCore.c +++ /dev/null @@ -1,228 +0,0 @@ -/**CFile**************************************************************** - - FileName [mapperCore.c] - - PackageName [MVSIS 1.3: Multi-valued logic synthesis system.] - - Synopsis [Generic technology mapping engine.] - - Author [MVSIS Group] - - Affiliation [UC Berkeley] - - Date [Ver. 2.0. Started - June 1, 2004.] - - Revision [$Id: mapperCore.c,v 1.7 2004/10/01 23:41:04 satrajit Exp $] - -***********************************************************************/ - -#include "mapperInt.h" -//#include "resm.h" - -//////////////////////////////////////////////////////////////////////// -/// DECLARATIONS /// -//////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////// -/// FUNCTION DEFINITIONS /// -//////////////////////////////////////////////////////////////////////// - -/**Function************************************************************* - - Synopsis [Performs technology mapping for the given object graph.] - - Description [The object graph is stored in the mapping manager. - First, the AND nodes that fanout into POs are collected in the DFS order. - Two preprocessing steps are performed: the k-feasible cuts are computed - for each node and the truth tables are computed for each cut. Next, the - delay-optimal matches are assigned for each node, followed by several - iterations of area recoveryd: using area flow (global optimization) - and using exact area at a node (local optimization).] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Map_Mapping( Map_Man_t * p ) -{ - int fShowSwitching = 1; - int fUseAreaFlow = 1; - int fUseExactArea = !p->fSwitching; - int fUseExactAreaWithPhase = !p->fSwitching; - int clk; - - ////////////////////////////////////////////////////////////////////// - // perform pre-mapping computations - // collect the nodes reachable from POs in the DFS order (including the choices) - p->vAnds = Map_MappingDfs( p, 1 ); - if ( p->fVerbose ) - Map_MappingReportChoices( p ); - Map_MappingSetChoiceLevels( p ); // should always be called before mapping! -// return 1; - - // compute the cuts of nodes in the DFS order - clk = clock(); - Map_MappingCuts( p ); - p->timeCuts = clock() - clk; - // derive the truth tables - clk = clock(); - Map_MappingTruths( p ); - p->timeTruth = clock() - clk; - ////////////////////////////////////////////////////////////////////// -//PRT( "Truths", clock() - clk ); - - ////////////////////////////////////////////////////////////////////// - // compute the minimum-delay mapping - clk = clock(); - p->fMappingMode = 0; - if ( !Map_MappingMatches( p ) ) - return 0; - p->timeMatch = clock() - clk; - // compute the references and collect the nodes used in the mapping - Map_MappingSetRefs( p ); - p->AreaBase = Map_MappingGetArea( p, p->vMapping ); -if ( p->fVerbose ) -{ -printf( "Delay : %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ", - fShowSwitching? "Switch" : "Delay", - fShowSwitching? Map_MappingGetSwitching(p,p->vMapping) : p->fRequiredGlo, - Map_MappingGetAreaFlow(p), p->AreaBase, 0.0 ); -PRT( "Time", p->timeMatch ); -} - ////////////////////////////////////////////////////////////////////// - - if ( !p->fAreaRecovery ) - { - if ( p->fVerbose ) - Map_MappingPrintOutputArrivals( p ); - return 1; - } - - ////////////////////////////////////////////////////////////////////// - // perform area recovery using area flow - clk = clock(); - if ( fUseAreaFlow ) - { - // compute the required times - Map_TimeComputeRequiredGlobal( p ); - // recover area flow - p->fMappingMode = 1; - Map_MappingMatches( p ); - // compute the references and collect the nodes used in the mapping - Map_MappingSetRefs( p ); - p->AreaFinal = Map_MappingGetArea( p, p->vMapping ); -if ( p->fVerbose ) -{ -printf( "AreaFlow : %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ", - fShowSwitching? "Switch" : "Delay", - fShowSwitching? Map_MappingGetSwitching(p,p->vMapping) : p->fRequiredGlo, - Map_MappingGetAreaFlow(p), p->AreaFinal, - 100.0*(p->AreaBase-p->AreaFinal)/p->AreaBase ); -PRT( "Time", clock() - clk ); -} - } - p->timeArea += clock() - clk; - ////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////// - // perform area recovery using exact area - clk = clock(); - if ( fUseExactArea ) - { - // compute the required times - Map_TimeComputeRequiredGlobal( p ); - // recover area - p->fMappingMode = 2; - Map_MappingMatches( p ); - // compute the references and collect the nodes used in the mapping - Map_MappingSetRefs( p ); - p->AreaFinal = Map_MappingGetArea( p, p->vMapping ); -if ( p->fVerbose ) -{ -printf( "Area : %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ", - fShowSwitching? "Switch" : "Delay", - fShowSwitching? Map_MappingGetSwitching(p,p->vMapping) : p->fRequiredGlo, - 0.0, p->AreaFinal, - 100.0*(p->AreaBase-p->AreaFinal)/p->AreaBase ); -PRT( "Time", clock() - clk ); -} - } - p->timeArea += clock() - clk; - ////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////// - // perform area recovery using exact area - clk = clock(); - if ( fUseExactAreaWithPhase ) - { - // compute the required times - Map_TimeComputeRequiredGlobal( p ); - // recover area - p->fMappingMode = 3; - Map_MappingMatches( p ); - // compute the references and collect the nodes used in the mapping - Map_MappingSetRefs( p ); - p->AreaFinal = Map_MappingGetArea( p, p->vMapping ); -if ( p->fVerbose ) -{ -printf( "Area : %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ", - fShowSwitching? "Switch" : "Delay", - fShowSwitching? Map_MappingGetSwitching(p,p->vMapping) : p->fRequiredGlo, - 0.0, p->AreaFinal, - 100.0*(p->AreaBase-p->AreaFinal)/p->AreaBase ); -PRT( "Time", clock() - clk ); -} - } - p->timeArea += clock() - clk; - ////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////// - // perform area recovery using exact area - clk = clock(); - if ( p->fSwitching ) - { - // compute the required times - Map_TimeComputeRequiredGlobal( p ); - // recover switching activity - p->fMappingMode = 4; - Map_MappingMatches( p ); - // compute the references and collect the nodes used in the mapping - Map_MappingSetRefs( p ); - p->AreaFinal = Map_MappingGetArea( p, p->vMapping ); -if ( p->fVerbose ) -{ -printf( "Switching: %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ", - fShowSwitching? "Switch" : "Delay", - fShowSwitching? Map_MappingGetSwitching(p,p->vMapping) : p->fRequiredGlo, - 0.0, p->AreaFinal, - 100.0*(p->AreaBase-p->AreaFinal)/p->AreaBase ); -PRT( "Time", clock() - clk ); -} - - // compute the required times - Map_TimeComputeRequiredGlobal( p ); - // recover switching activity - p->fMappingMode = 4; - Map_MappingMatches( p ); - // compute the references and collect the nodes used in the mapping - Map_MappingSetRefs( p ); - p->AreaFinal = Map_MappingGetArea( p, p->vMapping ); -if ( p->fVerbose ) -{ -printf( "Switching: %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ", - fShowSwitching? "Switch" : "Delay", - fShowSwitching? Map_MappingGetSwitching(p,p->vMapping) : p->fRequiredGlo, - 0.0, p->AreaFinal, - 100.0*(p->AreaBase-p->AreaFinal)/p->AreaBase ); -PRT( "Time", clock() - clk ); -} - } - p->timeArea += clock() - clk; - ////////////////////////////////////////////////////////////////////// - - // print the arrival times of the latest outputs - if ( p->fVerbose ) - Map_MappingPrintOutputArrivals( p ); - return 1; -} |