abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
mpmInt.h
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [mpmInt.h]
4 
5  SystemName [ABC: Logic synthesis and verification system.]
6 
7  PackageName [Configurable technology mapper.]
8 
9  Synopsis [Interal declarations.]
10 
11  Author [Alan Mishchenko]
12 
13  Affiliation [UC Berkeley]
14 
15  Date [Ver. 1.0. Started - June 1, 2013.]
16 
17  Revision [$Id: mpmInt.h,v 1.00 2013/06/01 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #ifndef ABC__map__mpm_Int_h
22 #define ABC__map__mpm_Int_h
23 
24 
25 ////////////////////////////////////////////////////////////////////////
26 /// INCLUDES ///
27 ////////////////////////////////////////////////////////////////////////
28 
29 #include <stdio.h>
30 #include <stdlib.h>
31 #include <string.h>
32 #include <assert.h>
33 
34 //#include "misc/tim/tim.h"
35 #include "misc/mem/mem2.h"
36 #include "misc/vec/vec.h"
37 #include "misc/vec/vecMem.h"
38 #include "misc/vec/vecHsh.h"
39 #include "misc/vec/vecWec.h"
40 #include "misc/util/utilTruth.h"
41 #include "mpmMig.h"
42 #include "mpm.h"
43 
45 
46 ////////////////////////////////////////////////////////////////////////
47 /// PARAMETERS ///
48 ////////////////////////////////////////////////////////////////////////
49 
50 #define MPM_CUT_MAX 32
51 
52 #define MPM_UNIT_TIME 1
53 #define MPM_UNIT_AREA 20
54 #define MPM_UNIT_EDGE 50
55 #define MPM_UNIT_REFS 100
56 
57 ////////////////////////////////////////////////////////////////////////
58 /// BASIC TYPES ///
59 ////////////////////////////////////////////////////////////////////////
60 
61 typedef struct Mpm_Cut_t_ Mpm_Cut_t; // 8 bytes + NLeaves * 4 bytes
62 struct Mpm_Cut_t_
63 {
64  int hNext; // next cut
65  unsigned iFunc : 25; // function
66  unsigned fCompl : 1;
67  unsigned fUseless : 1; // internal flag
68  unsigned nLeaves : 5; // leaves
69  int pLeaves[1]; // leaves
70 };
71 typedef struct Mpm_Uni_t_ Mpm_Uni_t; // 48 bytes
72 struct Mpm_Uni_t_
73 {
74  int mTime; // arrival time
75  int mArea; // area (flow)
76  int mEdge; // edge (flow)
77  int mAveRefs; // area references
78  word uSign; // cut signature
79  int Cost; // user cost
80  Mpm_Cut_t pCut; // new cut
81  int Data[MPM_VAR_MAX-1]; // padding
82 };
83 
84 typedef struct Mpm_Dsd_t_ Mpm_Dsd_t;
85 struct Mpm_Dsd_t_
86 {
87  int nVars; // support size
88  int nAnds; // the number of AND gates
89  int nClauses; // the number of CNF clauses
90  word uTruth; // truth table
91  char * pStr; // description
92 };
93 
94 typedef struct Mpm_Man_t_ Mpm_Man_t;
95 struct Mpm_Man_t_
96 {
97  Mig_Man_t * pMig; // AIG manager
98  Mpm_Par_t * pPars; // mapping parameters
99  // mapping parameters
100  int nLutSize; // LUT size
101  int nNumCuts; // cut count
102  int nTruWords; // words in the truth table
103  Mpm_LibLut_t * pLibLut; // LUT library
104  // mapping attributes
105  int fMainRun; // after preprocessing is finished
106  int GloRequired; // global arrival time
107  word GloArea; // total area
108  word GloEdge; // total edge
109  // cut management
110  Mmr_Step_t * pManCuts; // cut memory
111  // temporary cut storage
112  int nCutStore; // number of cuts in storage
113  Mpm_Uni_t * pCutStore[MPM_CUT_MAX+1]; // storage for cuts
114  Mpm_Uni_t pCutUnits[MPM_CUT_MAX+1]; // cut info units
115  Vec_Ptr_t vFreeUnits; // free cut info units
116  Vec_Ptr_t * vTemp; // storage for cuts
117  // cut comparison
118  int (* pCutCmp) (Mpm_Uni_t *, Mpm_Uni_t *);// procedure to compare cuts
119  // fanin cuts/signatures
120  int nCuts[3]; // fanin cut counts
121  Mpm_Cut_t * pCuts[3][MPM_CUT_MAX+1]; // fanin cuts
122  word pSigns[3][MPM_CUT_MAX+1]; // fanin cut signatures
123  // truth tables
124  Vec_Mem_t * vTtMem; // truth table memory and hash table
125  int funcCst0; // constant 0
126  int funcVar0; // variable 0
127  word Truth0[(1 << ((MPM_VAR_MAX)-6))];
128  word Truth1[(1 << ((MPM_VAR_MAX)-6))];
129  word TruthC[(1 << ((MPM_VAR_MAX)-6))];
130  word Truth[(1 << ((MPM_VAR_MAX)-6))];
131  // DSD
132  Mpm_Dsd_t * pDsd6; // NPN class information
133  Hsh_IntMan_t * pHash; // maps DSD functions into NPN classes
134  Vec_Int_t * vConfgRes; // configurations
135  Vec_Wrd_t * vPerm6; // permutations of DSD classes
136  char Perm6[720][6]; // permutations
137  Vec_Int_t * vMap2Perm; // maps number into its permutation
138  unsigned uPermMask[3];
139  unsigned uComplMask[3];
141  // mapping attributes
142  Vec_Int_t vCutBests; // cut best
143  Vec_Int_t vCutLists; // cut list
144  Vec_Int_t vMigRefs; // original references
145  Vec_Int_t vMapRefs; // exact mapping references
146  Vec_Int_t vEstRefs; // estimated mapping references
147  Vec_Int_t vRequireds; // required time
148  Vec_Int_t vTimes; // arrival time
149  Vec_Int_t vAreas; // area
150  Vec_Int_t vEdges; // edge
151  int nCountDsd[600];
152  int nNonDsd;
153  int nNoMatch;
154  // statistics
165 };
166 
167 ////////////////////////////////////////////////////////////////////////
168 /// MACRO DEFINITIONS ///
169 ////////////////////////////////////////////////////////////////////////
170 
171 static inline int Mpm_ObjCutBest( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntEntry(&p->vCutBests, Mig_ObjId(pObj)); }
172 static inline void Mpm_ObjSetCutBest( Mpm_Man_t * p, Mig_Obj_t * pObj, int i ) { Vec_IntWriteEntry(&p->vCutBests, Mig_ObjId(pObj), i); }
173 
174 static inline int Mpm_CutWordNum( int nLeaves ) { return ((sizeof(Mpm_Cut_t) + (nLeaves << 2)) >> 3); }
175 static inline Mpm_Cut_t * Mpm_CutFetch( Mpm_Man_t * p, int h ) { Mpm_Cut_t * pCut = (Mpm_Cut_t *)Mmr_StepEntry( p->pManCuts, h ); assert( Mpm_CutWordNum(pCut->nLeaves) == (h & p->pManCuts->uMask) ); return pCut; }
176 static inline Mpm_Cut_t * Mpm_ObjCutBestP( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Mpm_CutFetch( p, Mpm_ObjCutBest(p, pObj) ); }
177 
178 static inline int Mpm_ObjCutList( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntEntry(&p->vCutLists, Mig_ObjId(pObj)); }
179 static inline int * Mpm_ObjCutListP( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntEntryP(&p->vCutLists, Mig_ObjId(pObj)); }
180 static inline void Mpm_ObjSetCutList( Mpm_Man_t * p, Mig_Obj_t * pObj, int i ) { Vec_IntWriteEntry(&p->vCutLists, Mig_ObjId(pObj), i); }
181 
182 static inline int Mpm_CutLeafNum( Mpm_Cut_t * pCut ) { return pCut->nLeaves; }
183 static inline word * Mpm_CutTruth( Mpm_Man_t * p, int iFunc ) { return Vec_MemReadEntry(p->vTtMem, iFunc); }
184 
185 static inline int Mig_ObjMigRefNum( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntEntry(&p->vMigRefs, Mig_ObjId(pObj)); }
186 static inline int Mig_ObjMigRefDec( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntAddToEntry(&p->vMigRefs, Mig_ObjId(pObj), -1); }
187 
188 static inline void Mpm_ManCleanMapRefs( Mpm_Man_t * p ) { Vec_IntFill( &p->vMapRefs, Mig_ManObjNum(p->pMig), 0 ); }
189 static inline int Mpm_ObjMapRef( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntEntry(&p->vMapRefs, Mig_ObjId(pObj)); }
190 static inline void Mpm_ObjSetMapRef( Mpm_Man_t * p, Mig_Obj_t * pObj, int i ) { Vec_IntWriteEntry(&p->vMapRefs, Mig_ObjId(pObj), i); }
191 
192 static inline int Mpm_ObjEstRef( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntEntry(&p->vEstRefs, Mig_ObjId(pObj)); }
193 static inline void Mpm_ObjSetEstRef( Mpm_Man_t * p, Mig_Obj_t * pObj, int i ) { Vec_IntWriteEntry(&p->vEstRefs, Mig_ObjId(pObj), i); }
194 
196 static inline int Mpm_ObjRequired( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntEntry(&p->vRequireds, Mig_ObjId(pObj)); }
197 static inline void Mpm_ObjSetRequired( Mpm_Man_t * p, Mig_Obj_t * pObj, int i ) { Vec_IntWriteEntry(&p->vRequireds, Mig_ObjId(pObj), i); }
198 
199 static inline int Mpm_ObjTime( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntEntry(&p->vTimes, Mig_ObjId(pObj)); }
200 static inline void Mpm_ObjSetTime( Mpm_Man_t * p, Mig_Obj_t * pObj, int i ) { Vec_IntWriteEntry(&p->vTimes, Mig_ObjId(pObj), i); }
201 
202 static inline int Mpm_ObjArea( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntEntry(&p->vAreas, Mig_ObjId(pObj)); }
203 static inline void Mpm_ObjSetArea( Mpm_Man_t * p, Mig_Obj_t * pObj, int i ) { Vec_IntWriteEntry(&p->vAreas, Mig_ObjId(pObj), i); }
204 
205 static inline int Mpm_ObjEdge( Mpm_Man_t * p, Mig_Obj_t * pObj ) { return Vec_IntEntry(&p->vEdges, Mig_ObjId(pObj)); }
206 static inline void Mpm_ObjSetEdge( Mpm_Man_t * p, Mig_Obj_t * pObj, int i ) { Vec_IntWriteEntry(&p->vEdges, Mig_ObjId(pObj), i); }
207 
208 static inline void Mpm_VarsClear( int * V2P, int * P2V, int nVars ) { int i; for ( i = 0; i < nVars; i++ ) V2P[i] = P2V[i] = i; }
209 static inline void Mpm_VarsSwap( int * V2P, int * P2V, int iVar, int jVar ) { V2P[P2V[iVar]] = jVar; V2P[P2V[jVar]] = iVar; P2V[iVar] ^= P2V[jVar]; P2V[jVar] ^= P2V[iVar]; P2V[iVar] ^= P2V[jVar]; }
210 
211 // iterators over object cuts
212 #define Mpm_ObjForEachCut( p, pObj, hCut, pCut ) \
213  for ( hCut = Mpm_ObjCutList(p, pObj); hCut && (pCut = Mpm_CutFetch(p, hCut)); hCut = pCut->hNext )
214 #define Mpm_ObjForEachCutSafe( p, pObj, hCut, pCut, hNext ) \
215  for ( hCut = Mpm_ObjCutList(p, pObj); hCut && (pCut = Mpm_CutFetch(p, hCut)) && ((hNext = pCut->hNext), 1); hCut = hNext )
216 
217 // iterators over cut leaves
218 #define Mpm_CutForEachLeafId( pCut, iLeafId, i ) \
219  for ( i = 0; i < (int)pCut->nLeaves && ((iLeafId = Abc_Lit2Var(pCut->pLeaves[i])), 1); i++ )
220 #define Mpm_CutForEachLeafLit( pCut, iLeafLit, i ) \
221  for ( i = 0; i < (int)pCut->nLeaves && ((iLeafLit = pCut->pLeaves[i]), 1); i++ )
222 #define Mpm_CutForEachLeaf( p, pCut, pLeaf, i ) \
223  for ( i = 0; i < (int)pCut->nLeaves && (pLeaf = Mig_ManObj(p, Abc_Lit2Var(pCut->pLeaves[i]))); i++ )
224 
225 ////////////////////////////////////////////////////////////////////////
226 /// FUNCTION DECLARATIONS ///
227 ////////////////////////////////////////////////////////////////////////
228 
229 /*=== mpmAbc.c ===========================================================*/
230 extern Mig_Man_t * Mig_ManCreate( void * pGia );
231 extern void * Mpm_ManFromIfLogic( Mpm_Man_t * pMan );
232 /*=== mpmMan.c ===========================================================*/
233 extern Mpm_Man_t * Mpm_ManStart( Mig_Man_t * pMig, Mpm_Par_t * pPars );
234 extern void Mpm_ManStop( Mpm_Man_t * p );
235 extern void Mpm_ManPrintStatsInit( Mpm_Man_t * p );
236 extern void Mpm_ManPrintStats( Mpm_Man_t * p );
237 /*=== mpmDsd.c ===========================================================*/
238 extern void Mpm_ManPrintDsdStats( Mpm_Man_t * p );
239 extern void Mpm_ManPrintPerm( unsigned s );
240 extern void Mpm_ManPrecomputePerms( Mpm_Man_t * p );
241 extern word Mpm_CutTruthFromDsd( Mpm_Man_t * pMan, Mpm_Cut_t * pCut, int iDsdLit );
242 extern int Mpm_CutCheckDsd6( Mpm_Man_t * p, word t );
243 extern int Mpm_CutComputeDsd6( Mpm_Man_t * p, Mpm_Cut_t * pCut, Mpm_Cut_t * pCut0, Mpm_Cut_t * pCut1, Mpm_Cut_t * pCutC, int fCompl0, int fCompl1, int fComplC, int Type );
244 /*=== mpmGates.c ===========================================================*/
245 extern Vec_Wec_t * Mpm_ManFindDsdMatches( Mpm_Man_t * p, void * pScl );
246 /*=== mpmLib.c ===========================================================*/
247 extern Mpm_LibLut_t * Mpm_LibLutSetSimple( int nLutSize );
248 extern void Mpm_LibLutFree( Mpm_LibLut_t * pLib );
249 /*=== mpmMap.c ===========================================================*/
250 extern void Mpm_CutPrint( Mpm_Cut_t * pCut );
251 extern void Mpm_ManPrepare( Mpm_Man_t * p );
252 extern void Mpm_ManPerform( Mpm_Man_t * p );
253 /*=== mpmTruth.c ===========================================================*/
254 extern int Mpm_CutComputeTruth( Mpm_Man_t * p, Mpm_Cut_t * pCut, Mpm_Cut_t * pCut0, Mpm_Cut_t * pCut1, Mpm_Cut_t * pCutC, int fCompl0, int fCompl1, int fComplC, int Type );
255 
256 extern void Kit_DsdPrintFromTruth( unsigned * pTruth, int nVars );
257 
259 
260 #endif
261 
262 ////////////////////////////////////////////////////////////////////////
263 /// END OF FILE ///
264 ////////////////////////////////////////////////////////////////////////
265 
word GloArea
Definition: mpmInt.h:107
word Mpm_CutTruthFromDsd(Mpm_Man_t *pMan, Mpm_Cut_t *pCut, int iDsdLit)
Definition: mpmDsd.c:883
static int Mig_ObjMigRefDec(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:186
void Mpm_CutPrint(Mpm_Cut_t *pCut)
Definition: mpmMap.c:103
static int Mig_ManObjNum(Mig_Man_t *p)
Definition: mpmMig.h:109
Mpm_Par_t * pPars
Definition: mpmInt.h:98
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition: vecPtr.h:42
int funcCst0
Definition: mpmInt.h:125
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
Definition: vecWec.h:42
static void Mpm_ObjSetEstRef(Mpm_Man_t *p, Mig_Obj_t *pObj, int i)
Definition: mpmInt.h:193
static Llb_Mgr_t * p
Definition: llb3Image.c:950
void Mpm_LibLutFree(Mpm_LibLut_t *pLib)
Definition: mpmLib.c:60
Vec_Ptr_t * vTemp
Definition: mpmInt.h:116
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition: bblif.c:37
static int Mpm_CutLeafNum(Mpm_Cut_t *pCut)
Definition: mpmInt.h:182
void Mpm_ManPrepare(Mpm_Man_t *p)
Definition: mpmMap.c:794
Vec_Int_t vRequireds
Definition: mpmInt.h:147
void Mpm_ManPrintPerm(unsigned s)
Definition: mpmDsd.c:736
void Mpm_ManPrintDsdStats(Mpm_Man_t *p)
Definition: mpmDsd.c:665
Vec_Int_t vMapRefs
Definition: mpmInt.h:145
int Data[MPM_VAR_MAX-1]
Definition: mpmInt.h:81
int Mpm_CutComputeTruth(Mpm_Man_t *p, Mpm_Cut_t *pCut, Mpm_Cut_t *pCut0, Mpm_Cut_t *pCut1, Mpm_Cut_t *pCutC, int fCompl0, int fCompl1, int fComplC, int Type)
Definition: mpmTruth.c:215
int nNonDsd
Definition: mpmInt.h:152
static int Mpm_ObjCutBest(Mpm_Man_t *p, Mig_Obj_t *pObj)
MACRO DEFINITIONS ///.
Definition: mpmInt.h:171
unsigned fCompl
Definition: mpmInt.h:66
int nCutsMergedAll
Definition: mpmInt.h:156
typedefABC_NAMESPACE_IMPL_START struct Vec_Mem_t_ Vec_Mem_t
DECLARATIONS ///.
Definition: utilMem.c:35
static int Mpm_ObjCutList(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:178
int nVars
Definition: mpmInt.h:87
int nCuts[3]
Definition: mpmInt.h:120
static void Mpm_ObjSetCutBest(Mpm_Man_t *p, Mig_Obj_t *pObj, int i)
Definition: mpmInt.h:172
Vec_Mem_t * vTtMem
Definition: mpmInt.h:124
void Mpm_ManPrecomputePerms(Mpm_Man_t *p)
Definition: mpmDsd.c:755
char * pStr
Definition: mpmInt.h:91
int nSmallSupp
Definition: mpmInt.h:157
abctime timeDerive
Definition: mpmInt.h:158
int fMainRun
Definition: mpmInt.h:105
Vec_Wrd_t * vPerm6
Definition: mpmInt.h:135
static int Mig_ObjId(Mig_Obj_t *p)
Definition: mpmMig.h:146
int nClauses
Definition: mpmInt.h:89
int mTime
Definition: mpmInt.h:74
word Truth0[(1<< ((MPM_VAR_MAX)-6))]
Definition: mpmInt.h:127
int nCutStore
Definition: mpmInt.h:112
int(* pCutCmp)(Mpm_Uni_t *, Mpm_Uni_t *)
Definition: mpmInt.h:118
static int * Mpm_ObjCutListP(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:179
Mpm_Uni_t * pCutStore[MPM_CUT_MAX+1]
Definition: mpmInt.h:113
static Mpm_Cut_t * Mpm_CutFetch(Mpm_Man_t *p, int h)
Definition: mpmInt.h:175
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
Definition: bblif.c:285
static void Mpm_ObjSetMapRef(Mpm_Man_t *p, Mig_Obj_t *pObj, int i)
Definition: mpmInt.h:190
Mpm_LibLut_t * pLibLut
Definition: mpmInt.h:103
unsigned fUseless
Definition: mpmInt.h:67
Mig_Man_t * Mig_ManCreate(void *pGia)
FUNCTION DECLARATIONS ///.
Definition: mpmAbc.c:83
static void Mpm_ObjSetTime(Mpm_Man_t *p, Mig_Obj_t *pObj, int i)
Definition: mpmInt.h:200
Vec_Int_t vCutBests
Definition: mpmInt.h:142
Vec_Wec_t * vNpnConfigs
Definition: mpmInt.h:140
static int Mpm_ObjTime(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:199
void Kit_DsdPrintFromTruth(unsigned *pTruth, int nVars)
Definition: kitDsd.c:490
static void Vec_IntAddToEntry(Vec_Int_t *p, int i, int Addition)
Definition: bblif.c:302
Mpm_Cut_t * pCuts[3][MPM_CUT_MAX+1]
Definition: mpmInt.h:121
int mArea
Definition: mpmInt.h:75
word GloEdge
Definition: mpmInt.h:108
int nTruWords
Definition: mpmInt.h:102
static void Mpm_ManCleanRequired(Mpm_Man_t *p)
Definition: mpmInt.h:195
static int Vec_IntEntry(Vec_Int_t *p, int i)
Definition: bblif.c:268
word TruthC[(1<< ((MPM_VAR_MAX)-6))]
Definition: mpmInt.h:129
unsigned __int64 word
DECLARATIONS ///.
Definition: kitPerm.c:36
static void Vec_IntFill(Vec_Int_t *p, int nSize, int Fill)
Definition: bblif.c:356
abctime timeCompare
Definition: mpmInt.h:161
static word * Mmr_StepEntry(Mmr_Step_t *p, int h)
Definition: mem2.h:236
int nCountDsd[600]
Definition: mpmInt.h:151
Hsh_IntMan_t * pHash
Definition: mpmInt.h:133
Vec_Int_t vTimes
Definition: mpmInt.h:148
Vec_Int_t vAreas
Definition: mpmInt.h:149
word Truth[(1<< ((MPM_VAR_MAX)-6))]
Definition: mpmInt.h:130
Vec_Wec_t * Mpm_ManFindDsdMatches(Mpm_Man_t *p, void *pScl)
DECLARATIONS ///.
Definition: mpmGates.c:49
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Definition: abc_global.h:105
static int Mpm_ObjRequired(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:196
void Mpm_ManStop(Mpm_Man_t *p)
Definition: mpmMan.c:111
int Mpm_CutComputeDsd6(Mpm_Man_t *p, Mpm_Cut_t *pCut, Mpm_Cut_t *pCut0, Mpm_Cut_t *pCut1, Mpm_Cut_t *pCutC, int fCompl0, int fCompl1, int fComplC, int Type)
Definition: mpmDsd.c:930
int nAnds
Definition: mpmInt.h:88
void Mpm_ManPrintStats(Mpm_Man_t *p)
Definition: mpmMan.c:173
Definition: mpm.h:57
static word * Mpm_CutTruth(Mpm_Man_t *p, int iFunc)
Definition: mpmInt.h:183
int hNext
Definition: mpmInt.h:64
#define ABC_NAMESPACE_HEADER_END
Definition: abc_global.h:106
Vec_Int_t vCutLists
Definition: mpmInt.h:143
unsigned uComplMask[3]
Definition: mpmInt.h:139
int nCutsMerged
Definition: mpmInt.h:155
abctime timeStore
Definition: mpmInt.h:162
static void Mpm_ObjSetEdge(Mpm_Man_t *p, Mig_Obj_t *pObj, int i)
Definition: mpmInt.h:206
unsigned uPermMask[3]
Definition: mpmInt.h:138
int nNumCuts
Definition: mpmInt.h:101
static void Mpm_ManCleanMapRefs(Mpm_Man_t *p)
Definition: mpmInt.h:188
Mpm_Man_t * Mpm_ManStart(Mig_Man_t *pMig, Mpm_Par_t *pPars)
DECLARATIONS ///.
Definition: mpmMan.c:45
char Perm6[720][6]
Definition: mpmInt.h:136
abctime timeTotal
Definition: mpmInt.h:164
static void Mpm_ObjSetArea(Mpm_Man_t *p, Mig_Obj_t *pObj, int i)
Definition: mpmInt.h:203
Vec_Int_t * vMap2Perm
Definition: mpmInt.h:137
Vec_Int_t vEdges
Definition: mpmInt.h:150
#define MPM_CUT_MAX
INCLUDES ///.
Definition: mpmInt.h:50
static int Mpm_ObjEstRef(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:192
word uTruth
Definition: mpmInt.h:90
word uSign
Definition: mpmInt.h:78
static int Mpm_ObjArea(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:202
Mpm_LibLut_t * Mpm_LibLutSetSimple(int nLutSize)
DECLARATIONS ///.
Definition: mpmLib.c:45
abctime timeMerge
Definition: mpmInt.h:159
static void Mpm_ObjSetRequired(Mpm_Man_t *p, Mig_Obj_t *pObj, int i)
Definition: mpmInt.h:197
int Cost
Definition: mpmInt.h:79
word pSigns[3][MPM_CUT_MAX+1]
Definition: mpmInt.h:122
Mig_Man_t * pMig
Definition: mpmInt.h:97
static int Mpm_ObjMapRef(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:189
abctime timeEval
Definition: mpmInt.h:160
static int Mig_ObjMigRefNum(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:185
void Mpm_ManPerform(Mpm_Man_t *p)
Definition: mpmMap.c:833
int funcVar0
Definition: mpmInt.h:126
word Truth1[(1<< ((MPM_VAR_MAX)-6))]
Definition: mpmInt.h:128
#define MPM_VAR_MAX
INCLUDES ///.
Definition: mpm.h:40
Mmr_Step_t * pManCuts
Definition: mpmInt.h:110
Vec_Int_t vEstRefs
Definition: mpmInt.h:146
Vec_Int_t vMigRefs
Definition: mpmInt.h:144
Mpm_Cut_t pCut
Definition: mpmInt.h:80
static Mpm_Cut_t * Mpm_ObjCutBestP(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:176
int mAveRefs
Definition: mpmInt.h:77
#define ABC_INFINITY
MACRO DEFINITIONS ///.
Definition: abc_global.h:216
int mEdge
Definition: mpmInt.h:76
int pLeaves[1]
Definition: mpmInt.h:69
#define assert(ex)
Definition: util_old.h:213
static void Mpm_ObjSetCutList(Mpm_Man_t *p, Mig_Obj_t *pObj, int i)
Definition: mpmInt.h:180
static int * Vec_IntEntryP(Vec_Int_t *p, int i)
Definition: vecInt.h:417
Vec_Ptr_t vFreeUnits
Definition: mpmInt.h:115
Mpm_Uni_t pCutUnits[MPM_CUT_MAX+1]
Definition: mpmInt.h:114
int GloRequired
Definition: mpmInt.h:106
void * Mpm_ManFromIfLogic(Mpm_Man_t *pMan)
Definition: mpmAbc.c:213
unsigned nLeaves
Definition: mpmInt.h:68
static word * Vec_MemReadEntry(Vec_Mem_t *p, int i)
Definition: vecMem.h:191
int nLutSize
Definition: mpmInt.h:100
void Mpm_ManPrintStatsInit(Mpm_Man_t *p)
Definition: mpmMan.c:166
ABC_INT64_T abctime
Definition: abc_global.h:278
static int Mpm_ObjEdge(Mpm_Man_t *p, Mig_Obj_t *pObj)
Definition: mpmInt.h:205
unsigned iFunc
Definition: mpmInt.h:65
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.
Definition: vecWrd.h:42
int Mpm_CutCheckDsd6(Mpm_Man_t *p, word t)
Definition: mpmDsd.c:905
Vec_Int_t * vConfgRes
Definition: mpmInt.h:134
Mpm_Dsd_t * pDsd6
Definition: mpmInt.h:132
int uMask
Definition: mem2.h:61
static int Mpm_CutWordNum(int nLeaves)
Definition: mpmInt.h:174
static void Mpm_VarsSwap(int *V2P, int *P2V, int iVar, int jVar)
Definition: mpmInt.h:209
int nNoMatch
Definition: mpmInt.h:153
static void Mpm_VarsClear(int *V2P, int *P2V, int nVars)
Definition: mpmInt.h:208
abctime timeOther
Definition: mpmInt.h:163