| /**CFile**************************************************************** |
| |
| FileName [mpmCore.c] |
| |
| SystemName [ABC: Logic synthesis and verification system.] |
| |
| PackageName [Configurable technology mapper.] |
| |
| Synopsis [Core procedures.] |
| |
| Author [Alan Mishchenko] |
| |
| Affiliation [UC Berkeley] |
| |
| Date [Ver. 1.0. Started - June 1, 2013.] |
| |
| Revision [$Id: mpmCore.c,v 1.00 2013/06/01 00:00:00 alanmi Exp $] |
| |
| ***********************************************************************/ |
| |
| #include "aig/gia/gia.h" |
| #include "mpmInt.h" |
| |
| ABC_NAMESPACE_IMPL_START |
| |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// DECLARATIONS /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// FUNCTION DEFINITIONS /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| /**Function************************************************************* |
| |
| Synopsis [] |
| |
| Description [] |
| |
| SideEffects [] |
| |
| SeeAlso [] |
| |
| ***********************************************************************/ |
| void Mpm_ManSetParsDefault( Mpm_Par_t * p ) |
| { |
| memset( p, 0, sizeof(Mpm_Par_t) ); |
| p->pLib = NULL; // LUT library |
| p->nNumCuts = 8; // cut number |
| p->fUseTruth = 0; // uses truth tables |
| p->fUseDsd = 0; // uses DSDs |
| p->fCutMin = 0; // enables cut minimization |
| p->fOneRound = 0; // enabled one round |
| p->DelayTarget = -1; // delay target |
| p->fDeriveLuts = 0; // use truth tables to derive AIG structure |
| p->fMap4Cnf = 0; // mapping for CNF |
| p->fMap4Aig = 0; // mapping for AIG |
| p->fMap4Gates = 0; // mapping for gates |
| p->fVerbose = 0; // verbose output |
| p->fVeryVerbose = 0; // verbose output |
| } |
| |
| /**Function************************************************************* |
| |
| Synopsis [] |
| |
| Description [] |
| |
| SideEffects [] |
| |
| SeeAlso [] |
| |
| ***********************************************************************/ |
| Gia_Man_t * Mpm_ManPerformLutMapping( Mig_Man_t * pMig, Mpm_Par_t * pPars ) |
| { |
| Gia_Man_t * pNew; |
| Mpm_Man_t * p; |
| p = Mpm_ManStart( pMig, pPars ); |
| if ( p->pPars->fVerbose ) |
| Mpm_ManPrintStatsInit( p ); |
| Mpm_ManPrepare( p ); |
| Mpm_ManPerform( p ); |
| if ( p->pPars->fVerbose ) |
| Mpm_ManPrintStats( p ); |
| pNew = (Gia_Man_t *)Mpm_ManFromIfLogic( p ); |
| Mpm_ManStop( p ); |
| return pNew; |
| } |
| Gia_Man_t * Mpm_ManLutMapping( Gia_Man_t * pGia, Mpm_Par_t * pPars ) |
| { |
| Mig_Man_t * p; |
| Gia_Man_t * pNew; |
| assert( pPars->pLib->LutMax <= MPM_VAR_MAX ); |
| assert( pPars->nNumCuts <= MPM_CUT_MAX ); |
| if ( pPars->fUseGates ) |
| { |
| pGia = Gia_ManDupMuxes( pGia, 2 ); |
| p = Mig_ManCreate( pGia ); |
| Gia_ManStop( pGia ); |
| } |
| else |
| p = Mig_ManCreate( pGia ); |
| pNew = Mpm_ManPerformLutMapping( p, pPars ); |
| Mig_ManStop( p ); |
| return pNew; |
| } |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// END OF FILE /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| |
| ABC_NAMESPACE_IMPL_END |
| |