ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
ioReadPla.c
Go to the documentation of this file.
1
20
21#include "ioAbc.h"
22#include "misc/util/utilTruth.h"
23
25
26
30
31static Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth, int fOnDc, int fSkipPrepro );
32
36
48static inline void Io_ReadPlaPrintCube( word * p, int nVars )
49{
50 char Symbs[3] = {'-', '0', '1'}; int v;
51 for ( v = 0; v < nVars; v++ )
52 printf( "%c", Symbs[Abc_TtGetQua(p, v)] );
53 printf( "\n" );
54}
55
67static inline int Io_ReadPlaDistance1( word * p, word * q, int nWords )
68{
69 word Test; int c, fFound = 0;
70 for ( c = 0; c < nWords; c++ )
71 {
72 if ( p[c] == q[c] )
73 continue;
74 if ( fFound )
75 return 0;
76 // check if the number of 1s is one
77// Test = ((p[c] ^ q[c]) & ((p[c] ^ q[c]) >> 1)) & ABC_CONST(0x5555555555555555); // exactly one 0/1 literal (but may be -/0 or -/1)
78 Test = ((p[c] ^ q[c]) | ((p[c] ^ q[c]) >> 1)) & ABC_CONST(0x5555555555555555);
79 if ( !Abc_TtOnlyOneOne(Test) )
80 return 0;
81 fFound = 1;
82 }
83 return fFound;
84}
85static inline int Io_ReadPlaConsensus( word * p, word * q, int nWords, int * piVar )
86{
87 word Test; int c, fFound = 0;
88 for ( c = 0; c < nWords; c++ )
89 {
90 if ( p[c] == q[c] )
91 continue;
92 if ( fFound )
93 return 0;
94 // check if there is exactly one opposite literal (0/1) but may have other diffs (-/0 or -/1)
95 Test = ((p[c] ^ q[c]) & ((p[c] ^ q[c]) >> 1)) & ABC_CONST(0x5555555555555555);
96 if ( !Abc_TtOnlyOneOne(Test) )
97 return 0;
98 fFound = 1;
99 *piVar = c * 32 + Abc_Tt6FirstBit(Test)/2;
100 }
101 return fFound;
102}
103
104
116void Io_ReadPlaMarkIdentical( word ** pCs, int nCubes, int nWords, Vec_Bit_t * vMarks )
117{
118 int c1, c2;
119 Vec_BitFill( vMarks, nCubes, 0 );
120 for ( c1 = 0; c1 < nCubes; c1++ )
121 if ( !Vec_BitEntry(vMarks, c1) )
122 for ( c2 = c1 + 1; c2 < nCubes; c2++ )
123 if ( !Vec_BitEntry(vMarks, c2) )
124 if ( Abc_TtEqual(pCs[c1], pCs[c2], nWords) )
125 Vec_BitWriteEntry( vMarks, c2, 1 );
126}
127void Io_ReadPlaMarkContained( word ** pCs, int nCubes, int nWords, Vec_Bit_t * vMarks )
128{
129 int c1, c2;
130 Vec_BitFill( vMarks, nCubes, 0 );
131 for ( c1 = 0; c1 < nCubes; c1++ )
132 if ( !Vec_BitEntry(vMarks, c1) )
133 for ( c2 = c1 + 1; c2 < nCubes; c2++ )
134 if ( !Vec_BitEntry(vMarks, c2) )
135 {
136 if ( Abc_TtImply(pCs[c1], pCs[c2], nWords) )
137 Vec_BitWriteEntry( vMarks, c2, 1 );
138 else if ( Abc_TtImply(pCs[c2], pCs[c1], nWords) )
139 {
140 Vec_BitWriteEntry( vMarks, c1, 1 );
141 break;
142 }
143 }
144}
145int Io_ReadPlaRemoveMarked( word ** pCs, int nCubes, int nWords, Vec_Bit_t * vMarks )
146{
147 int c1, c;
148 for ( c1 = c = 0; c1 < nCubes; c1++ )
149 if ( !Vec_BitEntry(vMarks, c1) )
150 {
151 if ( c == c1 )
152 c++;
153 else
154 Abc_TtCopy( pCs[c++], pCs[c1], nWords, 0 );
155 }
156 return c;
157}
158int Io_ReadPlaMergeDistance1( word ** pCs, int nCubes, int nWords, Vec_Bit_t * vMarks )
159{
160 int c1, c2, Res, Counter = 0;
161 Vec_BitFill( vMarks, nCubes, 0 );
162 for ( c1 = 0; c1 < nCubes; c1++ )
163 if ( !Vec_BitEntry(vMarks, c1) )
164 for ( c2 = c1 + 1; c2 < nCubes; c2++ )
165 if ( !Vec_BitEntry(vMarks, c2) )
166 {
167 Res = Io_ReadPlaDistance1( pCs[c1], pCs[c2], nWords );
168 if ( !Res )
169 continue;
170 Abc_TtAnd( pCs[c1], pCs[c1], pCs[c2], nWords, 0 );
171 Vec_BitWriteEntry( vMarks, c2, 1 );
172 Counter++;
173 break;
174 }
175 return Counter;
176}
177int Io_ReadPlaSelfSubsumption( word ** pCs, int nCubes, int nWords, Vec_Bit_t * vMarks )
178{
179 int c1, c2, Res, Counter = 0, iVar = -1, Val0, Val1;
180 Vec_BitFill( vMarks, nCubes, 0 );
181 for ( c1 = 0; c1 < nCubes; c1++ )
182 if ( !Vec_BitEntry(vMarks, c1) )
183 for ( c2 = c1 + 1; c2 < nCubes; c2++ )
184 if ( !Vec_BitEntry(vMarks, c2) )
185 {
186 Res = Io_ReadPlaConsensus( pCs[c1], pCs[c2], nWords, &iVar );
187 if ( !Res )
188 continue;
189 assert( iVar >= 0 && iVar < nWords*32 );
190 Val0 = Abc_TtGetQua( pCs[c1], iVar );
191 Val1 = Abc_TtGetQua( pCs[c2], iVar );
192 // remove values
193 Abc_TtXorQua( pCs[c1], iVar, Val0 );
194 Abc_TtXorQua( pCs[c2], iVar, Val1 );
195 // check containment
196 if ( Abc_TtImply(pCs[c1], pCs[c2], nWords) )
197 {
198 Abc_TtXorQua( pCs[c1], iVar, Val0 );
199 Vec_BitWriteEntry( vMarks, c2, 1 );
200 Counter++;
201 }
202 else if ( Abc_TtImply(pCs[c2], pCs[c1], nWords) )
203 {
204 Abc_TtXorQua( pCs[c2], iVar, Val1 );
205 Vec_BitWriteEntry( vMarks, c1, 1 );
206 Counter++;
207 break;
208 }
209 else
210 {
211 Abc_TtXorQua( pCs[c1], iVar, Val0 );
212 Abc_TtXorQua( pCs[c2], iVar, Val1 );
213 }
214
215/*
216 printf( "Var = %3d ", iVar );
217 printf( "Cube0 = %d ", Abc_TtGetQua(pCs[c1], iVar) );
218 printf( "Cube1 = %d ", Abc_TtGetQua(pCs[c2], iVar) );
219 printf( "\n" );
220 Io_ReadPlaPrintCube( pCs[c1], 32 * nWords );
221 Io_ReadPlaPrintCube( pCs[c2], 32 * nWords );
222 printf( "\n" );
223*/
224 break;
225 }
226 return Counter;
227}
228
241{
242 char * pSop = Vec_StrArray( vSop ), * pCube, Lit;
243 int nCubes = Abc_SopGetCubeNum( pSop );
244 int nVars = Abc_SopGetVarNum( pSop );
245 int nWords = Abc_Bit6WordNum( 2*nVars ), c, v;
246 word ** pCs = ABC_ALLOC( word *, nCubes );
247 pCs[0] = ABC_CALLOC( word, nCubes * nWords );
248 for ( c = 1; c < nCubes; c++ )
249 pCs[c] = pCs[c-1] + nWords;
250 c = 0;
251 Abc_SopForEachCube( pSop, nVars, pCube )
252 {
253 Abc_CubeForEachVar( pCube, Lit, v )
254 if ( Lit == '0' )
255 Abc_TtSetBit( pCs[c], Abc_Var2Lit(v,0) );
256 else if ( Lit == '1' )
257 Abc_TtSetBit( pCs[c], Abc_Var2Lit(v,1) );
258 c++;
259 }
260 assert( c == nCubes );
261 return pCs;
262}
263void Io_ReadPlaCubeSetdown( Vec_Str_t * vSop, word ** pCs, int nCubes, int nVars )
264{
265 char Symbs[3] = {'-', '0', '1'}; int c, v;
266 Vec_StrClear( vSop );
267 for ( c = 0; c < nCubes; c++ )
268 {
269 for ( v = 0; v < nVars; v++ )
270 Vec_StrPush( vSop, Symbs[Abc_TtGetQua(pCs[c], v)] );
271 Vec_StrPrintStr( vSop, " 1\n" );
272 }
273 Vec_StrPush( vSop, 0 );
274}
275void Io_ReadPlaCubePreprocess( Vec_Str_t * vSop, int iCover, int fVerbose )
276{
277 word ** pCs = Io_ReadPlaCubeSetup( vSop );
278 int nCubes = Abc_SopGetCubeNum( Vec_StrArray(vSop) );
279 int nVars = Abc_SopGetVarNum( Vec_StrArray(vSop) );
280 int nWords = Abc_Bit6WordNum( 2*nVars );
281 int nCubesNew, Count, Iter = 0;
282 Vec_Bit_t * vMarks = Vec_BitStart( nCubes );
283 if ( fVerbose )
284 printf( "Cover %5d : V =%5d C%d =%5d", iCover, nVars, Iter, nCubes );
285
286 do
287 {
288 Iter++;
289 do
290 {
291 // remove contained
292 Io_ReadPlaMarkContained( pCs, nCubes, nWords, vMarks );
293 nCubesNew = Io_ReadPlaRemoveMarked( pCs, nCubes, nWords, vMarks );
294 //if ( fVerbose )
295 // printf( " C =%5d", nCubes - nCubesNew );
296 nCubes = nCubesNew;
297 // merge distance-1
298 Count = Io_ReadPlaMergeDistance1( pCs, nCubes, nWords, vMarks );
299 } while ( Count );
300 if ( fVerbose )
301 printf( " C%d =%5d", Iter, nCubes );
302 // try consensus
303 //Count = Io_ReadPlaSelfSubsumption( pCs, nCubes, nWords, vMarks );
304 if ( fVerbose )
305 printf( "%4d", Count );
306 } while ( Count );
307
308 // translate
309 Io_ReadPlaCubeSetdown( vSop, pCs, nCubes, nVars );
310 // finalize
311 if ( fVerbose )
312 printf( "\n" );
313 Vec_BitFree( vMarks );
314 ABC_FREE( pCs[0] );
315 ABC_FREE( pCs );
316}
317
329Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, int fOnDc, int fSkipPrepro, int fCheck )
330{
332 Abc_Ntk_t * pNtk;
333
334 // start the file
335 p = Extra_FileReaderAlloc( pFileName, "#", "\n\r", " \t|" );
336// p = Extra_FileReaderAlloc( pFileName, "", "\n\r", " \t|" );
337 if ( p == NULL )
338 return NULL;
339
340 // read the network
341 pNtk = Io_ReadPlaNetwork( p, fZeros, fBoth, fOnDc, fSkipPrepro );
343 if ( pNtk == NULL )
344 return NULL;
345
346 // make sure that everything is okay with the network structure
347 if ( fCheck && !Abc_NtkCheckRead( pNtk ) )
348 {
349 printf( "Io_ReadPla: The network check has failed.\n" );
350 Abc_NtkDelete( pNtk );
351 return NULL;
352 }
353 return pNtk;
354}
355
366Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth, int fOnDc, int fSkipPrepro )
367{
368 ProgressBar * pProgress;
369 Vec_Ptr_t * vTokens;
370 Abc_Ntk_t * pNtk;
371 Abc_Obj_t * pTermPi, * pTermPo, * pNode;
372 Vec_Str_t ** ppSops = NULL;
373 char Buffer[1000];
374 int nInputs = -1, nOutputs = -1, nProducts = -1;
375 char * pCubeIn, * pCubeOut;
376 int i, k, iLine, nCubes;
377 unsigned char nDigits;
378
379 // allocate the empty network
381
382 // go through the lines of the file
383 nCubes = 0;
385 while ( (vTokens = (Vec_Ptr_t *)Extra_FileReaderGetTokens(p)) )
386 {
387 Extra_ProgressBarUpdate( pProgress, Extra_FileReaderGetCurPosition(p), NULL );
388 iLine = Extra_FileReaderGetLineNumber( p, 0 );
389
390 // if it is the end of file, quit the loop
391 if ( strncmp( (char *)vTokens->pArray[0], ".e", 2 ) == 0 )
392 break;
393
394 // if it is type directive, ignore it for now
395 if ( strncmp( (char *)vTokens->pArray[0], ".type", 5 ) == 0 )
396 continue;
397
398 // if it is the model name, get the name
399 if ( strcmp( (char *)vTokens->pArray[0], ".model" ) == 0 )
400 {
401 ABC_FREE( pNtk->pName );
402 pNtk->pName = Extra_UtilStrsav( (char *)vTokens->pArray[1] );
403 continue;
404 }
405
406 if ( vTokens->nSize == 1 )
407 {
408 printf( "%s (line %d): Wrong number of token.\n",
410 Abc_NtkDelete( pNtk );
411 Extra_ProgressBarStop( pProgress );
412 ABC_FREE( ppSops );
413 return NULL;
414 }
415
416 if ( strcmp( (char *)vTokens->pArray[0], ".i" ) == 0 )
417 nInputs = atoi((char *)vTokens->pArray[1]);
418 else if ( strcmp( (char *)vTokens->pArray[0], ".o" ) == 0 )
419 nOutputs = atoi((char *)vTokens->pArray[1]);
420 else if ( strcmp( (char *)vTokens->pArray[0], ".p" ) == 0 )
421 nProducts = atoi((char *)vTokens->pArray[1]);
422 else if ( strcmp( (char *)vTokens->pArray[0], ".ilb" ) == 0 )
423 {
424 if ( vTokens->nSize - 1 != nInputs )
425 printf( "Warning: Mismatch between the number of PIs on the .i line (%d) and the number of PIs on the .ilb line (%d).\n", nInputs, vTokens->nSize - 1 );
426 for ( i = 1; i < vTokens->nSize; i++ )
427 Io_ReadCreatePi( pNtk, (char *)vTokens->pArray[i] );
428 }
429 else if ( strcmp( (char *)vTokens->pArray[0], ".ob" ) == 0 )
430 {
431 if ( vTokens->nSize - 1 != nOutputs )
432 printf( "Warning: Mismatch between the number of POs on the .o line (%d) and the number of POs on the .ob line (%d).\n", nOutputs, vTokens->nSize - 1 );
433 for ( i = 1; i < vTokens->nSize; i++ )
434 Io_ReadCreatePo( pNtk, (char *)vTokens->pArray[i] );
435 }
436 else
437 {
438 // check if the input/output names are given
439 if ( Abc_NtkPiNum(pNtk) == 0 )
440 {
441 if ( nInputs == -1 )
442 {
443 printf( "%s: The number of inputs is not specified.\n", Extra_FileReaderGetFileName(p) );
444 Abc_NtkDelete( pNtk );
445 Extra_ProgressBarStop( pProgress );
446 ABC_FREE( ppSops );
447 return NULL;
448 }
449 nDigits = (unsigned char)Abc_Base10Log( nInputs );
450 for ( i = 0; i < nInputs; i++ )
451 {
452 sprintf( Buffer, "x%0*d", nDigits, i );
453 Io_ReadCreatePi( pNtk, Buffer );
454 }
455 }
456 if ( Abc_NtkPoNum(pNtk) == 0 )
457 {
458 if ( nOutputs == -1 )
459 {
460 printf( "%s: The number of outputs is not specified.\n", Extra_FileReaderGetFileName(p) );
461 Abc_NtkDelete( pNtk );
462 Extra_ProgressBarStop( pProgress );
463 ABC_FREE( ppSops );
464 return NULL;
465 }
466 nDigits = (unsigned char)Abc_Base10Log( nOutputs );
467 for ( i = 0; i < nOutputs; i++ )
468 {
469 sprintf( Buffer, "z%0*d", nDigits, i );
470 Io_ReadCreatePo( pNtk, Buffer );
471 }
472 }
473 if ( Abc_NtkNodeNum(pNtk) == 0 )
474 { // first time here
475 // create the PO drivers and add them
476 // start the SOP covers
477 ppSops = ABC_ALLOC( Vec_Str_t *, nOutputs );
478 Abc_NtkForEachPo( pNtk, pTermPo, i )
479 {
480 ppSops[i] = Vec_StrAlloc( 100 );
481 // create the node
482 pNode = Abc_NtkCreateNode(pNtk);
483 // connect the node to the PO net
484 Abc_ObjAddFanin( Abc_ObjFanin0Ntk(pTermPo), pNode );
485 // connect the node to the PI nets
486 Abc_NtkForEachPi( pNtk, pTermPi, k )
487 Abc_ObjAddFanin( pNode, Abc_ObjFanout0Ntk(pTermPi) );
488 }
489 }
490 // read the cubes
491 if ( vTokens->nSize != 2 )
492 {
493 printf( "%s (line %d): Input and output cubes are not specified.\n",
495 Abc_NtkDelete( pNtk );
496 Extra_ProgressBarStop( pProgress );
497 ABC_FREE( ppSops );
498 return NULL;
499 }
500 pCubeIn = (char *)vTokens->pArray[0];
501 pCubeOut = (char *)vTokens->pArray[1];
502 if ( (int)strlen(pCubeIn) != nInputs )
503 {
504 printf( "%s (line %d): Input cube length (%d) differs from the number of inputs (%d).\n",
505 Extra_FileReaderGetFileName(p), iLine, (int)strlen(pCubeIn), nInputs );
506 Abc_NtkDelete( pNtk );
507 ABC_FREE( ppSops );
508 return NULL;
509 }
510 if ( (int)strlen(pCubeOut) != nOutputs )
511 {
512 printf( "%s (line %d): Output cube length (%d) differs from the number of outputs (%d).\n",
513 Extra_FileReaderGetFileName(p), iLine, (int)strlen(pCubeOut), nOutputs );
514 Abc_NtkDelete( pNtk );
515 Extra_ProgressBarStop( pProgress );
516 ABC_FREE( ppSops );
517 return NULL;
518 }
519 if ( fZeros )
520 {
521 for ( i = 0; i < nOutputs; i++ )
522 {
523 if ( pCubeOut[i] == '0' )
524 {
525 Vec_StrPrintStr( ppSops[i], pCubeIn );
526 Vec_StrPrintStr( ppSops[i], " 1\n" );
527 }
528 }
529 }
530 else if ( fBoth )
531 {
532 for ( i = 0; i < nOutputs; i++ )
533 {
534 if ( pCubeOut[i] == '0' || pCubeOut[i] == '1' )
535 {
536 Vec_StrPrintStr( ppSops[i], pCubeIn );
537 Vec_StrPrintStr( ppSops[i], " 1\n" );
538 }
539 }
540 }
541 else if ( fOnDc )
542 {
543 for ( i = 0; i < nOutputs; i++ )
544 {
545 if ( pCubeOut[i] == '-' || pCubeOut[i] == '1' )
546 {
547 Vec_StrPrintStr( ppSops[i], pCubeIn );
548 Vec_StrPrintStr( ppSops[i], " 1\n" );
549 }
550 }
551 }
552 else
553 {
554 for ( i = 0; i < nOutputs; i++ )
555 {
556 if ( pCubeOut[i] == '1' )
557 {
558 Vec_StrPrintStr( ppSops[i], pCubeIn );
559 Vec_StrPrintStr( ppSops[i], " 1\n" );
560 }
561 }
562 }
563 nCubes++;
564 }
565 }
566 Extra_ProgressBarStop( pProgress );
567 if ( nProducts != -1 && nCubes != nProducts )
568 printf( "Warning: Mismatch between the number of cubes (%d) and the number on .p line (%d).\n",
569 nCubes, nProducts );
570
571 // add the SOP covers
572 Abc_NtkForEachPo( pNtk, pTermPo, i )
573 {
574 pNode = Abc_ObjFanin0Ntk( Abc_ObjFanin0(pTermPo) );
575 if ( ppSops[i]->nSize == 0 )
576 {
577 Abc_ObjRemoveFanins(pNode);
578 pNode->pData = Abc_SopRegister( (Mem_Flex_t *)pNtk->pManFunc, " 0\n" );
579 Vec_StrFree( ppSops[i] );
580 continue;
581 }
582 Vec_StrPush( ppSops[i], 0 );
583 if ( !fSkipPrepro )
584 Io_ReadPlaCubePreprocess( ppSops[i], i, 0 );
585 pNode->pData = Abc_SopRegister( (Mem_Flex_t *)pNtk->pManFunc, ppSops[i]->pArray );
586 Vec_StrFree( ppSops[i] );
587 }
588 ABC_FREE( ppSops );
589 Abc_NtkFinalizeRead( pNtk );
590 return pNtk;
591}
592
593
597
598
599
601
int nWords
Definition abcNpn.c:127
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
Definition abcFanio.c:84
#define Abc_NtkForEachPo(pNtk, pPo, i)
Definition abc.h:520
ABC_DLL int Abc_NtkCheckRead(Abc_Ntk_t *pNtk)
Definition abcCheck.c:80
#define Abc_CubeForEachVar(pCube, Value, i)
Definition abc.h:536
ABC_DLL Abc_Ntk_t * Abc_NtkStartRead(char *pName)
Definition abcNtk.c:386
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
ABC_DLL void Abc_NtkFinalizeRead(Abc_Ntk_t *pNtk)
Definition abcNtk.c:413
#define Abc_SopForEachCube(pSop, nFanins, pCube)
Definition abc.h:538
#define Abc_NtkForEachPi(pNtk, pPi, i)
Definition abc.h:516
ABC_DLL int Abc_SopGetVarNum(char *pSop)
Definition abcSop.c:584
ABC_DLL void Abc_ObjRemoveFanins(Abc_Obj_t *pObj)
Definition abcFanio.c:141
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
Definition abcNtk.c:1421
ABC_DLL int Abc_SopGetCubeNum(char *pSop)
Definition abcSop.c:537
ABC_DLL char * Abc_SopRegister(Mem_Flex_t *pMan, const char *pName)
DECLARATIONS ///.
Definition abcSop.c:62
#define ABC_ALLOC(type, num)
Definition abc_global.h:264
#define ABC_CALLOC(type, num)
Definition abc_global.h:265
#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
struct Vec_Str_t_ Vec_Str_t
Definition bblif.c:46
ABC_NAMESPACE_IMPL_START typedef char ProgressBar
Definition bbrNtbdd.c:27
Cube * p
Definition exorList.c:222
void Extra_ProgressBarStop(ProgressBar *p)
char * Extra_FileReaderGetFileName(Extra_FileReader_t *p)
void * Extra_FileReaderGetTokens(Extra_FileReader_t *p)
Extra_FileReader_t * Extra_FileReaderAlloc(char *pFileName, char *pCharsComment, char *pCharsStop, char *pCharsClean)
FUNCTION DEFINITIONS ///.
char * Extra_UtilStrsav(const char *s)
struct Extra_FileReader_t_ Extra_FileReader_t
Definition extra.h:135
int Extra_FileReaderGetLineNumber(Extra_FileReader_t *p, int iToken)
int Extra_FileReaderGetCurPosition(Extra_FileReader_t *p)
ProgressBar * Extra_ProgressBarStart(FILE *pFile, int nItemsTotal)
FUNCTION DEFINITIONS ///.
int Extra_FileReaderGetFileSize(Extra_FileReader_t *p)
void Extra_FileReaderFree(Extra_FileReader_t *p)
Abc_Obj_t * Io_ReadCreatePo(Abc_Ntk_t *pNtk, char *pName)
Definition ioUtil.c:644
Abc_Obj_t * Io_ReadCreatePi(Abc_Ntk_t *pNtk, char *pName)
Definition ioUtil.c:619
word ** Io_ReadPlaCubeSetup(Vec_Str_t *vSop)
Definition ioReadPla.c:240
int Io_ReadPlaRemoveMarked(word **pCs, int nCubes, int nWords, Vec_Bit_t *vMarks)
Definition ioReadPla.c:145
int Io_ReadPlaSelfSubsumption(word **pCs, int nCubes, int nWords, Vec_Bit_t *vMarks)
Definition ioReadPla.c:177
void Io_ReadPlaCubeSetdown(Vec_Str_t *vSop, word **pCs, int nCubes, int nVars)
Definition ioReadPla.c:263
void Io_ReadPlaMarkContained(word **pCs, int nCubes, int nWords, Vec_Bit_t *vMarks)
Definition ioReadPla.c:127
int Io_ReadPlaMergeDistance1(word **pCs, int nCubes, int nWords, Vec_Bit_t *vMarks)
Definition ioReadPla.c:158
void Io_ReadPlaMarkIdentical(word **pCs, int nCubes, int nWords, Vec_Bit_t *vMarks)
Definition ioReadPla.c:116
void Io_ReadPlaCubePreprocess(Vec_Str_t *vSop, int iCover, int fVerbose)
Definition ioReadPla.c:275
Abc_Ntk_t * Io_ReadPla(char *pFileName, int fZeros, int fBoth, int fOnDc, int fSkipPrepro, int fCheck)
Definition ioReadPla.c:329
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36
struct Mem_Flex_t_ Mem_Flex_t
Definition mem.h:34
char * pName
Definition abc.h:158
void * pManFunc
Definition abc.h:191
void * pData
Definition abc.h:145
#define assert(ex)
Definition util_old.h:213
int strncmp()
int strlen()
int strcmp()
char * sprintf()
typedefABC_NAMESPACE_HEADER_START struct Vec_Bit_t_ Vec_Bit_t
INCLUDES ///.
Definition vecBit.h:42
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42