abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
wlcWriteVer.c
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [wlcWriteVer.c]
4 
5  SystemName [ABC: Logic synthesis and verification system.]
6 
7  PackageName [Verilog parser.]
8 
9  Synopsis [Writes word-level Verilog.]
10 
11  Author [Alan Mishchenko]
12 
13  Affiliation [UC Berkeley]
14 
15  Date [Ver. 1.0. Started - August 22, 2014.]
16 
17  Revision [$Id: wlcWriteVer.c,v 1.00 2014/09/12 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #include "wlc.h"
22 
24 
25 
26 ////////////////////////////////////////////////////////////////////////
27 /// DECLARATIONS ///
28 ////////////////////////////////////////////////////////////////////////
29 
30 ////////////////////////////////////////////////////////////////////////
31 /// FUNCTION DEFINITIONS ///
32 ////////////////////////////////////////////////////////////////////////
33 
34 /**Function*************************************************************
35 
36  Synopsis []
37 
38  Description []
39 
40  SideEffects []
41 
42  SeeAlso []
43 
44 ***********************************************************************/
45 void Wlc_WriteTableOne( FILE * pFile, int nFans, int nOuts, word * pTable, int Id )
46 {
47  int m, nMints = (1<<nFans);
48 // Abc_TtPrintHexArrayRev( stdout, pTable, nMints ); printf( "\n" );
49  assert( nOuts > 0 && nOuts <= 64 && (64 % nOuts) == 0 );
50  fprintf( pFile, "module table%d(ind, val);\n", Id );
51  fprintf( pFile, " input [%d:0] ind;\n", nFans-1 );
52  fprintf( pFile, " output [%d:0] val;\n", nOuts-1 );
53  fprintf( pFile, " reg [%d:0] val;\n", nOuts-1 );
54  fprintf( pFile, " always @(ind)\n" );
55  fprintf( pFile, " begin\n" );
56  fprintf( pFile, " case (ind)\n" );
57  for ( m = 0; m < nMints; m++ )
58  fprintf( pFile, " %d\'h%x: val = %d\'h%x;\n", nFans, m, nOuts, (unsigned)((pTable[(nOuts * m) >> 6] >> ((nOuts * m) & 63)) & Abc_Tt6Mask(nOuts)) );
59  fprintf( pFile, " endcase\n" );
60  fprintf( pFile, " end\n" );
61  fprintf( pFile, "endmodule\n" );
62  fprintf( pFile, "\n" );
63 }
64 void Wlc_WriteTables( FILE * pFile, Wlc_Ntk_t * p )
65 {
66  Vec_Int_t * vNodes;
67  Wlc_Obj_t * pObj, * pFanin;
68  word * pTable;
69  int i;
70  if ( p->vTables == NULL || Vec_PtrSize(p->vTables) == 0 )
71  return;
72  // map tables into their nodes
73  vNodes = Vec_IntStart( Vec_PtrSize(p->vTables) );
74  Wlc_NtkForEachObj( p, pObj, i )
75  if ( pObj->Type == WLC_OBJ_TABLE )
76  Vec_IntWriteEntry( vNodes, Wlc_ObjTableId(pObj), i );
77  // write tables
78  Vec_PtrForEachEntry( word *, p->vTables, pTable, i )
79  {
80  pObj = Wlc_NtkObj( p, Vec_IntEntry(vNodes, i) );
81  assert( pObj->Type == WLC_OBJ_TABLE );
82  pFanin = Wlc_ObjFanin0( p, pObj );
83  Wlc_WriteTableOne( pFile, Wlc_ObjRange(pFanin), Wlc_ObjRange(pObj), pTable, i );
84  }
85  Vec_IntFree( vNodes );
86 }
87 
88 /**Function*************************************************************
89 
90  Synopsis [This was used to add POs to each node except PIs and MUXes.]
91 
92  Description []
93 
94  SideEffects []
95 
96  SeeAlso []
97 
98 ***********************************************************************/
100 {
101  Wlc_Obj_t * pObj;
102  int i;
103  Vec_IntClear( &p->vPos );
104  Wlc_NtkForEachObj( p, pObj, i )
105  if ( pObj->Type != WLC_OBJ_PI && pObj->Type != WLC_OBJ_MUX )
106  {
107  pObj->fIsPo = 1;
108  Vec_IntPush( &p->vPos, Wlc_ObjId(p, pObj) );
109  }
110 }
111 
112 
113 /**Function*************************************************************
114 
115  Synopsis []
116 
117  Description []
118 
119  SideEffects []
120 
121  SeeAlso []
122 
123 ***********************************************************************/
124 void Wlc_WriteVerIntVec( FILE * pFile, Wlc_Ntk_t * p, Vec_Int_t * vVec, int Start )
125 {
126  char * pName;
127  int LineLength = Start;
128  int NameCounter = 0;
129  int AddedLength, i, iObj;
130  Vec_IntForEachEntry( vVec, iObj, i )
131  {
132  pName = Wlc_ObjName( p, iObj );
133  // get the line length after this name is written
134  AddedLength = strlen(pName) + 2;
135  if ( NameCounter && LineLength + AddedLength + 3 > 70 )
136  { // write the line extender
137  fprintf( pFile, "\n " );
138  // reset the line length
139  LineLength = Start;
140  NameCounter = 0;
141  }
142  fprintf( pFile, " %s%s", pName, (i==Vec_IntSize(vVec)-1)? "" : "," );
143  LineLength += AddedLength;
144  NameCounter++;
145  }
146 }
147 void Wlc_WriteVerInt( FILE * pFile, Wlc_Ntk_t * p )
148 {
149  Wlc_Obj_t * pObj;
150  int i, k, iFanin;
151  char Range[100];
152  fprintf( pFile, "module %s ( ", p->pName );
153  fprintf( pFile, "\n " );
154  if ( Wlc_NtkPiNum(p) > 0 )
155  {
156  Wlc_WriteVerIntVec( pFile, p, &p->vPis, 3 );
157  fprintf( pFile, ",\n " );
158  }
159  if ( Wlc_NtkPoNum(p) > 0 )
160  Wlc_WriteVerIntVec( pFile, p, &p->vPos, 3 );
161  fprintf( pFile, " );\n" );
162  // mark fanins of rotation shifts
163  Wlc_NtkForEachObj( p, pObj, i )
164  if ( pObj->Type == WLC_OBJ_ROTATE_R || pObj->Type == WLC_OBJ_ROTATE_L )
165  Wlc_ObjFanin1(p, pObj)->Mark = 1;
166  Wlc_NtkForEachObj( p, pObj, i )
167  {
168  int nDigits = Abc_Base10Log(pObj->End+1) + Abc_Base10Log(pObj->Beg+1);
169  if ( pObj->Mark )
170  {
171  pObj->Mark = 0;
172  continue;
173  }
174  sprintf( Range, "%s[%d:%d]%*s", Wlc_ObjIsSigned(pObj) ? "signed ":" ", pObj->End, pObj->Beg, 8-nDigits, "" );
175  fprintf( pFile, " " );
176  if ( pObj->Type == WLC_OBJ_PI )
177  fprintf( pFile, "input " );
178  else if ( pObj->fIsPo )
179  fprintf( pFile, "output " );
180  else
181  fprintf( pFile, " " );
182  if ( Wlc_ObjIsCi(pObj) || pObj->fIsPo )
183  {
184  fprintf( pFile, "wire %s %s ;\n", Range, Wlc_ObjName(p, i) );
185  if ( Wlc_ObjIsCi(pObj) )
186  continue;
187  Range[0] = 0;
188  }
189  if ( pObj->fIsPo )
190  fprintf( pFile, " assign " );
191  else if ( pObj->Type == WLC_OBJ_MUX && Wlc_ObjFaninNum(pObj) > 3 )
192  fprintf( pFile, "reg %s ", Range );
193  else
194  fprintf( pFile, "wire %s ", Range );
195  if ( pObj->Type == WLC_OBJ_TABLE )
196  {
197  // wire [3:0] s4972; table0 s4972_Index(s4971, s4972);
198  fprintf( pFile, "%s ; table%d", Wlc_ObjName(p, i), Wlc_ObjTableId(pObj) );
199  fprintf( pFile, " s%d_Index(%s, ", i, Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
200  fprintf( pFile, "%s)", Wlc_ObjName(p, i) );
201  }
202  else if ( pObj->Type == WLC_OBJ_CONST )
203  {
204  fprintf( pFile, "%-16s = %d\'%sh", Wlc_ObjName(p, i), Wlc_ObjRange(pObj), Wlc_ObjIsSigned(pObj) ? "s":"" );
205  Abc_TtPrintHexArrayRev( pFile, (word *)Wlc_ObjConstValue(pObj), (Wlc_ObjRange(pObj) + 3) / 4 );
206  }
207  else if ( pObj->Type == WLC_OBJ_ROTATE_R || pObj->Type == WLC_OBJ_ROTATE_L )
208  {
209  // wire [27:0] s4960 = (s57 >> 17) | (s57 << 11);
210  Wlc_Obj_t * pShift = Wlc_ObjFanin1(p, pObj);
211  int Num0 = *Wlc_ObjConstValue(pShift);
212  int Num1 = Wlc_ObjRange(pObj) - Num0;
213  assert( pShift->Type == WLC_OBJ_CONST );
214  assert( Num0 > 0 && Num0 < Wlc_ObjRange(pObj) );
215  fprintf( pFile, "%-16s = ", Wlc_ObjName(p, i) );
216  if ( pObj->Type == WLC_OBJ_ROTATE_R )
217  fprintf( pFile, "(%s >> %d) | (%s << %d)", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)), Num0, Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)), Num1 );
218  else
219  fprintf( pFile, "(%s << %d) | (%s >> %d)", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)), Num0, Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)), Num1 );
220  }
221  else if ( pObj->Type == WLC_OBJ_MUX && Wlc_ObjFaninNum(pObj) > 3 )
222  {
223  fprintf( pFile, "%s ;\n", Wlc_ObjName(p, i) );
224  fprintf( pFile, " " );
225  fprintf( pFile, "always @( " );
226  Wlc_ObjForEachFanin( pObj, iFanin, k )
227  fprintf( pFile, "%s%s", k ? " or ":"", Wlc_ObjName(p, Wlc_ObjFaninId(pObj, k)) );
228  fprintf( pFile, " )\n" );
229  fprintf( pFile, " " );
230  fprintf( pFile, "begin\n" );
231  fprintf( pFile, " " );
232  fprintf( pFile, "case ( %s )\n", Wlc_ObjName(p, Wlc_ObjFaninId(pObj, 0)) );
233  Wlc_ObjForEachFanin( pObj, iFanin, k )
234  {
235  if ( !k ) continue;
236  fprintf( pFile, " " );
237  fprintf( pFile, "%d : %s = ", k-1, Wlc_ObjName(p, i) );
238  fprintf( pFile, "%s ;\n", Wlc_ObjName(p, Wlc_ObjFaninId(pObj, k)) );
239  }
240  fprintf( pFile, " " );
241  fprintf( pFile, "endcase\n" );
242  fprintf( pFile, " " );
243  fprintf( pFile, "end\n" );
244  continue;
245  }
246  else
247  {
248  fprintf( pFile, "%-16s = ", Wlc_ObjName(p, i) );
249  if ( pObj->Type == WLC_OBJ_BUF )
250  fprintf( pFile, "%s", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
251  else if ( pObj->Type == WLC_OBJ_MUX )
252  {
253  fprintf( pFile, "%s ? ", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
254  fprintf( pFile, "%s : ", Wlc_ObjName(p, Wlc_ObjFaninId2(pObj)) );
255  fprintf( pFile, "%s", Wlc_ObjName(p, Wlc_ObjFaninId1(pObj)) );
256  }
257  else if ( pObj->Type == WLC_OBJ_ARI_MINUS )
258  fprintf( pFile, "-%s", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
259  else if ( pObj->Type == WLC_OBJ_BIT_NOT )
260  fprintf( pFile, "~%s", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
261  else if ( pObj->Type == WLC_OBJ_LOGIC_NOT )
262  fprintf( pFile, "!%s", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
263  else if ( pObj->Type == WLC_OBJ_REDUCT_AND )
264  fprintf( pFile, "&%s", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
265  else if ( pObj->Type == WLC_OBJ_REDUCT_OR )
266  fprintf( pFile, "|%s", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
267  else if ( pObj->Type == WLC_OBJ_REDUCT_XOR )
268  fprintf( pFile, "^%s", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
269  else if ( pObj->Type == WLC_OBJ_BIT_SELECT )
270  fprintf( pFile, "%s [%d:%d]", Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)), Wlc_ObjRangeEnd(pObj), Wlc_ObjRangeBeg(pObj) );
271  else if ( pObj->Type == WLC_OBJ_BIT_SIGNEXT )
272  fprintf( pFile, "{ {%d{%s[%d]}}, %s }", Wlc_ObjRange(pObj) - Wlc_ObjRange(Wlc_ObjFanin0(p, pObj)), Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)), Wlc_ObjRange(Wlc_ObjFanin0(p, pObj)) - 1, Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
273  else if ( pObj->Type == WLC_OBJ_BIT_ZEROPAD )
274  fprintf( pFile, "{ {%d{1\'b0}}, %s }", Wlc_ObjRange(pObj) - Wlc_ObjRange(Wlc_ObjFanin0(p, pObj)), Wlc_ObjName(p, Wlc_ObjFaninId0(pObj)) );
275  else if ( pObj->Type == WLC_OBJ_BIT_CONCAT )
276  {
277  fprintf( pFile, "{" );
278  Wlc_ObjForEachFanin( pObj, iFanin, k )
279  fprintf( pFile, " %s%s", Wlc_ObjName(p, Wlc_ObjFaninId(pObj, k)), k == Wlc_ObjFaninNum(pObj)-1 ? "":"," );
280  fprintf( pFile, " }" );
281  }
282  else
283  {
284  fprintf( pFile, "%s ", Wlc_ObjName(p, Wlc_ObjFaninId(pObj, 0)) );
285  if ( pObj->Type == WLC_OBJ_SHIFT_R )
286  fprintf( pFile, ">>" );
287  else if ( pObj->Type == WLC_OBJ_SHIFT_RA )
288  fprintf( pFile, ">>>" );
289  else if ( pObj->Type == WLC_OBJ_SHIFT_L )
290  fprintf( pFile, "<<" );
291  else if ( pObj->Type == WLC_OBJ_SHIFT_LA )
292  fprintf( pFile, "<<<" );
293  else if ( pObj->Type == WLC_OBJ_BIT_AND )
294  fprintf( pFile, "&" );
295  else if ( pObj->Type == WLC_OBJ_BIT_OR )
296  fprintf( pFile, "|" );
297  else if ( pObj->Type == WLC_OBJ_BIT_XOR )
298  fprintf( pFile, "^" );
299  else if ( pObj->Type == WLC_OBJ_LOGIC_AND )
300  fprintf( pFile, "&&" );
301  else if ( pObj->Type == WLC_OBJ_LOGIC_OR )
302  fprintf( pFile, "||" );
303  else if ( pObj->Type == WLC_OBJ_COMP_EQU )
304  fprintf( pFile, "==" );
305  else if ( pObj->Type == WLC_OBJ_COMP_NOTEQU )
306  fprintf( pFile, "!=" );
307  else if ( pObj->Type == WLC_OBJ_COMP_LESS )
308  fprintf( pFile, "<" );
309  else if ( pObj->Type == WLC_OBJ_COMP_MORE )
310  fprintf( pFile, ">" );
311  else if ( pObj->Type == WLC_OBJ_COMP_LESSEQU )
312  fprintf( pFile, "<=" );
313  else if ( pObj->Type == WLC_OBJ_COMP_MOREEQU )
314  fprintf( pFile, ">=" );
315  else if ( pObj->Type == WLC_OBJ_ARI_ADD )
316  fprintf( pFile, "+" );
317  else if ( pObj->Type == WLC_OBJ_ARI_SUB )
318  fprintf( pFile, "-" );
319  else if ( pObj->Type == WLC_OBJ_ARI_MULTI )
320  fprintf( pFile, "*" );
321  else if ( pObj->Type == WLC_OBJ_ARI_DIVIDE )
322  fprintf( pFile, "//" );
323  else if ( pObj->Type == WLC_OBJ_ARI_MODULUS )
324  fprintf( pFile, "%%" );
325  else if ( pObj->Type == WLC_OBJ_ARI_POWER )
326  fprintf( pFile, "**" );
327  else assert( 0 );
328  fprintf( pFile, " %s", Wlc_ObjName(p, Wlc_ObjFaninId(pObj, 1)) );
329  }
330  }
331  fprintf( pFile, " ;\n" );
332  }
333  Wlc_NtkForEachCi( p, pObj, i )
334  {
335  char * pName = Wlc_ObjName(p, Wlc_ObjId(p, pObj));
336  assert( i == Wlc_ObjCiId(pObj) );
337  if ( pObj->Type == WLC_OBJ_PI )
338  continue;
339  fprintf( pFile, " " );
340  fprintf( pFile, "CPL_FF" );
341  if ( Wlc_ObjRange(pObj) > 1 )
342  fprintf( pFile, "#%d", Wlc_ObjRange(pObj) );
343  fprintf( pFile, " reg%d (", i );
344  fprintf( pFile, " .q( %s ),", pName );
345  fprintf( pFile, " .qbar()," );
346  fprintf( pFile, " .d( %s ),", Wlc_ObjName(p, Wlc_ObjId(p, Wlc_ObjFoToFi(p, pObj))) );
347  fprintf( pFile, " .clk( %s ),", "1\'b0" );
348  fprintf( pFile, " .arst( %s ),", "1\'b0" );
349  fprintf( pFile, " .arstval( %s )", "1\'b0" );
350  fprintf( pFile, " ) ;\n" );
351  }
352  fprintf( pFile, "endmodule\n\n" );
353 }
354 void Wlc_WriteVer( Wlc_Ntk_t * p, char * pFileName )
355 {
356  FILE * pFile;
357  pFile = fopen( pFileName, "w" );
358  if ( pFile == NULL )
359  {
360  fprintf( stdout, "Wlc_WriteVer(): Cannot open the output file \"%s\".\n", pFileName );
361  return;
362  }
363  fprintf( pFile, "// Benchmark \"%s\" written by ABC on %s\n", p->pName, Extra_TimeStamp() );
364  fprintf( pFile, "\n" );
365  Wlc_WriteTables( pFile, p );
366 // Wlc_WriteAddPos( p );
367  Wlc_WriteVerInt( pFile, p );
368  fprintf( pFile, "\n" );
369  fclose( pFile );
370 }
371 
372 ////////////////////////////////////////////////////////////////////////
373 /// END OF FILE ///
374 ////////////////////////////////////////////////////////////////////////
375 
376 
378 
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
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
void Wlc_WriteVerInt(FILE *pFile, Wlc_Ntk_t *p)
Definition: wlcWriteVer.c:147
static int Wlc_ObjIsSigned(Wlc_Obj_t *p)
Definition: wlc.h:178
#define Wlc_ObjForEachFanin(pObj, iFanin, i)
Definition: wlc.h:221
static Llb_Mgr_t * p
Definition: llb3Image.c:950
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 void Abc_TtPrintHexArrayRev(FILE *pFile, word *pTruth, int nDigits)
Definition: utilTruth.h:820
static Wlc_Obj_t * Wlc_NtkObj(Wlc_Ntk_t *p, int Id)
Definition: wlc.h:149
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 int Wlc_ObjRange(Wlc_Obj_t *p)
Definition: wlc.h:175
static int Vec_PtrSize(Vec_Ptr_t *p)
Definition: vecPtr.h:295
Vec_Int_t vPis
Definition: wlc.h:118
ABC_NAMESPACE_IMPL_START void Wlc_WriteTableOne(FILE *pFile, int nFans, int nOuts, word *pTable, int Id)
DECLARATIONS ///.
Definition: wlcWriteVer.c:45
unsigned Beg
Definition: wlc.h:109
static int Wlc_ObjFaninId0(Wlc_Obj_t *p)
Definition: wlc.h:167
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
Definition: bblif.c:285
static Vec_Int_t * Vec_IntStart(int nSize)
Definition: bblif.c:172
static int Wlc_NtkPoNum(Wlc_Ntk_t *p)
Definition: wlc.h:144
#define Wlc_NtkForEachCi(p, pCi, i)
Definition: wlc.h:214
static int Wlc_ObjFaninNum(Wlc_Obj_t *p)
Definition: wlc.h:163
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
static int Abc_Base10Log(unsigned n)
Definition: abc_global.h:252
#define ABC_NAMESPACE_IMPL_END
Definition: abc_global.h:108
unsigned Type
Definition: wlc.h:102
static int Wlc_ObjIsCi(Wlc_Obj_t *p)
Definition: wlc.h:158
void Wlc_WriteAddPos(Wlc_Ntk_t *p)
Definition: wlcWriteVer.c:99
void Wlc_WriteVerIntVec(FILE *pFile, Wlc_Ntk_t *p, Vec_Int_t *vVec, int Start)
Definition: wlcWriteVer.c:124
static void Vec_IntPush(Vec_Int_t *p, int Entry)
Definition: bblif.c:468
char * sprintf()
static int * Wlc_ObjConstValue(Wlc_Obj_t *p)
Definition: wlc.h:181
unsigned fIsPo
Definition: wlc.h:105
#define Wlc_NtkForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
Definition: wlc.h:206
static int Wlc_ObjRangeBeg(Wlc_Obj_t *p)
Definition: wlc.h:177
static word Abc_Tt6Mask(int nBits)
Definition: utilTruth.h:184
#define ABC_NAMESPACE_IMPL_START
Definition: abc_global.h:107
Definition: wlc.h:45
static int Wlc_ObjFaninId(Wlc_Obj_t *p, int i)
Definition: wlc.h:166
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
Vec_Int_t vPos
Definition: wlc.h:119
void Wlc_WriteTables(FILE *pFile, Wlc_Ntk_t *p)
Definition: wlcWriteVer.c:64
unsigned Mark
Definition: wlc.h:104
char * Extra_TimeStamp()
static Wlc_Obj_t * Wlc_ObjFanin1(Wlc_Ntk_t *p, Wlc_Obj_t *pObj)
Definition: wlc.h:172
static int Wlc_NtkPiNum(Wlc_Ntk_t *p)
Definition: wlc.h:143
#define assert(ex)
Definition: util_old.h:213
int strlen()
static void Vec_IntFree(Vec_Int_t *p)
Definition: bblif.c:235
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Definition: vecPtr.h:55
static int Wlc_ObjFaninId2(Wlc_Obj_t *p)
Definition: wlc.h:169
static void Vec_IntClear(Vec_Int_t *p)
Definition: bblif.c:452
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
Definition: vecInt.h:54
void Wlc_WriteVer(Wlc_Ntk_t *p, char *pFileName)
Definition: wlcWriteVer.c:354