ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
extra.h
Go to the documentation of this file.
1
28
29#ifndef ABC__misc__extra__extra_h
30#define ABC__misc__extra__extra_h
31
32
33#ifdef _WIN32
34#define inline __inline // compatible with MS VS 6.0
35#endif
36
37/*---------------------------------------------------------------------------*/
38/* Nested includes */
39/*---------------------------------------------------------------------------*/
40
41#include <stdio.h>
42#include <stdlib.h>
43#include <string.h>
44#include <assert.h>
45
46#include "misc/st/st.h"
47
49
50
51/*---------------------------------------------------------------------------*/
52/* Constant declarations */
53/*---------------------------------------------------------------------------*/
54
55/*---------------------------------------------------------------------------*/
56/* Stucture declarations */
57/*---------------------------------------------------------------------------*/
58
59/*---------------------------------------------------------------------------*/
60/* Type declarations */
61/*---------------------------------------------------------------------------*/
62
63/*---------------------------------------------------------------------------*/
64/* Variable declarations */
65/*---------------------------------------------------------------------------*/
66
67/*---------------------------------------------------------------------------*/
68/* Macro declarations */
69/*---------------------------------------------------------------------------*/
70
71typedef unsigned char uint8;
72typedef unsigned short uint16;
73typedef unsigned int uint32;
74
75/*===========================================================================*/
76/* Various Utilities */
77/*===========================================================================*/
78
79/*=== extraUtilBitMatrix.c ================================================================*/
80
84extern void Extra_BitMatrixStop( Extra_BitMat_t * p );
87extern void Extra_BitMatrixInsert1( Extra_BitMat_t * p, int i, int k );
88extern int Extra_BitMatrixLookup1( Extra_BitMat_t * p, int i, int k );
89extern void Extra_BitMatrixDelete1( Extra_BitMat_t * p, int i, int k );
90extern void Extra_BitMatrixInsert2( Extra_BitMat_t * p, int i, int k );
91extern int Extra_BitMatrixLookup2( Extra_BitMat_t * p, int i, int k );
92extern void Extra_BitMatrixDelete2( Extra_BitMat_t * p, int i, int k );
93extern void Extra_BitMatrixOr( Extra_BitMat_t * p, int i, unsigned * pInfo );
94extern void Extra_BitMatrixOrTwo( Extra_BitMat_t * p, int i, int j );
98
99/*=== extraUtilFile.c ========================================================*/
100
101extern char * Extra_FileGetSimilarName( char * pFileNameWrong, char * pS1, char * pS2, char * pS3, char * pS4, char * pS5 );
102extern char * Extra_FileNameExtension( char * FileName );
103extern char * Extra_FileNameAppend( char * pBase, char * pSuffix );
104extern char * Extra_FileNameGeneric( char * FileName );
105extern char * Extra_FileNameGenericAppend( char * pBase, char * pSuffix );
106extern void Extra_FileNameCorrectPath( char * FileName );
107extern char * Extra_FileNameWithoutPath( char * FileName );
108extern char * Extra_FilePathWithoutName( char * FileName );
109extern char * Extra_FileInTheSameDir( char * pPathFile, char * pFileName );
110extern char * Extra_FileDesignName( char * pFileName );
111extern int Extra_FileCheck( char * pFileName );
112extern int Extra_FileSize( char * pFileName );
113extern char * Extra_FileRead( FILE * pFile );
114extern char * Extra_FileRead2( FILE * pFile, FILE * pFile2 );
115extern char * Extra_FileReadContents( char * pFileName );
116extern char * Extra_FileReadContents2( char * pFileName, char * pFileName2 );
117extern int Extra_FileIsType( char * pFileName, char * pS1, char * pS2, char * pS3 );
118extern char * Extra_TimeStamp();
119extern char * Extra_StringAppend( char * pStrGiven, char * pStrAdd );
120extern void Extra_StringClean( char * pStrGiven, char * pCharKeep );
121extern unsigned Extra_ReadBinary( char * Buffer );
122extern void Extra_PrintBinary( FILE * pFile, unsigned Sign[], int nBits );
123extern void Extra_PrintBinary2( FILE * pFile, unsigned Sign[], int nBits );
124extern int Extra_ReadHex( unsigned Sign[], char * pString, int nDigits );
125extern int Extra_ReadHexadecimal( unsigned Sign[], char * pString, int nVars );
126extern void Extra_PrintHexadecimal( FILE * pFile, unsigned Sign[], int nVars );
127extern void Extra_PrintHexadecimalString( char * pString, unsigned Sign[], int nVars );
128extern void Extra_PrintHex( FILE * pFile, unsigned * pTruth, int nVars );
129extern void Extra_PrintHex2( FILE * pFile, unsigned * pTruth, int nVars );
130extern void Extra_PrintHexReverse( FILE * pFile, unsigned * pTruth, int nVars );
131extern void Extra_PrintSymbols( FILE * pFile, char Char, int nTimes, int fPrintNewLine );
132
133/*=== extraUtilReader.c ========================================================*/
134
137 char * pCharsComment, char * pCharsStop, char * pCharsClean );
143extern int Extra_FileReaderGetLineNumber( Extra_FileReader_t * p, int iToken );
144
145/*=== extraUtilMemory.c ========================================================*/
146
150
151// fixed-size-block memory manager
152extern Extra_MmFixed_t * Extra_MmFixedStart( int nEntrySize );
153extern void Extra_MmFixedStop( Extra_MmFixed_t * p );
154extern char * Extra_MmFixedEntryFetch( Extra_MmFixed_t * p );
155extern void Extra_MmFixedEntryRecycle( Extra_MmFixed_t * p, char * pEntry );
156extern void Extra_MmFixedRestart( Extra_MmFixed_t * p );
159// flexible-size-block memory manager
161extern void Extra_MmFlexStop( Extra_MmFlex_t * p );
162extern void Extra_MmFlexPrint( Extra_MmFlex_t * p );
163extern char * Extra_MmFlexEntryFetch( Extra_MmFlex_t * p, int nBytes );
165// hierarchical memory manager
166extern Extra_MmStep_t * Extra_MmStepStart( int nSteps );
167extern void Extra_MmStepStop( Extra_MmStep_t * p );
168extern char * Extra_MmStepEntryFetch( Extra_MmStep_t * p, int nBytes );
169extern void Extra_MmStepEntryRecycle( Extra_MmStep_t * p, char * pEntry, int nBytes );
171
172/*=== extraUtilMisc.c ========================================================*/
173
174/* finds the smallest integer larger or equal than the logarithm */
175extern int Extra_Base2LogDouble( double Num );
176/* returns the power of two as a double */
177extern double Extra_Power2( int Num );
178extern int Extra_Power3( int Num );
179/* the number of combinations of k elements out of n */
180extern int Extra_NumCombinations( int k, int n );
181extern int * Extra_DeriveRadixCode( int Number, int Radix, int nDigits );
182/* counts the number of 1s in the bitstring */
183extern int Extra_CountOnes( unsigned char * pBytes, int nBytes );
184/* the factorial of number */
185extern int Extra_Factorial( int n );
186/* the permutation of the given number of elements */
187extern char ** Extra_Permutations( int n );
188/* permutation and complementation of a truth table */
189unsigned Extra_TruthPermute( unsigned Truth, char * pPerms, int nVars, int fReverse );
190unsigned Extra_TruthPolarize( unsigned uTruth, int Polarity, int nVars );
191/* canonical forms of a truth table */
192extern unsigned Extra_TruthCanonN( unsigned uTruth, int nVars );
193extern unsigned Extra_TruthCanonNN( unsigned uTruth, int nVars );
194extern unsigned Extra_TruthCanonP( unsigned uTruth, int nVars );
195extern unsigned Extra_TruthCanonNP( unsigned uTruth, int nVars );
196extern unsigned Extra_TruthCanonNPN( unsigned uTruth, int nVars );
197/* canonical forms of 4-variable functions */
198extern void Extra_Truth4VarNPN( unsigned short ** puCanons, char ** puPhases, char ** puPerms, unsigned char ** puMap );
199extern void Extra_Truth4VarN( unsigned short ** puCanons, char *** puPhases, char ** ppCounters, int nPhasesMax );
200/* permutation mapping */
201extern unsigned short Extra_TruthPerm4One( unsigned uTruth, int Phase );
202extern unsigned Extra_TruthPerm5One( unsigned uTruth, int Phase );
203extern void Extra_TruthPerm6One( unsigned * uTruth, int Phase, unsigned * uTruthRes );
204extern void Extra_TruthExpand( int nVars, int nWords, unsigned * puTruth, unsigned uPhase, unsigned * puTruthR );
205/* precomputing tables for permutation mapping */
206extern void ** Extra_ArrayAlloc( int nCols, int nRows, int Size );
207extern unsigned short ** Extra_TruthPerm43();
208extern unsigned ** Extra_TruthPerm53();
209extern unsigned ** Extra_TruthPerm54();
210/* bubble sort for small number of entries */
211extern void Extra_BubbleSort( int Order[], int Costs[], int nSize, int fIncreasing );
212/* complementation/permutation generation */
213extern int * Extra_GreyCodeSchedule( int n );
214extern int * Extra_PermSchedule( int n );
215extern word Extra_Truth6MinimumExact( word t, int * pComp, int * pPerm );
217
218/*=== extraUtilCanon.c ========================================================*/
219
220/* fast computation of N-canoninical form up to 6 inputs */
221extern int Extra_TruthCanonFastN( int nVarsMax, int nVarsReal, unsigned * pt, unsigned ** pptRes, char ** ppfRes );
222
223/*=== extraUtilDsd.c ========================================================*/
224
225typedef struct Sdm_Man_t_ Sdm_Man_t;
226extern int Sdm_ManCanRead();
227extern Sdm_Man_t * Sdm_ManRead();
228extern void Sdm_ManQuit();
229extern int Sdm_ManComputeFunc( Sdm_Man_t * p, int iDsdLit0, int iDsdLit1, int * pCut, int uMask, int fXor );
230extern void Sdm_ManPrintDsdStats( Sdm_Man_t * p, int fVerbose );
231extern int Sdm_ManReadDsdVarNum( Sdm_Man_t * p, int iDsd );
232extern int Sdm_ManReadDsdAndNum( Sdm_Man_t * p, int iDsd );
233extern int Sdm_ManReadDsdClauseNum( Sdm_Man_t * p, int iDsd );
234extern word Sdm_ManReadDsdTruth( Sdm_Man_t * p, int iDsd );
235extern char * Sdm_ManReadDsdStr( Sdm_Man_t * p, int iDsd );
236extern void Sdm_ManReadCnfCosts( Sdm_Man_t * p, int * pCosts, int nCosts );
237
238/*=== extraUtilProgress.c ================================================================*/
239
241
243extern void Extra_ProgressBarStop( ProgressBar * p );
244extern void Extra_ProgressBarUpdate_int( ProgressBar * p, int nItemsCur, char * pString );
245
246static inline void Extra_ProgressBarUpdate( ProgressBar * p, int nItemsCur, char * pString )
247{ if ( p && nItemsCur < *((int*)p) ) return; Extra_ProgressBarUpdate_int(p, nItemsCur, pString); }
248
249/*=== extraUtilTruth.c ================================================================*/
250
251static inline int Extra_BitWordNum( int nBits ) { return nBits/(8*sizeof(unsigned)) + ((nBits%(8*sizeof(unsigned))) > 0); }
252static inline int Extra_TruthWordNum( int nVars ) { return nVars <= 5 ? 1 : (1 << (nVars - 5)); }
253
254static inline void Extra_TruthSetBit( unsigned * p, int Bit ) { p[Bit>>5] |= (unsigned)(1<<(Bit & 31)); }
255static inline void Extra_TruthXorBit( unsigned * p, int Bit ) { p[Bit>>5] ^= (unsigned)(1<<(Bit & 31)); }
256static inline int Extra_TruthHasBit( unsigned * p, int Bit ) { return (p[Bit>>5] & (unsigned)(1<<(Bit & 31))) > 0; }
257
258static inline int Extra_WordCountOnes( unsigned uWord )
259{
260 uWord = (uWord & 0x55555555) + ((uWord>>1) & 0x55555555);
261 uWord = (uWord & 0x33333333) + ((uWord>>2) & 0x33333333);
262 uWord = (uWord & 0x0F0F0F0F) + ((uWord>>4) & 0x0F0F0F0F);
263 uWord = (uWord & 0x00FF00FF) + ((uWord>>8) & 0x00FF00FF);
264 return (uWord & 0x0000FFFF) + (uWord>>16);
265}
266static inline int Extra_TruthCountOnes( unsigned * pIn, int nVars )
267{
268 int w, Counter = 0;
269 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
270 Counter += Extra_WordCountOnes(pIn[w]);
271 return Counter;
272}
273static inline int Extra_TruthIsEqual( unsigned * pIn0, unsigned * pIn1, int nVars )
274{
275 int w;
276 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
277 if ( pIn0[w] != pIn1[w] )
278 return 0;
279 return 1;
280}
281static inline int Extra_TruthIsConst0( unsigned * pIn, int nVars )
282{
283 int w;
284 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
285 if ( pIn[w] )
286 return 0;
287 return 1;
288}
289static inline int Extra_TruthIsConst1( unsigned * pIn, int nVars )
290{
291 int w;
292 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
293 if ( pIn[w] != ~(unsigned)0 )
294 return 0;
295 return 1;
296}
297static inline int Extra_TruthIsImply( unsigned * pIn1, unsigned * pIn2, int nVars )
298{
299 int w;
300 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
301 if ( pIn1[w] & ~pIn2[w] )
302 return 0;
303 return 1;
304}
305static inline void Extra_TruthCopy( unsigned * pOut, unsigned * pIn, int nVars )
306{
307 int w;
308 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
309 pOut[w] = pIn[w];
310}
311static inline void Extra_TruthClear( unsigned * pOut, int nVars )
312{
313 int w;
314 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
315 pOut[w] = 0;
316}
317static inline void Extra_TruthFill( unsigned * pOut, int nVars )
318{
319 int w;
320 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
321 pOut[w] = ~(unsigned)0;
322}
323static inline void Extra_TruthNot( unsigned * pOut, unsigned * pIn, int nVars )
324{
325 int w;
326 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
327 pOut[w] = ~pIn[w];
328}
329static inline void Extra_TruthAnd( unsigned * pOut, unsigned * pIn0, unsigned * pIn1, int nVars )
330{
331 int w;
332 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
333 pOut[w] = pIn0[w] & pIn1[w];
334}
335static inline void Extra_TruthOr( unsigned * pOut, unsigned * pIn0, unsigned * pIn1, int nVars )
336{
337 int w;
338 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
339 pOut[w] = pIn0[w] | pIn1[w];
340}
341static inline void Extra_TruthSharp( unsigned * pOut, unsigned * pIn0, unsigned * pIn1, int nVars )
342{
343 int w;
344 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
345 pOut[w] = pIn0[w] & ~pIn1[w];
346}
347static inline void Extra_TruthNand( unsigned * pOut, unsigned * pIn0, unsigned * pIn1, int nVars )
348{
349 int w;
350 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
351 pOut[w] = ~(pIn0[w] & pIn1[w]);
352}
353static inline void Extra_TruthAndPhase( unsigned * pOut, unsigned * pIn0, unsigned * pIn1, int nVars, int fCompl0, int fCompl1 )
354{
355 int w;
356 if ( fCompl0 && fCompl1 )
357 {
358 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
359 pOut[w] = ~(pIn0[w] | pIn1[w]);
360 }
361 else if ( fCompl0 && !fCompl1 )
362 {
363 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
364 pOut[w] = ~pIn0[w] & pIn1[w];
365 }
366 else if ( !fCompl0 && fCompl1 )
367 {
368 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
369 pOut[w] = pIn0[w] & ~pIn1[w];
370 }
371 else // if ( !fCompl0 && !fCompl1 )
372 {
373 for ( w = Extra_TruthWordNum(nVars)-1; w >= 0; w-- )
374 pOut[w] = pIn0[w] & pIn1[w];
375 }
376}
377
378extern unsigned ** Extra_TruthElementary( int nVars );
379extern void Extra_TruthSwapAdjacentVars( unsigned * pOut, unsigned * pIn, int nVars, int Start );
380extern void Extra_TruthStretch( unsigned * pOut, unsigned * pIn, int nVars, int nVarsAll, unsigned Phase );
381extern void Extra_TruthShrink( unsigned * pOut, unsigned * pIn, int nVars, int nVarsAll, unsigned Phase );
382extern int Extra_TruthVarInSupport( unsigned * pTruth, int nVars, int iVar );
383extern int Extra_TruthSupportSize( unsigned * pTruth, int nVars );
384extern int Extra_TruthSupport( unsigned * pTruth, int nVars );
385extern void Extra_TruthCofactor0( unsigned * pTruth, int nVars, int iVar );
386extern void Extra_TruthCofactor1( unsigned * pTruth, int nVars, int iVar );
387extern void Extra_TruthExist( unsigned * pTruth, int nVars, int iVar );
388extern void Extra_TruthForall( unsigned * pTruth, int nVars, int iVar );
389extern void Extra_TruthMux( unsigned * pOut, unsigned * pCof0, unsigned * pCof1, int nVars, int iVar );
390extern void Extra_TruthChangePhase( unsigned * pTruth, int nVars, int iVar );
391extern int Extra_TruthMinCofSuppOverlap( unsigned * pTruth, int nVars, int * pVarMin );
392extern void Extra_TruthCountOnesInCofs( unsigned * pTruth, int nVars, short * pStore );
393extern unsigned Extra_TruthHash( unsigned * pIn, int nWords );
394extern unsigned Extra_TruthSemiCanonicize( unsigned * pInOut, unsigned * pAux, int nVars, char * pCanonPerm, short * pStore );
395
396/*=== extraUtilUtil.c ================================================================*/
397
398extern abctime Extra_CpuTime();
399extern double Extra_CpuTimeDouble();
400extern int Extra_GetSoftDataLimit();
401extern ABC_DLL void Extra_UtilGetoptReset();
402extern int Extra_UtilGetopt( int argc, char *argv[], const char *optstring );
403extern char * Extra_UtilPrintTime( long t );
404extern char * Extra_UtilStrsav( const char *s );
405extern char * Extra_UtilTildeExpand( char *fname );
406extern char * Extra_UtilFileSearch( char *file, char *path, char *mode );
407extern void (*Extra_UtilMMoutOfMemory)( long size );
408
409extern const char * globalUtilOptarg;
410extern int globalUtilOptind;
411
413
414
415
417
418
419
420#endif /* __EXTRA_H__ */
int nWords
Definition abcNpn.c:127
ABC_INT64_T abctime
Definition abc_global.h:332
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
#define ABC_DLL
Definition abcapis.h:57
ABC_NAMESPACE_IMPL_START typedef char ProgressBar
Definition bbrNtbdd.c:27
char Char
Cube * p
Definition exorList.c:222
int Extra_FileSize(char *pFileName)
unsigned short Extra_TruthPerm4One(unsigned uTruth, int Phase)
void Extra_BitMatrixDelete2(Extra_BitMat_t *p, int i, int k)
unsigned short uint16
Definition extra.h:72
void Extra_PrintBinary2(FILE *pFile, unsigned Sign[], int nBits)
char * Extra_MmFixedEntryFetch(Extra_MmFixed_t *p)
char * Extra_FilePathWithoutName(char *FileName)
void Extra_ProgressBarStop(ProgressBar *p)
int Extra_MmFixedReadMaxEntriesUsed(Extra_MmFixed_t *p)
int Extra_NumCombinations(int k, int n)
void Extra_TruthCofactor1(unsigned *pTruth, int nVars, int iVar)
char ** Extra_Permutations(int n)
int Extra_TruthSupportSize(unsigned *pTruth, int nVars)
unsigned int uint32
Definition extra.h:73
void Extra_MmFixedStop(Extra_MmFixed_t *p)
char * Extra_FileReaderGetFileName(Extra_FileReader_t *p)
unsigned Extra_TruthCanonNN(unsigned uTruth, int nVars)
struct Extra_MmStep_t_ Extra_MmStep_t
Definition extra.h:149
void Extra_MmFlexStop(Extra_MmFlex_t *p)
void * Extra_FileReaderGetTokens(Extra_FileReader_t *p)
abctime Extra_CpuTime()
unsigned Extra_TruthCanonNP(unsigned uTruth, int nVars)
void Extra_PrintSymbols(FILE *pFile, char Char, int nTimes, int fPrintNewLine)
unsigned Extra_TruthHash(unsigned *pIn, int nWords)
void Extra_ProgressBarUpdate_int(ProgressBar *p, int nItemsCur, char *pString)
int Extra_CountOnes(unsigned char *pBytes, int nBytes)
int Extra_MmStepReadMemUsage(Extra_MmStep_t *p)
struct Sdm_Man_t_ Sdm_Man_t
Definition extra.h:225
int Extra_ReadHex(unsigned Sign[], char *pString, int nDigits)
char * Extra_FileNameWithoutPath(char *FileName)
int Extra_GetSoftDataLimit()
FUNCTION DEFINITIONS ///.
word Extra_Truth6MinimumExact(word t, int *pComp, int *pPerm)
void Extra_PrintHex(FILE *pFile, unsigned *pTruth, int nVars)
void Extra_BitMatrixClean(Extra_BitMat_t *p)
void Extra_BubbleSort(int Order[], int Costs[], int nSize, int fIncreasing)
unsigned Extra_TruthPerm5One(unsigned uTruth, int Phase)
void Sdm_ManReadCnfCosts(Sdm_Man_t *p, int *pCosts, int nCosts)
int globalUtilOptind
Extra_BitMat_t * Extra_BitMatrixStart(int nSize)
char * Extra_FileGetSimilarName(char *pFileNameWrong, char *pS1, char *pS2, char *pS3, char *pS4, char *pS5)
int * Extra_DeriveRadixCode(int Number, int Radix, int nDigits)
struct Extra_BitMat_t_ Extra_BitMat_t
Definition extra.h:81
void Extra_MmStepStop(Extra_MmStep_t *p)
void Extra_BitMatrixPrint(Extra_BitMat_t *p)
void Sdm_ManQuit()
int Extra_TruthVarInSupport(unsigned *pTruth, int nVars, int iVar)
Extra_FileReader_t * Extra_FileReaderAlloc(char *pFileName, char *pCharsComment, char *pCharsStop, char *pCharsClean)
FUNCTION DEFINITIONS ///.
void Extra_TruthExpand(int nVars, int nWords, unsigned *puTruth, unsigned uPhase, unsigned *puTruthR)
unsigned Extra_TruthCanonNPN(unsigned uTruth, int nVars)
int Extra_BitMatrixReadSize(Extra_BitMat_t *p)
unsigned Extra_ReadBinary(char *Buffer)
void Extra_TruthMux(unsigned *pOut, unsigned *pCof0, unsigned *pCof1, int nVars, int iVar)
int Sdm_ManReadDsdVarNum(Sdm_Man_t *p, int iDsd)
void Extra_BitMatrixInsert1(Extra_BitMat_t *p, int i, int k)
int Sdm_ManCanRead()
void Extra_MmFixedRestart(Extra_MmFixed_t *p)
Extra_MmFixed_t * Extra_MmFixedStart(int nEntrySize)
int Sdm_ManReadDsdClauseNum(Sdm_Man_t *p, int iDsd)
void Extra_MmFlexPrint(Extra_MmFlex_t *p)
void Extra_TruthCountOnesInCofs(unsigned *pTruth, int nVars, short *pStore)
int * Extra_PermSchedule(int n)
char * Extra_FileDesignName(char *pFileName)
int Extra_BitMatrixCountOnesUpper(Extra_BitMat_t *p)
char * Extra_UtilStrsav(const char *s)
int Extra_ReadHexadecimal(unsigned Sign[], char *pString, int nVars)
void Extra_PrintHexadecimal(FILE *pFile, unsigned Sign[], int nVars)
int Extra_Factorial(int n)
void ** Extra_ArrayAlloc(int nCols, int nRows, int Size)
int Extra_BitMatrixLookup2(Extra_BitMat_t *p, int i, int k)
unsigned Extra_TruthPermute(unsigned Truth, char *pPerms, int nVars, int fReverse)
unsigned Extra_TruthSemiCanonicize(unsigned *pInOut, unsigned *pAux, int nVars, char *pCanonPerm, short *pStore)
char * Extra_UtilTildeExpand(char *fname)
char * Extra_StringAppend(char *pStrGiven, char *pStrAdd)
struct Extra_MmFixed_t_ Extra_MmFixed_t
Definition extra.h:147
void Extra_Truth4VarNPN(unsigned short **puCanons, char **puPhases, char **puPerms, unsigned char **puMap)
struct Extra_FileReader_t_ Extra_FileReader_t
Definition extra.h:135
const char * globalUtilOptarg
int Extra_UtilGetopt(int argc, char *argv[], const char *optstring)
char * Extra_TimeStamp()
void Extra_TruthPerm6One(unsigned *uTruth, int Phase, unsigned *uTruthRes)
Extra_MmStep_t * Extra_MmStepStart(int nSteps)
void Extra_BitMatrixOr(Extra_BitMat_t *p, int i, unsigned *pInfo)
int Extra_FileCheck(char *pFileName)
unsigned Extra_TruthPolarize(unsigned uTruth, int Polarity, int nVars)
Sdm_Man_t * Sdm_ManRead()
void(* Extra_UtilMMoutOfMemory)(long size)
word Extra_Truth6MinimumHeuristic(word t)
char * Extra_FileRead2(FILE *pFile, FILE *pFile2)
void Sdm_ManPrintDsdStats(Sdm_Man_t *p, int fVerbose)
FUNCTION DEFINITIONS ///.
void Extra_PrintHexReverse(FILE *pFile, unsigned *pTruth, int nVars)
char * Extra_UtilPrintTime(long t)
char * Extra_FileInTheSameDir(char *pPathFile, char *pFileName)
void Extra_MmFixedEntryRecycle(Extra_MmFixed_t *p, char *pEntry)
int Extra_FileReaderGetLineNumber(Extra_FileReader_t *p, int iToken)
int Extra_FileReaderGetCurPosition(Extra_FileReader_t *p)
ABC_DLL void Extra_UtilGetoptReset()
void Extra_TruthShrink(unsigned *pOut, unsigned *pIn, int nVars, int nVarsAll, unsigned Phase)
char * Extra_FileReadContents2(char *pFileName, char *pFileName2)
int Extra_Power3(int Num)
int Sdm_ManReadDsdAndNum(Sdm_Man_t *p, int iDsd)
int Extra_TruthMinCofSuppOverlap(unsigned *pTruth, int nVars, int *pVarMin)
char * Extra_FileNameAppend(char *pBase, char *pSuffix)
void Extra_TruthCofactor0(unsigned *pTruth, int nVars, int iVar)
char * Extra_MmStepEntryFetch(Extra_MmStep_t *p, int nBytes)
char * Extra_UtilFileSearch(char *file, char *path, char *mode)
unsigned ** Extra_TruthPerm54()
double Extra_CpuTimeDouble()
void Extra_PrintBinary(FILE *pFile, unsigned Sign[], int nBits)
void Extra_TruthSwapAdjacentVars(unsigned *pOut, unsigned *pIn, int nVars, int Start)
int Sdm_ManComputeFunc(Sdm_Man_t *p, int iDsdLit0, int iDsdLit1, int *pCut, int uMask, int fXor)
void Extra_TruthStretch(unsigned *pOut, unsigned *pIn, int nVars, int nVarsAll, unsigned Phase)
char * Extra_FileNameGenericAppend(char *pBase, char *pSuffix)
int * Extra_GreyCodeSchedule(int n)
unsigned short ** Extra_TruthPerm43()
void Extra_BitMatrixDelete1(Extra_BitMat_t *p, int i, int k)
void Extra_PrintHex2(FILE *pFile, unsigned *pTruth, int nVars)
void Extra_BitMatrixOrTwo(Extra_BitMat_t *p, int i, int j)
Extra_MmFlex_t * Extra_MmFlexStart()
char * Sdm_ManReadDsdStr(Sdm_Man_t *p, int iDsd)
void Extra_TruthExist(unsigned *pTruth, int nVars, int iVar)
void Extra_TruthForall(unsigned *pTruth, int nVars, int iVar)
char * Extra_MmFlexEntryFetch(Extra_MmFlex_t *p, int nBytes)
void Extra_StringClean(char *pStrGiven, char *pCharKeep)
char * Extra_FileReadContents(char *pFileName)
char * Extra_FileNameExtension(char *FileName)
char * Extra_FileNameGeneric(char *FileName)
ProgressBar * Extra_ProgressBarStart(FILE *pFile, int nItemsTotal)
FUNCTION DEFINITIONS ///.
unsigned ** Extra_TruthElementary(int nVars)
void Extra_PrintHexadecimalString(char *pString, unsigned Sign[], int nVars)
int Extra_MmFlexReadMemUsage(Extra_MmFlex_t *p)
void Extra_MmStepEntryRecycle(Extra_MmStep_t *p, char *pEntry, int nBytes)
char * Extra_FileRead(FILE *pFile)
void Extra_BitMatrixInsert2(Extra_BitMat_t *p, int i, int k)
unsigned Extra_TruthCanonP(unsigned uTruth, int nVars)
int Extra_BitMatrixIsDisjoint(Extra_BitMat_t *p1, Extra_BitMat_t *p2)
int Extra_BitMatrixIsClique(Extra_BitMat_t *p)
void Extra_BitMatrixStop(Extra_BitMat_t *p)
int Extra_FileIsType(char *pFileName, char *pS1, char *pS2, char *pS3)
double Extra_Power2(int Num)
int Extra_BitMatrixLookup1(Extra_BitMat_t *p, int i, int k)
int Extra_FileReaderGetFileSize(Extra_FileReader_t *p)
int Extra_TruthSupport(unsigned *pTruth, int nVars)
void Extra_FileReaderFree(Extra_FileReader_t *p)
unsigned ** Extra_TruthPerm53()
int Extra_Base2LogDouble(double Num)
ABC_NAMESPACE_HEADER_START typedef unsigned char uint8
Definition extra.h:71
void Extra_FileNameCorrectPath(char *FileName)
void Extra_Truth4VarN(unsigned short **puCanons, char ***puPhases, char **ppCounters, int nPhasesMax)
word Sdm_ManReadDsdTruth(Sdm_Man_t *p, int iDsd)
int Extra_MmFixedReadMemUsage(Extra_MmFixed_t *p)
void Extra_TruthChangePhase(unsigned *pTruth, int nVars, int iVar)
int Extra_TruthCanonFastN(int nVarsMax, int nVarsReal, unsigned *pt, unsigned **pptRes, char **ppfRes)
struct Extra_MmFlex_t_ Extra_MmFlex_t
Definition extra.h:148
unsigned Extra_TruthCanonN(unsigned uTruth, int nVars)
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36
unsigned long long size
Definition giaNewBdd.h:39
DECLARATIONS ///.
Definition file.h:23
Definition mode.h:11