1 /**CFile****************************************************************
2 
3   FileName    [amapMan.c]
4 
5   SystemName  [ABC: Logic synthesis and verification system.]
6 
7   PackageName [Technology mapper for standard cells.]
8 
9   Synopsis    [Mapping manager.]
10 
11   Author      [Alan Mishchenko]
12 
13   Affiliation [UC Berkeley]
14 
15   Date        [Ver. 1.0. Started - June 20, 2005.]
16 
17   Revision    [$Id: amapMan.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #include "amapInt.h"
22 
23 ABC_NAMESPACE_IMPL_START
24 
25 
26 ////////////////////////////////////////////////////////////////////////
27 ///                        DECLARATIONS                              ///
28 ////////////////////////////////////////////////////////////////////////
29 
30 ////////////////////////////////////////////////////////////////////////
31 ///                     FUNCTION DEFINITIONS                         ///
32 ////////////////////////////////////////////////////////////////////////
33 
34 /**Function*************************************************************
35 
36   Synopsis    [Starts the AIG manager.]
37 
38   Description []
39 
40   SideEffects []
41 
42   SeeAlso     []
43 
44 ***********************************************************************/
Amap_ManStart(int nNodes)45 Amap_Man_t * Amap_ManStart( int nNodes )
46 {
47     Amap_Man_t * p;
48     // start the manager
49     p = ABC_ALLOC( Amap_Man_t, 1 );
50     memset( p, 0, sizeof(Amap_Man_t) );
51     p->fEpsilonInternal = (float)0.01;
52     // allocate arrays for nodes
53     p->vPis    = Vec_PtrAlloc( 100 );
54     p->vPos    = Vec_PtrAlloc( 100 );
55     p->vObjs   = Vec_PtrAlloc( 100 );
56     p->vTemp   = Vec_IntAlloc( 100 );
57     p->vCuts0  = Vec_PtrAlloc( 100 );
58     p->vCuts1  = Vec_PtrAlloc( 100 );
59     p->vCuts2  = Vec_PtrAlloc( 100 );
60     p->vTempP  = Vec_PtrAlloc( 100 );
61     // prepare the memory manager
62     p->pMemObj = Aig_MmFixedStart( sizeof(Amap_Obj_t), nNodes );
63     p->pMemCuts = Aig_MmFlexStart();
64     p->pMemCutBest = Aig_MmFlexStart();
65     p->pMemTemp = Aig_MmFlexStart();
66     return p;
67 }
68 
69 /**Function*************************************************************
70 
71   Synopsis    []
72 
73   Description []
74 
75   SideEffects []
76 
77   SeeAlso     []
78 
79 ***********************************************************************/
Amap_ManStop(Amap_Man_t * p)80 void Amap_ManStop( Amap_Man_t * p )
81 {
82     Vec_PtrFree( p->vPis );
83     Vec_PtrFree( p->vPos );
84     Vec_PtrFree( p->vObjs );
85     Vec_PtrFree( p->vCuts0 );
86     Vec_PtrFree( p->vCuts1 );
87     Vec_PtrFree( p->vCuts2 );
88     Vec_PtrFree( p->vTempP );
89     Vec_IntFree( p->vTemp );
90     Aig_MmFixedStop( p->pMemObj, 0 );
91     Aig_MmFlexStop( p->pMemCuts, 0 );
92     Aig_MmFlexStop( p->pMemCutBest, 0 );
93     Aig_MmFlexStop( p->pMemTemp, 0 );
94     ABC_FREE( p->pMatsTemp );
95     ABC_FREE( p->ppCutsTemp );
96     ABC_FREE( p->pCutsPi );
97     ABC_FREE( p );
98 }
99 
100 ////////////////////////////////////////////////////////////////////////
101 ///                       END OF FILE                                ///
102 ////////////////////////////////////////////////////////////////////////
103 
104 
105 ABC_NAMESPACE_IMPL_END
106 
107