abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
amapCore.c
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [amapCore.c]
4 
5  SystemName [ABC: Logic synthesis and verification system.]
6 
7  PackageName [Technology mapper for standard cells.]
8 
9  Synopsis [Core mapping procedures.]
10 
11  Author [Alan Mishchenko]
12 
13  Affiliation [UC Berkeley]
14 
15  Date [Ver. 1.0. Started - June 20, 2005.]
16 
17  Revision [$Id: amapCore.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #include "amapInt.h"
22 #include "base/main/main.h"
23 
25 
26 
27 ////////////////////////////////////////////////////////////////////////
28 /// DECLARATIONS ///
29 ////////////////////////////////////////////////////////////////////////
30 
31 ////////////////////////////////////////////////////////////////////////
32 /// FUNCTION DEFINITIONS ///
33 ////////////////////////////////////////////////////////////////////////
34 
35 /**Function*************************************************************
36 
37  Synopsis [This procedure sets default parameters.]
38 
39  Description []
40 
41  SideEffects []
42 
43  SeeAlso []
44 
45 ***********************************************************************/
47 {
48  memset( p, 0, sizeof(Amap_Par_t) );
49  p->nIterFlow = 1; // iterations of area flow
50  p->nIterArea = 4; // iteratoins of exact area
51  p->nCutsMax = 500; // the maximum number of cuts at a node
52  p->fUseMuxes = 0; // enables the use of MUXes
53  p->fUseXors = 1; // enables the use of XORs
54  p->fFreeInvs = 0; // assume inverters are free (area = 0)
55  p->fEpsilon = (float)0.001; // used to compare floating point numbers
56  p->fVerbose = 0; // verbosity flag
57 }
58 
59 /**Function*************************************************************
60 
61  Synopsis []
62 
63  Description []
64 
65  SideEffects []
66 
67  SeeAlso []
68 
69 ***********************************************************************/
71 {
72 // extern void * Abc_FrameReadLibGen2();
73  Vec_Ptr_t * vRes;
74  Amap_Man_t * p;
75  Amap_Lib_t * pLib;
76  abctime clkTotal = Abc_Clock();
77  pLib = (Amap_Lib_t *)Abc_FrameReadLibGen2();
78  if ( pLib == NULL )
79  {
80  printf( "Library is not available.\n" );
81  return NULL;
82  }
83  p = Amap_ManStart( Aig_ManNodeNum(pAig) );
84  p->pPars = pPars;
85  p->pLib = pLib;
86  p->fAreaInv = pPars->fFreeInvs? 0.0 : pLib->pGateInv->dArea;
87  p->fUseMux = pPars->fUseMuxes && pLib->fHasMux;
88  p->fUseXor = pPars->fUseXors && pLib->fHasXor;
89  p->ppCutsTemp = ABC_CALLOC( Amap_Cut_t *, 2 * pLib->nNodes );
90  p->pMatsTemp = ABC_CALLOC( int, 2 * pLib->nNodes );
91  Amap_ManCreate( p, pAig );
92  Amap_ManMap( p );
93  vRes = NULL;
94  vRes = Amap_ManProduceMapped( p );
95  Amap_ManStop( p );
96 if ( pPars->fVerbose )
97 {
98 ABC_PRT( "Total runtime", Abc_Clock() - clkTotal );
99 }
100  return vRes;
101 }
102 
103 
104 ////////////////////////////////////////////////////////////////////////
105 /// END OF FILE ///
106 ////////////////////////////////////////////////////////////////////////
107 
108 
110 
char * memset()
Vec_Ptr_t * Amap_ManTest(Aig_Man_t *pAig, Amap_Par_t *pPars)
Definition: amapCore.c:70
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition: vecPtr.h:42
ABC_DLL void * Abc_FrameReadLibGen2()
Definition: mainFrame.c:57
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
Definition: aig.h:50
static Llb_Mgr_t * p
Definition: llb3Image.c:950
void Amap_ManMap(Amap_Man_t *p)
Definition: amapMatch.c:593
int nIterArea
Definition: amap.h:48
static abctime Abc_Clock()
Definition: abc_global.h:279
static int Aig_ManNodeNum(Aig_Man_t *p)
Definition: aig.h:256
Amap_Cut_t ** ppCutsTemp
Definition: amapInt.h:101
int fVerbose
Definition: amap.h:55
float fAreaInv
Definition: amapInt.h:82
Amap_Lib_t * pLib
Definition: amapInt.h:79
#define ABC_NAMESPACE_IMPL_END
Definition: abc_global.h:108
int fUseMux
Definition: amapInt.h:84
#define ABC_NAMESPACE_IMPL_START
Definition: abc_global.h:107
typedefABC_NAMESPACE_HEADER_START struct Amap_Lib_t_ Amap_Lib_t
INCLUDES ///.
Definition: amap.h:42
int nIterFlow
Definition: amap.h:47
Amap_Par_t * pPars
Definition: amapInt.h:78
#define ABC_PRT(a, t)
Definition: abc_global.h:220
void Amap_ManCreate(Amap_Man_t *p, Aig_Man_t *pAig)
Definition: amapGraph.c:323
int fUseXors
Definition: amap.h:51
void Amap_ManStop(Amap_Man_t *p)
Definition: amapMan.c:79
int * pMatsTemp
Definition: amapInt.h:100
#define ABC_CALLOC(type, num)
Definition: abc_global.h:230
Amap_Man_t * Amap_ManStart(int nNodes)
DECLARATIONS ///.
Definition: amapMan.c:45
Vec_Ptr_t * Amap_ManProduceMapped(Amap_Man_t *p)
Definition: amapOutput.c:71
int nCutsMax
Definition: amap.h:49
int fUseXor
Definition: amapInt.h:83
ABC_INT64_T abctime
Definition: abc_global.h:278
ABC_NAMESPACE_IMPL_START void Amap_ManSetDefaultParams(Amap_Par_t *p)
DECLARATIONS ///.
Definition: amapCore.c:46
int fUseMuxes
Definition: amap.h:50
int fFreeInvs
Definition: amap.h:52
float fEpsilon
Definition: amap.h:53