/**CFile**************************************************************** FileName [amapCore.c] SystemName [ABC: Logic synthesis and verification system.] PackageName [Technology mapper for standard cells.] Synopsis [Core mapping procedures.] Author [Alan Mishchenko] Affiliation [UC Berkeley] Date [Ver. 1.0. Started - June 20, 2005.] Revision [$Id: amapCore.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $] ***********************************************************************/ #include "amapInt.h" #include "base/main/main.h" ABC_NAMESPACE_IMPL_START //////////////////////////////////////////////////////////////////////// /// DECLARATIONS /// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// /// FUNCTION DEFINITIONS /// //////////////////////////////////////////////////////////////////////// /**Function************************************************************* Synopsis [This procedure sets default parameters.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ void Amap_ManSetDefaultParams( Amap_Par_t * p ) { memset( p, 0, sizeof(Amap_Par_t) ); p->nIterFlow = 1; // iterations of area flow p->nIterArea = 4; // iteratoins of exact area p->nCutsMax = 500; // the maximum number of cuts at a node p->fUseMuxes = 0; // enables the use of MUXes p->fUseXors = 1; // enables the use of XORs p->fFreeInvs = 0; // assume inverters are free (area = 0) p->fEpsilon = (float)0.001; // used to compare floating point numbers p->fVerbose = 0; // verbosity flag } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Vec_Ptr_t * Amap_ManTest( Aig_Man_t * pAig, Amap_Par_t * pPars ) { // extern void * Abc_FrameReadLibGen2(); Vec_Ptr_t * vRes; Amap_Man_t * p; Amap_Lib_t * pLib; abctime clkTotal = Abc_Clock(); pLib = (Amap_Lib_t *)Abc_FrameReadLibGen2(); if ( pLib == NULL ) { printf( "Library is not available.\n" ); return NULL; } p = Amap_ManStart( Aig_ManNodeNum(pAig) ); p->pPars = pPars; p->pLib = pLib; p->fAreaInv = pPars->fFreeInvs? 0.0 : pLib->pGateInv->dArea; p->fUseMux = pPars->fUseMuxes && pLib->fHasMux; p->fUseXor = pPars->fUseXors && pLib->fHasXor; p->ppCutsTemp = ABC_CALLOC( Amap_Cut_t *, 2 * pLib->nNodes ); p->pMatsTemp = ABC_CALLOC( int, 2 * pLib->nNodes ); Amap_ManCreate( p, pAig ); Amap_ManMap( p ); vRes = NULL; vRes = Amap_ManProduceMapped( p ); Amap_ManStop( p ); if ( pPars->fVerbose ) { ABC_PRT( "Total runtime", Abc_Clock() - clkTotal ); } return vRes; } //////////////////////////////////////////////////////////////////////// /// END OF FILE /// //////////////////////////////////////////////////////////////////////// ABC_NAMESPACE_IMPL_END