ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
amapInt.h
Go to the documentation of this file.
1
20
21#ifndef ABC__map__amap__amapInt_h
22#define ABC__map__amap__amapInt_h
23
24
28
29#include "misc/extra/extra.h"
30#include "aig/aig/aig.h"
31#include "amap.h"
32
36
37
38
40
41
42// the largest gate size in the library
43// (gates above this size will be ignored)
44#define AMAP_MAXINS 15
45
46#define AMAP_STRING_CONST0 "CONST0"
47#define AMAP_STRING_CONST1 "CONST1"
48
49// object types
50typedef enum {
51 AMAP_OBJ_NONE, // 0: non-existent object
52 AMAP_OBJ_CONST1, // 1: constant 1
53 AMAP_OBJ_PI, // 2: primary input
54 AMAP_OBJ_PO, // 3: primary output
55 AMAP_OBJ_AND, // 4: AND node
56 AMAP_OBJ_XOR, // 5: XOR node
57 AMAP_OBJ_MUX, // 6: MUX node
58 AMAP_OBJ_VOID // 7: unused object
60
64
65typedef struct Amap_Pin_t_ Amap_Pin_t;
66typedef struct Amap_Gat_t_ Amap_Gat_t;
67typedef struct Amap_Nod_t_ Amap_Nod_t;
68typedef struct Amap_Set_t_ Amap_Set_t;
69
70typedef struct Amap_Man_t_ Amap_Man_t;
71typedef struct Amap_Obj_t_ Amap_Obj_t;
72typedef struct Amap_Cut_t_ Amap_Cut_t;
73typedef struct Amap_Mat_t_ Amap_Mat_t;
74
114{
115 char * pName; // library name
116 Vec_Ptr_t * vGates; // represenation of gates
117 Vec_Ptr_t * vSorted; // gates sorted for area-only mapping
118 Vec_Ptr_t * vSelect; // gates selected for area-only mapping
119 Amap_Gat_t * pGate0; // the constant zero gate
120 Amap_Gat_t * pGate1; // the constant one gate
121 Amap_Gat_t * pGateBuf; // the buffer
122 Amap_Gat_t * pGateInv; // the inverter
123 Aig_MmFlex_t * pMemGates; // memory manager for objects
124 int fHasXor; // XOR/NXOR gates are present
125 int fHasMux; // MUX/NMUX gates are present
126 // structural representation
127 int fVerbose; // enable detailed statistics
128 Amap_Nod_t * pNodes; // representation nodes
129 int nNodes; // the number of nodes used
130 int nNodesAlloc; // the number of nodes allocated
131 Vec_Ptr_t * vRules; // the rule of AND gate
132 Vec_Ptr_t * vRulesX; // the rule of XOR gate
133 Vec_Int_t * vRules3; // the rule of MUX gate
134 int ** pRules; // simplified representation
135 int ** pRulesX; // simplified representation
136 Aig_MmFlex_t * pMemSet; // memory manager for sets
137 int nSets; // the number of sets created
138};
152{
153 Amap_Lib_t * pLib; // library
154 Amap_Gat_t * pTwin; // twin gate
155 char * pName; // the name of the gate
156 char * pOutName; // name of the output
157 double dArea; // the area of the gate
158 char * pForm; // the formula describing functionality
159 unsigned * pFunc; // truth table
160 unsigned Id : 23; // unique number of the gate
161 unsigned fMux : 1; // denotes MUX-gates
162 unsigned nPins : 8; // number of inputs
163 Amap_Pin_t Pins[0]; // description of inputs
164};
166{
168 unsigned iGate : 16;
169 unsigned fInv : 1;
170 unsigned nIns : 15;
171 char Ins[AMAP_MAXINS];// mapping from gate inputs into fanins
172};
174{
175 unsigned Id : 16; // ID of the node
176 unsigned nSuppSize: 8; // support size
177 unsigned Type : 8; // the type of node
178 short iFan0; // fanin0
179 short iFan1; // fanin1
180 short iFan2; // fanin2
181 short Unused; //
182 Amap_Set_t * pSets; // implementable gates
183};
185{
186 unsigned iMat : 16;
187 unsigned fInv : 1;
188 unsigned nFans : 15;
189 int Fans[0];
190};
192{
193 Amap_Cut_t * pCut; // the cut
194 Amap_Set_t * pSet; // the set
195 float Area; // area flow / exact area of the node
196 float AveFan; // edge flow of the node
197 float Delay; // delay of the node
198};
200{
201 unsigned Type : 3;
202 unsigned Id : 29;
203 unsigned IdPio : 29;
204 unsigned fPhase : 1;
205 unsigned fRepr : 1;
206 unsigned fPolar : 1; // pCutBest->fInv ^ pSetBest->fInv
207 unsigned Level;
208 unsigned nCuts;
209 int nRefs;
210 int Equiv;
211 int Fan[3];
212 union {
213 void * pData;
214 int iData;
215 };
216 // match of the node
217 float EstRefs; // the number of estimated fanouts
218 int nFouts[2]; // the number of refs in each polarity
219 Amap_Mat_t Best; // the best match of the node
220};
221
222static inline Amap_Obj_t * Amap_Regular( Amap_Obj_t * p ) { return (Amap_Obj_t *)((ABC_PTRUINT_T)(p) & ~01); }
223static inline Amap_Obj_t * Amap_Not( Amap_Obj_t * p ) { return (Amap_Obj_t *)((ABC_PTRUINT_T)(p) ^ 01); }
224static inline Amap_Obj_t * Amap_NotCond( Amap_Obj_t * p, int c ) { return (Amap_Obj_t *)((ABC_PTRUINT_T)(p) ^ (c)); }
225static inline int Amap_IsComplement( Amap_Obj_t * p ) { return (int )(((ABC_PTRUINT_T)p) & 01); }
226
227static inline int Amap_ManPiNum( Amap_Man_t * p ) { return p->nObjs[AMAP_OBJ_PI]; }
228static inline int Amap_ManPoNum( Amap_Man_t * p ) { return p->nObjs[AMAP_OBJ_PO]; }
229static inline int Amap_ManAndNum( Amap_Man_t * p ) { return p->nObjs[AMAP_OBJ_AND]; }
230static inline int Amap_ManXorNum( Amap_Man_t * p ) { return p->nObjs[AMAP_OBJ_XOR]; }
231static inline int Amap_ManMuxNum( Amap_Man_t * p ) { return p->nObjs[AMAP_OBJ_MUX]; }
232static inline int Amap_ManObjNum( Amap_Man_t * p ) { return Vec_PtrSize(p->vObjs); }
233static inline int Amap_ManNodeNum( Amap_Man_t * p ) { return p->nObjs[AMAP_OBJ_AND] + p->nObjs[AMAP_OBJ_XOR] + p->nObjs[AMAP_OBJ_MUX]; }
234
235static inline Amap_Obj_t * Amap_ManConst1( Amap_Man_t * p ) { return p->pConst1; }
236static inline Amap_Obj_t * Amap_ManPi( Amap_Man_t * p, int i ) { return (Amap_Obj_t *)Vec_PtrEntry( p->vPis, i ); }
237static inline Amap_Obj_t * Amap_ManPo( Amap_Man_t * p, int i ) { return (Amap_Obj_t *)Vec_PtrEntry( p->vPos, i ); }
238static inline Amap_Obj_t * Amap_ManObj( Amap_Man_t * p, int i ) { return (Amap_Obj_t *)Vec_PtrEntry( p->vObjs, i ); }
239
240static inline int Amap_ObjIsConst1( Amap_Obj_t * pObj ) { return pObj->Type == AMAP_OBJ_CONST1; }
241static inline int Amap_ObjIsPi( Amap_Obj_t * pObj ) { return pObj->Type == AMAP_OBJ_PI; }
242static inline int Amap_ObjIsPo( Amap_Obj_t * pObj ) { return pObj->Type == AMAP_OBJ_PO; }
243static inline int Amap_ObjIsAnd( Amap_Obj_t * pObj ) { return pObj->Type == AMAP_OBJ_AND; }
244static inline int Amap_ObjIsXor( Amap_Obj_t * pObj ) { return pObj->Type == AMAP_OBJ_XOR; }
245static inline int Amap_ObjIsMux( Amap_Obj_t * pObj ) { return pObj->Type == AMAP_OBJ_MUX; }
246static inline int Amap_ObjIsNode( Amap_Obj_t * pObj ) { return pObj->Type == AMAP_OBJ_AND || pObj->Type == AMAP_OBJ_XOR || pObj->Type == AMAP_OBJ_MUX; }
247
248static inline int Amap_ObjToLit( Amap_Obj_t * pObj ) { return Abc_Var2Lit( Amap_Regular(pObj)->Id, Amap_IsComplement(pObj) ); }
249static inline Amap_Obj_t * Amap_ObjFanin0( Amap_Man_t * p, Amap_Obj_t * pObj ) { return Amap_ManObj(p, Abc_Lit2Var(pObj->Fan[0])); }
250static inline Amap_Obj_t * Amap_ObjFanin1( Amap_Man_t * p, Amap_Obj_t * pObj ) { return Amap_ManObj(p, Abc_Lit2Var(pObj->Fan[1])); }
251static inline Amap_Obj_t * Amap_ObjFanin2( Amap_Man_t * p, Amap_Obj_t * pObj ) { return Amap_ManObj(p, Abc_Lit2Var(pObj->Fan[2])); }
252static inline int Amap_ObjFaninC0( Amap_Obj_t * pObj ) { return Abc_LitIsCompl(pObj->Fan[0]); }
253static inline int Amap_ObjFaninC1( Amap_Obj_t * pObj ) { return Abc_LitIsCompl(pObj->Fan[1]); }
254static inline int Amap_ObjFaninC2( Amap_Obj_t * pObj ) { return Abc_LitIsCompl(pObj->Fan[2]); }
255static inline void * Amap_ObjCopy( Amap_Obj_t * pObj ) { return pObj->pData; }
256static inline int Amap_ObjLevel( Amap_Obj_t * pObj ) { return pObj->Level; }
257static inline void Amap_ObjSetLevel( Amap_Obj_t * pObj, int Level ) { pObj->Level = Level; }
258static inline void Amap_ObjSetCopy( Amap_Obj_t * pObj, void * pCopy ) { pObj->pData = pCopy; }
259static inline Amap_Obj_t * Amap_ObjChoice( Amap_Man_t * p, Amap_Obj_t * pObj ) { return pObj->Equiv? Amap_ManObj(p, pObj->Equiv) : NULL; }
260static inline void Amap_ObjSetChoice( Amap_Obj_t * pObj, Amap_Obj_t * pEqu){ assert(pObj->Equiv==0); if (pObj->Id != pEqu->Id) pObj->Equiv = pEqu->Id; }
261static inline int Amap_ObjPhaseReal( Amap_Obj_t * pObj ) { return Amap_Regular(pObj)->fPhase ^ Amap_IsComplement(pObj); }
262static inline int Amap_ObjRefsTotal( Amap_Obj_t * pObj ) { return pObj->nFouts[0] + pObj->nFouts[1]; }
263
264static inline Amap_Gat_t * Amap_LibGate( Amap_Lib_t * p, int i ) { return (Amap_Gat_t *)Vec_PtrEntry(p->vGates, i); }
265static inline Amap_Nod_t * Amap_LibNod( Amap_Lib_t * p, int i ) { return p->pNodes + i; }
266
267// returns pointer to the next cut (internal cuts only)
268static inline Amap_Cut_t * Amap_ManCutNext( Amap_Cut_t * pCut )
269{ return (Amap_Cut_t *)(((int *)pCut)+pCut->nFans+1); }
270// returns pointer to the place of the next cut (temporary cuts only)
271static inline Amap_Cut_t ** Amap_ManCutNextP( Amap_Cut_t * pCut )
272{ return (Amap_Cut_t **)(((int *)pCut)+pCut->nFans+1); }
273
274extern void Kit_DsdPrintFromTruth( unsigned * pTruth, int nVars );
275
279
280// iterator over the primary inputs
281#define Amap_ManForEachPi( p, pObj, i ) \
282 Vec_PtrForEachEntry( Amap_Obj_t *, p->vPis, pObj, i )
283// iterator over the primary outputs
284#define Amap_ManForEachPo( p, pObj, i ) \
285 Vec_PtrForEachEntry( Amap_Obj_t *, p->vPos, pObj, i )
286// iterator over all objects, including those currently not used
287#define Amap_ManForEachObj( p, pObj, i ) \
288 Vec_PtrForEachEntry( Amap_Obj_t *, p->vObjs, pObj, i ) if ( (pObj) == NULL ) {} else
289// iterator over all nodes
290#define Amap_ManForEachNode( p, pObj, i ) \
291 Vec_PtrForEachEntry( Amap_Obj_t *, p->vObjs, pObj, i ) if ( (pObj) == NULL || !Amap_ObjIsNode(pObj) ) {} else
292
293// iterator through all gates of the library
294#define Amap_LibForEachGate( pLib, pGate, i ) \
295 Vec_PtrForEachEntry( Amap_Gat_t *, pLib->vGates, pGate, i )
296// iterator through all pins of the gate
297#define Amap_GateForEachPin( pGate, pPin ) \
298 for ( pPin = pGate->Pins; pPin < pGate->Pins + pGate->nPins; pPin++ )
299
300// iterator through all cuts of the node
301#define Amap_NodeForEachCut( pNode, pCut, i ) \
302 for ( i = 0, pCut = (Amap_Cut_t *)pNode->pData; i < (int)pNode->nCuts; \
303 i++, pCut = Amap_ManCutNext(pCut) )
304
305// iterator through all sets of one library node
306#define Amap_LibNodeForEachSet( pNod, pSet ) \
307 for ( pSet = pNod->pSets; pSet; pSet = pSet->pNext )
308
309// iterates through each fanin of the match
310#define Amap_MatchForEachFaninCompl( p, pM, pFanin, fCompl, i ) \
311 for ( i = 0; i < (int)(pM)->pCut->nFans && \
312 ((pFanin = Amap_ManObj((p), Abc_Lit2Var((pM)->pCut->Fans[Abc_Lit2Var((pM)->pSet->Ins[i])]))), 1) && \
313 ((fCompl = Abc_LitIsCompl((pM)->pSet->Ins[i]) ^ Abc_LitIsCompl((pM)->pCut->Fans[Abc_Lit2Var((pM)->pSet->Ins[i])])), 1); \
314 i++ )
315
316// iterates through each fanin of the match
317#define Amap_MatchForEachFanin( p, pM, pFanin, i ) \
318 for ( i = 0; i < (int)(pM)->pCut->nFans && \
319 ((pFanin = Amap_ManObj((p), Abc_Lit2Var((pM)->pCut->Fans[Abc_Lit2Var((pM)->pSet->Ins[i])]))), 1); \
320 i++ )
321
325
326/*=== amapCore.c ==========================================================*/
327/*=== amapGraph.c ==========================================================*/
329extern Amap_Obj_t * Amap_ManCreatePo( Amap_Man_t * p, Amap_Obj_t * pFan0 );
330extern Amap_Obj_t * Amap_ManCreateAnd( Amap_Man_t * p, Amap_Obj_t * pFan0, Amap_Obj_t * pFan1 );
331extern Amap_Obj_t * Amap_ManCreateXor( Amap_Man_t * p, Amap_Obj_t * pFan0, Amap_Obj_t * pFan1 );
332extern Amap_Obj_t * Amap_ManCreateMux( Amap_Man_t * p, Amap_Obj_t * pFanC, Amap_Obj_t * pFan1, Amap_Obj_t * pFan0 );
333extern void Amap_ManCreateChoice( Amap_Man_t * p, Amap_Obj_t * pObj );
334extern void Amap_ManCreate( Amap_Man_t * p, Aig_Man_t * pAig );
335/*=== amapLib.c ==========================================================*/
336extern Amap_Lib_t * Amap_LibAlloc();
337extern int Amap_LibNumPinsMax( Amap_Lib_t * p );
338extern void Amap_LibWrite( FILE * pFile, Amap_Lib_t * pLib, int fPrintDsd );
339extern Vec_Ptr_t * Amap_LibSelectGates( Amap_Lib_t * p, int fVerbose );
340/*=== amapMan.c ==========================================================*/
341extern Amap_Man_t * Amap_ManStart( int nNodes );
342extern void Amap_ManStop( Amap_Man_t * p );
343/*=== amapMatch.c ==========================================================*/
344extern void Amap_ManMap( Amap_Man_t * p );
345/*=== amapMerge.c ==========================================================*/
346extern void Amap_ManMerge( Amap_Man_t * p );
347/*=== amapOutput.c ==========================================================*/
349/*=== amapParse.c ==========================================================*/
350extern int Amap_LibParseEquations( Amap_Lib_t * p, int fVerbose );
351/*=== amapPerm.c ==========================================================*/
352/*=== amapRead.c ==========================================================*/
353extern Amap_Lib_t * Amap_LibReadBuffer( char * pBuffer, int fVerbose );
354extern Amap_Lib_t * Amap_LibReadFile( char * pFileName, int fVerbose );
355/*=== amapRule.c ==========================================================*/
356extern short * Amap_LibTableFindNode( Amap_Lib_t * p, int iFan0, int iFan1, int fXor );
357extern void Amap_LibCreateRules( Amap_Lib_t * p, int fVeryVerbose );
358/*=== amapUniq.c ==========================================================*/
359extern int Amap_LibFindNode( Amap_Lib_t * pLib, int iFan0, int iFan1, int fXor );
360extern int Amap_LibFindMux( Amap_Lib_t * p, int iFan0, int iFan1, int iFan2 );
361extern int Amap_LibCreateVar( Amap_Lib_t * p );
362extern int Amap_LibCreateNode( Amap_Lib_t * p, int iFan0, int iFan1, int fXor );
363extern int Amap_LibCreateMux( Amap_Lib_t * p, int iFan0, int iFan1, int iFan2 );
364extern int ** Amap_LibLookupTableAlloc( Vec_Ptr_t * vVec, int fVerbose );
365
366
367
369
370
371
372#endif
373
377
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
struct Aig_MmFlex_t_ Aig_MmFlex_t
Definition aig.h:53
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
Definition aig.h:50
struct Aig_MmFixed_t_ Aig_MmFixed_t
Definition aig.h:52
struct Amap_Obj_t_ Amap_Obj_t
Definition amapInt.h:71
Amap_Type_t
Definition amapInt.h:50
@ AMAP_OBJ_NONE
Definition amapInt.h:51
@ AMAP_OBJ_VOID
Definition amapInt.h:58
@ AMAP_OBJ_XOR
Definition amapInt.h:56
@ AMAP_OBJ_AND
Definition amapInt.h:55
@ AMAP_OBJ_CONST1
Definition amapInt.h:52
@ AMAP_OBJ_PO
Definition amapInt.h:54
@ AMAP_OBJ_PI
Definition amapInt.h:53
@ AMAP_OBJ_MUX
Definition amapInt.h:57
void Amap_LibCreateRules(Amap_Lib_t *p, int fVeryVerbose)
Definition amapRule.c:426
int Amap_LibNumPinsMax(Amap_Lib_t *p)
Definition amapLib.c:103
struct Amap_Man_t_ Amap_Man_t
Definition amapInt.h:70
void Amap_ManStop(Amap_Man_t *p)
Definition amapMan.c:80
Amap_Man_t * Amap_ManStart(int nNodes)
DECLARATIONS ///.
Definition amapMan.c:45
struct Amap_Set_t_ Amap_Set_t
Definition amapInt.h:68
Amap_Lib_t * Amap_LibReadFile(char *pFileName, int fVerbose)
Definition amapRead.c:485
int Amap_LibCreateMux(Amap_Lib_t *p, int iFan0, int iFan1, int iFan2)
Definition amapUniq.c:244
int Amap_LibFindNode(Amap_Lib_t *pLib, int iFan0, int iFan1, int fXor)
Definition amapUniq.c:90
void Amap_ManMerge(Amap_Man_t *p)
Definition amapMerge.c:514
Amap_Lib_t * Amap_LibAlloc()
DECLARATIONS ///.
Definition amapLib.c:45
int Amap_LibCreateVar(Amap_Lib_t *p)
Definition amapUniq.c:164
Amap_Obj_t * Amap_ManCreatePo(Amap_Man_t *p, Amap_Obj_t *pFan0)
Definition amapGraph.c:110
Vec_Ptr_t * Amap_ManProduceMapped(Amap_Man_t *p)
Definition amapOutput.c:71
struct Amap_Gat_t_ Amap_Gat_t
Definition amapInt.h:66
void Amap_ManCreate(Amap_Man_t *p, Aig_Man_t *pAig)
Definition amapGraph.c:323
int ** Amap_LibLookupTableAlloc(Vec_Ptr_t *vVec, int fVerbose)
Definition amapUniq.c:278
int Amap_LibParseEquations(Amap_Lib_t *p, int fVerbose)
Definition amapParse.c:392
void Kit_DsdPrintFromTruth(unsigned *pTruth, int nVars)
Definition kitDsd.c:491
void Amap_ManCreateChoice(Amap_Man_t *p, Amap_Obj_t *pObj)
Definition amapGraph.c:222
struct Amap_Mat_t_ Amap_Mat_t
Definition amapInt.h:73
Amap_Obj_t * Amap_ManCreatePi(Amap_Man_t *p)
FUNCTION DECLARATIONS ///.
Definition amapGraph.c:88
Amap_Obj_t * Amap_ManCreateXor(Amap_Man_t *p, Amap_Obj_t *pFan0, Amap_Obj_t *pFan1)
Definition amapGraph.c:165
int Amap_LibCreateNode(Amap_Lib_t *p, int iFan0, int iFan1, int fXor)
Definition amapUniq.c:189
Amap_Obj_t * Amap_ManCreateAnd(Amap_Man_t *p, Amap_Obj_t *pFan0, Amap_Obj_t *pFan1)
Definition amapGraph.c:137
Amap_Lib_t * Amap_LibReadBuffer(char *pBuffer, int fVerbose)
Definition amapRead.c:458
struct Amap_Nod_t_ Amap_Nod_t
Definition amapInt.h:67
Amap_Obj_t * Amap_ManCreateMux(Amap_Man_t *p, Amap_Obj_t *pFanC, Amap_Obj_t *pFan1, Amap_Obj_t *pFan0)
Definition amapGraph.c:192
struct Amap_Cut_t_ Amap_Cut_t
Definition amapInt.h:72
#define AMAP_MAXINS
INCLUDES ///.
Definition amapInt.h:44
short * Amap_LibTableFindNode(Amap_Lib_t *p, int iFan0, int iFan1, int fXor)
void Amap_ManMap(Amap_Man_t *p)
Definition amapMatch.c:657
void Amap_LibWrite(FILE *pFile, Amap_Lib_t *pLib, int fPrintDsd)
Definition amapLib.c:179
int Amap_LibFindMux(Amap_Lib_t *p, int iFan0, int iFan1, int iFan2)
Definition amapUniq.c:109
Vec_Ptr_t * Amap_LibSelectGates(Amap_Lib_t *p, int fVerbose)
Definition amapLib.c:264
struct Amap_Pin_t_ Amap_Pin_t
BASIC TYPES ///.
Definition amapInt.h:65
struct Amap_Par_t_ Amap_Par_t
Definition amap.h:44
typedefABC_NAMESPACE_HEADER_START struct Amap_Lib_t_ Amap_Lib_t
INCLUDES ///.
Definition amap.h:42
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
Cube * p
Definition exorList.c:222
unsigned fInv
Definition amapInt.h:187
unsigned iMat
Definition amapInt.h:186
unsigned nFans
Definition amapInt.h:188
int Fans[0]
Definition amapInt.h:189
char * pForm
Definition amapInt.h:158
Amap_Lib_t * pLib
Definition amapInt.h:153
double dArea
Definition amapInt.h:157
unsigned nPins
Definition amapInt.h:162
Amap_Gat_t * pTwin
Definition amapInt.h:154
char * pOutName
Definition amapInt.h:156
unsigned fMux
Definition amapInt.h:161
char * pName
Definition amapInt.h:155
Amap_Pin_t Pins[0]
Definition amapInt.h:163
unsigned * pFunc
Definition amapInt.h:159
unsigned Id
Definition amapInt.h:160
int ** pRules
Definition amapInt.h:134
Amap_Nod_t * pNodes
Definition amapInt.h:128
Amap_Gat_t * pGateBuf
Definition amapInt.h:121
int fVerbose
Definition amapInt.h:127
int fHasXor
Definition amapInt.h:124
Vec_Ptr_t * vSelect
Definition amapInt.h:118
Vec_Int_t * vRules3
Definition amapInt.h:133
Vec_Ptr_t * vRules
Definition amapInt.h:131
Amap_Gat_t * pGate0
Definition amapInt.h:119
Amap_Gat_t * pGateInv
Definition amapInt.h:122
Vec_Ptr_t * vSorted
Definition amapInt.h:117
int nNodesAlloc
Definition amapInt.h:130
Vec_Ptr_t * vGates
Definition amapInt.h:116
Amap_Gat_t * pGate1
Definition amapInt.h:120
int fHasMux
Definition amapInt.h:125
Aig_MmFlex_t * pMemSet
Definition amapInt.h:136
Vec_Ptr_t * vRulesX
Definition amapInt.h:132
int ** pRulesX
Definition amapInt.h:135
char * pName
Definition amapInt.h:115
Aig_MmFlex_t * pMemGates
Definition amapInt.h:123
int nObjs[AMAP_OBJ_VOID]
Definition amapInt.h:94
Aig_MmFlex_t * pMemCutBest
Definition amapInt.h:91
int nBytesUsed
Definition amapInt.h:111
Vec_Ptr_t * vTempP
Definition amapInt.h:106
Vec_Int_t * vTemp
Definition amapInt.h:99
Vec_Ptr_t * vObjs
Definition amapInt.h:88
Amap_Cut_t ** ppCutsTemp
Definition amapInt.h:101
int fUseXor
Definition amapInt.h:83
Vec_Ptr_t * vCuts2
Definition amapInt.h:105
Amap_Obj_t * pConst1
Definition amapInt.h:93
int nCutsUsed
Definition amapInt.h:108
int nCutsTried3
Definition amapInt.h:110
int nChoicesGiven
Definition amapInt.h:96
Aig_MmFlex_t * pMemTemp
Definition amapInt.h:92
Aig_MmFlex_t * pMemCuts
Definition amapInt.h:90
Vec_Ptr_t * vCuts1
Definition amapInt.h:104
int nLevelMax
Definition amapInt.h:95
int nCutsTried
Definition amapInt.h:109
Vec_Ptr_t * vPos
Definition amapInt.h:87
int fUseMux
Definition amapInt.h:84
Amap_Par_t * pPars
Definition amapInt.h:78
Vec_Ptr_t * vCuts0
Definition amapInt.h:103
float fAreaInv
Definition amapInt.h:82
float fEpsilonInternal
Definition amapInt.h:81
int nChoicesAdded
Definition amapInt.h:97
int * pMatsTemp
Definition amapInt.h:100
Amap_Lib_t * pLib
Definition amapInt.h:79
Vec_Ptr_t * vPis
Definition amapInt.h:86
Aig_MmFixed_t * pMemObj
Definition amapInt.h:89
Amap_Cut_t * pCutsPi
Definition amapInt.h:102
float Delay
Definition amapInt.h:197
float Area
Definition amapInt.h:195
Amap_Set_t * pSet
Definition amapInt.h:194
float AveFan
Definition amapInt.h:196
Amap_Cut_t * pCut
Definition amapInt.h:193
unsigned Type
Definition amapInt.h:177
short Unused
Definition amapInt.h:181
short iFan0
Definition amapInt.h:178
unsigned nSuppSize
Definition amapInt.h:176
Amap_Set_t * pSets
Definition amapInt.h:182
short iFan2
Definition amapInt.h:180
short iFan1
Definition amapInt.h:179
unsigned Id
Definition amapInt.h:175
unsigned Type
Definition amapInt.h:201
float EstRefs
Definition amapInt.h:217
unsigned fRepr
Definition amapInt.h:205
unsigned fPolar
Definition amapInt.h:206
int Fan[3]
Definition amapInt.h:211
unsigned nCuts
Definition amapInt.h:208
void * pData
Definition amapInt.h:213
int nFouts[2]
Definition amapInt.h:218
unsigned Id
Definition amapInt.h:202
Amap_Mat_t Best
Definition amapInt.h:219
unsigned Level
Definition amapInt.h:207
unsigned IdPio
Definition amapInt.h:203
unsigned fPhase
Definition amapInt.h:204
double dDelayBlockMax
Definition amapInt.h:149
double dLoadMax
Definition amapInt.h:144
double dDelayBlockRise
Definition amapInt.h:145
double dDelayFanoutFall
Definition amapInt.h:148
double dLoadInput
Definition amapInt.h:143
double dDelayBlockFall
Definition amapInt.h:147
char * pName
Definition amapInt.h:141
double dDelayFanoutRise
Definition amapInt.h:146
unsigned fInv
Definition amapInt.h:169
unsigned iGate
Definition amapInt.h:168
Amap_Set_t * pNext
Definition amapInt.h:167
char Ins[AMAP_MAXINS]
Definition amapInt.h:171
unsigned nIns
Definition amapInt.h:170
#define assert(ex)
Definition util_old.h:213
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42