abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
wlc.h
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [wlc.h]
4 
5  SystemName [ABC: Logic synthesis and verification system.]
6 
7  PackageName [Verilog parser.]
8 
9  Synopsis [External declarations.]
10 
11  Author [Alan Mishchenko]
12 
13  Affiliation [UC Berkeley]
14 
15  Date [Ver. 1.0. Started - August 22, 2014.]
16 
17  Revision [$Id: wlc.h,v 1.00 2014/09/12 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #ifndef ABC__base__wlc__wlc_h
22 #define ABC__base__wlc__wlc_h
23 
24 
25 ////////////////////////////////////////////////////////////////////////
26 /// INCLUDES ///
27 ////////////////////////////////////////////////////////////////////////
28 
29 #include "aig/gia/gia.h"
30 #include "misc/extra/extra.h"
31 #include "misc/util/utilNam.h"
32 #include "misc/mem/mem.h"
33 #include "misc/extra/extra.h"
34 #include "misc/util/utilTruth.h"
35 
36 ////////////////////////////////////////////////////////////////////////
37 /// PARAMETERS ///
38 ////////////////////////////////////////////////////////////////////////
39 
41 
42 // object types
43 typedef enum {
44  WLC_OBJ_NONE = 0, // 00: unknown
45  WLC_OBJ_PI, // 01: primary input
46  WLC_OBJ_PO, // 02: primary output (unused)
47  WLC_OBJ_FO, // 03: flop output
48  WLC_OBJ_FI, // 04: flop input (unused)
49  WLC_OBJ_FF, // 05: flop (unused)
50  WLC_OBJ_CONST, // 06: constant
51  WLC_OBJ_BUF, // 07: buffer
52  WLC_OBJ_MUX, // 08: multiplexer
53  WLC_OBJ_SHIFT_R, // 09: shift right
54  WLC_OBJ_SHIFT_RA, // 10: shift right (arithmetic)
55  WLC_OBJ_SHIFT_L, // 11: shift left
56  WLC_OBJ_SHIFT_LA, // 12: shift left (arithmetic)
57  WLC_OBJ_ROTATE_R, // 13: rotate right
58  WLC_OBJ_ROTATE_L, // 14: rotate left
59  WLC_OBJ_BIT_NOT, // 15: bitwise NOT
60  WLC_OBJ_BIT_AND, // 16: bitwise AND
61  WLC_OBJ_BIT_OR, // 17: bitwise OR
62  WLC_OBJ_BIT_XOR, // 18: bitwise XOR
63  WLC_OBJ_BIT_SELECT, // 19: bit selection
64  WLC_OBJ_BIT_CONCAT, // 20: bit concatenation
65  WLC_OBJ_BIT_ZEROPAD, // 21: zero padding
66  WLC_OBJ_BIT_SIGNEXT, // 22: sign extension
67  WLC_OBJ_LOGIC_NOT, // 23: logic NOT
68  WLC_OBJ_LOGIC_AND, // 24: logic AND
69  WLC_OBJ_LOGIC_OR, // 25: logic OR
70  WLC_OBJ_COMP_EQU, // 26: compare equal
71  WLC_OBJ_COMP_NOTEQU, // 27: compare not equal
72  WLC_OBJ_COMP_LESS, // 28: compare less
73  WLC_OBJ_COMP_MORE, // 29: compare more
74  WLC_OBJ_COMP_LESSEQU, // 30: compare less or equal
75  WLC_OBJ_COMP_MOREEQU, // 31: compare more or equal
76  WLC_OBJ_REDUCT_AND, // 32: reduction AND
77  WLC_OBJ_REDUCT_OR, // 33: reduction OR
78  WLC_OBJ_REDUCT_XOR, // 34: reduction XOR
79  WLC_OBJ_ARI_ADD, // 35: arithmetic addition
80  WLC_OBJ_ARI_SUB, // 36: arithmetic subtraction
81  WLC_OBJ_ARI_MULTI, // 37: arithmetic multiplier
82  WLC_OBJ_ARI_DIVIDE, // 38: arithmetic division
83  WLC_OBJ_ARI_MODULUS, // 39: arithmetic modulus
84  WLC_OBJ_ARI_POWER, // 40: arithmetic power
85  WLC_OBJ_ARI_MINUS, // 41: arithmetic minus
86  WLC_OBJ_TABLE, // 42: bit table
87  WLC_OBJ_NUMBER // 43: unused
89 
90 
91 // Unlike AIG managers and logic networks in ABC, this network treats POs and FIs
92 // as attributes of internal nodes and *not* as separate types of objects.
93 
94 
95 ////////////////////////////////////////////////////////////////////////
96 /// BASIC TYPES ///
97 ////////////////////////////////////////////////////////////////////////
98 
99 typedef struct Wlc_Obj_t_ Wlc_Obj_t;
100 struct Wlc_Obj_t_ // 16 bytes
101 {
102  unsigned Type : 6; // node type
103  unsigned Signed : 1; // signed
104  unsigned Mark : 1; // user mark
105  unsigned fIsPo : 1; // this is PO
106  unsigned fIsFi : 1; // this is FI
107  unsigned nFanins : 22; // fanin count
108  unsigned End : 16; // range end
109  unsigned Beg : 16; // range begin
110  union { int Fanins[2]; // fanin IDs
111  int * pFanins[1]; };
112 };
113 
114 typedef struct Wlc_Ntk_t_ Wlc_Ntk_t;
115 struct Wlc_Ntk_t_
116 {
117  char * pName; // model name
118  Vec_Int_t vPis; // primary inputs
119  Vec_Int_t vPos; // primary outputs
120  Vec_Int_t vCis; // combinational inputs
121  Vec_Int_t vCos; // combinational outputs
122  Vec_Int_t vFfs; // flops
123  int nObjs[WLC_OBJ_NUMBER]; // counter of objects of each type
124  int nAnds[WLC_OBJ_NUMBER]; // counter of AND gates after blasting
125  // memory for objects
127  int iObj;
132  // object names
133  Abc_Nam_t * pManName; // object names
134  Vec_Int_t vNameIds; // object name IDs
135  // object attributes
136  int nTravIds; // counter of traversal IDs
137  Vec_Int_t vTravIds; // trav IDs of the objects
138  Vec_Int_t vCopies; // object first bits
139 };
140 
141 static inline int Wlc_NtkObjNum( Wlc_Ntk_t * p ) { return p->iObj - 1; }
142 static inline int Wlc_NtkObjNumMax( Wlc_Ntk_t * p ) { return p->iObj; }
143 static inline int Wlc_NtkPiNum( Wlc_Ntk_t * p ) { return Vec_IntSize(&p->vPis); }
144 static inline int Wlc_NtkPoNum( Wlc_Ntk_t * p ) { return Vec_IntSize(&p->vPos); }
145 static inline int Wlc_NtkCiNum( Wlc_Ntk_t * p ) { return Vec_IntSize(&p->vCis); }
146 static inline int Wlc_NtkCoNum( Wlc_Ntk_t * p ) { return Vec_IntSize(&p->vCos); }
147 static inline int Wlc_NtkFfNum( Wlc_Ntk_t * p ) { return Vec_IntSize(&p->vCis) - Vec_IntSize(&p->vPis); }
148 
149 static inline Wlc_Obj_t * Wlc_NtkObj( Wlc_Ntk_t * p, int Id ) { assert(Id > 0 && Id < p->nObjsAlloc); return p->pObjs + Id; }
150 static inline Wlc_Obj_t * Wlc_NtkPi( Wlc_Ntk_t * p, int i ) { return Wlc_NtkObj( p, Vec_IntEntry(&p->vPis, i) ); }
151 static inline Wlc_Obj_t * Wlc_NtkPo( Wlc_Ntk_t * p, int i ) { return Wlc_NtkObj( p, Vec_IntEntry(&p->vPos, i) ); }
152 static inline Wlc_Obj_t * Wlc_NtkCi( Wlc_Ntk_t * p, int i ) { return Wlc_NtkObj( p, Vec_IntEntry(&p->vCis, i) ); }
153 static inline Wlc_Obj_t * Wlc_NtkCo( Wlc_Ntk_t * p, int i ) { return Wlc_NtkObj( p, Vec_IntEntry(&p->vCos, i) ); }
154 static inline Wlc_Obj_t * Wlc_NtkFf( Wlc_Ntk_t * p, int i ) { return Wlc_NtkObj( p, Vec_IntEntry(&p->vFfs, i) ); }
155 
156 static inline int Wlc_ObjIsPi( Wlc_Obj_t * p ) { return p->Type == WLC_OBJ_PI; }
157 static inline int Wlc_ObjIsPo( Wlc_Obj_t * p ) { return p->fIsPo; }
158 static inline int Wlc_ObjIsCi( Wlc_Obj_t * p ) { return p->Type == WLC_OBJ_PI || p->Type == WLC_OBJ_FO; }
159 static inline int Wlc_ObjIsCo( Wlc_Obj_t * p ) { return p->fIsPo || p->fIsFi; }
160 
161 static inline int Wlc_ObjId( Wlc_Ntk_t * p, Wlc_Obj_t * pObj ) { return pObj - p->pObjs; }
162 static inline int Wlc_ObjCiId( Wlc_Obj_t * p ) { assert( Wlc_ObjIsCi(p) ); return p->Fanins[1]; }
163 static inline int Wlc_ObjFaninNum( Wlc_Obj_t * p ) { return p->nFanins; }
164 static inline int Wlc_ObjHasArray( Wlc_Obj_t * p ) { return p->nFanins > 2 || p->Type == WLC_OBJ_CONST; }
165 static inline int * Wlc_ObjFanins( Wlc_Obj_t * p ) { return Wlc_ObjHasArray(p) ? p->pFanins[0] : p->Fanins; }
166 static inline int Wlc_ObjFaninId( Wlc_Obj_t * p, int i ) { return Wlc_ObjFanins(p)[i]; }
167 static inline int Wlc_ObjFaninId0( Wlc_Obj_t * p ) { return Wlc_ObjFanins(p)[0]; }
168 static inline int Wlc_ObjFaninId1( Wlc_Obj_t * p ) { return Wlc_ObjFanins(p)[1]; }
169 static inline int Wlc_ObjFaninId2( Wlc_Obj_t * p ) { return Wlc_ObjFanins(p)[2]; }
170 static inline Wlc_Obj_t * Wlc_ObjFanin( Wlc_Ntk_t * p, Wlc_Obj_t * pObj, int i ) { return Wlc_NtkObj( p, Wlc_ObjFaninId(pObj, i) ); }
171 static inline Wlc_Obj_t * Wlc_ObjFanin0( Wlc_Ntk_t * p, Wlc_Obj_t * pObj ) { return Wlc_NtkObj( p, Wlc_ObjFaninId(pObj, 0) ); }
172 static inline Wlc_Obj_t * Wlc_ObjFanin1( Wlc_Ntk_t * p, Wlc_Obj_t * pObj ) { return Wlc_NtkObj( p, Wlc_ObjFaninId(pObj, 1) ); }
173 static inline Wlc_Obj_t * Wlc_ObjFanin2( Wlc_Ntk_t * p, Wlc_Obj_t * pObj ) { return Wlc_NtkObj( p, Wlc_ObjFaninId(pObj, 2) ); }
174 
175 static inline int Wlc_ObjRange( Wlc_Obj_t * p ) { return p->End - p->Beg + 1; }
176 static inline int Wlc_ObjRangeEnd( Wlc_Obj_t * p ) { assert(p->Type == WLC_OBJ_BIT_SELECT); return p->Fanins[1] >> 16; }
177 static inline int Wlc_ObjRangeBeg( Wlc_Obj_t * p ) { assert(p->Type == WLC_OBJ_BIT_SELECT); return p->Fanins[1] & 0xFFFF; }
178 static inline int Wlc_ObjIsSigned( Wlc_Obj_t * p ) { return p->Signed; }
179 static inline int Wlc_ObjIsSignedFanin01( Wlc_Ntk_t * p, Wlc_Obj_t * pObj ){ return Wlc_ObjFanin0(p, pObj)->Signed && Wlc_ObjFanin1(p, pObj)->Signed; }
180 static inline int Wlc_ObjSign( Wlc_Obj_t * p ) { return Abc_Var2Lit( Wlc_ObjRange(p), Wlc_ObjIsSigned(p) ); }
181 static inline int * Wlc_ObjConstValue( Wlc_Obj_t * p ) { assert(p->Type == WLC_OBJ_CONST); return Wlc_ObjFanins(p); }
182 static inline int Wlc_ObjTableId( Wlc_Obj_t * p ) { assert(p->Type == WLC_OBJ_TABLE); return p->Fanins[1]; }
183 static inline word * Wlc_ObjTable( Wlc_Ntk_t * p, Wlc_Obj_t * pObj ) { return (word *)Vec_PtrEntry( p->vTables, Wlc_ObjTableId(pObj) ); }
184 
185 static inline void Wlc_NtkCleanCopy( Wlc_Ntk_t * p ) { Vec_IntFill( &p->vCopies, p->nObjsAlloc, 0 ); }
186 static inline int Wlc_NtkHasCopy( Wlc_Ntk_t * p ) { return Vec_IntSize( &p->vCopies ) > 0; }
187 static inline void Wlc_ObjSetCopy( Wlc_Ntk_t * p, int iObj, int i ) { Vec_IntWriteEntry( &p->vCopies, iObj, i ); }
188 static inline int Wlc_ObjCopy( Wlc_Ntk_t * p, int iObj ) { return Vec_IntEntry( &p->vCopies, iObj ); }
189 static inline Wlc_Obj_t * Wlc_ObjCopyObj(Wlc_Ntk_t * pNew, Wlc_Ntk_t * p, Wlc_Obj_t * pObj) {return Wlc_NtkObj(pNew, Wlc_ObjCopy(p, Wlc_ObjId(p, pObj))); }
190 
191 static inline void Wlc_NtkCleanNameId( Wlc_Ntk_t * p ) { Vec_IntFill( &p->vNameIds, p->nObjsAlloc, 0 ); }
192 static inline int Wlc_NtkHasNameId( Wlc_Ntk_t * p ) { return Vec_IntSize( &p->vNameIds ) > 0; }
193 static inline void Wlc_ObjSetNameId( Wlc_Ntk_t * p, int iObj, int i ) { Vec_IntWriteEntry( &p->vNameIds, iObj, i ); }
194 static inline int Wlc_ObjNameId( Wlc_Ntk_t * p, int iObj ) { return Vec_IntEntry( &p->vNameIds, iObj ); }
195 
196 static inline Wlc_Obj_t * Wlc_ObjFoToFi( Wlc_Ntk_t * p, Wlc_Obj_t * pObj ) { assert( pObj->Type == WLC_OBJ_FO ); return Wlc_NtkCo(p, Wlc_NtkCoNum(p) - Wlc_NtkCiNum(p) + Wlc_ObjCiId(pObj)); }
197 
198 ////////////////////////////////////////////////////////////////////////
199 /// MACRO DEFINITIONS ///
200 ////////////////////////////////////////////////////////////////////////
201 
202 ////////////////////////////////////////////////////////////////////////
203 /// ITERATORS ///
204 ////////////////////////////////////////////////////////////////////////
205 
206 #define Wlc_NtkForEachObj( p, pObj, i ) \
207  for ( i = 1; (i < Wlc_NtkObjNumMax(p)) && (((pObj) = Wlc_NtkObj(p, i)), 1); i++ )
208 #define Wlc_NtkForEachObjVec( vVec, p, pObj, i ) \
209  for ( i = 0; (i < Vec_IntSize(vVec)) && (((pObj) = Wlc_NtkObj(p, Vec_IntEntry(vVec, i))), 1); i++ )
210 #define Wlc_NtkForEachPi( p, pPi, i ) \
211  for ( i = 0; (i < Wlc_NtkPiNum(p)) && (((pPi) = Wlc_NtkPi(p, i)), 1); i++ )
212 #define Wlc_NtkForEachPo( p, pPo, i ) \
213  for ( i = 0; (i < Wlc_NtkPoNum(p)) && (((pPo) = Wlc_NtkPo(p, i)), 1); i++ )
214 #define Wlc_NtkForEachCi( p, pCi, i ) \
215  for ( i = 0; (i < Wlc_NtkCiNum(p)) && (((pCi) = Wlc_NtkCi(p, i)), 1); i++ )
216 #define Wlc_NtkForEachCo( p, pCo, i ) \
217  for ( i = 0; (i < Wlc_NtkCoNum(p)) && (((pCo) = Wlc_NtkCo(p, i)), 1); i++ )
218 #define Wlc_NtkForEachFf( p, pFf, i ) \
219  for ( i = 0; (i < Vec_IntSize(&p->vFfs)) && (((pFf) = Wlc_NtkFf(p, i)), 1); i++ )
220 
221 #define Wlc_ObjForEachFanin( pObj, iFanin, i ) \
222  for ( i = 0; (i < Wlc_ObjFaninNum(pObj)) && (((iFanin) = Wlc_ObjFaninId(pObj, i)), 1); i++ )
223 #define Wlc_ObjForEachFaninReverse( pObj, iFanin, i ) \
224  for ( i = Wlc_ObjFaninNum(pObj) - 1; (i >= 0) && (((iFanin) = Wlc_ObjFaninId(pObj, i)), 1); i-- )
225 
226 
227 ////////////////////////////////////////////////////////////////////////
228 /// FUNCTION DECLARATIONS ///
229 ////////////////////////////////////////////////////////////////////////
230 
231 /*=== wlcAbs.c ========================================================*/
232 extern int Wlc_NtkPairIsUifable( Wlc_Ntk_t * p, Wlc_Obj_t * pObj, Wlc_Obj_t * pObj2 );
235 extern Wlc_Ntk_t * Wlc_NtkAbstractNodes( Wlc_Ntk_t * pNtk, Vec_Int_t * vNodes );
236 extern Wlc_Ntk_t * Wlc_NtkUifNodePairs( Wlc_Ntk_t * pNtk, Vec_Int_t * vPairs );
237 /*=== wlcBlast.c ========================================================*/
238 extern Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p, Vec_Int_t * vBoxIds );
239 /*=== wlcNtk.c ========================================================*/
240 extern Wlc_Ntk_t * Wlc_NtkAlloc( char * pName, int nObjsAlloc );
241 extern int Wlc_ObjAlloc( Wlc_Ntk_t * p, int Type, int Signed, int End, int Beg );
242 extern int Wlc_ObjCreate( Wlc_Ntk_t * p, int Type, int Signed, int End, int Beg, Vec_Int_t * vFanins );
243 extern void Wlc_ObjSetCi( Wlc_Ntk_t * p, Wlc_Obj_t * pObj );
244 extern void Wlc_ObjSetCo( Wlc_Ntk_t * p, Wlc_Obj_t * pObj, int fFlopInput );
245 extern char * Wlc_ObjName( Wlc_Ntk_t * p, int iObj );
246 extern void Wlc_ObjUpdateType( Wlc_Ntk_t * p, Wlc_Obj_t * pObj, int Type );
247 extern void Wlc_ObjAddFanins( Wlc_Ntk_t * p, Wlc_Obj_t * pObj, Vec_Int_t * vFanins );
248 extern void Wlc_NtkFree( Wlc_Ntk_t * p );
249 extern void Wlc_NtkPrintNodes( Wlc_Ntk_t * p, int Type );
250 extern void Wlc_NtkPrintStats( Wlc_Ntk_t * p, int fDistrib, int fVerbose );
251 extern Wlc_Ntk_t * Wlc_NtkDupDfs( Wlc_Ntk_t * p );
252 extern void Wlc_NtkTransferNames( Wlc_Ntk_t * pNew, Wlc_Ntk_t * p );
253 /*=== wlcReadWord.c ========================================================*/
254 extern Wlc_Ntk_t * Wlc_ReadVer( char * pFileName );
255 /*=== wlcWriteWord.c ========================================================*/
256 extern void Wlc_WriteVer( Wlc_Ntk_t * p, char * pFileName );
257 
258 
260 
261 #endif
262 
263 ////////////////////////////////////////////////////////////////////////
264 /// END OF FILE ///
265 ////////////////////////////////////////////////////////////////////////
266 
static Wlc_Obj_t * Wlc_NtkPo(Wlc_Ntk_t *p, int i)
Definition: wlc.h:151
static Wlc_Obj_t * Wlc_NtkPi(Wlc_Ntk_t *p, int i)
Definition: wlc.h:150
Mem_Flex_t * pMemFanin
Definition: wlc.h:129
Mem_Flex_t * pMemTable
Definition: wlc.h:130
static int Wlc_NtkCoNum(Wlc_Ntk_t *p)
Definition: wlc.h:146
Wlc_Ntk_t * Wlc_NtkAlloc(char *pName, int nObjsAlloc)
FUNCTION DEFINITIONS ///.
Definition: wlcNtk.c:94
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition: vecPtr.h:42
Vec_Int_t * Wlc_NtkCollectMultipliers(Wlc_Ntk_t *p)
Definition: wlcAbs.c:76
Wlc_Ntk_t * Wlc_NtkAbstractNodes(Wlc_Ntk_t *pNtk, Vec_Int_t *vNodes)
Definition: wlcAbs.c:137
static int Wlc_ObjId(Wlc_Ntk_t *p, Wlc_Obj_t *pObj)
Definition: wlc.h:161
char * Wlc_ObjName(Wlc_Ntk_t *p, int iObj)
Definition: wlcNtk.c:167
unsigned nFanins
Definition: wlc.h:107
static Wlc_Obj_t * Wlc_ObjFanin2(Wlc_Ntk_t *p, Wlc_Obj_t *pObj)
Definition: wlc.h:173
static Wlc_Obj_t * Wlc_ObjFoToFi(Wlc_Ntk_t *p, Wlc_Obj_t *pObj)
Definition: wlc.h:196
static int Wlc_ObjFaninId1(Wlc_Obj_t *p)
Definition: wlc.h:168
static int Wlc_ObjCiId(Wlc_Obj_t *p)
Definition: wlc.h:162
Vec_Int_t vCis
Definition: wlc.h:120
static int Wlc_ObjIsSigned(Wlc_Obj_t *p)
Definition: wlc.h:178
static Llb_Mgr_t * p
Definition: llb3Image.c:950
void Wlc_NtkPrintStats(Wlc_Ntk_t *p, int fDistrib, int fVerbose)
Definition: wlcNtk.c:375
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition: bblif.c:37
Vec_Ptr_t * vTables
Definition: wlc.h:131
static int Wlc_NtkObjNum(Wlc_Ntk_t *p)
Definition: wlc.h:141
static Wlc_Obj_t * Wlc_NtkObj(Wlc_Ntk_t *p, int Id)
Definition: wlc.h:149
Wlc_Obj_t * pObjs
Definition: wlc.h:126
static int Abc_Var2Lit(int Var, int fCompl)
Definition: abc_global.h:263
int nObjs[WLC_OBJ_NUMBER]
Definition: wlc.h:123
void Wlc_NtkTransferNames(Wlc_Ntk_t *pNew, Wlc_Ntk_t *p)
Definition: wlcNtk.c:475
static int Wlc_ObjRangeEnd(Wlc_Obj_t *p)
Definition: wlc.h:176
static Wlc_Obj_t * Wlc_ObjFanin0(Wlc_Ntk_t *p, Wlc_Obj_t *pObj)
Definition: wlc.h:171
static Wlc_Obj_t * Wlc_NtkCo(Wlc_Ntk_t *p, int i)
Definition: wlc.h:153
static Wlc_Obj_t * Wlc_ObjFanin(Wlc_Ntk_t *p, Wlc_Obj_t *pObj, int i)
Definition: wlc.h:170
int iObj
Definition: wlc.h:127
static int Wlc_ObjSign(Wlc_Obj_t *p)
Definition: wlc.h:180
static int Wlc_NtkFfNum(Wlc_Ntk_t *p)
Definition: wlc.h:147
void Wlc_WriteVer(Wlc_Ntk_t *p, char *pFileName)
Definition: wlcWriteVer.c:354
static Wlc_Obj_t * Wlc_NtkFf(Wlc_Ntk_t *p, int i)
Definition: wlc.h:154
Definition: wlc.h:49
static int Wlc_ObjRange(Wlc_Obj_t *p)
Definition: wlc.h:175
static void Wlc_NtkCleanCopy(Wlc_Ntk_t *p)
Definition: wlc.h:185
void Wlc_ObjUpdateType(Wlc_Ntk_t *p, Wlc_Obj_t *pObj, int Type)
Definition: wlcNtk.c:175
Vec_Int_t vPis
Definition: wlc.h:118
int Wlc_ObjAlloc(Wlc_Ntk_t *p, int Type, int Signed, int End, int Beg)
Definition: wlcNtk.c:141
static word * Wlc_ObjTable(Wlc_Ntk_t *p, Wlc_Obj_t *pObj)
Definition: wlc.h:183
Definition: wlc.h:48
unsigned Beg
Definition: wlc.h:109
Wlc_ObjType_t
INCLUDES ///.
Definition: wlc.h:43
static int Wlc_ObjFaninId0(Wlc_Obj_t *p)
Definition: wlc.h:167
static void Wlc_NtkCleanNameId(Wlc_Ntk_t *p)
Definition: wlc.h:191
static int Wlc_NtkHasNameId(Wlc_Ntk_t *p)
Definition: wlc.h:192
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
Definition: bblif.c:285
static void Wlc_ObjSetCopy(Wlc_Ntk_t *p, int iObj, int i)
Definition: wlc.h:187
static int Wlc_NtkPoNum(Wlc_Ntk_t *p)
Definition: wlc.h:144
int Wlc_ObjCreate(Wlc_Ntk_t *p, int Type, int Signed, int End, int Beg, Vec_Int_t *vFanins)
Definition: wlcNtk.c:161
static int Wlc_NtkCiNum(Wlc_Ntk_t *p)
Definition: wlc.h:145
int nTravIds
Definition: wlc.h:136
void Wlc_ObjSetCi(Wlc_Ntk_t *p, Wlc_Obj_t *pObj)
Definition: wlcNtk.c:110
int Wlc_NtkPairIsUifable(Wlc_Ntk_t *p, Wlc_Obj_t *pObj, Wlc_Obj_t *pObj2)
FUNCTION DECLARATIONS ///.
Definition: wlcAbs.c:44
static int Wlc_ObjFaninNum(Wlc_Obj_t *p)
Definition: wlc.h:163
static int Wlc_ObjHasArray(Wlc_Obj_t *p)
Definition: wlc.h:164
char * pName
Definition: wlc.h:117
static int Vec_IntEntry(Vec_Int_t *p, int i)
Definition: bblif.c:268
unsigned __int64 word
DECLARATIONS ///.
Definition: kitPerm.c:36
void Wlc_NtkPrintNodes(Wlc_Ntk_t *p, int Type)
Definition: wlcNtk.c:354
static void Vec_IntFill(Vec_Int_t *p, int nSize, int Fill)
Definition: bblif.c:356
unsigned Type
Definition: wlc.h:102
static int Wlc_ObjIsCi(Wlc_Obj_t *p)
Definition: wlc.h:158
static int Wlc_ObjNameId(Wlc_Ntk_t *p, int iObj)
Definition: wlc.h:194
int * pFanins[1]
Definition: wlc.h:111
void Wlc_NtkFree(Wlc_Ntk_t *p)
Definition: wlcNtk.c:195
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Definition: abc_global.h:105
static int * Wlc_ObjConstValue(Wlc_Obj_t *p)
Definition: wlc.h:181
int nAnds[WLC_OBJ_NUMBER]
Definition: wlc.h:124
static Wlc_Obj_t * Wlc_ObjCopyObj(Wlc_Ntk_t *pNew, Wlc_Ntk_t *p, Wlc_Obj_t *pObj)
Definition: wlc.h:189
unsigned fIsPo
Definition: wlc.h:105
unsigned Signed
Definition: wlc.h:103
static void Wlc_ObjSetNameId(Wlc_Ntk_t *p, int iObj, int i)
Definition: wlc.h:193
static int Wlc_ObjRangeBeg(Wlc_Obj_t *p)
Definition: wlc.h:177
#define ABC_NAMESPACE_HEADER_END
Definition: abc_global.h:106
Vec_Int_t vCopies
Definition: wlc.h:138
int nObjsAlloc
Definition: wlc.h:128
Definition: wlc.h:47
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
Definition: vecPtr.h:362
Definition: wlc.h:45
Wlc_Ntk_t * Wlc_NtkDupDfs(Wlc_Ntk_t *p)
Definition: wlcNtk.c:457
static Wlc_Obj_t * Wlc_NtkCi(Wlc_Ntk_t *p, int i)
Definition: wlc.h:152
static int Wlc_ObjCopy(Wlc_Ntk_t *p, int iObj)
Definition: wlc.h:188
static int Wlc_ObjFaninId(Wlc_Obj_t *p, int i)
Definition: wlc.h:166
Gia_Man_t * Wlc_NtkBitBlast(Wlc_Ntk_t *p, Vec_Int_t *vBoxIds)
Definition: wlcBlast.c:405
unsigned End
Definition: wlc.h:108
static int Vec_IntSize(Vec_Int_t *p)
Definition: bblif.c:252
static int Wlc_ObjTableId(Wlc_Obj_t *p)
Definition: wlc.h:182
static int Wlc_ObjIsCo(Wlc_Obj_t *p)
Definition: wlc.h:159
Vec_Int_t vTravIds
Definition: wlc.h:137
Vec_Int_t vPos
Definition: wlc.h:119
static int * Wlc_ObjFanins(Wlc_Obj_t *p)
Definition: wlc.h:165
Definition: gia.h:95
unsigned Mark
Definition: wlc.h:104
void Wlc_ObjAddFanins(Wlc_Ntk_t *p, Wlc_Obj_t *pObj, Vec_Int_t *vFanins)
Definition: wlcNtk.c:182
Definition: wlc.h:46
Wlc_Ntk_t * Wlc_NtkUifNodePairs(Wlc_Ntk_t *pNtk, Vec_Int_t *vPairs)
Definition: wlcAbs.c:192
static Wlc_Obj_t * Wlc_ObjFanin1(Wlc_Ntk_t *p, Wlc_Obj_t *pObj)
Definition: wlc.h:172
static int Wlc_NtkObjNumMax(Wlc_Ntk_t *p)
Definition: wlc.h:142
Vec_Int_t vNameIds
Definition: wlc.h:134
Vec_Int_t * Wlc_NtkFindUifableMultiplierPairs(Wlc_Ntk_t *p)
Definition: wlcAbs.c:100
void Wlc_ObjSetCo(Wlc_Ntk_t *p, Wlc_Obj_t *pObj, int fFlopInput)
Definition: wlcNtk.c:130
typedefABC_NAMESPACE_HEADER_START struct Abc_Nam_t_ Abc_Nam_t
INCLUDES ///.
Definition: utilNam.h:39
static int Wlc_NtkPiNum(Wlc_Ntk_t *p)
Definition: wlc.h:143
Vec_Int_t vCos
Definition: wlc.h:121
int Fanins[2]
Definition: wlc.h:110
#define assert(ex)
Definition: util_old.h:213
unsigned fIsFi
Definition: wlc.h:106
static int Wlc_NtkHasCopy(Wlc_Ntk_t *p)
Definition: wlc.h:186
Vec_Int_t vFfs
Definition: wlc.h:122
static int Wlc_ObjFaninId2(Wlc_Obj_t *p)
Definition: wlc.h:169
static int Wlc_ObjIsSignedFanin01(Wlc_Ntk_t *p, Wlc_Obj_t *pObj)
Definition: wlc.h:179
Abc_Nam_t * pManName
Definition: wlc.h:133
static int Wlc_ObjIsPo(Wlc_Obj_t *p)
Definition: wlc.h:157
Wlc_Ntk_t * Wlc_ReadVer(char *pFileName)
Definition: wlcReadVer.c:1080
static int Wlc_ObjIsPi(Wlc_Obj_t *p)
Definition: wlc.h:156