ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
bacPtr.c
Go to the documentation of this file.
1
20
21#include "base/abc/abc.h"
22#include "base/main/mainInt.h"
23#include "map/mio/mio.h"
24#include "bac.h"
25
27
31
32/*
33design = array containing design name (as the first entry in the array) followed by pointers to modules
34module = array containing module name (as the first entry in the array) followed by pointers to 6 arrays:
35 {array of input names; array of output names; array of nodes; array of boxes,
36 array of floating-point input-arrival times; array of floating-point output-required times}
37node = array containing output name, followed by node type, followed by input names
38box = array containing model name, instance name, followed by pairs of formal/actual names for each port
39
40 Comments:
41 - in describing boxes
42 - input formal/actual name pairs should be listed before output name pairs
43 - the order of formal names should be the same as the order of inputs/outputs in the module description
44 - all formal names present in the module description should be listed
45 - if an input pin is not driven or an output pin has no fanout, the actual pin name is NULL
46 - word-level formal name "a" is written as bit-level names (a[0]. a[1], etc) ordered LSB to MSB
47 - the boxes can appear in any order (topological order is not expected)
48 - in description of nodes and boxes, primitive names should be given as char*-strings ("AndT", "OrT", etc)
49 - constant 0/1 nets should be driven by constant nodes having primitive names "Const0T" and "Const1T"
50 - primitive modules should not be written, but the list of primitives and formal names should be provided
51 - currently only "boxes" are supported (the array of "nodes" should contain no entries)
52 - arrays of input-arrival/output-required times in the module description are optional
53*/
54
55// elementary gates
56typedef enum {
58 PTR_GATE_C0, // Const0T
59 PTR_GATE_C1, // Const1T
60 PTR_GATE_BUF, // BufT
61 PTR_GATE_INV, // InvT
62 PTR_GATE_AND, // AndT
63 PTR_GATE_NAND, // NandT
64 PTR_GATE_OR, // OrT
65 PTR_GATE_NOR, // NorT
66 PTR_GATE_XOR, // XorT
67 PTR_GATE_XNOR, // XnorT
70
74
87{
88 Vec_PtrFree( (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 1) );
89 Vec_PtrFree( (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 2) );
90 Vec_VecFree( (Vec_Vec_t *)Vec_PtrEntry(vNtk, 3) );
91 Vec_VecFree( (Vec_Vec_t *)Vec_PtrEntry(vNtk, 4) );
92 if ( Vec_PtrSize(vNtk) > 5 )
93 Vec_FltFree( (Vec_Flt_t *)Vec_PtrEntry(vNtk, 5) );
94 if ( Vec_PtrSize(vNtk) > 6 )
95 Vec_FltFree( (Vec_Flt_t *)Vec_PtrEntry(vNtk, 6) );
96 Vec_PtrFree( vNtk );
97}
98void Bac_PtrFree( Vec_Ptr_t * vDes )
99{
100 Vec_Ptr_t * vNtk; int i;
101 if ( !vDes ) return;
102 Vec_PtrForEachEntryStart( Vec_Ptr_t *, vDes, vNtk, i, 1 )
103 Bac_PtrFreeNtk( vNtk );
104 Vec_PtrFree( vDes );
105}
106
119{
120 return (int)Vec_PtrMemory(vArray);
121}
123{
124 Vec_Ptr_t * vArray; int i, nBytes = 0;
125 Vec_PtrForEachEntry( Vec_Ptr_t *, vArrayArray, vArray, i )
126 nBytes += Bac_PtrMemoryArray(vArray);
127 return nBytes;
128}
130{
131 int nBytes = (int)Vec_PtrMemory(vNtk);
132 nBytes += Bac_PtrMemoryArray( (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 1) );
133 nBytes += Bac_PtrMemoryArray( (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 2) );
134 nBytes += Bac_PtrMemoryArrayArray( (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 3) );
135 nBytes += Bac_PtrMemoryArrayArray( (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 4) );
136 return nBytes;
137}
139{
140 Vec_Ptr_t * vNtk; int i, nBytes = (int)Vec_PtrMemory(vDes);
141 Vec_PtrForEachEntryStart( Vec_Ptr_t *, vDes, vNtk, i, 1 )
142 nBytes += Bac_PtrMemoryNtk(vNtk);
143 return nBytes;
144}
145
157void Bac_PtrDumpSignalsBlif( FILE * pFile, Vec_Ptr_t * vSigs, int fSkipLastComma )
158{
159 char * pSig; int i;
160 Vec_PtrForEachEntry( char *, vSigs, pSig, i )
161 fprintf( pFile, " %s", pSig );
162}
163void Bac_PtrDumpBoxBlif( FILE * pFile, Vec_Ptr_t * vBox )
164{
165 char * pName; int i;
166 fprintf( pFile, ".subckt" );
167 fprintf( pFile, " %s", (char *)Vec_PtrEntry(vBox, 0) );
168 //fprintf( pFile, " %s", (char *)Vec_PtrEntry(vBox, 1) ); // do not write intance name in BLIF
169 Vec_PtrForEachEntryStart( char *, vBox, pName, i, 2 )
170 fprintf( pFile, " %s=%s", pName, (char *)Vec_PtrEntry(vBox, i+1) ), i++;
171 fprintf( pFile, "\n" );
172}
173void Bac_PtrDumpBoxesBlif( FILE * pFile, Vec_Ptr_t * vBoxes )
174{
175 Vec_Ptr_t * vBox; int i;
176 Vec_PtrForEachEntry( Vec_Ptr_t *, vBoxes, vBox, i )
177 Bac_PtrDumpBoxBlif( pFile, vBox );
178}
179void Bac_PtrDumpModuleBlif( FILE * pFile, Vec_Ptr_t * vNtk )
180{
181 fprintf( pFile, ".model %s\n", (char *)Vec_PtrEntry(vNtk, 0) );
182 fprintf( pFile, ".inputs" );
183 Bac_PtrDumpSignalsBlif( pFile, (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 1), 0 );
184 fprintf( pFile, "\n" );
185 fprintf( pFile, ".outputs" );
186 Bac_PtrDumpSignalsBlif( pFile, (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 2), 1 );
187 fprintf( pFile, "\n" );
188 assert( Vec_PtrSize((Vec_Ptr_t *)Vec_PtrEntry(vNtk, 3)) == 0 ); // no nodes; only boxes
189 Bac_PtrDumpBoxesBlif( pFile, (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 4) );
190 fprintf( pFile, ".end\n\n" );
191}
192void Bac_PtrDumpBlif( char * pFileName, Vec_Ptr_t * vDes )
193{
194 FILE * pFile;
195 Vec_Ptr_t * vNtk; int i;
196 pFile = fopen( pFileName, "wb" );
197 if ( pFile == NULL )
198 {
199 printf( "Cannot open output file \"%s\".\n", pFileName );
200 return;
201 }
202 fprintf( pFile, "// Design \"%s\" written via Ptr in ABC on %s\n\n", (char *)Vec_PtrEntry(vDes, 0), Extra_TimeStamp() );
203 Vec_PtrForEachEntryStart( Vec_Ptr_t *, vDes, vNtk, i, 1 )
204 Bac_PtrDumpModuleBlif( pFile, vNtk );
205 fclose( pFile );
206}
207
219void Bac_PtrDumpSignalsVerilog( FILE * pFile, Vec_Ptr_t * vSigs, int fAlwaysComma )
220{
221 char * pSig; int i;
222 Vec_PtrForEachEntry( char *, vSigs, pSig, i )
223 fprintf( pFile, " %s%s", pSig, (fAlwaysComma || i < Vec_PtrSize(vSigs) - 1) ? ",":"" );
224}
225void Bac_PtrDumpBoxVerilog( FILE * pFile, Vec_Ptr_t * vBox )
226{
227 char * pName; int i;
228 fprintf( pFile, " %s", (char *)Vec_PtrEntry(vBox, 0) );
229 fprintf( pFile, " %s (", (char *)Vec_PtrEntry(vBox, 1) ); // write intance name in Verilog
230 Vec_PtrForEachEntryStart( char *, vBox, pName, i, 2 )
231 fprintf( pFile, ".%s(%s)%s", pName, (char *)Vec_PtrEntry(vBox, i+1), i < Vec_PtrSize(vBox) - 2 ? ", ":"" ), i++;
232 fprintf( pFile, ");\n" );
233}
234void Bac_PtrDumpBoxesVerilog( FILE * pFile, Vec_Ptr_t * vBoxes )
235{
236 Vec_Ptr_t * vBox; int i;
237 Vec_PtrForEachEntry( Vec_Ptr_t *, vBoxes, vBox, i )
238 Bac_PtrDumpBoxVerilog( pFile, vBox );
239}
240void Bac_PtrDumpModuleVerilog( FILE * pFile, Vec_Ptr_t * vNtk )
241{
242 fprintf( pFile, "module %s (\n ", (char *)Vec_PtrEntry(vNtk, 0) );
243 Bac_PtrDumpSignalsVerilog( pFile, (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 1), 1 );
244 Bac_PtrDumpSignalsVerilog( pFile, (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 2), 0 );
245 fprintf( pFile, "\n );\n" );
246 fprintf( pFile, " input" );
247 Bac_PtrDumpSignalsVerilog( pFile, (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 1), 0 );
248 fprintf( pFile, ";\n" );
249 fprintf( pFile, " output" );
250 Bac_PtrDumpSignalsVerilog( pFile, (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 2), 0 );
251 fprintf( pFile, ";\n" );
252 assert( Vec_PtrSize((Vec_Ptr_t *)Vec_PtrEntry(vNtk, 3)) == 0 ); // no nodes; only boxes
253 Bac_PtrDumpBoxesVerilog( pFile, (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 4) );
254 fprintf( pFile, "endmodule\n\n" );
255}
256void Bac_PtrDumpVerilog( char * pFileName, Vec_Ptr_t * vDes )
257{
258 FILE * pFile;
259 Vec_Ptr_t * vNtk; int i;
260 pFile = fopen( pFileName, "wb" );
261 if ( pFile == NULL )
262 {
263 printf( "Cannot open output file \"%s\".\n", pFileName );
264 return;
265 }
266 fprintf( pFile, "// Design \"%s\" written via Ptr in ABC on %s\n\n", (char *)Vec_PtrEntry(vDes, 0), Extra_TimeStamp() );
267 Vec_PtrForEachEntryStart( Vec_Ptr_t *, vDes, vNtk, i, 1 )
268 Bac_PtrDumpModuleVerilog( pFile, vNtk );
269 fclose( pFile );
270}
271
272
284void Bac_ManCollectGateNameOne( Mio_Library_t * pLib, Ptr_ObjType_t Type, word Truth, Vec_Ptr_t * vGateNames )
285{
286 Mio_Gate_t * pGate = Mio_LibraryReadGateByTruth( pLib, Truth );
287 if ( pGate != NULL )
288 Vec_PtrWriteEntry( vGateNames, Type, Mio_GateReadName(pGate) );
289}
291{
292 static word uTruths6[3] = {
293 ABC_CONST(0xAAAAAAAAAAAAAAAA),
294 ABC_CONST(0xCCCCCCCCCCCCCCCC),
295 ABC_CONST(0xF0F0F0F0F0F0F0F0),
296 };
297 Vec_Ptr_t * vGateNames = Vec_PtrStart( PTR_GATE_UNKNOWN );
298 Bac_ManCollectGateNameOne( pLib, PTR_GATE_C0, 0, vGateNames );
299 Bac_ManCollectGateNameOne( pLib, PTR_GATE_C1, ~(word)0, vGateNames );
300 Bac_ManCollectGateNameOne( pLib, PTR_GATE_BUF, uTruths6[0], vGateNames );
301 Bac_ManCollectGateNameOne( pLib, PTR_GATE_INV, ~uTruths6[0], vGateNames );
302 Bac_ManCollectGateNameOne( pLib, PTR_GATE_AND, (uTruths6[0] & uTruths6[1]), vGateNames );
303 Bac_ManCollectGateNameOne( pLib, PTR_GATE_NAND, ~(uTruths6[0] & uTruths6[1]), vGateNames );
304 Bac_ManCollectGateNameOne( pLib, PTR_GATE_OR, (uTruths6[0] | uTruths6[1]), vGateNames );
305 Bac_ManCollectGateNameOne( pLib, PTR_GATE_NOR, ~(uTruths6[0] | uTruths6[1]), vGateNames );
306 Bac_ManCollectGateNameOne( pLib, PTR_GATE_XOR, (uTruths6[0] ^ uTruths6[1]), vGateNames );
307 Bac_ManCollectGateNameOne( pLib, PTR_GATE_XNOR, ~(uTruths6[0] ^ uTruths6[1]), vGateNames );
308 return vGateNames;
309}
310
322void Bac_PtrUpdateBox( Vec_Ptr_t * vBox, Vec_Ptr_t * vGatesNames )
323{
324 Mio_Gate_t * pGate; Mio_Pin_t * pPin; int i = 1;
326 // update gate name
327 char * pNameNew, * pName = (char *)Vec_PtrEntry(vBox, 0);
328 if ( !strcmp(pName, "Const0T") )
329 pNameNew = (char *)Vec_PtrEntry(vGatesNames, PTR_GATE_C0);
330 else if ( !strcmp(pName, "Const1T") )
331 pNameNew = (char *)Vec_PtrEntry(vGatesNames, PTR_GATE_C1);
332 else if ( !strcmp(pName, "BufT") )
333 pNameNew = (char *)Vec_PtrEntry(vGatesNames, PTR_GATE_BUF);
334 else if ( !strcmp(pName, "InvT") )
335 pNameNew = (char *)Vec_PtrEntry(vGatesNames, PTR_GATE_INV);
336 else if ( !strcmp(pName, "AndT") )
337 pNameNew = (char *)Vec_PtrEntry(vGatesNames, PTR_GATE_AND);
338 else if ( !strcmp(pName, "NandT") )
339 pNameNew = (char *)Vec_PtrEntry(vGatesNames, PTR_GATE_NAND);
340 else if ( !strcmp(pName, "OrT") )
341 pNameNew = (char *)Vec_PtrEntry(vGatesNames, PTR_GATE_OR);
342 else if ( !strcmp(pName, "NorT") )
343 pNameNew = (char *)Vec_PtrEntry(vGatesNames, PTR_GATE_NOR);
344 else if ( !strcmp(pName, "XorT") )
345 pNameNew = (char *)Vec_PtrEntry(vGatesNames, PTR_GATE_XOR);
346 else if ( !strcmp(pName, "XnorT") )
347 pNameNew = (char *)Vec_PtrEntry(vGatesNames, PTR_GATE_XNOR);
348 else // user hierarchy
349 return;
350 ABC_FREE( pName );
351 Vec_PtrWriteEntry( vBox, 0, Abc_UtilStrsav(pNameNew) );
352 // remove instance name
353 pName = (char *)Vec_PtrEntry(vBox, 1);
354 ABC_FREE( pName );
355 Vec_PtrWriteEntry( vBox, 1, NULL );
356 // update formal input names
357 pGate = Mio_LibraryReadGateByName( pLib, pNameNew, NULL );
358 Mio_GateForEachPin( pGate, pPin )
359 {
360 pName = (char *)Vec_PtrEntry( vBox, 2 * i );
361 ABC_FREE( pName );
362 pNameNew = Mio_PinReadName(pPin);
363 Vec_PtrWriteEntry( vBox, 2 * i++, Abc_UtilStrsav(pNameNew) );
364 }
365 // update output name
366 pName = (char *)Vec_PtrEntry( vBox, 2 * i );
367 pNameNew = Mio_GateReadOutName(pGate);
368 Vec_PtrWriteEntry( vBox, 2 * i++, Abc_UtilStrsav(pNameNew) );
369 assert( 2 * i == Vec_PtrSize(vBox) );
370}
372{
373 char * pName; int i;
374 Vec_Ptr_t * vNew = Vec_PtrAllocExact( Vec_PtrSize(vSig) );
375 Vec_PtrForEachEntry( char *, vSig, pName, i )
376 Vec_PtrPush( vNew, Abc_UtilStrsav(pName) );
377 return vNew;
378}
380{
381 char * pName; int i;
382 Vec_Ptr_t * vNew = Vec_PtrAllocExact( Vec_PtrSize(vBox) );
383 Vec_PtrForEachEntry( char *, vBox, pName, i )
384 Vec_PtrPush( vNew, Abc_UtilStrsav(pName) );
385 if ( vGatesNames )
386 Bac_PtrUpdateBox( vNew, vGatesNames );
387 return vNew;
388}
390{
391 Vec_Ptr_t * vBox; int i;
392 Vec_Ptr_t * vNew = Vec_PtrAllocExact( Vec_PtrSize(vBoxes) );
393 Vec_PtrForEachEntry( Vec_Ptr_t *, vBoxes, vBox, i )
394 Vec_PtrPush( vNew, Bac_PtrTransformBox(vBox, vGatesNames) );
395 return vNew;
396}
398{
399 char * pName = (char *)Vec_PtrEntry(vNtk, 0);
400 Vec_Ptr_t * vInputs = (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 1);
401 Vec_Ptr_t * vOutputs = (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 2);
402 Vec_Ptr_t * vBoxes = (Vec_Ptr_t *)Vec_PtrEntry(vNtk, 4);
403 Vec_Ptr_t * vNew = Vec_PtrAllocExact( Vec_PtrSize(vNtk) );
404 Vec_PtrPush( vNew, Abc_UtilStrsav(pName) );
405 Vec_PtrPush( vNew, Bac_PtrTransformSigs(vInputs) );
406 Vec_PtrPush( vNew, Bac_PtrTransformSigs(vOutputs) );
407 Vec_PtrPush( vNew, Vec_PtrAllocExact(0) );
408 Vec_PtrPush( vNew, Bac_PtrTransformBoxes(vBoxes, vGatesNames) );
409 return vNew;
410}
412{
413 Mio_Library_t * pLib;
414 Vec_Ptr_t * vGatesNames;
415 Vec_Ptr_t * vNtk, * vNew; int i;
416 // dump BLIF before transformation
417 Bac_PtrDumpBlif( "test1.blif", vDes );
418 if ( Abc_FrameGetGlobalFrame() == NULL )
419 {
420 printf( "ABC framework is not started.\n" );
421 return NULL;
422 }
424 if ( pLib == NULL )
425 {
426 printf( "Standard cell library is not entered.\n" );
427 return NULL;
428 }
429 vGatesNames = Bac_ManCollectGateNamesByTruth( pLib );
430 // transform
431 vNew = Vec_PtrAllocExact( Vec_PtrSize(vDes) );
432 Vec_PtrPush( vNew, Abc_UtilStrsav((char *)Vec_PtrEntry(vDes, 0)) );
433 Vec_PtrForEachEntryStart( Vec_Ptr_t *, vDes, vNtk, i, 1 )
434 Vec_PtrPush( vNew, Bac_PtrTransformNtk(vNtk, vGatesNames) );
435 // dump BLIF after transformation
436 Bac_PtrDumpBlif( "test2.blif", vNew );
437 Vec_PtrFree( vGatesNames );
438 return vNew;
439}
440
453{
454 char * pFileName = "c/hie/dump/1/netlist_1.v";
455 Abc_Ntk_t * pNtk = Io_ReadNetlist( pFileName, Io_ReadFileType(pFileName), 0 );
456 extern Vec_Ptr_t * Ptr_AbcDeriveDes( Abc_Ntk_t * pNtk );
457 Vec_Ptr_t * vDes = Ptr_AbcDeriveDes( pNtk );
458 Vec_Ptr_t * vNew = Bac_PtrTransformTest( vDes );
459 Bac_PtrFree( vDes );
460 Bac_PtrFree( vNew );
461}
462
463
467
468
470
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
#define ABC_FREE(obj)
Definition abc_global.h:267
#define ABC_CONST(number)
PARAMETERS ///.
Definition abc_global.h:240
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_DLL Abc_Frame_t * Abc_FrameGetGlobalFrame()
Definition mainFrame.c:643
Vec_Ptr_t * Ptr_AbcDeriveDes(Abc_Ntk_t *pNtk)
Definition bacPtrAbc.c:194
void Bac_PtrFree(Vec_Ptr_t *vDes)
Definition bacPtr.c:98
Vec_Ptr_t * Bac_ManCollectGateNamesByTruth(Mio_Library_t *pLib)
Definition bacPtr.c:290
Vec_Ptr_t * Bac_PtrTransformSigs(Vec_Ptr_t *vSig)
Definition bacPtr.c:371
Vec_Ptr_t * Bac_PtrTransformBox(Vec_Ptr_t *vBox, Vec_Ptr_t *vGatesNames)
Definition bacPtr.c:379
void Bac_PtrDumpModuleBlif(FILE *pFile, Vec_Ptr_t *vNtk)
Definition bacPtr.c:179
void Bac_PtrDumpBoxesVerilog(FILE *pFile, Vec_Ptr_t *vBoxes)
Definition bacPtr.c:234
Ptr_ObjType_t
DECLARATIONS ///.
Definition bacPtr.c:56
@ PTR_GATE_OR
Definition bacPtr.c:64
@ PTR_GATE_UNKNOWN
Definition bacPtr.c:68
@ PTR_GATE_C1
Definition bacPtr.c:59
@ PTR_GATE_XNOR
Definition bacPtr.c:67
@ PTR_GATE_AND
Definition bacPtr.c:62
@ PTR_GATE_BUF
Definition bacPtr.c:60
@ PTR_GATE_NONE
Definition bacPtr.c:57
@ PTR_GATE_XOR
Definition bacPtr.c:66
@ PTR_GATE_NOR
Definition bacPtr.c:65
@ PTR_GATE_C0
Definition bacPtr.c:58
@ PTR_GATE_NAND
Definition bacPtr.c:63
@ PTR_GATE_INV
Definition bacPtr.c:61
void Bac_PtrDumpBoxesBlif(FILE *pFile, Vec_Ptr_t *vBoxes)
Definition bacPtr.c:173
void Bac_PtrDumpBoxBlif(FILE *pFile, Vec_Ptr_t *vBox)
Definition bacPtr.c:163
void Bac_PtrDumpSignalsBlif(FILE *pFile, Vec_Ptr_t *vSigs, int fSkipLastComma)
Definition bacPtr.c:157
void Bac_PtrTransformTestTest()
Definition bacPtr.c:452
Vec_Ptr_t * Bac_PtrTransformTest(Vec_Ptr_t *vDes)
Definition bacPtr.c:411
int Bac_PtrMemoryArray(Vec_Ptr_t *vArray)
Definition bacPtr.c:118
void Bac_ManCollectGateNameOne(Mio_Library_t *pLib, Ptr_ObjType_t Type, word Truth, Vec_Ptr_t *vGateNames)
Definition bacPtr.c:284
int Bac_PtrMemory(Vec_Ptr_t *vDes)
Definition bacPtr.c:138
Vec_Ptr_t * Bac_PtrTransformNtk(Vec_Ptr_t *vNtk, Vec_Ptr_t *vGatesNames)
Definition bacPtr.c:397
int Bac_PtrMemoryNtk(Vec_Ptr_t *vNtk)
Definition bacPtr.c:129
void Bac_PtrDumpVerilog(char *pFileName, Vec_Ptr_t *vDes)
Definition bacPtr.c:256
void Bac_PtrFreeNtk(Vec_Ptr_t *vNtk)
FUNCTION DEFINITIONS ///.
Definition bacPtr.c:86
void Bac_PtrUpdateBox(Vec_Ptr_t *vBox, Vec_Ptr_t *vGatesNames)
Definition bacPtr.c:322
void Bac_PtrDumpBlif(char *pFileName, Vec_Ptr_t *vDes)
Definition bacPtr.c:192
void Bac_PtrDumpBoxVerilog(FILE *pFile, Vec_Ptr_t *vBox)
Definition bacPtr.c:225
int Bac_PtrMemoryArrayArray(Vec_Ptr_t *vArrayArray)
Definition bacPtr.c:122
void Bac_PtrDumpSignalsVerilog(FILE *pFile, Vec_Ptr_t *vSigs, int fAlwaysComma)
Definition bacPtr.c:219
Vec_Ptr_t * Bac_PtrTransformBoxes(Vec_Ptr_t *vBoxes, Vec_Ptr_t *vGatesNames)
Definition bacPtr.c:389
void Bac_PtrDumpModuleVerilog(FILE *pFile, Vec_Ptr_t *vNtk)
Definition bacPtr.c:240
ABC_DLL void * Abc_FrameReadLibGen()
Definition mainFrame.c:59
char * Extra_TimeStamp()
Abc_Ntk_t * Io_ReadNetlist(char *pFileName, Io_FileType_t FileType, int fCheck)
Definition ioUtil.c:99
Io_FileType_t Io_ReadFileType(char *pFileName)
DECLARATIONS ///.
Definition ioUtil.c:47
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36
struct Mio_LibraryStruct_t_ Mio_Library_t
Definition mio.h:42
Mio_Gate_t * Mio_LibraryReadGateByName(Mio_Library_t *pLib, char *pName, char *pOutName)
Definition mioApi.c:105
Mio_Gate_t * Mio_LibraryReadGateByTruth(Mio_Library_t *pLib, word t)
Definition mioApi.c:130
char * Mio_PinReadName(Mio_Pin_t *pPin)
Definition mioApi.c:208
char * Mio_GateReadName(Mio_Gate_t *pGate)
Definition mioApi.c:169
struct Mio_PinStruct_t_ Mio_Pin_t
Definition mio.h:44
char * Mio_GateReadOutName(Mio_Gate_t *pGate)
Definition mioApi.c:170
#define Mio_GateForEachPin(Gate, Pin)
Definition mio.h:92
struct Mio_GateStruct_t_ Mio_Gate_t
Definition mio.h:43
#define assert(ex)
Definition util_old.h:213
int strcmp()
typedefABC_NAMESPACE_HEADER_START struct Vec_Flt_t_ Vec_Flt_t
INCLUDES ///.
Definition vecFlt.h:42
#define Vec_PtrForEachEntryStart(Type, vVec, pEntry, i, Start)
Definition vecPtr.h:57
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Definition vecPtr.h:55
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
Definition vecVec.h:42