ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
cbaCom.c
Go to the documentation of this file.
1
20
21#include "cba.h"
22#include "proof/cec/cec.h"
23#include "base/main/mainInt.h"
24
26
30
31static int Cba_CommandRead ( Abc_Frame_t * pAbc, int argc, char ** argv );
32static int Cba_CommandWrite ( Abc_Frame_t * pAbc, int argc, char ** argv );
33static int Cba_CommandPs ( Abc_Frame_t * pAbc, int argc, char ** argv );
34static int Cba_CommandPut ( Abc_Frame_t * pAbc, int argc, char ** argv );
35static int Cba_CommandGet ( Abc_Frame_t * pAbc, int argc, char ** argv );
36static int Cba_CommandClp ( Abc_Frame_t * pAbc, int argc, char ** argv );
37static int Cba_CommandBlast ( Abc_Frame_t * pAbc, int argc, char ** argv );
38static int Cba_CommandCec ( Abc_Frame_t * pAbc, int argc, char ** argv );
39static int Cba_CommandTest ( Abc_Frame_t * pAbc, int argc, char ** argv );
40
41static inline Cba_Man_t * Cba_AbcGetMan( Abc_Frame_t * pAbc ) { return (Cba_Man_t *)pAbc->pAbcCba; }
42static inline void Cba_AbcFreeMan( Abc_Frame_t * pAbc ) { if ( pAbc->pAbcCba ) Cba_ManFree(Cba_AbcGetMan(pAbc)); }
43static inline void Cba_AbcUpdateMan( Abc_Frame_t * pAbc, Cba_Man_t * p ) { Cba_AbcFreeMan(pAbc); pAbc->pAbcCba = p; }
44
48
60void Cba_Init( Abc_Frame_t * pAbc )
61{
62 Cmd_CommandAdd( pAbc, "New word level", ":read", Cba_CommandRead, 0 );
63 Cmd_CommandAdd( pAbc, "New word level", ":write", Cba_CommandWrite, 0 );
64 Cmd_CommandAdd( pAbc, "New word level", ":ps", Cba_CommandPs, 0 );
65 Cmd_CommandAdd( pAbc, "New word level", ":put", Cba_CommandPut, 0 );
66 Cmd_CommandAdd( pAbc, "New word level", ":get", Cba_CommandGet, 0 );
67 Cmd_CommandAdd( pAbc, "New word level", ":clp", Cba_CommandClp, 0 );
68 Cmd_CommandAdd( pAbc, "New word level", ":blast", Cba_CommandBlast, 0 );
69 Cmd_CommandAdd( pAbc, "New word level", ":cec", Cba_CommandCec, 0 );
70 Cmd_CommandAdd( pAbc, "New word level", ":test", Cba_CommandTest, 0 );
71}
72
84void Cba_End( Abc_Frame_t * pAbc )
85{
86 Cba_AbcFreeMan( pAbc );
87}
88
89
101int Cba_CommandRead( Abc_Frame_t * pAbc, int argc, char ** argv )
102{
103 FILE * pFile;
104 Cba_Man_t * p = NULL;
105 char * pFileName = NULL;
106 int c, fTest = 0, fDfs = 0, fVerbose = 0;
108 while ( ( c = Extra_UtilGetopt( argc, argv, "tdvh" ) ) != EOF )
109 {
110 switch ( c )
111 {
112 case 't':
113 fTest ^= 1;
114 break;
115 case 'd':
116 fDfs ^= 1;
117 break;
118 case 'v':
119 fVerbose ^= 1;
120 break;
121 case 'h':
122 goto usage;
123 default:
124 goto usage;
125 }
126 }
127 if ( argc != globalUtilOptind + 1 )
128 {
129 printf( "Cba_CommandRead(): Input file name should be given on the command line.\n" );
130 return 0;
131 }
132 // get the file name
133 pFileName = argv[globalUtilOptind];
134 if ( (pFile = fopen( pFileName, "r" )) == NULL )
135 {
136 Abc_Print( 1, "Cannot open input file \"%s\". ", pFileName );
137 if ( (pFileName = Extra_FileGetSimilarName( pFileName, ".v", ".blif", ".smt", ".cba", NULL )) )
138 Abc_Print( 1, "Did you mean \"%s\"?", pFileName );
139 Abc_Print( 1, "\n" );
140 return 0;
141 }
142 fclose( pFile );
143 if ( fTest )
144 {
145 if ( !strcmp( Extra_FileNameExtension(pFileName), "blif" ) )
146 Prs_ManReadBlifTest( pFileName );
147 else if ( !strcmp( Extra_FileNameExtension(pFileName), "v" ) )
148 Prs_ManReadVerilogTest( pFileName );
149 else
150 {
151 printf( "Unrecognized input file extension.\n" );
152 return 0;
153 }
154 return 0;
155 }
156 if ( !strcmp( Extra_FileNameExtension(pFileName), "blif" ) )
157 p = Cba_ManReadBlif( pFileName );
158 else if ( !strcmp( Extra_FileNameExtension(pFileName), "v" ) )
159 p = Cba_ManReadVerilog( pFileName );
160 else if ( !strcmp( Extra_FileNameExtension(pFileName), "cba" ) )
161 p = Cba_ManReadCba( pFileName );
162 else
163 {
164 printf( "Unrecognized input file extension.\n" );
165 return 0;
166 }
167 if ( fDfs )
168 {
169 Cba_Man_t * pTemp;
170 p = Cba_ManDup( pTemp = p, Cba_NtkCollectDfs );
171 Cba_ManFree( pTemp );
172 }
173 Cba_AbcUpdateMan( pAbc, p );
174 return 0;
175usage:
176 Abc_Print( -2, "usage: :read [-tdvh] <file_name>\n" );
177 Abc_Print( -2, "\t reads hierarchical design\n" );
178 Abc_Print( -2, "\t-t : toggle testing the parser [default = %s]\n", fTest? "yes": "no" );
179 Abc_Print( -2, "\t-d : toggle computing DFS ordering [default = %s]\n", fDfs? "yes": "no" );
180 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
181 Abc_Print( -2, "\t-h : print the command usage\n");
182 return 1;
183}
184
196int Cba_CommandWrite( Abc_Frame_t * pAbc, int argc, char ** argv )
197{
198 Cba_Man_t * p = Cba_AbcGetMan(pAbc);
199 char * pFileName = NULL;
200 int fInclineCats = 0;
201 int c, fVerbose = 0;
203 while ( ( c = Extra_UtilGetopt( argc, argv, "cvh" ) ) != EOF )
204 {
205 switch ( c )
206 {
207 case 'c':
208 fInclineCats ^= 1;
209 break;
210 case 'v':
211 fVerbose ^= 1;
212 break;
213 case 'h':
214 goto usage;
215 default:
216 goto usage;
217 }
218 }
219 if ( p == NULL )
220 {
221 Abc_Print( 1, "Cba_CommandWrite(): There is no current design.\n" );
222 return 0;
223 }
224
225 if ( argc == globalUtilOptind + 1 )
226 pFileName = argv[globalUtilOptind];
227 else if ( argc == globalUtilOptind && p )
228 {
229 pFileName = Extra_FileNameGenericAppend( Cba_ManSpec(p) ? Cba_ManSpec(p) : Cba_ManName(p), "_out.v" );
230 printf( "Generated output file name \"%s\".\n", pFileName );
231 }
232 else
233 {
234 printf( "Output file name should be given on the command line.\n" );
235 return 0;
236 }
237 // perform writing
238 if ( !strcmp( Extra_FileNameExtension(pFileName), "blif" ) )
239 Cba_ManWriteBlif( pFileName, p );
240 else if ( !strcmp( Extra_FileNameExtension(pFileName), "v" ) )
241 Cba_ManWriteVerilog( pFileName, p, fInclineCats );
242 else if ( !strcmp( Extra_FileNameExtension(pFileName), "cba" ) )
243 Cba_ManWriteCba( pFileName, p );
244 else
245 {
246 printf( "Unrecognized output file extension.\n" );
247 return 0;
248 }
249 return 0;
250usage:
251 Abc_Print( -2, "usage: :write [-cvh]\n" );
252 Abc_Print( -2, "\t writes the design into a file in BLIF or Verilog\n" );
253 Abc_Print( -2, "\t-c : toggle inlining input concatenations [default = %s]\n", fInclineCats? "yes": "no" );
254 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
255 Abc_Print( -2, "\t-h : print the command usage\n");
256 return 1;
257}
258
259
271int Cba_CommandPs( Abc_Frame_t * pAbc, int argc, char ** argv )
272{
273 Cba_Man_t * p = Cba_AbcGetMan(pAbc);
274 int nModules = 0;
275 int fShowMulti = 0;
276 int fShowAdder = 0;
277 int fDistrib = 0;
278 int c, fVerbose = 0;
280 while ( ( c = Extra_UtilGetopt( argc, argv, "Mmadvh" ) ) != EOF )
281 {
282 switch ( c )
283 {
284 case 'M':
285 if ( globalUtilOptind >= argc )
286 {
287 Abc_Print( -1, "Command line switch \"-M\" should be followed by an integer.\n" );
288 goto usage;
289 }
290 nModules = atoi(argv[globalUtilOptind]);
292 if ( nModules < 0 )
293 goto usage;
294 break;
295 case 'm':
296 fShowMulti ^= 1;
297 break;
298 case 'a':
299 fShowAdder ^= 1;
300 break;
301 case 'd':
302 fDistrib ^= 1;
303 break;
304 case 'v':
305 fVerbose ^= 1;
306 break;
307 case 'h':
308 goto usage;
309 default:
310 goto usage;
311 }
312 }
313 if ( p == NULL )
314 {
315 Abc_Print( 1, "Cba_CommandPs(): There is no current design.\n" );
316 return 0;
317 }
318 if ( nModules )
319 {
320 Cba_ManPrintStats( p, nModules, fVerbose );
321 return 0;
322 }
323 Cba_NtkPrintStatsFull( Cba_ManRoot(p), fDistrib, fVerbose );
324 if ( fShowMulti )
325 Cba_NtkPrintNodes( Cba_ManRoot(p), CBA_BOX_MUL );
326 if ( fShowAdder )
327 Cba_NtkPrintNodes( Cba_ManRoot(p), CBA_BOX_ADD );
328 return 0;
329usage:
330 Abc_Print( -2, "usage: :ps [-M num] [-madvh]\n" );
331 Abc_Print( -2, "\t prints statistics\n" );
332 Abc_Print( -2, "\t-M num : the number of first modules to report [default = %d]\n", nModules );
333 Abc_Print( -2, "\t-m : toggle printing multipliers [default = %s]\n", fShowMulti? "yes": "no" );
334 Abc_Print( -2, "\t-a : toggle printing adders [default = %s]\n", fShowAdder? "yes": "no" );
335 Abc_Print( -2, "\t-d : toggle printing distrubition [default = %s]\n", fDistrib? "yes": "no" );
336 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
337 Abc_Print( -2, "\t-h : print the command usage\n");
338 return 1;
339}
340
352int Cba_CommandPut( Abc_Frame_t * pAbc, int argc, char ** argv )
353{
354 Cba_Man_t * p = Cba_AbcGetMan(pAbc);
355 Gia_Man_t * pGia = NULL;
356 int c, fBarBufs = 1, fSeq = 0, fVerbose = 0;
358 while ( ( c = Extra_UtilGetopt( argc, argv, "bsvh" ) ) != EOF )
359 {
360 switch ( c )
361 {
362 case 'b':
363 fBarBufs ^= 1;
364 break;
365 case 's':
366 fSeq ^= 1;
367 break;
368 case 'v':
369 fVerbose ^= 1;
370 break;
371 case 'h':
372 goto usage;
373 default:
374 goto usage;
375 }
376 }
377 if ( p == NULL )
378 {
379 Abc_Print( 1, "Cba_CommandPut(): There is no current design.\n" );
380 return 0;
381 }
382 pGia = Cba_ManBlast( p, fBarBufs, fSeq, fVerbose );
383 if ( pGia == NULL )
384 {
385 Abc_Print( 1, "Cba_CommandPut(): Conversion to AIG has failed.\n" );
386 return 0;
387 }
388 Abc_FrameUpdateGia( pAbc, pGia );
389 return 0;
390usage:
391 Abc_Print( -2, "usage: :put [-bsvh]\n" );
392 Abc_Print( -2, "\t extracts AIG from the hierarchical design\n" );
393 Abc_Print( -2, "\t-b : toggle using barrier buffers [default = %s]\n", fBarBufs? "yes": "no" );
394 Abc_Print( -2, "\t-s : toggle blasting sequential elements [default = %s]\n", fSeq? "yes": "no" );
395 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
396 Abc_Print( -2, "\t-h : print the command usage\n");
397 return 1;
398}
399
411int Cba_CommandGet( Abc_Frame_t * pAbc, int argc, char ** argv )
412{
413 Cba_Man_t * pNew = NULL, * p = Cba_AbcGetMan(pAbc);
414 int c, fMapped = 0, fVerbose = 0;
416 while ( ( c = Extra_UtilGetopt( argc, argv, "mvh" ) ) != EOF )
417 {
418 switch ( c )
419 {
420 case 'm':
421 fMapped ^= 1;
422 break;
423 case 'v':
424 fVerbose ^= 1;
425 break;
426 case 'h':
427 goto usage;
428 default:
429 goto usage;
430 }
431 }
432 if ( p == NULL )
433 {
434 Abc_Print( 1, "Cba_CommandGet(): There is no current design.\n" );
435 return 0;
436 }
437
438 if ( fMapped )
439 {
440 if ( pAbc->pNtkCur == NULL )
441 {
442 Abc_Print( 1, "Cba_CommandGet(): There is no current mapped design.\n" );
443 return 0;
444 }
445 pNew = Cba_ManInsertAbc( p, pAbc->pNtkCur );
446 }
447 else
448 {
449 if ( pAbc->pGia == NULL )
450 {
451 Abc_Print( 1, "Cba_CommandGet(): There is no current AIG.\n" );
452 return 0;
453 }
454 pNew = Cba_ManInsertGia( p, pAbc->pGia );
455 }
456 Cba_AbcUpdateMan( pAbc, pNew );
457 return 0;
458usage:
459 Abc_Print( -2, "usage: :get [-mvh]\n" );
460 Abc_Print( -2, "\t extracts AIG or mapped network into the hierarchical design\n" );
461 Abc_Print( -2, "\t-m : toggle using mapped network from main-space [default = %s]\n", fMapped? "yes": "no" );
462 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
463 Abc_Print( -2, "\t-h : print the command usage\n");
464 return 1;
465}
466
478int Cba_CommandClp( Abc_Frame_t * pAbc, int argc, char ** argv )
479{
480 Cba_Man_t * pNew = NULL, * p = Cba_AbcGetMan(pAbc);
481 int c, fVerbose = 0;
483 while ( ( c = Extra_UtilGetopt( argc, argv, "vh" ) ) != EOF )
484 {
485 switch ( c )
486 {
487 case 'v':
488 fVerbose ^= 1;
489 break;
490 case 'h':
491 goto usage;
492 default:
493 goto usage;
494 }
495 }
496 if ( p == NULL )
497 {
498 Abc_Print( 1, "Cba_CommandGet(): There is no current design.\n" );
499 return 0;
500 }
501 pNew = Cba_ManCollapse( p );
502 Cba_AbcUpdateMan( pAbc, pNew );
503 return 0;
504usage:
505 Abc_Print( -2, "usage: :clp [-vh]\n" );
506 Abc_Print( -2, "\t collapses the current hierarchical design\n" );
507 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
508 Abc_Print( -2, "\t-h : print the command usage\n");
509 return 1;
510}
511
523int Cba_CommandBlast( Abc_Frame_t * pAbc, int argc, char ** argv )
524{
525 Gia_Man_t * pNew = NULL;
526 Cba_Man_t * p = Cba_AbcGetMan(pAbc);
527 int c, fSeq = 0, fVerbose = 0;
529 while ( ( c = Extra_UtilGetopt( argc, argv, "svh" ) ) != EOF )
530 {
531 switch ( c )
532 {
533 case 's':
534 fSeq ^= 1;
535 break;
536 case 'v':
537 fVerbose ^= 1;
538 break;
539 case 'h':
540 goto usage;
541 default:
542 goto usage;
543 }
544 }
545 if ( p == NULL )
546 {
547 Abc_Print( 1, "Cba_CommandBlast(): There is no current design.\n" );
548 return 0;
549 }
550 pNew = Cba_ManBlast( p, 0, fSeq, fVerbose );
551 if ( pNew == NULL )
552 {
553 Abc_Print( 1, "Cba_CommandBlast(): Bit-blasting has failed.\n" );
554 return 0;
555 }
556 Abc_FrameUpdateGia( pAbc, pNew );
557 return 0;
558usage:
559 Abc_Print( -2, "usage: :blast [-svh]\n" );
560 Abc_Print( -2, "\t performs bit-blasting of the word-level design\n" );
561 Abc_Print( -2, "\t-s : toggle blasting sequential elements [default = %s]\n", fSeq? "yes": "no" );
562 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
563 Abc_Print( -2, "\t-h : print the command usage\n");
564 return 1;
565}
566
578int Cba_CommandCec( Abc_Frame_t * pAbc, int argc, char ** argv )
579{
580 Cba_Man_t * p = Cba_AbcGetMan(pAbc), * pTemp;
581 Gia_Man_t * pFirst, * pSecond, * pMiter;
582 Cec_ParCec_t ParsCec, * pPars = &ParsCec;
583 char * pFileName, * pStr, ** pArgvNew;
584 int c, nArgcNew, fDumpMiter = 0;
585 FILE * pFile;
588 while ( ( c = Extra_UtilGetopt( argc, argv, "vh" ) ) != EOF )
589 {
590 switch ( c )
591 {
592 case 'v':
593 pPars->fVerbose ^= 1;
594 break;
595 case 'h':
596 goto usage;
597 default:
598 goto usage;
599 }
600 }
601 if ( p == NULL )
602 {
603 Abc_Print( 1, "Cba_CommandCec(): There is no current design.\n" );
604 return 0;
605 }
606
607 pArgvNew = argv + globalUtilOptind;
608 nArgcNew = argc - globalUtilOptind;
609 if ( nArgcNew != 1 )
610 {
611 if ( p->pSpec == NULL )
612 {
613 Abc_Print( -1, "File name is not given on the command line.\n" );
614 return 1;
615 }
616 pFileName = p->pSpec;
617 }
618 else
619 pFileName = pArgvNew[0];
620 // fix the wrong symbol
621 for ( pStr = pFileName; *pStr; pStr++ )
622 if ( *pStr == '>' )
623 *pStr = '\\';
624 if ( (pFile = fopen( pFileName, "r" )) == NULL )
625 {
626 Abc_Print( -1, "Cannot open input file \"%s\". ", pFileName );
627 if ( (pFileName = Extra_FileGetSimilarName( pFileName, ".v", ".blif", NULL, NULL, NULL )) )
628 Abc_Print( 1, "Did you mean \"%s\"?", pFileName );
629 Abc_Print( 1, "\n" );
630 return 1;
631 }
632 fclose( pFile );
633
634 // extract AIG from the current design
635 pFirst = Cba_ManBlast( p, 0, 0, 0 );
636 if ( pFirst == NULL )
637 {
638 Abc_Print( -1, "Extracting AIG from the current design has failed.\n" );
639 return 0;
640 }
641 // extract AIG from the second design
642
643 if ( !strcmp( Extra_FileNameExtension(pFileName), "blif" ) )
644 pTemp = Cba_ManReadBlif( pFileName );
645 else if ( !strcmp( Extra_FileNameExtension(pFileName), "v" ) )
646 pTemp = Cba_ManReadVerilog( pFileName );
647 else if ( !strcmp( Extra_FileNameExtension(pFileName), "cba" ) )
648 pTemp = Cba_ManReadCba( pFileName );
649 else assert( 0 );
650 pSecond = Cba_ManBlast( pTemp, 0, 0, 0 );
651 Cba_ManFree( pTemp );
652 if ( pSecond == NULL )
653 {
654 Gia_ManStop( pFirst );
655 Abc_Print( -1, "Extracting AIG from the original design has failed.\n" );
656 return 0;
657 }
658 // compute the miter
659 pMiter = Gia_ManMiter( pFirst, pSecond, 0, 1, 0, 0, pPars->fVerbose );
660 if ( pMiter )
661 {
662 if ( fDumpMiter )
663 {
664 Abc_Print( 0, "The verification miter is written into file \"%s\".\n", "cec_miter.aig" );
665 Gia_AigerWrite( pMiter, "cec_miter.aig", 0, 0, 0 );
666 }
667 pAbc->Status = Cec_ManVerify( pMiter, pPars );
668 //Abc_FrameReplaceCex( pAbc, &pAbc->pGia->pCexComb );
669 Gia_ManStop( pMiter );
670 }
671 Gia_ManStop( pFirst );
672 Gia_ManStop( pSecond );
673 return 0;
674usage:
675 Abc_Print( -2, "usage: :cec [-vh]\n" );
676 Abc_Print( -2, "\t combinational equivalence checking\n" );
677 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", pPars->fVerbose? "yes": "no" );
678 Abc_Print( -2, "\t-h : print the command usage\n");
679 return 1;
680}
681
693int Cba_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
694{
695 Cba_Man_t * p = Cba_AbcGetMan(pAbc);
696 int c, fVerbose = 0;
698 while ( ( c = Extra_UtilGetopt( argc, argv, "vh" ) ) != EOF )
699 {
700 switch ( c )
701 {
702 case 'v':
703 fVerbose ^= 1;
704 break;
705 case 'h':
706 goto usage;
707 default:
708 goto usage;
709 }
710 }
711 if ( p == NULL )
712 {
713 Abc_Print( 1, "Cba_CommandTest(): There is no current design.\n" );
714 return 0;
715 }
716 return 0;
717usage:
718 Abc_Print( -2, "usage: :test [-vh]\n" );
719 Abc_Print( -2, "\t experiments with word-level networks\n" );
720 Abc_Print( -2, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" );
721 Abc_Print( -2, "\t-h : print the command usage\n");
722 return 1;
723}
724
728
729
731
void Abc_FrameUpdateGia(Abc_Frame_t *pAbc, Gia_Man_t *pNew)
Definition abc.c:824
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_HEADER_START struct Abc_Frame_t_ Abc_Frame_t
INCLUDES ///.
Definition abcapis.h:38
void Cba_Init(Abc_Frame_t *pAbc)
FUNCTION DEFINITIONS ///.
Definition cbaCom.c:60
void Cba_End(Abc_Frame_t *pAbc)
Definition cbaCom.c:84
@ CBA_BOX_MUL
Definition cbaTypes.h:96
@ CBA_BOX_ADD
Definition cbaTypes.h:94
void Cba_NtkPrintNodes(Cba_Ntk_t *p, int Type)
Definition cbaNtk.c:242
void Prs_ManReadVerilogTest(char *pFileName)
Cba_Man_t * Cba_ManReadBlif(char *pFileName)
Cba_Man_t * Cba_ManInsertAbc(Cba_Man_t *p, void *pAbc)
Definition cbaBlast.c:1057
void Prs_ManReadBlifTest(char *pFileName)
Gia_Man_t * Cba_ManBlast(Cba_Man_t *p, int fBarBufs, int fSeq, int fVerbose)
Definition cbaBlast.c:1037
Cba_Man_t * Cba_ManReadCba(char *pFileName)
DECLARATIONS ///.
Definition cbaCba.c:44
void Cba_ManWriteVerilog(char *pFileName, Cba_Man_t *p, int fInlineConcat)
void Cba_ManWriteCba(char *pFileName, Cba_Man_t *p)
Definition cbaCba.c:48
Cba_Man_t * Cba_ManCollapse(Cba_Man_t *p)
Definition cbaNtk.c:788
void Cba_NtkPrintStatsFull(Cba_Ntk_t *p, int fDistrib, int fVerbose)
Definition cbaNtk.c:267
Cba_Man_t * Cba_ManReadVerilog(char *pFileName)
struct Cba_Man_t_ Cba_Man_t
Definition cba.h:46
Vec_Int_t * Cba_NtkCollectDfs(Cba_Ntk_t *p)
Definition cbaNtk.c:640
void Cba_ManWriteBlif(char *pFileName, Cba_Man_t *p)
Cba_Man_t * Cba_ManInsertGia(Cba_Man_t *p, Gia_Man_t *pGia)
Definition cbaBlast.c:1053
void Cec_ManCecSetDefaultParams(Cec_ParCec_t *p)
Definition cecCore.c:159
struct Cec_ParCec_t_ Cec_ParCec_t
Definition cec.h:129
int Cec_ManVerify(Gia_Man_t *p, Cec_ParCec_t *pPars)
MACRO DEFINITIONS ///.
Definition cecCec.c:326
void Cmd_CommandAdd(Abc_Frame_t *pAbc, const char *sGroup, const char *sName, Cmd_CommandFuncType pFunc, int fChanges)
Definition cmdApi.c:63
Cube * p
Definition exorList.c:222
int globalUtilOptind
char * Extra_FileGetSimilarName(char *pFileNameWrong, char *pS1, char *pS2, char *pS3, char *pS4, char *pS5)
int Extra_UtilGetopt(int argc, char *argv[], const char *optstring)
ABC_DLL void Extra_UtilGetoptReset()
char * Extra_FileNameGenericAppend(char *pBase, char *pSuffix)
char * Extra_FileNameExtension(char *FileName)
void Gia_ManStop(Gia_Man_t *p)
Definition giaMan.c:82
struct Gia_Man_t_ Gia_Man_t
Definition gia.h:96
Gia_Man_t * Gia_ManMiter(Gia_Man_t *pAig0, Gia_Man_t *pAig1, int nInsDup, int fDualOut, int fSeq, int fImplic, int fVerbose)
Definition giaDup.c:2983
void Gia_AigerWrite(Gia_Man_t *p, char *pFileName, int fWriteSymbols, int fCompact, int fWriteNewLine)
Definition giaAiger.c:1595
usage()
Definition main.c:626
int fVerbose
Definition cec.h:140
#define assert(ex)
Definition util_old.h:213
int strcmp()