abc-master
Main Page
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
extraBdd.h
Go to the documentation of this file.
1
/**CFile****************************************************************
2
3
FileName [extraBdd.h]
4
5
SystemName [ABC: Logic synthesis and verification system.]
6
7
PackageName [extra]
8
9
Synopsis [Various reusable software utilities.]
10
11
Description [This library contains a number of operators and
12
traversal routines developed to extend the functionality of
13
CUDD v.2.3.x, by Fabio Somenzi (http://vlsi.colorado.edu/~fabio/)
14
To compile your code with the library, #include "extra.h"
15
in your source files and link your project to CUDD and this
16
library. Use the library at your own risk and with caution.
17
Note that debugging of some operators still continues.]
18
19
Author [Alan Mishchenko]
20
21
Affiliation [UC Berkeley]
22
23
Date [Ver. 1.0. Started - June 20, 2005.]
24
25
Revision [$Id: extraBdd.h,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
26
27
***********************************************************************/
28
29
#ifndef ABC__misc__extra__extra_bdd_h
30
#define ABC__misc__extra__extra_bdd_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
#include "
bdd/cudd/cuddInt.h
"
48
#include "
misc/extra/extra.h
"
49
50
51
ABC_NAMESPACE_HEADER_START
52
53
54
/*---------------------------------------------------------------------------*/
55
/* Constant declarations */
56
/*---------------------------------------------------------------------------*/
57
58
/*---------------------------------------------------------------------------*/
59
/* Stucture declarations */
60
/*---------------------------------------------------------------------------*/
61
62
/*---------------------------------------------------------------------------*/
63
/* Type declarations */
64
/*---------------------------------------------------------------------------*/
65
66
/*---------------------------------------------------------------------------*/
67
/* Variable declarations */
68
/*---------------------------------------------------------------------------*/
69
70
/*---------------------------------------------------------------------------*/
71
/* Macro declarations */
72
/*---------------------------------------------------------------------------*/
73
74
/* constants of the manager */
75
#define b0 Cudd_Not((dd)->one)
76
#define b1 (dd)->one
77
#define z0 (dd)->zero
78
#define z1 (dd)->one
79
#define a0 (dd)->zero
80
#define a1 (dd)->one
81
82
// hash key macros
83
#define hashKey1(a,TSIZE) \
84
((ABC_PTRUINT_T)(a) % TSIZE)
85
86
#define hashKey2(a,b,TSIZE) \
87
(((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b) * DD_P1) % TSIZE)
88
89
#define hashKey3(a,b,c,TSIZE) \
90
(((((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b)) * DD_P1 + (ABC_PTRUINT_T)(c)) * DD_P2 ) % TSIZE)
91
92
#define hashKey4(a,b,c,d,TSIZE) \
93
((((((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b)) * DD_P1 + (ABC_PTRUINT_T)(c)) * DD_P2 + \
94
(ABC_PTRUINT_T)(d)) * DD_P3) % TSIZE)
95
96
#define hashKey5(a,b,c,d,e,TSIZE) \
97
(((((((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b)) * DD_P1 + (ABC_PTRUINT_T)(c)) * DD_P2 + \
98
(ABC_PTRUINT_T)(d)) * DD_P3 + (ABC_PTRUINT_T)(e)) * DD_P1) % TSIZE)
99
100
/*===========================================================================*/
101
/* Various Utilities */
102
/*===========================================================================*/
103
104
/*=== extraBddAuto.c ========================================================*/
105
106
extern
DdNode
*
Extra_bddSpaceFromFunctionFast
(
DdManager
* dd,
DdNode
* bFunc );
107
extern
DdNode
*
Extra_bddSpaceFromFunction
(
DdManager
* dd,
DdNode
* bF,
DdNode
* bG );
108
extern
DdNode
*
extraBddSpaceFromFunction
(
DdManager
* dd,
DdNode
* bF,
DdNode
* bG );
109
extern
DdNode
*
Extra_bddSpaceFromFunctionPos
(
DdManager
* dd,
DdNode
* bFunc );
110
extern
DdNode
*
extraBddSpaceFromFunctionPos
(
DdManager
* dd,
DdNode
* bFunc );
111
extern
DdNode
*
Extra_bddSpaceFromFunctionNeg
(
DdManager
* dd,
DdNode
* bFunc );
112
extern
DdNode
*
extraBddSpaceFromFunctionNeg
(
DdManager
* dd,
DdNode
* bFunc );
113
114
extern
DdNode
*
Extra_bddSpaceCanonVars
(
DdManager
* dd,
DdNode
* bSpace );
115
extern
DdNode
*
extraBddSpaceCanonVars
(
DdManager
* dd,
DdNode
* bSpace );
116
117
extern
DdNode
*
Extra_bddSpaceEquations
(
DdManager
* dd,
DdNode
* bSpace );
118
extern
DdNode
*
Extra_bddSpaceEquationsNeg
(
DdManager
* dd,
DdNode
* bSpace );
119
extern
DdNode
*
extraBddSpaceEquationsNeg
(
DdManager
* dd,
DdNode
* bSpace );
120
extern
DdNode
*
Extra_bddSpaceEquationsPos
(
DdManager
* dd,
DdNode
* bSpace );
121
extern
DdNode
*
extraBddSpaceEquationsPos
(
DdManager
* dd,
DdNode
* bSpace );
122
123
extern
DdNode
*
Extra_bddSpaceFromMatrixPos
(
DdManager
* dd,
DdNode
* zA );
124
extern
DdNode
*
extraBddSpaceFromMatrixPos
(
DdManager
* dd,
DdNode
* zA );
125
extern
DdNode
*
Extra_bddSpaceFromMatrixNeg
(
DdManager
* dd,
DdNode
* zA );
126
extern
DdNode
*
extraBddSpaceFromMatrixNeg
(
DdManager
* dd,
DdNode
* zA );
127
128
extern
DdNode
*
Extra_bddSpaceReduce
(
DdManager
* dd,
DdNode
* bFunc,
DdNode
* bCanonVars );
129
extern
DdNode
**
Extra_bddSpaceExorGates
(
DdManager
* dd,
DdNode
* bFuncRed,
DdNode
* zEquations );
130
131
/*=== extraBddCas.c =============================================================*/
132
133
/* performs the binary encoding of the set of function using the given vars */
134
extern
DdNode
*
Extra_bddEncodingBinary
(
DdManager
* dd,
DdNode
** pbFuncs,
int
nFuncs,
DdNode
** pbVars,
int
nVars );
135
/* solves the column encoding problem using a sophisticated method */
136
extern
DdNode
*
Extra_bddEncodingNonStrict
(
DdManager
* dd,
DdNode
** pbColumns,
int
nColumns,
DdNode
* bVarsCol,
DdNode
** pCVars,
int
nMulti,
int
* pSimple );
137
/* collects the nodes under the cut and, for each node, computes the sum of paths leading to it from the root */
138
extern
st__table
*
Extra_bddNodePathsUnderCut
(
DdManager
* dd,
DdNode
* bFunc,
int
CutLevel );
139
/* collects the nodes under the cut starting from the given set of ADD nodes */
140
extern
int
Extra_bddNodePathsUnderCutArray
(
DdManager
* dd,
DdNode
** paNodes,
DdNode
** pbCubes,
int
nNodes,
DdNode
** paNodesRes,
DdNode
** pbCubesRes,
int
CutLevel );
141
/* find the profile of a DD (the number of edges crossing each level) */
142
extern
int
Extra_ProfileWidth
(
DdManager
* dd,
DdNode
* F,
int
* Profile,
int
CutLevel );
143
144
/*=== extraBddImage.c ================================================================*/
145
146
typedef
struct
Extra_ImageTree_t_
Extra_ImageTree_t
;
147
extern
Extra_ImageTree_t
*
Extra_bddImageStart
(
148
DdManager
* dd,
DdNode
* bCare,
149
int
nParts,
DdNode
** pbParts,
150
int
nVars,
DdNode
** pbVars,
int
fVerbose
);
151
extern
DdNode
*
Extra_bddImageCompute
(
Extra_ImageTree_t
* pTree,
DdNode
* bCare );
152
extern
void
Extra_bddImageTreeDelete
(
Extra_ImageTree_t
* pTree );
153
extern
DdNode
*
Extra_bddImageRead
(
Extra_ImageTree_t
* pTree );
154
155
typedef
struct
Extra_ImageTree2_t_
Extra_ImageTree2_t
;
156
extern
Extra_ImageTree2_t
*
Extra_bddImageStart2
(
157
DdManager
*
dd
,
DdNode
* bCare,
158
int
nParts,
DdNode
** pbParts,
159
int
nVars,
DdNode
** pbVars,
int
fVerbose );
160
extern
DdNode
*
Extra_bddImageCompute2
(
Extra_ImageTree2_t
* pTree,
DdNode
* bCare );
161
extern
void
Extra_bddImageTreeDelete2
(
Extra_ImageTree2_t
* pTree );
162
extern
DdNode
*
Extra_bddImageRead2
(
Extra_ImageTree2_t
* pTree );
163
164
/*=== extraBddMisc.c ========================================================*/
165
166
extern
DdNode
*
Extra_TransferPermute
(
DdManager
* ddSource,
DdManager
* ddDestination,
DdNode
* f,
int
* Permute );
167
extern
DdNode
*
Extra_TransferLevelByLevel
(
DdManager
* ddSource,
DdManager
* ddDestination,
DdNode
* f );
168
extern
DdNode
*
Extra_bddRemapUp
(
DdManager
*
dd
,
DdNode
* bF );
169
extern
DdNode
*
Extra_bddMove
(
DdManager
*
dd
,
DdNode
* bF,
int
nVars );
170
extern
DdNode
*
extraBddMove
(
DdManager
*
dd
,
DdNode
* bF,
DdNode
* bFlag );
171
extern
void
Extra_StopManager
(
DdManager
*
dd
);
172
extern
void
Extra_bddPrint
(
DdManager
*
dd
,
DdNode
* F );
173
extern
void
Extra_bddPrintSupport
(
DdManager
*
dd
,
DdNode
* F );
174
extern
void
extraDecomposeCover
(
DdManager
*
dd
,
DdNode
* zC,
DdNode
** zC0,
DdNode
** zC1,
DdNode
** zC2 );
175
extern
int
Extra_bddSuppSize
(
DdManager
*
dd
,
DdNode
* bSupp );
176
extern
int
Extra_bddSuppContainVar
(
DdManager
*
dd
,
DdNode
* bS,
DdNode
* bVar );
177
extern
int
Extra_bddSuppOverlapping
(
DdManager
*
dd
,
DdNode
* S1,
DdNode
* S2 );
178
extern
int
Extra_bddSuppDifferentVars
(
DdManager
*
dd
,
DdNode
* S1,
DdNode
* S2,
int
DiffMax );
179
extern
int
Extra_bddSuppCheckContainment
(
DdManager
*
dd
,
DdNode
* bL,
DdNode
* bH,
DdNode
** bLarge,
DdNode
** bSmall );
180
extern
int
*
Extra_SupportArray
(
DdManager
*
dd
,
DdNode
* F,
int
* support );
181
extern
int
*
Extra_VectorSupportArray
(
DdManager
*
dd
,
DdNode
** F,
int
n,
int
* support );
182
extern
DdNode
*
Extra_bddFindOneCube
(
DdManager
*
dd
,
DdNode
* bF );
183
extern
DdNode
*
Extra_bddGetOneCube
(
DdManager
*
dd
,
DdNode
* bFunc );
184
extern
DdNode
*
Extra_bddComputeRangeCube
(
DdManager
*
dd
,
int
iStart,
int
iStop );
185
extern
DdNode
*
Extra_bddBitsToCube
(
DdManager
*
dd
,
int
Code
,
int
CodeWidth,
DdNode
** pbVars,
int
fMsbFirst );
186
extern
DdNode
*
Extra_bddSupportNegativeCube
(
DdManager
*
dd
,
DdNode
* f );
187
extern
int
Extra_bddIsVar
(
DdNode
* bFunc );
188
extern
DdNode
*
Extra_bddCreateAnd
(
DdManager
*
dd
,
int
nVars );
189
extern
DdNode
*
Extra_bddCreateOr
(
DdManager
*
dd
,
int
nVars );
190
extern
DdNode
*
Extra_bddCreateExor
(
DdManager
*
dd
,
int
nVars );
191
extern
DdNode
*
Extra_zddPrimes
(
DdManager
*
dd
,
DdNode
* F );
192
extern
void
Extra_bddPermuteArray
(
DdManager
*
dd
,
DdNode
** bNodesIn,
DdNode
** bNodesOut,
int
nNodes,
int
*permut );
193
extern
DdNode
*
Extra_bddComputeCube
(
DdManager
*
dd
,
DdNode
** bXVars,
int
nVars );
194
extern
DdNode
*
Extra_bddChangePolarity
(
DdManager
*
dd
,
DdNode
* bFunc,
DdNode
* bVars );
195
extern
DdNode
*
extraBddChangePolarity
(
DdManager
*
dd
,
DdNode
* bFunc,
DdNode
* bVars );
196
extern
int
Extra_bddVarIsInCube
(
DdNode
*
bCube
,
int
iVar );
197
extern
DdNode
*
Extra_bddAndPermute
(
DdManager
* ddF,
DdNode
* bF,
DdManager
* ddG,
DdNode
* bG,
int
* pPermute );
198
199
#ifndef ABC_PRB
200
#define ABC_PRB(dd,f) printf("%s = ", #f); Extra_bddPrint(dd,f); printf("\n")
201
#endif
202
203
/*=== extraBddKmap.c ================================================================*/
204
205
/* displays the Karnaugh Map of a function */
206
extern
void
Extra_PrintKMap
( FILE * pFile,
DdManager
*
dd
,
DdNode
* OnSet,
DdNode
* OffSet,
int
nVars,
DdNode
** XVars,
int
fSuppType,
char
** pVarNames );
207
/* displays the Karnaugh Map of a relation */
208
extern
void
Extra_PrintKMapRelation
( FILE * pFile,
DdManager
*
dd
,
DdNode
* OnSet,
DdNode
* OffSet,
int
nXVars,
int
nYVars,
DdNode
** XVars,
DdNode
** YVars );
209
210
/*=== extraBddSymm.c =================================================================*/
211
212
typedef
struct
Extra_SymmInfo_t_
Extra_SymmInfo_t
;
213
struct
Extra_SymmInfo_t_
{
214
int
nVars
;
// the number of variables in the support
215
int
nVarsMax
;
// the number of variables in the DD manager
216
int
nSymms
;
// the number of pair-wise symmetries
217
int
nNodes
;
// the number of nodes in a ZDD (if applicable)
218
int
*
pVars
;
// the list of all variables present in the support
219
char
**
pSymms
;
// the symmetry information
220
};
221
222
/* computes the classical symmetry information for the function - recursive */
223
extern
Extra_SymmInfo_t
*
Extra_SymmPairsCompute
(
DdManager
* dd,
DdNode
* bFunc );
224
/* computes the classical symmetry information for the function - using naive approach */
225
extern
Extra_SymmInfo_t
*
Extra_SymmPairsComputeNaive
(
DdManager
* dd,
DdNode
* bFunc );
226
extern
int
Extra_bddCheckVarsSymmetricNaive
(
DdManager
* dd,
DdNode
* bF,
int
iVar1,
int
iVar2 );
227
228
/* allocates the data structure */
229
extern
Extra_SymmInfo_t
*
Extra_SymmPairsAllocate
(
int
nVars );
230
/* deallocates the data structure */
231
extern
void
Extra_SymmPairsDissolve
(
Extra_SymmInfo_t
* );
232
/* print the contents the data structure */
233
extern
void
Extra_SymmPairsPrint
(
Extra_SymmInfo_t
* );
234
/* converts the ZDD into the Extra_SymmInfo_t structure */
235
extern
Extra_SymmInfo_t
*
Extra_SymmPairsCreateFromZdd
(
DdManager
* dd,
DdNode
* zPairs,
DdNode
* bVars );
236
237
/* computes the classical symmetry information as a ZDD */
238
extern
DdNode
*
Extra_zddSymmPairsCompute
(
DdManager
* dd,
DdNode
* bF,
DdNode
* bVars );
239
extern
DdNode
*
extraZddSymmPairsCompute
(
DdManager
* dd,
DdNode
* bF,
DdNode
* bVars );
240
/* returns a singleton-set ZDD containing all variables that are symmetric with the given one */
241
extern
DdNode
*
Extra_zddGetSymmetricVars
(
DdManager
* dd,
DdNode
* bF,
DdNode
* bG,
DdNode
* bVars );
242
extern
DdNode
*
extraZddGetSymmetricVars
(
DdManager
* dd,
DdNode
* bF,
DdNode
* bG,
DdNode
* bVars );
243
/* converts a set of variables into a set of singleton subsets */
244
extern
DdNode
*
Extra_zddGetSingletons
(
DdManager
* dd,
DdNode
* bVars );
245
extern
DdNode
*
extraZddGetSingletons
(
DdManager
* dd,
DdNode
* bVars );
246
/* filters the set of variables using the support of the function */
247
extern
DdNode
*
Extra_bddReduceVarSet
(
DdManager
* dd,
DdNode
* bVars,
DdNode
* bF );
248
extern
DdNode
*
extraBddReduceVarSet
(
DdManager
* dd,
DdNode
* bVars,
DdNode
* bF );
249
250
/* checks the possibility that the two vars are symmetric */
251
extern
int
Extra_bddCheckVarsSymmetric
(
DdManager
* dd,
DdNode
* bF,
int
iVar1,
int
iVar2 );
252
extern
DdNode
*
extraBddCheckVarsSymmetric
(
DdManager
* dd,
DdNode
* bF,
DdNode
* bVars );
253
254
/* build the set of all tuples of K variables out of N from the BDD cube */
255
extern
DdNode
*
Extra_zddTuplesFromBdd
(
DdManager
* dd,
int
K,
DdNode
* bVarsN );
256
extern
DdNode
*
extraZddTuplesFromBdd
(
DdManager
* dd,
DdNode
* bVarsK,
DdNode
* bVarsN );
257
/* selects one subset from a ZDD representing the set of subsets */
258
extern
DdNode
*
Extra_zddSelectOneSubset
(
DdManager
* dd,
DdNode
* zS );
259
extern
DdNode
*
extraZddSelectOneSubset
(
DdManager
* dd,
DdNode
* zS );
260
261
/*=== extraBddUnate.c =================================================================*/
262
263
extern
DdNode
*
Extra_bddAndTime
(
DdManager
* dd,
DdNode
* f,
DdNode
* g,
int
TimeOut );
264
extern
DdNode
*
Extra_bddAndAbstractTime
(
DdManager
* manager,
DdNode
* f,
DdNode
* g,
DdNode
* cube,
int
TimeOut );
265
extern
DdNode
*
Extra_TransferPermuteTime
(
DdManager
* ddSource,
DdManager
* ddDestination,
DdNode
* f,
int
* Permute,
int
TimeOut );
266
267
/*=== extraBddUnate.c =================================================================*/
268
269
typedef
struct
Extra_UnateVar_t_
Extra_UnateVar_t
;
270
struct
Extra_UnateVar_t_
{
271
unsigned
iVar
: 30;
// index of the variable
272
unsigned
Pos
: 1;
// 1 if positive unate
273
unsigned
Neg
: 1;
// 1 if negative unate
274
};
275
276
typedef
struct
Extra_UnateInfo_t_
Extra_UnateInfo_t
;
277
struct
Extra_UnateInfo_t_
{
278
int
nVars
;
// the number of variables in the support
279
int
nVarsMax
;
// the number of variables in the DD manager
280
int
nUnate
;
// the number of unate variables
281
Extra_UnateVar_t
*
pVars
;
// the array of variables present in the support
282
};
283
284
/* allocates the data structure */
285
extern
Extra_UnateInfo_t
*
Extra_UnateInfoAllocate
(
int
nVars );
286
/* deallocates the data structure */
287
extern
void
Extra_UnateInfoDissolve
(
Extra_UnateInfo_t
* );
288
/* print the contents the data structure */
289
extern
void
Extra_UnateInfoPrint
(
Extra_UnateInfo_t
* );
290
/* converts the ZDD into the Extra_SymmInfo_t structure */
291
extern
Extra_UnateInfo_t
*
Extra_UnateInfoCreateFromZdd
(
DdManager
* dd,
DdNode
* zUnate,
DdNode
* bVars );
292
/* naive check of unateness of one variable */
293
extern
int
Extra_bddCheckUnateNaive
(
DdManager
* dd,
DdNode
* bF,
int
iVar );
294
295
/* computes the unateness information for the function */
296
extern
Extra_UnateInfo_t
*
Extra_UnateComputeFast
(
DdManager
* dd,
DdNode
* bFunc );
297
extern
Extra_UnateInfo_t
*
Extra_UnateComputeSlow
(
DdManager
* dd,
DdNode
* bFunc );
298
299
/* computes the classical symmetry information as a ZDD */
300
extern
DdNode
*
Extra_zddUnateInfoCompute
(
DdManager
* dd,
DdNode
* bF,
DdNode
* bVars );
301
extern
DdNode
*
extraZddUnateInfoCompute
(
DdManager
* dd,
DdNode
* bF,
DdNode
* bVars );
302
303
/* converts a set of variables into a set of singleton subsets */
304
extern
DdNode
*
Extra_zddGetSingletonsBoth
(
DdManager
* dd,
DdNode
* bVars );
305
extern
DdNode
*
extraZddGetSingletonsBoth
(
DdManager
* dd,
DdNode
* bVars );
306
307
/**AutomaticEnd***************************************************************/
308
309
310
311
ABC_NAMESPACE_HEADER_END
312
313
314
315
#endif
/* __EXTRA_H__ */
Extra_SymmInfo_t_::nNodes
int nNodes
Definition:
extraBdd.h:217
Extra_bddSpaceFromFunction
DdNode * Extra_bddSpaceFromFunction(DdManager *dd, DdNode *bF, DdNode *bG)
Definition:
extraBddAuto.c:253
Extra_bddSuppContainVar
int Extra_bddSuppContainVar(DdManager *dd, DdNode *bS, DdNode *bVar)
Definition:
extraBddMisc.c:346
Extra_SymmInfo_t_::pSymms
char ** pSymms
Definition:
extraBdd.h:219
Extra_bddSuppSize
int Extra_bddSuppSize(DdManager *dd, DdNode *bSupp)
Definition:
extraBddMisc.c:321
Extra_bddVarIsInCube
int Extra_bddVarIsInCube(DdNode *bCube, int iVar)
Definition:
extraBddMisc.c:1056
Extra_SymmInfo_t_::nSymms
int nSymms
Definition:
extraBdd.h:216
Extra_ImageTree_t_::fVerbose
int fVerbose
Definition:
extraBddImage.c:48
DdNode
Definition:
cudd.h:278
Extra_bddSupportNegativeCube
DdNode * Extra_bddSupportNegativeCube(DdManager *dd, DdNode *f)
Definition:
extraBddMisc.c:764
extraBddSpaceFromMatrixPos
DdNode * extraBddSpaceFromMatrixPos(DdManager *dd, DdNode *zA)
Definition:
extraBddAuto.c:1333
extraBddChangePolarity
DdNode * extraBddChangePolarity(DdManager *dd, DdNode *bFunc, DdNode *bVars)
Definition:
extraBddMisc.c:1772
Extra_UnateInfoCreateFromZdd
Extra_UnateInfo_t * Extra_UnateInfoCreateFromZdd(DdManager *dd, DdNode *zUnate, DdNode *bVars)
Definition:
extraBddUnate.c:227
Extra_UnateInfo_t_
Definition:
extraBdd.h:277
Extra_bddPermuteArray
void Extra_bddPermuteArray(DdManager *dd, DdNode **bNodesIn, DdNode **bNodesOut, int nNodes, int *permut)
Definition:
extraBddMisc.c:961
Extra_SymmPairsComputeNaive
Extra_SymmInfo_t * Extra_SymmPairsComputeNaive(DdManager *dd, DdNode *bFunc)
Definition:
extraBddSymm.c:396
Extra_bddSpaceFromMatrixNeg
DdNode * Extra_bddSpaceFromMatrixNeg(DdManager *dd, DdNode *zA)
Definition:
extraBddAuto.c:452
cuddInt.h
Pos
ush Pos
Definition:
deflate.h:88
Extra_bddSpaceFromMatrixPos
DdNode * Extra_bddSpaceFromMatrixPos(DdManager *dd, DdNode *zA)
Definition:
extraBddAuto.c:431
Extra_ImageTree_t_
Definition:
extraBddImage.c:43
Extra_bddPrintSupport
void Extra_bddPrintSupport(DdManager *dd, DdNode *F)
Definition:
extraBddMisc.c:302
Extra_bddEncodingNonStrict
DdNode * Extra_bddEncodingNonStrict(DdManager *dd, DdNode **pbColumns, int nColumns, DdNode *bVarsCol, DdNode **pCVars, int nMulti, int *pSimple)
Definition:
extraBddCas.c:184
Extra_TransferPermute
DdNode * Extra_TransferPermute(DdManager *ddSource, DdManager *ddDestination, DdNode *f, int *Permute)
Definition:
extraBddMisc.c:87
Extra_bddComputeCube
DdNode * Extra_bddComputeCube(DdManager *dd, DdNode **bXVars, int nVars)
Definition:
extraBddMisc.c:1001
extraZddGetSymmetricVars
DdNode * extraZddGetSymmetricVars(DdManager *dd, DdNode *bF, DdNode *bG, DdNode *bVars)
Definition:
extraBddSymm.c:804
Extra_ImageTree2_t_::bCube
DdNode * bCube
Definition:
extraBddImage.c:1051
DdManager
Definition:
cuddInt.h:342
Extra_bddImageTreeDelete2
void Extra_bddImageTreeDelete2(Extra_ImageTree2_t *pTree)
Definition:
extraBddImage.c:1128
Extra_bddSuppDifferentVars
int Extra_bddSuppDifferentVars(DdManager *dd, DdNode *S1, DdNode *S2, int DiffMax)
Definition:
extraBddMisc.c:393
extraBddReduceVarSet
DdNode * extraBddReduceVarSet(DdManager *dd, DdNode *bVars, DdNode *bF)
Definition:
extraBddSymm.c:1062
Extra_PrintKMapRelation
void Extra_PrintKMapRelation(FILE *pFile, DdManager *dd, DdNode *OnSet, DdNode *OffSet, int nXVars, int nYVars, DdNode **XVars, DdNode **YVars)
Definition:
extraBddKmap.c:581
extraBddSpaceFromFunctionPos
DdNode * extraBddSpaceFromFunctionPos(DdManager *dd, DdNode *bFunc)
Definition:
extraBddAuto.c:738
Extra_TransferPermuteTime
DdNode * Extra_TransferPermuteTime(DdManager *ddSource, DdManager *ddDestination, DdNode *f, int *Permute, int TimeOut)
Definition:
extraBddTime.c:150
Extra_UnateInfo_t_::nUnate
int nUnate
Definition:
extraBdd.h:280
Extra_UnateVar_t_::iVar
unsigned iVar
Definition:
extraBdd.h:271
Extra_bddImageTreeDelete
void Extra_bddImageTreeDelete(Extra_ImageTree_t *pTree)
Definition:
extraBddImage.c:273
Extra_zddGetSingletonsBoth
DdNode * Extra_zddGetSingletonsBoth(DdManager *dd, DdNode *bVars)
Definition:
extraBddUnate.c:131
Extra_bddSpaceFromFunctionNeg
DdNode * Extra_bddSpaceFromFunctionNeg(DdManager *dd, DdNode *bFunc)
Definition:
extraBddAuto.c:295
Extra_StopManager
void Extra_StopManager(DdManager *dd)
Definition:
extraBddMisc.c:223
Extra_VectorSupportArray
int * Extra_VectorSupportArray(DdManager *dd, DdNode **F, int n, int *support)
Definition:
extraBddMisc.c:572
Extra_UnateInfo_t_::nVars
int nVars
Definition:
extraBdd.h:278
Extra_bddSpaceReduce
DdNode * Extra_bddSpaceReduce(DdManager *dd, DdNode *bFunc, DdNode *bCanonVars)
Definition:
extraBddAuto.c:337
Extra_UnateInfoPrint
void Extra_UnateInfoPrint(Extra_UnateInfo_t *)
Definition:
extraBddUnate.c:195
Extra_SymmPairsCompute
Extra_SymmInfo_t * Extra_SymmPairsCompute(DdManager *dd, DdNode *bFunc)
Definition:
extraBddSymm.c:73
Extra_SymmInfo_t_
Definition:
extraBdd.h:213
Extra_bddSpaceCanonVars
DdNode * Extra_bddSpaceCanonVars(DdManager *dd, DdNode *bSpace)
Definition:
extraBddAuto.c:316
extraBddCheckVarsSymmetric
DdNode * extraBddCheckVarsSymmetric(DdManager *dd, DdNode *bF, DdNode *bVars)
Definition:
extraBddSymm.c:1169
Extra_SymmPairsCreateFromZdd
Extra_SymmInfo_t * Extra_SymmPairsCreateFromZdd(DdManager *dd, DdNode *zPairs, DdNode *bVars)
Definition:
extraBddSymm.c:288
Extra_zddPrimes
DdNode * Extra_zddPrimes(DdManager *dd, DdNode *F)
Definition:
extraBddMisc.c:933
Extra_PrintKMap
void Extra_PrintKMap(FILE *pFile, DdManager *dd, DdNode *OnSet, DdNode *OffSet, int nVars, DdNode **XVars, int fSuppType, char **pVarNames)
Definition:
extraBddKmap.c:201
Extra_bddCreateOr
DdNode * Extra_bddCreateOr(DdManager *dd, int nVars)
Definition:
extraBddMisc.c:883
Extra_bddImageStart
Extra_ImageTree_t * Extra_bddImageStart(DdManager *dd, DdNode *bCare, int nParts, DdNode **pbParts, int nVars, DdNode **pbVars, int fVerbose)
Definition:
extraBddImage.c:156
Extra_bddSpaceEquations
DdNode * Extra_bddSpaceEquations(DdManager *dd, DdNode *bSpace)
Definition:
extraBddAuto.c:361
extra.h
extraDecomposeCover
void extraDecomposeCover(DdManager *dd, DdNode *zC, DdNode **zC0, DdNode **zC1, DdNode **zC2)
Definition:
extraBddMisc.c:1217
Extra_bddAndTime
DdNode * Extra_bddAndTime(DdManager *dd, DdNode *f, DdNode *g, int TimeOut)
Definition:
extraBddTime.c:83
Extra_bddImageRead
DdNode * Extra_bddImageRead(Extra_ImageTree_t *pTree)
Definition:
extraBddImage.c:292
Extra_bddReduceVarSet
DdNode * Extra_bddReduceVarSet(DdManager *dd, DdNode *bVars, DdNode *bF)
Definition:
extraBddSymm.c:181
Extra_UnateComputeSlow
Extra_UnateInfo_t * Extra_UnateComputeSlow(DdManager *dd, DdNode *bFunc)
Definition:
extraBddUnate.c:293
Extra_ImageTree2_t_
Definition:
extraBddImage.c:1047
extraBddSpaceEquationsPos
DdNode * extraBddSpaceEquationsPos(DdManager *dd, DdNode *bSpace)
Definition:
extraBddAuto.c:1071
Extra_TransferLevelByLevel
DdNode * Extra_TransferLevelByLevel(DdManager *ddSource, DdManager *ddDestination, DdNode *f)
Definition:
extraBddMisc.c:112
extraBddMove
DdNode * extraBddMove(DdManager *dd, DdNode *bF, DdNode *bFlag)
Definition:
extraBddMisc.c:1128
Extra_UnateVar_t_
Definition:
extraBdd.h:270
Extra_bddCheckUnateNaive
int Extra_bddCheckUnateNaive(DdManager *dd, DdNode *bF, int iVar)
Definition:
extraBddUnate.c:338
Extra_bddComputeRangeCube
DdNode * Extra_bddComputeRangeCube(DdManager *dd, int iStart, int iStop)
Definition:
extraBddMisc.c:699
Code
#define Code
Definition:
deflate.h:76
st__table
Definition:
st.h:52
Extra_zddSelectOneSubset
DdNode * Extra_zddSelectOneSubset(DdManager *dd, DdNode *zS)
Definition:
extraBddSymm.c:546
Extra_bddMove
DdNode * Extra_bddMove(DdManager *dd, DdNode *bF, int nVars)
Definition:
extraBddMisc.c:187
Extra_bddImageRead2
DdNode * Extra_bddImageRead2(Extra_ImageTree2_t *pTree)
Definition:
extraBddImage.c:1150
Extra_bddIsVar
int Extra_bddIsVar(DdNode *bFunc)
Definition:
extraBddMisc.c:839
Extra_SupportArray
int * Extra_SupportArray(DdManager *dd, DdNode *F, int *support)
Definition:
extraBddMisc.c:537
Extra_bddImageCompute
DdNode * Extra_bddImageCompute(Extra_ImageTree_t *pTree, DdNode *bCare)
Definition:
extraBddImage.c:220
Extra_bddGetOneCube
DdNode * Extra_bddGetOneCube(DdManager *dd, DdNode *bFunc)
Definition:
extraBddMisc.c:645
Extra_bddPrint
void Extra_bddPrint(DdManager *dd, DdNode *F)
Definition:
extraBddMisc.c:246
Extra_SymmPairsAllocate
Extra_SymmInfo_t * Extra_SymmPairsAllocate(int nVars)
Definition:
extraBddSymm.c:207
Extra_zddUnateInfoCompute
DdNode * Extra_zddUnateInfoCompute(DdManager *dd, DdNode *bF, DdNode *bVars)
Definition:
extraBddUnate.c:105
Extra_bddNodePathsUnderCut
st__table * Extra_bddNodePathsUnderCut(DdManager *dd, DdNode *bFunc, int CutLevel)
Definition:
extraBddCas.c:263
Extra_bddSpaceExorGates
DdNode ** Extra_bddSpaceExorGates(DdManager *dd, DdNode *bFuncRed, DdNode *zEquations)
Definition:
extraBddAuto.c:497
Extra_bddEncodingBinary
DdNode * Extra_bddEncodingBinary(DdManager *dd, DdNode **pbFuncs, int nFuncs, DdNode **pbVars, int nVars)
Definition:
extraBddCas.c:138
Extra_bddSuppCheckContainment
int Extra_bddSuppCheckContainment(DdManager *dd, DdNode *bL, DdNode *bH, DdNode **bLarge, DdNode **bSmall)
Definition:
extraBddMisc.c:443
Extra_SymmInfo_t_::pVars
int * pVars
Definition:
extraBdd.h:218
Extra_bddSuppOverlapping
int Extra_bddSuppOverlapping(DdManager *dd, DdNode *S1, DdNode *S2)
Definition:
extraBddMisc.c:365
Extra_bddAndPermute
DdNode * Extra_bddAndPermute(DdManager *ddF, DdNode *bF, DdManager *ddG, DdNode *bG, int *pPermute)
Definition:
extraBddMisc.c:1090
extraZddUnateInfoCompute
DdNode * extraZddUnateInfoCompute(DdManager *dd, DdNode *bF, DdNode *bVars)
Definition:
extraBddUnate.c:385
Extra_UnateComputeFast
Extra_UnateInfo_t * Extra_UnateComputeFast(DdManager *dd, DdNode *bFunc)
Definition:
extraBddUnate.c:73
ABC_NAMESPACE_HEADER_START
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Definition:
abc_global.h:105
extraBddSpaceFromMatrixNeg
DdNode * extraBddSpaceFromMatrixNeg(DdManager *dd, DdNode *zA)
Definition:
extraBddAuto.c:1451
Extra_bddRemapUp
DdNode * Extra_bddRemapUp(DdManager *dd, DdNode *bF)
Definition:
extraBddMisc.c:145
Extra_bddCheckVarsSymmetricNaive
int Extra_bddCheckVarsSymmetricNaive(DdManager *dd, DdNode *bF, int iVar1, int iVar2)
Definition:
extraBddSymm.c:443
Extra_zddSymmPairsCompute
DdNode * Extra_zddSymmPairsCompute(DdManager *dd, DdNode *bF, DdNode *bVars)
Definition:
extraBddSymm.c:105
Extra_UnateInfo_t_::nVarsMax
int nVarsMax
Definition:
extraBdd.h:279
Extra_bddCreateExor
DdNode * Extra_bddCreateExor(DdManager *dd, int nVars)
Definition:
extraBddMisc.c:908
Extra_bddSpaceEquationsPos
DdNode * Extra_bddSpaceEquationsPos(DdManager *dd, DdNode *bSpace)
Definition:
extraBddAuto.c:387
extraZddTuplesFromBdd
DdNode * extraZddTuplesFromBdd(DdManager *dd, DdNode *bVarsK, DdNode *bVarsN)
Definition:
extraBddSymm.c:1341
Extra_bddSpaceFromFunctionPos
DdNode * Extra_bddSpaceFromFunctionPos(DdManager *dd, DdNode *bFunc)
Definition:
extraBddAuto.c:274
ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_END
Definition:
abc_global.h:106
extraZddSymmPairsCompute
DdNode * extraZddSymmPairsCompute(DdManager *dd, DdNode *bF, DdNode *bVars)
Definition:
extraBddSymm.c:580
Extra_bddFindOneCube
DdNode * Extra_bddFindOneCube(DdManager *dd, DdNode *bF)
Definition:
extraBddMisc.c:605
extraBddSpaceFromFunction
DdNode * extraBddSpaceFromFunction(DdManager *dd, DdNode *bF, DdNode *bG)
Definition:
extraBddAuto.c:562
Extra_SymmPairsPrint
void Extra_SymmPairsPrint(Extra_SymmInfo_t *)
Definition:
extraBddSymm.c:257
Extra_ImageTree2_t_::dd
DdManager * dd
Definition:
extraBddImage.c:1049
Extra_bddNodePathsUnderCutArray
int Extra_bddNodePathsUnderCutArray(DdManager *dd, DdNode **paNodes, DdNode **pbCubes, int nNodes, DdNode **paNodesRes, DdNode **pbCubesRes, int CutLevel)
Definition:
extraBddCas.c:355
Extra_zddGetSymmetricVars
DdNode * Extra_zddGetSymmetricVars(DdManager *dd, DdNode *bF, DdNode *bG, DdNode *bVars)
Definition:
extraBddSymm.c:130
Extra_UnateVar_t_::Neg
unsigned Neg
Definition:
extraBdd.h:273
Extra_SymmPairsDissolve
void Extra_SymmPairsDissolve(Extra_SymmInfo_t *)
Definition:
extraBddSymm.c:238
Extra_UnateInfoAllocate
Extra_UnateInfo_t * Extra_UnateInfoAllocate(int nVars)
Definition:
extraBddUnate.c:155
Extra_zddGetSingletons
DdNode * Extra_zddGetSingletons(DdManager *dd, DdNode *bVars)
Definition:
extraBddSymm.c:157
Extra_ProfileWidth
int Extra_ProfileWidth(DdManager *dd, DdNode *F, int *Profile, int CutLevel)
Definition:
extraBddCas.c:519
Extra_bddCreateAnd
DdNode * Extra_bddCreateAnd(DdManager *dd, int nVars)
Definition:
extraBddMisc.c:858
Extra_bddAndAbstractTime
DdNode * Extra_bddAndAbstractTime(DdManager *manager, DdNode *f, DdNode *g, DdNode *cube, int TimeOut)
Definition:
extraBddTime.c:117
Extra_SymmInfo_t_::nVarsMax
int nVarsMax
Definition:
extraBdd.h:215
Extra_zddTuplesFromBdd
DdNode * Extra_zddTuplesFromBdd(DdManager *dd, int K, DdNode *bVarsN)
Definition:
extraBddSymm.c:488
Extra_SymmInfo_t_::nVars
int nVars
Definition:
extraBdd.h:214
Extra_UnateInfo_t_::pVars
Extra_UnateVar_t * pVars
Definition:
extraBdd.h:281
st.h
Extra_bddBitsToCube
DdNode * Extra_bddBitsToCube(DdManager *dd, int Code, int CodeWidth, DdNode **pbVars, int fMsbFirst)
Definition:
extraBddMisc.c:730
Extra_bddCheckVarsSymmetric
int Extra_bddCheckVarsSymmetric(DdManager *dd, DdNode *bF, int iVar1, int iVar2)
Definition:
extraBddSymm.c:360
Extra_bddSpaceFromFunctionFast
DdNode * Extra_bddSpaceFromFunctionFast(DdManager *dd, DdNode *bFunc)
Definition:
extraBddAuto.c:153
extraZddGetSingletonsBoth
DdNode * extraZddGetSingletonsBoth(DdManager *dd, DdNode *bVars)
Definition:
extraBddUnate.c:570
extraZddSelectOneSubset
DdNode * extraZddSelectOneSubset(DdManager *dd, DdNode *zS)
Definition:
extraBddSymm.c:1419
Extra_UnateInfoDissolve
void Extra_UnateInfoDissolve(Extra_UnateInfo_t *)
Definition:
extraBddUnate.c:178
extraBddSpaceFromFunctionNeg
DdNode * extraBddSpaceFromFunctionNeg(DdManager *dd, DdNode *bFunc)
Definition:
extraBddAuto.c:869
extraZddGetSingletons
DdNode * extraZddGetSingletons(DdManager *dd, DdNode *bVars)
Definition:
extraBddSymm.c:1001
Extra_bddImageCompute2
DdNode * Extra_bddImageCompute2(Extra_ImageTree2_t *pTree, DdNode *bCare)
Definition:
extraBddImage.c:1108
Extra_bddChangePolarity
DdNode * Extra_bddChangePolarity(DdManager *dd, DdNode *bFunc, DdNode *bVars)
Definition:
extraBddMisc.c:1029
extraBddSpaceEquationsNeg
DdNode * extraBddSpaceEquationsNeg(DdManager *dd, DdNode *bSpace)
Definition:
extraBddAuto.c:1201
Extra_bddImageStart2
Extra_ImageTree2_t * Extra_bddImageStart2(DdManager *dd, DdNode *bCare, int nParts, DdNode **pbParts, int nVars, DdNode **pbVars, int fVerbose)
Definition:
extraBddImage.c:1066
Extra_bddSpaceEquationsNeg
DdNode * Extra_bddSpaceEquationsNeg(DdManager *dd, DdNode *bSpace)
Definition:
extraBddAuto.c:409
extraBddSpaceCanonVars
DdNode * extraBddSpaceCanonVars(DdManager *dd, DdNode *bSpace)
Definition:
extraBddAuto.c:1000
src
misc
extra
extraBdd.h
Generated on Thu Dec 18 2014 16:11:53 for abc-master by
1.8.6