ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
ioUtil.c
Go to the documentation of this file.
1
20
21#include "ioAbc.h"
22#include "base/main/main.h"
23#include "misc/util/utilTruth.h"
24
26
27
31
35
47Io_FileType_t Io_ReadFileType( char * pFileName )
48{
49 char * pExt;
50 if ( pFileName == NULL )
51 return IO_FILE_NONE;
52 pExt = Extra_FileNameExtension( pFileName );
53 if ( pExt == NULL )
54 return IO_FILE_NONE;
55 if ( !strcmp( pExt, "aig" ) )
56 return IO_FILE_AIGER;
57 if ( !strcmp( pExt, "baf" ) )
58 return IO_FILE_BAF;
59 if ( !strcmp( pExt, "bblif" ) )
60 return IO_FILE_BBLIF;
61 if ( !strcmp( pExt, "blif" ) )
62 return IO_FILE_BLIF;
63 if ( !strcmp( pExt, "bench" ) )
64 return IO_FILE_BENCH;
65 if ( !strcmp( pExt, "cnf" ) )
66 return IO_FILE_CNF;
67 if ( !strcmp( pExt, "dot" ) )
68 return IO_FILE_DOT;
69 if ( !strcmp( pExt, "edif" ) )
70 return IO_FILE_EDIF;
71 if ( !strcmp( pExt, "eqn" ) )
72 return IO_FILE_EQN;
73 if ( !strcmp( pExt, "gml" ) )
74 return IO_FILE_GML;
75 if ( !strcmp( pExt, "list" ) )
76 return IO_FILE_LIST;
77 if ( !strcmp( pExt, "mv" ) )
78 return IO_FILE_BLIFMV;
79 if ( !strcmp( pExt, "pla" ) )
80 return IO_FILE_PLA;
81 if ( !strcmp( pExt, "smv" ) )
82 return IO_FILE_SMV;
83 if ( !strcmp( pExt, "v" ) )
84 return IO_FILE_VERILOG;
85 return IO_FILE_UNKNOWN;
86}
87
99Abc_Ntk_t * Io_ReadNetlist( char * pFileName, Io_FileType_t FileType, int fCheck )
100{
101 FILE * pFile;
102 Abc_Ntk_t * pNtk;
103 if ( FileType == IO_FILE_NONE || FileType == IO_FILE_UNKNOWN )
104 {
105 fprintf( stdout, "Generic file reader requires a known file extension to open \"%s\".\n", pFileName );
106 return NULL;
107 }
108 // check if the file exists
109 pFile = fopen( pFileName, "r" );
110 if ( pFile == NULL )
111 {
112 fprintf( stdout, "Cannot open input file \"%s\". ", pFileName );
113 if ( (pFileName = Extra_FileGetSimilarName( pFileName, ".blif", ".bench", ".pla", ".baf", ".aig" )) )
114 fprintf( stdout, "Did you mean \"%s\"?", pFileName );
115 fprintf( stdout, "\n" );
116 return NULL;
117 }
118 fclose( pFile );
119 // read the AIG
120 if ( FileType == IO_FILE_AIGER || FileType == IO_FILE_BAF || FileType == IO_FILE_BBLIF )
121 {
122 if ( FileType == IO_FILE_AIGER )
123 pNtk = Io_ReadAiger( pFileName, fCheck );
124 else if ( FileType == IO_FILE_BAF )
125 pNtk = Io_ReadBaf( pFileName, fCheck );
126 else // if ( FileType == IO_FILE_BBLIF )
127 pNtk = Io_ReadBblif( pFileName, fCheck );
128 if ( pNtk == NULL )
129 {
130 fprintf( stdout, "Reading AIG from file has failed.\n" );
131 return NULL;
132 }
133 return pNtk;
134 }
135 // read the new netlist
136 if ( FileType == IO_FILE_BLIF )
137// pNtk = Io_ReadBlif( pFileName, fCheck );
138 pNtk = Io_ReadBlifMv( pFileName, 0, fCheck );
139 else if ( Io_ReadFileType(pFileName) == IO_FILE_BLIFMV )
140 pNtk = Io_ReadBlifMv( pFileName, 1, fCheck );
141 else if ( FileType == IO_FILE_BENCH )
142 pNtk = Io_ReadBench( pFileName, fCheck );
143 else if ( FileType == IO_FILE_EDIF )
144 pNtk = Io_ReadEdif( pFileName, fCheck );
145 else if ( FileType == IO_FILE_EQN )
146 pNtk = Io_ReadEqn( pFileName, fCheck );
147 else if ( FileType == IO_FILE_PLA )
148 pNtk = Io_ReadPla( pFileName, 0, 0, 0, 0, fCheck );
149 else if ( FileType == IO_FILE_VERILOG )
150 pNtk = Io_ReadVerilog( pFileName, fCheck );
151 else
152 {
153 fprintf( stderr, "Unknown file format.\n" );
154 return NULL;
155 }
156 if ( pNtk == NULL )
157 {
158 fprintf( stdout, "Reading network from file has failed.\n" );
159 return NULL;
160 }
161
162 if ( fCheck && (Abc_NtkBlackboxNum(pNtk) || Abc_NtkWhiteboxNum(pNtk)) && pNtk->pDesign )
163 {
164
165 int i, fCycle = 0;
166 Abc_Ntk_t * pModel;
167// fprintf( stdout, "Warning: The network contains hierarchy.\n" );
168 Vec_PtrForEachEntry( Abc_Ntk_t *, pNtk->pDesign->vModules, pModel, i )
169 if ( !Abc_NtkIsAcyclicWithBoxes( pModel ) )
170 fCycle = 1;
171 if ( fCycle )
172 {
173 Abc_NtkDelete( pNtk );
174 return NULL;
175 }
176 }
177 return pNtk;
178}
179
192{
193 Vec_Ptr_t *tempStore;
194 char *pFormula;
195 int i;
196
197 if( pNtk && Vec_PtrSize( pNtk->vLtlProperties ) > 0 )
198 {
199 tempStore = Vec_PtrAlloc( Vec_PtrSize( pNtk->vLtlProperties ) );
200 Vec_PtrForEachEntry( char *, pNtk->vLtlProperties, pFormula, i )
201 Vec_PtrPush( tempStore, pFormula );
202 assert( Vec_PtrSize( tempStore ) == Vec_PtrSize( pNtk->vLtlProperties ) );
203 return tempStore;
204 }
205 else
206 return NULL;
207}
208
220void updateLtlStoreOfNtk( Abc_Ntk_t *pNtk, Vec_Ptr_t *tempLtlStore )
221{
222 int i;
223 char *pFormula;
224
225 assert( tempLtlStore != NULL );
226 Vec_PtrForEachEntry( char *, tempLtlStore, pFormula, i )
227 Vec_PtrPush( pNtk->vLtlProperties, pFormula );
228}
229
241Abc_Ntk_t * Io_Read( char * pFileName, Io_FileType_t FileType, int fCheck, int fBarBufs )
242{
243 Abc_Ntk_t * pNtk, * pTemp;
244 Vec_Ptr_t * vLtl;
245 // get the netlist
246 pNtk = Io_ReadNetlist( pFileName, FileType, fCheck );
247 if ( pNtk == NULL )
248 return NULL;
249 vLtl = temporaryLtlStore( pNtk );
250 if ( !Abc_NtkIsNetlist(pNtk) )
251 return pNtk;
252 // derive barbufs
253 if ( fBarBufs )
254 {
255 pNtk = Abc_NtkToBarBufs( pTemp = pNtk );
256 Abc_NtkDelete( pTemp );
257 assert( Abc_NtkIsLogic(pNtk) );
258 return pNtk;
259 }
260 // flatten logic hierarchy
261 assert( Abc_NtkIsNetlist(pNtk) );
262 if ( Abc_NtkWhiteboxNum(pNtk) > 0 )
263 {
264 pNtk = Abc_NtkFlattenLogicHierarchy( pTemp = pNtk );
265 Abc_NtkDelete( pTemp );
266 if ( pNtk == NULL )
267 {
268 fprintf( stdout, "Flattening logic hierarchy has failed.\n" );
269 return NULL;
270 }
271 }
272 // convert blackboxes
273 if ( Abc_NtkBlackboxNum(pNtk) > 0 )
274 {
275 printf( "Hierarchy reader converted %d instances of blackboxes.\n", Abc_NtkBlackboxNum(pNtk) );
276 pNtk = Abc_NtkConvertBlackboxes( pTemp = pNtk );
277 Abc_NtkDelete( pTemp );
278 if ( pNtk == NULL )
279 {
280 fprintf( stdout, "Converting blackboxes has failed.\n" );
281 return NULL;
282 }
283 }
284 // consider the case of BLIF-MV
285 if ( Io_ReadFileType(pFileName) == IO_FILE_BLIFMV )
286 {
287 pNtk = Abc_NtkStrashBlifMv( pTemp = pNtk );
288 Abc_NtkDelete( pTemp );
289 if ( pNtk == NULL )
290 {
291 fprintf( stdout, "Converting BLIF-MV to AIG has failed.\n" );
292 return NULL;
293 }
294 return pNtk;
295 }
296 // convert the netlist into the logic network
297 pNtk = Abc_NtkToLogic( pTemp = pNtk );
298 if( vLtl )
299 updateLtlStoreOfNtk( pNtk, vLtl );
300 Abc_NtkDelete( pTemp );
301 if ( pNtk == NULL )
302 {
303 fprintf( stdout, "Converting netlist to logic network after reading has failed.\n" );
304 return NULL;
305 }
306 return pNtk;
307}
308
320void Io_Write( Abc_Ntk_t * pNtk, char * pFileName, Io_FileType_t FileType )
321{
322 Abc_Ntk_t * pNtkTemp, * pNtkCopy;
323 // check if the current network is available
324 if ( pNtk == NULL )
325 {
326 fprintf( stdout, "Empty network.\n" );
327 return;
328 }
329 // check if the file extension if given
330 if ( FileType == IO_FILE_NONE || FileType == IO_FILE_UNKNOWN )
331 {
332 fprintf( stdout, "The generic file writer requires a known file extension.\n" );
333 return;
334 }
335 // write the AIG formats
336 if ( FileType == IO_FILE_AIGER || FileType == IO_FILE_BAF )
337 {
338 if ( !Abc_NtkIsStrash(pNtk) )
339 {
340 fprintf( stdout, "Writing this format is only possible for structurally hashed AIGs.\n" );
341 return;
342 }
343 if ( FileType == IO_FILE_AIGER )
344 Io_WriteAiger( pNtk, pFileName, 1, 0, 0 );
345 else //if ( FileType == IO_FILE_BAF )
346 Io_WriteBaf( pNtk, pFileName );
347 return;
348 }
349 // write non-netlist types
350 if ( FileType == IO_FILE_CNF )
351 {
352 Io_WriteCnf( pNtk, pFileName, 0 );
353 return;
354 }
355 if ( FileType == IO_FILE_DOT )
356 {
357 Io_WriteDot( pNtk, pFileName );
358 return;
359 }
360 if ( FileType == IO_FILE_GML )
361 {
362 Io_WriteGml( pNtk, pFileName );
363 return;
364 }
365 if ( FileType == IO_FILE_BBLIF )
366 {
367 if ( !Abc_NtkIsLogic(pNtk) )
368 {
369 fprintf( stdout, "Writing Binary BLIF is only possible for logic networks.\n" );
370 return;
371 }
372 if ( !Abc_NtkHasSop(pNtk) )
373 Abc_NtkToSop( pNtk, -1, ABC_INFINITY );
374 Io_WriteBblif( pNtk, pFileName );
375 return;
376 }
377/*
378 if ( FileType == IO_FILE_BLIFMV )
379 {
380 Io_WriteBlifMv( pNtk, pFileName );
381 return;
382 }
383*/
384 // convert logic network into netlist
385 if ( FileType == IO_FILE_PLA )
386 {
387 if ( Abc_NtkLevel(pNtk) > 1 )
388 {
389 fprintf( stdout, "PLA writing is available for collapsed networks.\n" );
390 return;
391 }
392 if ( Abc_NtkIsComb(pNtk) )
393 pNtkTemp = Abc_NtkToNetlist( pNtk );
394 else
395 {
396 fprintf( stdout, "Latches are written into the PLA file at PI/PO pairs.\n" );
397 pNtkCopy = Abc_NtkDup( pNtk );
398 Abc_NtkMakeComb( pNtkCopy, 0 );
399 pNtkTemp = Abc_NtkToNetlist( pNtk );
400 Abc_NtkDelete( pNtkCopy );
401 }
402 if ( !Abc_NtkToSop( pNtkTemp, 1, ABC_INFINITY ) )
403 return;
404 }
405 else if ( FileType == IO_FILE_MOPLA )
406 {
407 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 );
408 }
409 else if ( FileType == IO_FILE_BENCH )
410 {
411 if ( !Abc_NtkIsStrash(pNtk) )
412 {
413 fprintf( stdout, "Writing traditional BENCH is available for AIGs only (use \"write_bench\").\n" );
414 return;
415 }
416 pNtkTemp = Abc_NtkToNetlistBench( pNtk );
417 }
418 else if ( FileType == IO_FILE_SMV )
419 {
420 if ( !Abc_NtkIsStrash(pNtk) )
421 {
422 fprintf( stdout, "Writing traditional SMV is available for AIGs only.\n" );
423 return;
424 }
425 pNtkTemp = Abc_NtkToNetlistBench( pNtk );
426 }
427 else
428 pNtkTemp = Abc_NtkToNetlist( pNtk );
429
430 if ( pNtkTemp == NULL )
431 {
432 fprintf( stdout, "Converting to netlist has failed.\n" );
433 return;
434 }
435
436 if ( FileType == IO_FILE_BLIF )
437 {
438 if ( !Abc_NtkHasSop(pNtkTemp) && !Abc_NtkHasMapping(pNtkTemp) )
439 Abc_NtkToSop( pNtkTemp, -1, ABC_INFINITY );
440 Io_WriteBlif( pNtkTemp, pFileName, 1, 0, 0 );
441 }
442 else if ( FileType == IO_FILE_BLIFMV )
443 {
444 if ( !Abc_NtkConvertToBlifMv( pNtkTemp ) )
445 return;
446 Io_WriteBlifMv( pNtkTemp, pFileName );
447 }
448 else if ( FileType == IO_FILE_BENCH )
449 Io_WriteBench( pNtkTemp, pFileName );
450 else if ( FileType == IO_FILE_BOOK )
451 Io_WriteBook( pNtkTemp, pFileName );
452 else if ( FileType == IO_FILE_PLA )
453 Io_WritePla( pNtkTemp, pFileName );
454 else if ( FileType == IO_FILE_MOPLA )
455 Io_WriteMoPla( pNtkTemp, pFileName );
456 else if ( FileType == IO_FILE_EQN )
457 {
458 if ( !Abc_NtkHasAig(pNtkTemp) )
459 Abc_NtkToAig( pNtkTemp );
460 Io_WriteEqn( pNtkTemp, pFileName );
461 }
462 else if ( FileType == IO_FILE_SMV )
463 Io_WriteSmv( pNtkTemp, pFileName );
464 else if ( FileType == IO_FILE_VERILOG )
465 {
466 if ( !Abc_NtkHasAig(pNtkTemp) && !Abc_NtkHasMapping(pNtkTemp) )
467 Abc_NtkToAig( pNtkTemp );
468 Io_WriteVerilog( pNtkTemp, pFileName, 0, 0 );
469 }
470 else
471 fprintf( stderr, "Unknown file format.\n" );
472 Abc_NtkDelete( pNtkTemp );
473}
474
486void Io_WriteHie( Abc_Ntk_t * pNtk, char * pBaseName, char * pFileName )
487{
488 Abc_Ntk_t * pNtkTemp, * pNtkResult, * pNtkBase = NULL;
489 int i;
490 // check if the current network is available
491 if ( pNtk == NULL )
492 {
493 fprintf( stdout, "Empty network.\n" );
494 return;
495 }
496
497 // read the base network
498 assert( Abc_NtkIsStrash(pNtk) || Abc_NtkIsLogic(pNtk) );
499 if ( Io_ReadFileType(pBaseName) == IO_FILE_BLIF )
500 pNtkBase = Io_ReadBlifMv( pBaseName, 0, 1 );
501 else if ( Io_ReadFileType(pBaseName) == IO_FILE_BLIFMV )
502 pNtkBase = Io_ReadBlifMv( pBaseName, 1, 1 );
503 else if ( Io_ReadFileType(pBaseName) == IO_FILE_VERILOG )
504 pNtkBase = Io_ReadVerilog( pBaseName, 1 );
505 else
506 fprintf( stderr, "Unknown input file format.\n" );
507 if ( pNtkBase == NULL )
508 return;
509
510 // flatten logic hierarchy if present
511 if ( Abc_NtkWhiteboxNum(pNtkBase) > 0 && pNtk->nBarBufs == 0 )
512 {
513 pNtkBase = Abc_NtkFlattenLogicHierarchy( pNtkTemp = pNtkBase );
514 Abc_NtkDelete( pNtkTemp );
515 if ( pNtkBase == NULL )
516 return;
517 }
518
519 // reintroduce the boxes into the netlist
520 if ( pNtk->nBarBufs > 0 )
521 {
522 // derive the netlist
523 pNtkResult = Abc_NtkToNetlist( pNtk );
524 pNtkResult = Abc_NtkFromBarBufs( pNtkBase, pNtkTemp = pNtkResult );
525 Abc_NtkDelete( pNtkTemp );
526 if ( pNtkResult )
527 printf( "Hierarchy writer replaced %d barbufs by hierarchy boundaries.\n", pNtk->nBarBufs );
528 }
529 else if ( Io_ReadFileType(pBaseName) == IO_FILE_BLIFMV )
530 {
531 if ( Abc_NtkBlackboxNum(pNtkBase) > 0 )
532 {
533 printf( "Hierarchy writer does not support BLIF-MV with blackboxes.\n" );
534 Abc_NtkDelete( pNtkBase );
535 return;
536 }
537 // convert the current network to BLIF-MV
538 assert( !Abc_NtkIsNetlist(pNtk) );
539 pNtkResult = Abc_NtkToNetlist( pNtk );
540 if ( !Abc_NtkConvertToBlifMv( pNtkResult ) )
541 {
542 Abc_NtkDelete( pNtkBase );
543 return;
544 }
545 // reintroduce the network
546 pNtkResult = Abc_NtkInsertBlifMv( pNtkBase, pNtkTemp = pNtkResult );
547 Abc_NtkDelete( pNtkTemp );
548 }
549 else if ( Abc_NtkBlackboxNum(pNtkBase) > 0 )
550 {
551 // derive the netlist
552 pNtkResult = Abc_NtkToNetlist( pNtk );
553 pNtkResult = Abc_NtkInsertNewLogic( pNtkBase, pNtkTemp = pNtkResult );
554 Abc_NtkDelete( pNtkTemp );
555 if ( pNtkResult )
556 printf( "Hierarchy writer reintroduced %d instances of blackboxes.\n", Abc_NtkBlackboxNum(pNtkBase) );
557 }
558 else
559 {
560 printf( "Warning: The output network does not contain blackboxes.\n" );
561 pNtkResult = Abc_NtkToNetlist( pNtk );
562 }
563 Abc_NtkDelete( pNtkBase );
564 if ( pNtkResult == NULL )
565 return;
566
567 // write the resulting network
568 if ( Io_ReadFileType(pFileName) == IO_FILE_BLIF )
569 {
570 if ( pNtkResult->pDesign )
571 {
572 Vec_PtrForEachEntry( Abc_Ntk_t *, pNtkResult->pDesign->vModules, pNtkTemp, i )
573 if ( !Abc_NtkHasSop(pNtkTemp) && !Abc_NtkHasMapping(pNtkTemp) )
574 Abc_NtkToSop( pNtkTemp, -1, ABC_INFINITY );
575 }
576 else
577 {
578 if ( !Abc_NtkHasSop(pNtkResult) && !Abc_NtkHasMapping(pNtkResult) )
579 Abc_NtkToSop( pNtkResult, -1, ABC_INFINITY );
580 }
581 Io_WriteBlif( pNtkResult, pFileName, 1, 0, 0 );
582 }
583 else if ( Io_ReadFileType(pFileName) == IO_FILE_VERILOG )
584 {
585 if ( pNtkResult->pDesign )
586 {
587 Vec_PtrForEachEntry( Abc_Ntk_t *, pNtkResult->pDesign->vModules, pNtkTemp, i )
588 if ( !Abc_NtkHasAig(pNtkTemp) && !Abc_NtkHasMapping(pNtkTemp) )
589 Abc_NtkToAig( pNtkTemp );
590 }
591 else
592 {
593 if ( !Abc_NtkHasAig(pNtkResult) && !Abc_NtkHasMapping(pNtkResult) )
594 Abc_NtkToAig( pNtkResult );
595 }
596 Io_WriteVerilog( pNtkResult, pFileName, 0, 0 );
597 }
598 else if ( Io_ReadFileType(pFileName) == IO_FILE_BLIFMV )
599 {
600 Io_WriteBlifMv( pNtkResult, pFileName );
601 }
602 else
603 fprintf( stderr, "Unknown output file format.\n" );
604
605 Abc_NtkDelete( pNtkResult );
606}
607
619Abc_Obj_t * Io_ReadCreatePi( Abc_Ntk_t * pNtk, char * pName )
620{
621 Abc_Obj_t * pNet, * pTerm;
622 // get the PI net
623 pNet = Abc_NtkFindNet( pNtk, pName );
624 if ( pNet )
625 printf( "Warning: PI \"%s\" appears twice in the list.\n", pName );
626 pNet = Abc_NtkFindOrCreateNet( pNtk, pName );
627 // add the PI node
628 pTerm = Abc_NtkCreatePi( pNtk );
629 Abc_ObjAddFanin( pNet, pTerm );
630 return pTerm;
631}
632
644Abc_Obj_t * Io_ReadCreatePo( Abc_Ntk_t * pNtk, char * pName )
645{
646 Abc_Obj_t * pNet, * pTerm;
647 // get the PO net
648 pNet = Abc_NtkFindNet( pNtk, pName );
649 if ( pNet && Abc_ObjFaninNum(pNet) == 0 )
650 printf( "Warning: PO \"%s\" appears twice in the list.\n", pName );
651 pNet = Abc_NtkFindOrCreateNet( pNtk, pName );
652 // add the PO node
653 pTerm = Abc_NtkCreatePo( pNtk );
654 Abc_ObjAddFanin( pTerm, pNet );
655 return pTerm;
656}
657
669Abc_Obj_t * Io_ReadCreateLatch( Abc_Ntk_t * pNtk, char * pNetLI, char * pNetLO )
670{
671 Abc_Obj_t * pLatch, * pTerm, * pNet;
672 // get the LI net
673 pNet = Abc_NtkFindOrCreateNet( pNtk, pNetLI );
674 // add the BO terminal
675 pTerm = Abc_NtkCreateBi( pNtk );
676 Abc_ObjAddFanin( pTerm, pNet );
677 // add the latch box
678 pLatch = Abc_NtkCreateLatch( pNtk );
679 Abc_ObjAddFanin( pLatch, pTerm );
680 // add the BI terminal
681 pTerm = Abc_NtkCreateBo( pNtk );
682 Abc_ObjAddFanin( pTerm, pLatch );
683 // get the LO net
684 pNet = Abc_NtkFindOrCreateNet( pNtk, pNetLO );
685 Abc_ObjAddFanin( pNet, pTerm );
686 // set latch name
687 Abc_ObjAssignName( pLatch, pNetLO, "L" );
688 return pLatch;
689}
690
703{
704 Abc_Obj_t * pLatch, * pNode;
705 Abc_Obj_t * pNetLI, * pNetLO;
706 // create latch with 0 init value
707// pLatch = Io_ReadCreateLatch( pNtk, "_resetLI_", "_resetLO_" );
708 pNetLI = Abc_NtkCreateNet( pNtk );
709 pNetLO = Abc_NtkCreateNet( pNtk );
710 Abc_ObjAssignName( pNetLI, Abc_ObjName(pNetLI), NULL );
711 Abc_ObjAssignName( pNetLO, Abc_ObjName(pNetLO), NULL );
712 pLatch = Io_ReadCreateLatch( pNtk, Abc_ObjName(pNetLI), Abc_ObjName(pNetLO) );
713 // set the initial value
714 Abc_LatchSetInit0( pLatch );
715 // feed the latch with constant1- node
716// pNode = Abc_NtkCreateNode( pNtk );
717// pNode->pData = Abc_SopRegister( (Extra_MmFlex_t *)pNtk->pManFunc, "2\n1\n" );
718 pNode = Abc_NtkCreateNodeConst1( pNtk );
719 Abc_ObjAddFanin( Abc_ObjFanin0(Abc_ObjFanin0(pLatch)), pNode );
720 return pLatch;
721}
722
734Abc_Obj_t * Io_ReadCreateNode( Abc_Ntk_t * pNtk, char * pNameOut, char * pNamesIn[], int nInputs )
735{
736 Abc_Obj_t * pNet, * pNode;
737 int i;
738 // create a new node
739 pNode = Abc_NtkCreateNode( pNtk );
740 // add the fanin nets
741 for ( i = 0; i < nInputs; i++ )
742 {
743 pNet = Abc_NtkFindOrCreateNet( pNtk, pNamesIn[i] );
744 Abc_ObjAddFanin( pNode, pNet );
745 }
746 // add the fanout net
747 pNet = Abc_NtkFindOrCreateNet( pNtk, pNameOut );
748 Abc_ObjAddFanin( pNet, pNode );
749 return pNode;
750}
751
763Abc_Obj_t * Io_ReadCreateConst( Abc_Ntk_t * pNtk, char * pName, int fConst1 )
764{
765 Abc_Obj_t * pNet, * pTerm;
766 pTerm = fConst1? Abc_NtkCreateNodeConst1(pNtk) : Abc_NtkCreateNodeConst0(pNtk);
767 pNet = Abc_NtkFindNet(pNtk, pName); assert( pNet );
768 Abc_ObjAddFanin( pNet, pTerm );
769 return pTerm;
770}
771
783Abc_Obj_t * Io_ReadCreateInv( Abc_Ntk_t * pNtk, char * pNameIn, char * pNameOut )
784{
785 Abc_Obj_t * pNet, * pNode;
786 pNet = Abc_NtkFindNet(pNtk, pNameIn); assert( pNet );
787 pNode = Abc_NtkCreateNodeInv(pNtk, pNet);
788 pNet = Abc_NtkFindNet(pNtk, pNameOut); assert( pNet );
789 Abc_ObjAddFanin( pNet, pNode );
790 return pNode;
791}
792
804Abc_Obj_t * Io_ReadCreateBuf( Abc_Ntk_t * pNtk, char * pNameIn, char * pNameOut )
805{
806 Abc_Obj_t * pNet, * pNode;
807 pNet = Abc_NtkFindNet(pNtk, pNameIn); assert( pNet );
808 pNode = Abc_NtkCreateNodeBuf(pNtk, pNet);
809 pNet = Abc_NtkFindNet(pNtk, pNameOut); assert( pNet );
810 Abc_ObjAddFanin( pNet, pNode );
811 return pNet;
812}
813
814
828FILE * Io_FileOpen( const char * FileName, const char * PathVar, const char * Mode, int fVerbose )
829{
830 char * t = 0, * c = 0, * i;
831
832 if ( PathVar == 0 )
833 {
834 return fopen( FileName, Mode );
835 }
836 else
837 {
838 if ( (c = Abc_FrameReadFlag( (char*)PathVar )) )
839 {
840 char ActualFileName[4096];
841 FILE * fp = 0;
842 t = Extra_UtilStrsav( c );
843 for (i = strtok( t, ":" ); i != 0; i = strtok( 0, ":") )
844 {
845#ifdef WIN32
846 _snprintf ( ActualFileName, 4096, "%s/%s", i, FileName );
847#else
848 snprintf ( ActualFileName, 4096, "%s/%s", i, FileName );
849#endif
850 if ( ( fp = fopen ( ActualFileName, Mode ) ) )
851 {
852 if ( fVerbose )
853 fprintf ( stdout, "Using file %s\n", ActualFileName );
854 ABC_FREE( t );
855 return fp;
856 }
857 }
858 ABC_FREE( t );
859 return 0;
860 }
861 else
862 {
863 return fopen( FileName, Mode );
864 }
865 }
866}
867
879void Io_TransformSF2PLA( char * pNameIn, char * pNameOut )
880{
881 int fStart = 0, Size = 1000000;
882 char * pBuffer, * pToken;
883 FILE * pFileIn = fopen( pNameIn, "rb" );
884 FILE * pFileOut = fopen( pNameOut, "wb" );
885 if ( pFileIn == NULL )
886 {
887 if ( pFileOut ) fclose( pFileOut );
888 printf( "Cannot open file \"%s\" for reading.\n", pNameIn );
889 return;
890 }
891 if ( pFileOut == NULL )
892 {
893 if ( pFileIn ) fclose( pFileIn );
894 printf( "Cannot open file \"%s\" for writing.\n", pNameOut );
895 return;
896 }
897 pBuffer = ABC_ALLOC( char, Size );
898 fprintf( pFileOut, ".type fd\n" );
899 while ( fgets(pBuffer, Size, pFileIn) )
900 {
901 if ( strstr(pBuffer, "END_SDF") )
902 break;
903 if ( strstr(pBuffer, "SDF") )
904 {
905 char * pRes = fgets(pBuffer, Size, pFileIn);
906 assert( pRes != NULL );
907 if ( (pToken = strtok( pBuffer, " \t\r\n" )) )
908 fprintf( pFileOut, ".i %d\n", atoi(pToken) );
909 if ( (pToken = strtok( NULL, " \t\r\n" )) )
910 fprintf( pFileOut, ".o %d\n", atoi(pToken) );
911 if ( (pToken = strtok( NULL, " \t\r\n" )) )
912 fprintf( pFileOut, ".p %d\n", atoi(pToken) );
913 fStart = 1;
914 }
915 else if ( fStart )
916 fprintf( pFileOut, "%s", pBuffer );
917 }
918 fprintf( pFileOut, ".e\n" );
919 fclose( pFileIn );
920 fclose( pFileOut );
921 ABC_FREE( pBuffer );
922}
923
935void Io_TransformROM2PLA( char * pNameIn, char * pNameOut )
936{
937 FILE * pFileOut = fopen( pNameOut, "wb" );
938 if ( pFileOut == NULL ) {
939 printf( "Cannot open file \"%s\" for writing.\n", pNameOut );
940 return;
941 }
942 int nWords = -1;
943 Vec_Wrd_t * vData = Vec_WrdReadHex( pNameIn, &nWords, 0 );
944 if ( vData == NULL ) {
945 fclose( pFileOut );
946 return;
947 }
948 //Vec_WrdDumpHex( "temp.txt", vData, 1, 1 );
949 int v, i, nLines = Vec_WrdSize(vData) / nWords;
950 int nIns = Abc_Base2Log(nLines), nOuts;
951 assert( nLines * nWords == Vec_WrdSize(vData) );
952 word * pTemp = ABC_CALLOC( word, nWords );
953 for ( i = 0; i < nLines; i++ )
954 Abc_TtOr( pTemp, pTemp, Vec_WrdEntryP(vData, nWords*i), nWords );
955 for ( nOuts = nWords*64; nOuts > 0; nOuts-- )
956 if ( Abc_TtGetBit(pTemp, nOuts-1) )
957 break;
958 ABC_FREE( pTemp );
959 assert( nOuts > 0 );
960 fprintf( pFileOut, ".i %d\n", nIns );
961 fprintf( pFileOut, ".o %d\n", nOuts );
962 fprintf( pFileOut, ".p %d\n", nLines );
963 fprintf( pFileOut, ".type fr\n" );
964 for ( i = 0; i < nLines; i++ ) {
965 word * pData = Vec_WrdEntryP(vData, nWords*i);
966 for ( v = 0; v < nIns; v++ )
967 fprintf( pFileOut, "%d", (i >> v) & 1 );
968 fprintf( pFileOut, " " );
969 for ( v = 0; v < nOuts; v++ )
970 fprintf( pFileOut, "%d", Abc_TtGetBit(pData, v) );
971 fprintf( pFileOut, "\n" );
972 }
973 fprintf( pFileOut, ".e\n\n" );
974 fclose( pFileOut );
975}
976
988{
989 Vec_Ptr_t * vSops = Vec_PtrAlloc(1);
990 Vec_Int_t * vLevel; int i, k, Num;
991 int nSize = (nVars + 3)*Vec_WecSize(vNums);
992 char * pStr = ABC_ALLOC( char, nSize+1 );
993 memset( pStr, '-', nSize );
994 pStr[nSize] = 0;
995 Vec_WecForEachLevel( vNums, vLevel, i )
996 {
997 char * pCube = pStr + (nVars + 3)*i;
998 Vec_IntForEachEntry( vLevel, Num, k )
999 pCube[Abc_Lit2Var(Num)] = '0' + Abc_LitIsCompl(Num);
1000 pCube[nVars+0] = ' ';
1001 pCube[nVars+1] = '0';
1002 pCube[nVars+2] = '\n';
1003 }
1004 Vec_PtrPush( vSops, pStr );
1005 return vSops;
1006}
1008{
1009 Vec_Ptr_t * vSops = Vec_PtrAlloc( Vec_WecSize(vNums) );
1010 Vec_Int_t * vLevel; int i, k, Num;
1011 Vec_WecForEachLevel( vNums, vLevel, i )
1012 {
1013 char * pCube = ABC_ALLOC( char, nVars + 4 );
1014 memset( pCube, '-', nVars );
1015 Vec_IntForEachEntry( vLevel, Num, k )
1016 pCube[Abc_Lit2Var(Num)] = '0' + Abc_LitIsCompl(Num);
1017 pCube[nVars+0] = ' ';
1018 pCube[nVars+1] = '0';
1019 pCube[nVars+2] = '\n';
1020 pCube[nVars+3] = '\0';
1021 Vec_PtrPush( vSops, pCube );
1022 }
1023 return vSops;
1024}
1025Vec_Ptr_t * Io_FileReadCnf( char * pFileName, int fMulti )
1026{
1027 Vec_Ptr_t * vSops = NULL;
1028 Vec_Wec_t * vNums = Vec_WecAlloc( 100 );
1029 Vec_Int_t * vLevel;
1030 char * pThis, pLine[10000];
1031 int nVars = -1, nClas = -1;
1032 FILE * pFile = fopen( pFileName, "rb" );
1033 if ( pFile == NULL ) {
1034 printf( "Cannot open file \"%s\" for reading.\n", pFileName );
1035 return NULL;
1036 }
1037 while ( fgets( pLine, 10000, pFile ) )
1038 {
1039 if ( pLine[0] == 'c' )
1040 continue;
1041 if ( pLine[0] == 'p' )
1042 {
1043 pThis = strtok(pLine+1, " \t\n\r");
1044 if ( strcmp(pThis, "cnf") )
1045 {
1046 Vec_PtrFree( vSops );
1047 Vec_WecFree( vNums );
1048 fclose( pFile );
1049 printf( "Wrong file format.\n" );
1050 return NULL;
1051 }
1052 pThis = strtok(NULL, " \t\n\r");
1053 nVars = atoi(pThis);
1054 pThis = strtok(NULL, " \t\n\r");
1055 nClas = atoi(pThis);
1056 continue;
1057 }
1058 pThis = strtok(pLine, " \t\n\r");
1059 if ( pThis == NULL )
1060 continue;
1061 vLevel = Vec_WecPushLevel( vNums );
1062 while ( pThis ) {
1063 int fComp, Temp = atoi(pThis);
1064 if ( Temp == 0 )
1065 break;
1066 fComp = Temp < 0;
1067 Temp = Temp < 0 ? -Temp : Temp;
1068 Temp -= 1;
1069 assert( Temp < nVars );
1070 Vec_IntPush( vLevel, Abc_Var2Lit(Temp, fComp) );
1071 pThis = strtok(NULL, " \t\n\r");
1072 }
1073 }
1074 fclose( pFile );
1075 if ( nClas != Vec_WecSize(vNums) )
1076 printf( "Warning: The number of clauses (%d) listed is different from the actual number (%d).\n", nClas, Vec_WecSize(vNums) );
1077 //Vec_WecPrint( vNums, 0 );
1078 if ( fMulti )
1079 vSops = Io_ConvertNumsToSopMulti(vNums, nVars);
1080 else
1081 vSops = Io_ConvertNumsToSop(vNums, nVars);
1082 Vec_WecFree( vNums );
1083 return vSops;
1084}
1085
1089
1090
1092
int nWords
Definition abcNpn.c:127
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
ABC_DLL Abc_Obj_t * Abc_NtkFindOrCreateNet(Abc_Ntk_t *pNtk, char *pName)
Definition abcObj.c:587
ABC_DLL Abc_Ntk_t * Abc_NtkFromBarBufs(Abc_Ntk_t *pNtkBase, Abc_Ntk_t *pNtk)
Definition abcBarBuf.c:263
ABC_DLL Abc_Ntk_t * Abc_NtkToBarBufs(Abc_Ntk_t *pNtk)
Definition abcBarBuf.c:180
ABC_DLL Abc_Ntk_t * Abc_NtkToNetlistBench(Abc_Ntk_t *pNtk)
Definition abcNetlist.c:125
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
Definition abcFanio.c:84
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst1(Abc_Ntk_t *pNtk)
Definition abcObj.c:643
ABC_DLL Abc_Ntk_t * Abc_NtkToLogic(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition abcNetlist.c:52
ABC_DLL Abc_Ntk_t * Abc_NtkStrashBlifMv(Abc_Ntk_t *pNtk)
Definition abcBlifMv.c:383
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeBuf(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
Definition abcObj.c:706
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst0(Abc_Ntk_t *pNtk)
Definition abcObj.c:612
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
Definition abcNames.c:49
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
ABC_DLL int Abc_NtkConvertToBlifMv(Abc_Ntk_t *pNtk)
Definition abcBlifMv.c:957
ABC_DLL char * Abc_ObjAssignName(Abc_Obj_t *pObj, char *pName, char *pSuffix)
Definition abcNames.c:69
ABC_DLL Abc_Ntk_t * Abc_NtkFlattenLogicHierarchy(Abc_Ntk_t *pNtk)
Definition abcHie.c:514
ABC_DLL int Abc_NtkLevel(Abc_Ntk_t *pNtk)
Definition abcDfs.c:1449
ABC_DLL Abc_Ntk_t * Abc_NtkToNetlist(Abc_Ntk_t *pNtk)
Definition abcNetlist.c:100
ABC_DLL int Abc_NtkToAig(Abc_Ntk_t *pNtk)
Definition abcFunc.c:1333
ABC_DLL void Abc_NtkMakeComb(Abc_Ntk_t *pNtk, int fRemoveLatches)
Definition abcNtk.c:1637
ABC_DLL int Abc_NtkToSop(Abc_Ntk_t *pNtk, int fMode, int nCubeLimit)
Definition abcFunc.c:1261
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeInv(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
Definition abcObj.c:674
ABC_DLL int Abc_NtkIsAcyclicWithBoxes(Abc_Ntk_t *pNtk)
Definition abcDfs.c:1702
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
Definition abcStrash.c:265
ABC_DLL Abc_Ntk_t * Abc_NtkConvertBlackboxes(Abc_Ntk_t *pNtk)
Definition abcHie.c:598
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
Definition abcNtk.c:1421
ABC_DLL Abc_Ntk_t * Abc_NtkInsertNewLogic(Abc_Ntk_t *pNtkH, Abc_Ntk_t *pNtkL)
Definition abcHie.c:691
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
Definition abcNtk.c:472
ABC_DLL Abc_Obj_t * Abc_NtkFindNet(Abc_Ntk_t *pNtk, char *pName)
Definition abcObj.c:515
ABC_DLL Abc_Ntk_t * Abc_NtkInsertBlifMv(Abc_Ntk_t *pNtkBase, Abc_Ntk_t *pNtkLogic)
Definition abcBlifMv.c:912
#define ABC_ALLOC(type, num)
Definition abc_global.h:264
#define ABC_INFINITY
MACRO DEFINITIONS ///.
Definition abc_global.h:250
#define ABC_CALLOC(type, num)
Definition abc_global.h:265
#define ABC_FREE(obj)
Definition abc_global.h:267
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_DLL char * Abc_FrameReadFlag(char *pFlag)
Definition mainFrame.c:69
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
char * Extra_FileGetSimilarName(char *pFileNameWrong, char *pS1, char *pS2, char *pS3, char *pS4, char *pS5)
char * Extra_UtilStrsav(const char *s)
char * Extra_FileNameExtension(char *FileName)
Abc_Ntk_t * Io_ReadBlifMv(char *pFileName, int fBlifMv, int fCheck)
FUNCTION DEFINITIONS ///.
void Io_WriteBblif(Abc_Ntk_t *pNtk, char *pFileName)
Abc_Ntk_t * Io_ReadBaf(char *pFileName, int fCheck)
DECLARATIONS ///.
Definition ioReadBaf.c:45
void Io_WriteDot(Abc_Ntk_t *pNtk, char *FileName)
FUNCTION DEFINITIONS ///.
Definition ioWriteDot.c:51
Abc_Ntk_t * Io_ReadEqn(char *pFileName, int fCheck)
FUNCTION DEFINITIONS ///.
Definition ioReadEqn.c:50
Io_FileType_t
INCLUDES ///.
Definition ioAbc.h:47
@ IO_FILE_SMV
Definition ioAbc.h:66
@ IO_FILE_DOT
Definition ioAbc.h:57
@ IO_FILE_UNKNOWN
Definition ioAbc.h:68
@ IO_FILE_EQN
Definition ioAbc.h:59
@ IO_FILE_VERILOG
Definition ioAbc.h:67
@ IO_FILE_BBLIF
Definition ioAbc.h:51
@ IO_FILE_BLIFMV
Definition ioAbc.h:53
@ IO_FILE_NONE
Definition ioAbc.h:48
@ IO_FILE_GML
Definition ioAbc.h:60
@ IO_FILE_PLA
Definition ioAbc.h:64
@ IO_FILE_BENCH
Definition ioAbc.h:54
@ IO_FILE_BLIF
Definition ioAbc.h:52
@ IO_FILE_BOOK
Definition ioAbc.h:55
@ IO_FILE_EDIF
Definition ioAbc.h:58
@ IO_FILE_MOPLA
Definition ioAbc.h:65
@ IO_FILE_BAF
Definition ioAbc.h:50
@ IO_FILE_CNF
Definition ioAbc.h:56
@ IO_FILE_AIGER
Definition ioAbc.h:49
@ IO_FILE_LIST
Definition ioAbc.h:63
int Io_WritePla(Abc_Ntk_t *pNtk, char *FileName)
Definition ioWritePla.c:171
Abc_Ntk_t * Io_ReadAiger(char *pFileName, int fCheck)
FUNCTION DECLARATIONS ///.
void Io_WriteEqn(Abc_Ntk_t *pNtk, char *pFileName)
FUNCTION DEFINITIONS ///.
Definition ioWriteEqn.c:50
Abc_Ntk_t * Io_ReadVerilog(char *pFileName, int fCheck)
DECLARATIONS ///.
void Io_WriteVerilog(Abc_Ntk_t *pNtk, char *FileName, int fOnlyAnds, int fNewInterface)
FUNCTION DEFINITIONS ///.
Abc_Ntk_t * Io_ReadBblif(char *pFileName, int fCheck)
void Io_WriteAiger(Abc_Ntk_t *pNtk, char *pFileName, int fWriteSymbols, int fCompact, int fUnique)
int Io_WriteBench(Abc_Ntk_t *pNtk, const char *FileName)
FUNCTION DEFINITIONS ///.
void Io_WriteBlif(Abc_Ntk_t *pNtk, char *pFileName, int fWriteLatches, int fBb2Wb, int fSeq)
Definition ioWriteBlif.c:84
Abc_Ntk_t * Io_ReadBench(char *pFileName, int fCheck)
FUNCTION DEFINITIONS ///.
Definition ioReadBench.c:47
int Io_WriteMoPla(Abc_Ntk_t *pNtk, char *FileName)
Definition ioWritePla.c:576
void Io_WriteBlifMv(Abc_Ntk_t *pNtk, char *FileName)
FUNCTION DEFINITIONS ///.
int Io_WriteSmv(Abc_Ntk_t *pNtk, char *FileName)
Definition ioWriteSmv.c:71
void Io_WriteGml(Abc_Ntk_t *pNtk, char *pFileName)
DECLARATIONS ///.
Definition ioWriteGml.c:46
void Io_WriteBook(Abc_Ntk_t *pNtk, char *FileName)
Abc_Ntk_t * Io_ReadPla(char *pFileName, int fZeros, int fBoth, int fOnDc, int fSkipPrepro, int fCheck)
Definition ioReadPla.c:329
void Io_WriteBaf(Abc_Ntk_t *pNtk, char *pFileName)
DECLARATIONS ///.
Definition ioWriteBaf.c:84
int Io_WriteCnf(Abc_Ntk_t *pNtk, char *FileName, int fAllPrimes)
FUNCTION DEFINITIONS ///.
Definition ioWriteCnf.c:48
Abc_Ntk_t * Io_ReadEdif(char *pFileName, int fCheck)
FUNCTION DEFINITIONS ///.
Definition ioReadEdif.c:47
void Io_WriteHie(Abc_Ntk_t *pNtk, char *pBaseName, char *pFileName)
Definition ioUtil.c:486
void Io_TransformSF2PLA(char *pNameIn, char *pNameOut)
Definition ioUtil.c:879
Vec_Ptr_t * Io_FileReadCnf(char *pFileName, int fMulti)
Definition ioUtil.c:1025
Vec_Ptr_t * Io_ConvertNumsToSop(Vec_Wec_t *vNums, int nVars)
Definition ioUtil.c:987
Abc_Obj_t * Io_ReadCreateResetLatch(Abc_Ntk_t *pNtk, int fBlifMv)
Definition ioUtil.c:702
Abc_Obj_t * Io_ReadCreateBuf(Abc_Ntk_t *pNtk, char *pNameIn, char *pNameOut)
Definition ioUtil.c:804
void updateLtlStoreOfNtk(Abc_Ntk_t *pNtk, Vec_Ptr_t *tempLtlStore)
Definition ioUtil.c:220
Vec_Ptr_t * Io_ConvertNumsToSopMulti(Vec_Wec_t *vNums, int nVars)
Definition ioUtil.c:1007
Abc_Obj_t * Io_ReadCreateInv(Abc_Ntk_t *pNtk, char *pNameIn, char *pNameOut)
Definition ioUtil.c:783
Abc_Ntk_t * Io_ReadNetlist(char *pFileName, Io_FileType_t FileType, int fCheck)
Definition ioUtil.c:99
Abc_Obj_t * Io_ReadCreatePo(Abc_Ntk_t *pNtk, char *pName)
Definition ioUtil.c:644
ABC_NAMESPACE_IMPL_START Io_FileType_t Io_ReadFileType(char *pFileName)
DECLARATIONS ///.
Definition ioUtil.c:47
FILE * Io_FileOpen(const char *FileName, const char *PathVar, const char *Mode, int fVerbose)
Definition ioUtil.c:828
void Io_Write(Abc_Ntk_t *pNtk, char *pFileName, Io_FileType_t FileType)
Definition ioUtil.c:320
Abc_Ntk_t * Io_Read(char *pFileName, Io_FileType_t FileType, int fCheck, int fBarBufs)
Definition ioUtil.c:241
Vec_Ptr_t * temporaryLtlStore(Abc_Ntk_t *pNtk)
Definition ioUtil.c:191
Abc_Obj_t * Io_ReadCreateConst(Abc_Ntk_t *pNtk, char *pName, int fConst1)
Definition ioUtil.c:763
void Io_TransformROM2PLA(char *pNameIn, char *pNameOut)
Definition ioUtil.c:935
Abc_Obj_t * Io_ReadCreatePi(Abc_Ntk_t *pNtk, char *pName)
Definition ioUtil.c:619
Abc_Obj_t * Io_ReadCreateLatch(Abc_Ntk_t *pNtk, char *pNetLI, char *pNetLO)
Definition ioUtil.c:669
Abc_Obj_t * Io_ReadCreateNode(Abc_Ntk_t *pNtk, char *pNameOut, char *pNamesIn[], int nInputs)
Definition ioUtil.c:734
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36
Vec_Ptr_t * vModules
Definition abc.h:225
int nBarBufs
Definition abc.h:174
Abc_Des_t * pDesign
Definition abc.h:180
Vec_Ptr_t * vLtlProperties
Definition abc.h:169
#define assert(ex)
Definition util_old.h:213
char * memset()
int strcmp()
char * strtok()
char * strstr()
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
Definition vecInt.h:54
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
#define Vec_WecForEachLevel(vGlob, vVec, i)
MACRO DEFINITIONS ///.
Definition vecWec.h:55
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
Definition vecWec.h:42
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.
Definition vecWrd.h:42