src/map/if/ifCore.c File Reference

#include "if.h"
Include dependency graph for ifCore.c:

Go to the source code of this file.

Functions

int If_ManPerformMapping (If_Man_t *p)
int If_ManPerformMappingComb (If_Man_t *p)

Variables

int s_MappingTime

Function Documentation

int If_ManPerformMapping ( If_Man_t p  ) 

FUNCTION DEFINITIONS ///Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 44 of file ifCore.c.

00045 {
00046     p->pPars->fAreaOnly = p->pPars->fArea; // temporary
00047 
00048     // create the CI cutsets
00049     If_ManSetupCiCutSets( p );
00050     // allocate memory for other cutsets
00051     If_ManSetupSetAll( p, If_ManCrossCut(p) );
00052 
00053     // try sequential mapping
00054     if ( p->pPars->fSeqMap )
00055     {
00056         int RetValue;
00057 //        printf( "Currently sequential mapping is not performed.\n" );
00058         RetValue = If_ManPerformMappingSeq( p );
00059         return RetValue;
00060 //        return 1;
00061     }
00062 
00063     return If_ManPerformMappingComb( p );
00064 }

int If_ManPerformMappingComb ( If_Man_t p  ) 

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 78 of file ifCore.c.

00079 {
00080     If_Obj_t * pObj;
00081     int clkTotal = clock();
00082     int i;
00083 
00084     // set arrival times and fanout estimates
00085     If_ManForEachCi( p, pObj, i )
00086     {
00087         If_ObjSetArrTime( pObj, p->pPars->pTimesArr[i] );
00088         pObj->EstRefs = (float)1.0;
00089     }
00090 
00091     // delay oriented mapping
00092     if ( p->pPars->fPreprocess && !p->pPars->fArea )
00093     {
00094         // map for delay
00095         If_ManPerformMappingRound( p, p->pPars->nCutsMax, 0, 1, "Delay" );
00096         // map for delay second option
00097         p->pPars->fFancy = 1;
00098         If_ManResetOriginalRefs( p );
00099         If_ManPerformMappingRound( p, p->pPars->nCutsMax, 0, 1, "Delay-2" );
00100         p->pPars->fFancy = 0;
00101         // map for area
00102         p->pPars->fArea = 1;
00103         If_ManResetOriginalRefs( p );
00104         If_ManPerformMappingRound( p, p->pPars->nCutsMax, 0, 1, "Area" );
00105         p->pPars->fArea = 0;
00106     }
00107     else
00108         If_ManPerformMappingRound( p, p->pPars->nCutsMax, 0, 0, "Delay" );
00109 
00110     // try to improve area by expanding and reducing the cuts
00111     if ( p->pPars->fExpRed && !p->pPars->fTruth )
00112         If_ManImproveMapping( p );
00113 
00114     // area flow oriented mapping
00115     for ( i = 0; i < p->pPars->nFlowIters; i++ )
00116     {
00117         If_ManPerformMappingRound( p, p->pPars->nCutsMax, 1, 0, "Flow" );
00118         if ( p->pPars->fExpRed && !p->pPars->fTruth )
00119             If_ManImproveMapping( p );
00120     }
00121 
00122     // area oriented mapping
00123     for ( i = 0; i < p->pPars->nAreaIters; i++ )
00124     {
00125         If_ManPerformMappingRound( p, p->pPars->nCutsMax, 2, 0, "Area" );
00126         if ( p->pPars->fExpRed && !p->pPars->fTruth )
00127             If_ManImproveMapping( p );
00128     }
00129 
00130     if ( p->pPars->fVerbose )
00131     {
00132 //        printf( "Total memory = %7.2f Mb. Peak cut memory = %7.2f Mb.  ", 
00133 //            1.0 * (p->nObjBytes + 2*sizeof(void *)) * If_ManObjNum(p) / (1<<20), 
00134 //            1.0 * p->nSetBytes * Mem_FixedReadMaxEntriesUsed(p->pMemSet) / (1<<20) );
00135         PRT( "Total time", clock() - clkTotal );
00136     }
00137 //    printf( "Cross cut memory = %d.\n", Mem_FixedReadMaxEntriesUsed(p->pMemSet) );
00138     s_MappingTime = clock() - clkTotal;
00139     return 1;
00140 }


Variable Documentation

CFile****************************************************************

FileName [ifCore.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [FPGA mapping based on priority cuts.]

Synopsis [The central part of the mapper.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - November 21, 2006.]

Revision [

Id
ifCore.c,v 1.00 2006/11/21 00:00:00 alanmi Exp

] DECLARATIONS ///

CFile****************************************************************

FileName [abcPrint.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Network and node package.]

Synopsis [Printing statistics.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - June 20, 2005.]

Revision [

Id
abcPrint.c,v 1.00 2005/06/20 00:00:00 alanmi Exp

] DECLARATIONS ///

Definition at line 34 of file abcPrint.c.


Generated on Tue Jan 5 12:19:03 2010 for abc70930 by  doxygen 1.6.1