1 | The cal package |
---|
2 | |
---|
3 | Header CAL file for exported data structures and functions. |
---|
4 | |
---|
5 | Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) Jagesh V. Sanghavi |
---|
6 | (sanghavi@eecs.berkeley.edu) |
---|
7 | |
---|
8 | ********************************************************************** |
---|
9 | |
---|
10 | Cal_AssociationInit() Creates or finds a variable association. |
---|
11 | |
---|
12 | Cal_AssociationQuit() Deletes the variable association given by id |
---|
13 | |
---|
14 | Cal_AssociationSetCurrent() Sets the current variable association to the |
---|
15 | one given by id and returns the ID of the old |
---|
16 | association. |
---|
17 | |
---|
18 | Cal_BddAnd() Returns the BDD for logical AND of argument |
---|
19 | BDDs |
---|
20 | |
---|
21 | Cal_BddBetween() Returns a minimal BDD whose function contains |
---|
22 | fMin and is contained in fMax. |
---|
23 | |
---|
24 | Cal_BddCofactor() Returns the generalized cofactor of BDD f with |
---|
25 | respect to BDD c. |
---|
26 | |
---|
27 | Cal_BddCompose() composition - substitute a BDD variable by a |
---|
28 | function |
---|
29 | |
---|
30 | Cal_BddDependsOn() Returns 1 if f depends on var and returns 0 |
---|
31 | otherwise. |
---|
32 | |
---|
33 | Cal_BddDumpBdd() Write a BDD to a file |
---|
34 | |
---|
35 | Cal_BddDynamicReordering() Specify dynamic reordering technique. |
---|
36 | |
---|
37 | Cal_BddElse() Returns the negative cofactor of the argument |
---|
38 | BDD with respect to the top variable of the |
---|
39 | BDD. |
---|
40 | |
---|
41 | Cal_BddExists() Returns the result of existentially quantifying |
---|
42 | some variables from the given BDD. |
---|
43 | |
---|
44 | Cal_BddForAll() Returns the result of universally quantifying |
---|
45 | some variables from the given BDD. |
---|
46 | |
---|
47 | Cal_BddFree() Frees the argument BDD. |
---|
48 | |
---|
49 | Cal_BddFunctionPrint() Prints the function implemented by the argument |
---|
50 | BDD |
---|
51 | |
---|
52 | Cal_BddFunctionProfileMultiple() |
---|
53 | Returns a "function profile" for fArray. |
---|
54 | |
---|
55 | Cal_BddFunctionProfile() Returns a "function profile" for f. |
---|
56 | |
---|
57 | Cal_BddGetIfId() Returns the id of the top variable of the |
---|
58 | argument BDD. |
---|
59 | |
---|
60 | Cal_BddGetIfIndex() Returns the index of the top variable of the |
---|
61 | argument BDD. |
---|
62 | |
---|
63 | Cal_BddGetRegular() Returns a BDD with positive from a given BDD |
---|
64 | with arbitrary phase |
---|
65 | |
---|
66 | Cal_BddITE() Returns the BDD for logical If-Then-Else |
---|
67 | Description [Returns the BDD for the logical |
---|
68 | operation IF f THEN g ELSE h - f g + f' h |
---|
69 | |
---|
70 | Cal_BddIdentity() Returns the duplicate BDD of the argument BDD. |
---|
71 | |
---|
72 | Cal_BddIf() Returns the BDD corresponding to the top |
---|
73 | variable of the argument BDD. |
---|
74 | |
---|
75 | Cal_BddImplies() Computes a BDD that implies conjunction of f |
---|
76 | and Cal_BddNot(g) |
---|
77 | |
---|
78 | Cal_BddIntersects() Computes a BDD that implies conjunction of f |
---|
79 | and g. |
---|
80 | |
---|
81 | Cal_BddIsBddConst() Returns 1 if the argument BDD is a constant, 0 |
---|
82 | otherwise. |
---|
83 | |
---|
84 | Cal_BddIsBddNull() Returns 1 if the argument BDD is NULL, 0 |
---|
85 | otherwise. |
---|
86 | |
---|
87 | Cal_BddIsBddOne() Returns 1 if the argument BDD is constant one, |
---|
88 | 0 otherwise. |
---|
89 | |
---|
90 | Cal_BddIsBddZero() Returns 1 if the argument BDD is constant zero, |
---|
91 | 0 otherwise. |
---|
92 | |
---|
93 | Cal_BddIsCube() Returns 1 if the argument BDD is a cube, 0 |
---|
94 | otherwise |
---|
95 | |
---|
96 | Cal_BddIsEqual() Returns 1 if argument BDDs are equal, 0 |
---|
97 | otherwise. |
---|
98 | |
---|
99 | Cal_BddIsProvisional() Returns 1, if the given user BDD contains |
---|
100 | provisional BDD node. |
---|
101 | |
---|
102 | Cal_BddManagerCreateNewVarAfter() |
---|
103 | Creates and returns a new variable after the |
---|
104 | specified one in the variable order. |
---|
105 | |
---|
106 | Cal_BddManagerCreateNewVarBefore() |
---|
107 | Creates and returns a new variable before the |
---|
108 | specified one in the variable order. |
---|
109 | |
---|
110 | Cal_BddManagerCreateNewVarFirst() |
---|
111 | Creates and returns a new variable at the start |
---|
112 | of the variable order. |
---|
113 | |
---|
114 | Cal_BddManagerCreateNewVarLast() |
---|
115 | Creates and returns a new variable at the end |
---|
116 | of the variable order. |
---|
117 | |
---|
118 | Cal_BddManagerGC() Invokes the garbage collection at the manager |
---|
119 | level. |
---|
120 | |
---|
121 | Cal_BddManagerGetHooks() Returns the hooks field of the manager. |
---|
122 | |
---|
123 | Cal_BddManagerGetNumNodes() Returns the number of BDD nodes |
---|
124 | |
---|
125 | Cal_BddManagerGetVarWithId() Returns the variable with the specified id, |
---|
126 | null if no such variable exists |
---|
127 | |
---|
128 | Cal_BddManagerGetVarWithIndex() |
---|
129 | Returns the variable with the specified index, |
---|
130 | null if no such variable exists |
---|
131 | |
---|
132 | Cal_BddManagerInit() Creates and initializes a new BDD manager. |
---|
133 | |
---|
134 | Cal_BddManagerQuit() Frees the BDD manager and all the associated |
---|
135 | allocations |
---|
136 | |
---|
137 | Cal_BddManagerSetGCLimit() Sets the limit of the garbage collection. |
---|
138 | |
---|
139 | Cal_BddManagerSetHooks() Sets the hooks field of the manager. |
---|
140 | |
---|
141 | Cal_BddManagerSetParameters() Sets appropriate fields of BDD Manager. |
---|
142 | |
---|
143 | Cal_BddMultiwayAnd() Returns the BDD for logical AND of argument |
---|
144 | BDDs |
---|
145 | |
---|
146 | Cal_BddMultiwayOr() Returns the BDD for logical OR of argument BDDs |
---|
147 | |
---|
148 | Cal_BddMultiwayXor() Returns the BDD for logical XOR of argument |
---|
149 | BDDs |
---|
150 | |
---|
151 | Cal_BddNand() Returns the BDD for logical NAND of argument |
---|
152 | BDDs |
---|
153 | |
---|
154 | Cal_BddNewVarBlock() Creates and returns a variable block used for |
---|
155 | controlling dynamic reordering. |
---|
156 | |
---|
157 | Cal_BddNodeLimit() Sets the node limit to new_limit and returns |
---|
158 | the old limit. |
---|
159 | |
---|
160 | Cal_BddNor() Returns the BDD for logical NOR of argument |
---|
161 | BDDs |
---|
162 | |
---|
163 | Cal_BddNot() Returns the complement of the argument BDD. |
---|
164 | |
---|
165 | Cal_BddOne() Returns the BDD for the constant one |
---|
166 | |
---|
167 | Cal_BddOr() Returns the BDD for logical OR of argument BDDs |
---|
168 | |
---|
169 | Cal_BddOverflow() Returns 1 if the node limit has been exceeded, |
---|
170 | 0 otherwise. The overflow flag is cleared. |
---|
171 | |
---|
172 | Cal_BddPairwiseAnd() Returns an array of BDDs obtained by logical |
---|
173 | AND of BDD pairs specified by an BDD array in |
---|
174 | which a BDD at an even location is paired with |
---|
175 | a BDD at an odd location of the array |
---|
176 | |
---|
177 | Cal_BddPairwiseOr() Returns an array of BDDs obtained by logical OR |
---|
178 | of BDD pairs specified by an BDD array in |
---|
179 | which a BDD at an even location is paired with |
---|
180 | a BDD at an odd location of the array |
---|
181 | |
---|
182 | Cal_BddPairwiseXor() Returns an array of BDDs obtained by logical |
---|
183 | XOR of BDD pairs specified by an BDD array in |
---|
184 | which a BDD at an even location is paired with |
---|
185 | a BDD at an odd location of the array |
---|
186 | |
---|
187 | Cal_BddPrintBdd() Prints a BDD in the human readable form. |
---|
188 | |
---|
189 | Cal_BddPrintFunctionProfileMultiple() |
---|
190 | Cal_BddPrintFunctionProfileMultiple is like |
---|
191 | Cal_BddPrintFunctionProfile except for multiple |
---|
192 | BDDs |
---|
193 | |
---|
194 | Cal_BddPrintFunctionProfile() Cal_BddPrintFunctionProfile is like |
---|
195 | Cal_BddPrintProfile except it |
---|
196 | displays a function profile for f |
---|
197 | |
---|
198 | Cal_BddPrintProfileMultiple() Cal_BddPrintProfileMultiple is like |
---|
199 | Cal_BddPrintProfile except it |
---|
200 | displays the profile for a set of BDDs |
---|
201 | |
---|
202 | Cal_BddPrintProfile() Displays the node profile for f on fp. |
---|
203 | lineLength specifies the |
---|
204 | maximum line length. varNamingFn is as in |
---|
205 | Cal_BddPrintBdd. |
---|
206 | |
---|
207 | Cal_BddProfileMultiple() |
---|
208 | |
---|
209 | Cal_BddProfile() Returns a "node profile" of f, i.e., the number |
---|
210 | of nodes at each level in f. |
---|
211 | |
---|
212 | Cal_BddReduce() Returns a BDD which agrees with f for all |
---|
213 | valuations which satisfy c. |
---|
214 | |
---|
215 | Cal_BddRelProd() Returns the result of taking the logical AND of |
---|
216 | the argument BDDs and existentially |
---|
217 | quantifying some variables from the product. |
---|
218 | |
---|
219 | Cal_BddReorder() Invoke the current dynamic reodering method. |
---|
220 | |
---|
221 | Cal_BddSatisfySupport() Returns a special cube contained in f. |
---|
222 | |
---|
223 | Cal_BddSatisfyingFraction() Returns the fraction of valuations which make f |
---|
224 | true. (Note that this fraction is independent |
---|
225 | of whatever set of variables f is supposed to |
---|
226 | be a function of) |
---|
227 | |
---|
228 | Cal_BddSatisfy() Returns a BDD which implies f, true for |
---|
229 | some valuation on which f is true, and which |
---|
230 | has at most one node at each |
---|
231 | level |
---|
232 | |
---|
233 | Cal_BddSetGCMode() Sets the garbage collection mode, 0 means the |
---|
234 | garbage collection should be turned off, 1 |
---|
235 | means garbage collection should be on. |
---|
236 | |
---|
237 | Cal_BddSizeMultiple() The routine is like Cal_BddSize, but takes a |
---|
238 | null-terminated array of BDDs |
---|
239 | and accounts for sharing of nodes. |
---|
240 | |
---|
241 | Cal_BddSize() Returns the number of nodes in f when negout is |
---|
242 | nonzero. If negout is zero, we pretend that |
---|
243 | the BDDs don't have negative-output pointers. |
---|
244 | |
---|
245 | Cal_BddStats() Prints miscellaneous BDD statistics |
---|
246 | |
---|
247 | Cal_BddSubstitute() Substitute a set of variables by functions |
---|
248 | |
---|
249 | Cal_BddSupport() returns the support of f as a null-terminated |
---|
250 | array of variables |
---|
251 | |
---|
252 | Cal_BddSwapVars() Return a function obtained by swapping two |
---|
253 | variables |
---|
254 | |
---|
255 | Cal_BddThen() Returns the positive cofactor of the argument |
---|
256 | BDD with respect to the top variable of the |
---|
257 | BDD. |
---|
258 | |
---|
259 | Cal_BddTotalSize() Returns the number of nodes in the Unique table |
---|
260 | |
---|
261 | Cal_BddType() Returns type of a BDD ( 0, 1, +var, -var, |
---|
262 | ovrflow, nonterminal) |
---|
263 | |
---|
264 | Cal_BddUnFree() Unfrees the argument BDD. |
---|
265 | |
---|
266 | Cal_BddUndumpBdd() Reads a BDD from a file |
---|
267 | |
---|
268 | Cal_BddVarBlockReorderable() Sets the reoderability of a particular block. |
---|
269 | |
---|
270 | Cal_BddVarSubstitute() Substitute a set of variables by set of another |
---|
271 | variables. |
---|
272 | |
---|
273 | Cal_BddVars() Returns the number of BDD variables |
---|
274 | |
---|
275 | Cal_BddXnor() Returns the BDD for logical exclusive NOR of |
---|
276 | argument BDDs |
---|
277 | |
---|
278 | Cal_BddXor() Returns the BDD for logical exclusive OR of |
---|
279 | argument BDDs |
---|
280 | |
---|
281 | Cal_BddZero() Returns the BDD for the constant zero |
---|
282 | |
---|
283 | Cal_MemAllocation() Returns the memory allocated. |
---|
284 | |
---|
285 | Cal_MemFatal() Prints an error message and exits. |
---|
286 | |
---|
287 | Cal_MemFreeBlock() Frees the block. |
---|
288 | |
---|
289 | Cal_MemFreeRecMgr() Frees all the storage associated with the |
---|
290 | specified record manager. |
---|
291 | |
---|
292 | Cal_MemFreeRec() Frees a record managed by the indicated record |
---|
293 | manager. |
---|
294 | |
---|
295 | Cal_MemGetBlock() Allocates a new block of the specified size. |
---|
296 | |
---|
297 | Cal_MemNewRecMgr() Creates a new record manager with the given |
---|
298 | record size. |
---|
299 | |
---|
300 | Cal_MemNewRec() Allocates a record from the specified record |
---|
301 | manager. |
---|
302 | |
---|
303 | Cal_MemResizeBlock() Expands or contracts the block to a new size. |
---|
304 | We try to avoid moving the block if possible. |
---|
305 | |
---|
306 | Cal_PerformanceTest() Main routine for testing performances of |
---|
307 | various routines. |
---|
308 | |
---|
309 | Cal_PipelineCreateProvisionalBdd() |
---|
310 | Create a provisional BDD in the pipeline. |
---|
311 | |
---|
312 | Cal_PipelineExecute() Executes a pipeline. |
---|
313 | |
---|
314 | Cal_PipelineInit() Initialize a BDD pipeline. |
---|
315 | |
---|
316 | Cal_PipelineQuit() Resets the pipeline freeing all resources. |
---|
317 | |
---|
318 | Cal_PipelineSetDepth() Set depth of a BDD pipeline. |
---|
319 | |
---|
320 | Cal_PipelineUpdateProvisionalBdd() |
---|
321 | Update a provisional Bdd obtained during |
---|
322 | pipelining. |
---|
323 | |
---|
324 | Cal_TempAssociationAugment() Adds to the temporary variable association. |
---|
325 | |
---|
326 | Cal_TempAssociationInit() Sets the temporary variable association. |
---|
327 | |
---|
328 | Cal_TempAssociationQuit() Cleans up temporary association |
---|
329 | |
---|
330 | ********************************************************************** |
---|
331 | |
---|
332 | |
---|
333 | |
---|
334 | int |
---|
335 | Cal_AssociationInit( |
---|
336 | Cal_BddManager bddManager, |
---|
337 | Cal_Bdd * associationInfoU |
---|
338 | int pairs |
---|
339 | ) |
---|
340 | Creates or finds a variable association. The association is specified by |
---|
341 | associationInfo, which is a an array of BDD with Cal_BddNull(bddManager) as |
---|
342 | the end marker. If pairs is 0, the array is assumed to be an array of |
---|
343 | variables. In this case, each variable is paired with constant BDD one. Such |
---|
344 | an association may viewed as specifying a set of variables for use with |
---|
345 | routines such as Cal_BddExists. If pair is not 0, then the even numbered |
---|
346 | array elements should be variables and the odd numbered elements should be |
---|
347 | the BDDs which they are mapped to. In both cases, the return value is an |
---|
348 | integer identifier for this association. If the given association is |
---|
349 | equivalent to one which already exists, the same identifier is used for |
---|
350 | both, and the reference count of the association is increased by one. |
---|
351 | |
---|
352 | Side Effects: None |
---|
353 | |
---|
354 | void |
---|
355 | Cal_AssociationQuit( |
---|
356 | Cal_BddManager bddManager, |
---|
357 | int associationId |
---|
358 | ) |
---|
359 | Decrements the reference count of the variable association with identifier |
---|
360 | id, and frees it if the reference count becomes zero. |
---|
361 | |
---|
362 | Side Effects: None |
---|
363 | |
---|
364 | int |
---|
365 | Cal_AssociationSetCurrent( |
---|
366 | Cal_BddManager bddManager, |
---|
367 | int associationId |
---|
368 | ) |
---|
369 | Sets the current variable association to the one given by id and returns the |
---|
370 | ID of the old association. An id of -1 indicates the temporary association |
---|
371 | |
---|
372 | Side Effects: None |
---|
373 | |
---|
374 | Cal_Bdd |
---|
375 | Cal_BddAnd( |
---|
376 | Cal_BddManager bddManager, |
---|
377 | Cal_Bdd fUserBdd, |
---|
378 | Cal_Bdd gUserBdd |
---|
379 | ) |
---|
380 | Returns the BDD for logical AND of f and g |
---|
381 | |
---|
382 | Side Effects: None |
---|
383 | |
---|
384 | Cal_Bdd |
---|
385 | Cal_BddBetween( |
---|
386 | Cal_BddManager bddManager, |
---|
387 | Cal_Bdd fMinUserBdd, |
---|
388 | Cal_Bdd fMaxUserBdd |
---|
389 | ) |
---|
390 | Returns a minimal BDD f which is contains fMin and is contained in fMax ( |
---|
391 | fMin <= f <= fMax). This operation is typically used in state space searches |
---|
392 | to simplify the representation for the set of states wich will be expanded |
---|
393 | at each step (Rk Rk-1' <= f <= Rk). |
---|
394 | |
---|
395 | Side Effects: None |
---|
396 | |
---|
397 | Cal_Bdd |
---|
398 | Cal_BddCofactor( |
---|
399 | Cal_BddManager bddManager, |
---|
400 | Cal_Bdd fUserBdd, |
---|
401 | Cal_Bdd cUserBdd |
---|
402 | ) |
---|
403 | Returns the generalized cofactor of BDD f with respect to BDD c. The |
---|
404 | constrain operator given by Coudert et al (ICCAD90) is used to find the |
---|
405 | generalized cofactor. |
---|
406 | |
---|
407 | Side Effects: None. |
---|
408 | |
---|
409 | Cal_Bdd |
---|
410 | Cal_BddCompose( |
---|
411 | Cal_BddManager bddManager, |
---|
412 | Cal_Bdd fUserBdd, |
---|
413 | Cal_Bdd gUserBdd, |
---|
414 | Cal_Bdd hUserBdd |
---|
415 | ) |
---|
416 | Returns the BDD obtained by substituting a variable by a function |
---|
417 | |
---|
418 | Side Effects: None |
---|
419 | |
---|
420 | int |
---|
421 | Cal_BddDependsOn( |
---|
422 | Cal_BddManager bddManager, |
---|
423 | Cal_Bdd fUserBdd, |
---|
424 | Cal_Bdd varUserBdd |
---|
425 | ) |
---|
426 | Returns 1 if f depends on var and returns 0 otherwise. |
---|
427 | |
---|
428 | Side Effects: None |
---|
429 | |
---|
430 | int |
---|
431 | Cal_BddDumpBdd( |
---|
432 | Cal_BddManager bddManager, |
---|
433 | Cal_Bdd fUserBdd, |
---|
434 | Cal_Bdd * userVars, |
---|
435 | FILE * fp |
---|
436 | ) |
---|
437 | Writes an encoded description of the BDD to the file given by fp. The |
---|
438 | argument vars should be a null-terminated array of variables that include |
---|
439 | the support of f . These variables need not be in order of increasing index. |
---|
440 | The function returns a nonzero value if f was written to the file |
---|
441 | successfully. |
---|
442 | |
---|
443 | Side Effects: required |
---|
444 | |
---|
445 | void |
---|
446 | Cal_BddDynamicReordering( |
---|
447 | Cal_BddManager bddManager, |
---|
448 | int technique |
---|
449 | ) |
---|
450 | Selects the method for dynamic reordering. |
---|
451 | |
---|
452 | Side Effects: None |
---|
453 | |
---|
454 | Cal_Bdd |
---|
455 | Cal_BddElse( |
---|
456 | Cal_BddManager bddManager, |
---|
457 | Cal_Bdd userBdd |
---|
458 | ) |
---|
459 | Returns the negative cofactor of the argument BDD with respect to the top |
---|
460 | variable of the BDD. |
---|
461 | |
---|
462 | Side Effects: The reference count of the returned BDD is increased by 1. |
---|
463 | |
---|
464 | Cal_Bdd |
---|
465 | Cal_BddExists( |
---|
466 | Cal_BddManager bddManager, |
---|
467 | Cal_Bdd fUserBdd |
---|
468 | ) |
---|
469 | Returns the BDD for f with all the variables that are paired with something |
---|
470 | in the current variable association existentially quantified out. |
---|
471 | |
---|
472 | Side Effects: None. |
---|
473 | |
---|
474 | Cal_Bdd |
---|
475 | Cal_BddForAll( |
---|
476 | Cal_BddManager bddManager, |
---|
477 | Cal_Bdd fUserBdd |
---|
478 | ) |
---|
479 | Returns the BDD for f with all the variables that are paired with something |
---|
480 | in the current variable association universally quantified out. |
---|
481 | |
---|
482 | Side Effects: None. |
---|
483 | |
---|
484 | void |
---|
485 | Cal_BddFree( |
---|
486 | Cal_BddManager bddManager, |
---|
487 | Cal_Bdd userBdd |
---|
488 | ) |
---|
489 | Frees the argument BDD. It is an error to free a BDD more than once. |
---|
490 | |
---|
491 | Side Effects: The reference count of the argument BDD is decreased by 1. |
---|
492 | |
---|
493 | void |
---|
494 | Cal_BddFunctionPrint( |
---|
495 | Cal_BddManager bddManager, |
---|
496 | Cal_Bdd userBdd, |
---|
497 | char * name |
---|
498 | ) |
---|
499 | Prints the function implemented by the argument BDD |
---|
500 | |
---|
501 | Side Effects: None |
---|
502 | |
---|
503 | void |
---|
504 | Cal_BddFunctionProfileMultiple( |
---|
505 | Cal_BddManager bddManager, |
---|
506 | Cal_Bdd * fUserBddArray, |
---|
507 | long * funcCounts |
---|
508 | ) |
---|
509 | optional |
---|
510 | |
---|
511 | Side Effects: None |
---|
512 | |
---|
513 | void |
---|
514 | Cal_BddFunctionProfile( |
---|
515 | Cal_BddManager bddManager, |
---|
516 | Cal_Bdd fUserBdd, |
---|
517 | long * funcCounts |
---|
518 | ) |
---|
519 | The nth entry of the function profile array is the number of subfunctions of |
---|
520 | f which may be obtained by restricting the variables whose index is less |
---|
521 | than n. An entry of zero indicates that f is independent of the variable |
---|
522 | with the corresponding index. |
---|
523 | |
---|
524 | |
---|
525 | Cal_BddId_t |
---|
526 | Cal_BddGetIfId( |
---|
527 | Cal_BddManager bddManager, |
---|
528 | Cal_Bdd userBdd |
---|
529 | ) |
---|
530 | Returns the id of the top variable of the argument BDD. |
---|
531 | |
---|
532 | Side Effects: None |
---|
533 | |
---|
534 | Cal_BddId_t |
---|
535 | Cal_BddGetIfIndex( |
---|
536 | Cal_BddManager bddManager, |
---|
537 | Cal_Bdd userBdd |
---|
538 | ) |
---|
539 | Returns the index of the top variable of the argument BDD. |
---|
540 | |
---|
541 | Side Effects: None |
---|
542 | |
---|
543 | Cal_Bdd |
---|
544 | Cal_BddGetRegular( |
---|
545 | Cal_BddManager bddManager, |
---|
546 | Cal_Bdd userBdd |
---|
547 | ) |
---|
548 | Returns a BDD with positive from a given BDD with arbitrary phase |
---|
549 | |
---|
550 | Side Effects: None. |
---|
551 | |
---|
552 | Cal_Bdd |
---|
553 | Cal_BddITE( |
---|
554 | Cal_BddManager bddManager, |
---|
555 | Cal_Bdd fUserBdd, |
---|
556 | Cal_Bdd gUserBdd, |
---|
557 | Cal_Bdd hUserBdd |
---|
558 | ) |
---|
559 | Returns the BDD for logical If-Then-Else Description [Returns the BDD for |
---|
560 | the logical operation IF f THEN g ELSE h - f g + f' h |
---|
561 | |
---|
562 | Side Effects: None |
---|
563 | |
---|
564 | Cal_Bdd |
---|
565 | Cal_BddIdentity( |
---|
566 | Cal_BddManager bddManager, |
---|
567 | Cal_Bdd userBdd |
---|
568 | ) |
---|
569 | Returns the duplicate BDD of the argument BDD. |
---|
570 | |
---|
571 | Side Effects: The reference count of the BDD is increased by 1. |
---|
572 | |
---|
573 | Cal_Bdd |
---|
574 | Cal_BddIf( |
---|
575 | Cal_BddManager bddManager, |
---|
576 | Cal_Bdd userBdd |
---|
577 | ) |
---|
578 | Returns the BDD corresponding to the top variable of the argument BDD. |
---|
579 | |
---|
580 | Side Effects: None. |
---|
581 | |
---|
582 | Cal_Bdd |
---|
583 | Cal_BddImplies( |
---|
584 | Cal_BddManager bddManager, |
---|
585 | Cal_Bdd fUserBdd, |
---|
586 | Cal_Bdd gUserBdd |
---|
587 | ) |
---|
588 | Computes a BDD that implies conjunction of f and Cal_BddNot(g) |
---|
589 | |
---|
590 | Side Effects: none |
---|
591 | |
---|
592 | Cal_Bdd |
---|
593 | Cal_BddIntersects( |
---|
594 | Cal_BddManager bddManager, |
---|
595 | Cal_Bdd fUserBdd, |
---|
596 | Cal_Bdd gUserBdd |
---|
597 | ) |
---|
598 | Computes a BDD that implies conjunction of f and g. |
---|
599 | |
---|
600 | Side Effects: None |
---|
601 | |
---|
602 | int |
---|
603 | Cal_BddIsBddConst( |
---|
604 | Cal_BddManager bddManager, |
---|
605 | Cal_Bdd userBdd |
---|
606 | ) |
---|
607 | Returns 1 if the argument BDD is either constant one or constant zero, |
---|
608 | otherwise returns 0. |
---|
609 | |
---|
610 | Side Effects: None. |
---|
611 | |
---|
612 | int |
---|
613 | Cal_BddIsBddNull( |
---|
614 | Cal_BddManager bddManager, |
---|
615 | Cal_Bdd userBdd |
---|
616 | ) |
---|
617 | Returns 1 if the argument BDD is NULL, 0 otherwise. |
---|
618 | |
---|
619 | Side Effects: None. |
---|
620 | |
---|
621 | int |
---|
622 | Cal_BddIsBddOne( |
---|
623 | Cal_BddManager bddManager, |
---|
624 | Cal_Bdd userBdd |
---|
625 | ) |
---|
626 | Returns 1 if the argument BDD is constant one, 0 otherwise. |
---|
627 | |
---|
628 | Side Effects: None. |
---|
629 | |
---|
630 | int |
---|
631 | Cal_BddIsBddZero( |
---|
632 | Cal_BddManager bddManager, |
---|
633 | Cal_Bdd userBdd |
---|
634 | ) |
---|
635 | Returns 1 if the argument BDD is constant zero, 0 otherwise. |
---|
636 | |
---|
637 | Side Effects: None. |
---|
638 | |
---|
639 | int |
---|
640 | Cal_BddIsCube( |
---|
641 | Cal_BddManager bddManager, |
---|
642 | Cal_Bdd fUserBdd |
---|
643 | ) |
---|
644 | Returns 1 if the argument BDD is a cube, 0 otherwise |
---|
645 | |
---|
646 | Side Effects: None |
---|
647 | |
---|
648 | int |
---|
649 | Cal_BddIsEqual( |
---|
650 | Cal_BddManager bddManager, |
---|
651 | Cal_Bdd userBdd1, |
---|
652 | Cal_Bdd userBdd2 |
---|
653 | ) |
---|
654 | Returns 1 if argument BDDs are equal, 0 otherwise. |
---|
655 | |
---|
656 | Side Effects: None. |
---|
657 | |
---|
658 | int |
---|
659 | Cal_BddIsProvisional( |
---|
660 | Cal_BddManager bddManager, |
---|
661 | Cal_Bdd userBdd |
---|
662 | ) |
---|
663 | Returns 1, if the given user BDD contains provisional BDD node. |
---|
664 | |
---|
665 | Side Effects: None. |
---|
666 | |
---|
667 | Cal_Bdd |
---|
668 | Cal_BddManagerCreateNewVarAfter( |
---|
669 | Cal_BddManager bddManager, |
---|
670 | Cal_Bdd userBdd |
---|
671 | ) |
---|
672 | Creates and returns a new variable after the specified one in the variable |
---|
673 | order. |
---|
674 | |
---|
675 | Side Effects: None |
---|
676 | |
---|
677 | Cal_Bdd |
---|
678 | Cal_BddManagerCreateNewVarBefore( |
---|
679 | Cal_BddManager bddManager, |
---|
680 | Cal_Bdd userBdd |
---|
681 | ) |
---|
682 | Creates and returns a new variable before the specified one in the variable |
---|
683 | order. |
---|
684 | |
---|
685 | Side Effects: None |
---|
686 | |
---|
687 | Cal_Bdd |
---|
688 | Cal_BddManagerCreateNewVarFirst( |
---|
689 | Cal_BddManager bddManager |
---|
690 | ) |
---|
691 | Creates and returns a new variable at the start of the variable order. |
---|
692 | |
---|
693 | Side Effects: None |
---|
694 | |
---|
695 | Cal_Bdd |
---|
696 | Cal_BddManagerCreateNewVarLast( |
---|
697 | Cal_BddManager bddManager |
---|
698 | ) |
---|
699 | Creates and returns a new variable at the end of the variable order. |
---|
700 | |
---|
701 | Side Effects: None |
---|
702 | |
---|
703 | int |
---|
704 | Cal_BddManagerGC( |
---|
705 | Cal_BddManager bddManager |
---|
706 | ) |
---|
707 | For each variable in the increasing id free nodes with reference count equal |
---|
708 | to zero freeing a node results in decrementing reference count of then and |
---|
709 | else nodes by one. |
---|
710 | |
---|
711 | Side Effects: None. |
---|
712 | |
---|
713 | void * |
---|
714 | Cal_BddManagerGetHooks( |
---|
715 | Cal_BddManager bddManager |
---|
716 | ) |
---|
717 | Returns the hooks field of the manager. |
---|
718 | |
---|
719 | Side Effects: None |
---|
720 | |
---|
721 | unsigned long |
---|
722 | Cal_BddManagerGetNumNodes( |
---|
723 | Cal_BddManager bddManager |
---|
724 | ) |
---|
725 | Returns the number of BDD nodes |
---|
726 | |
---|
727 | Side Effects: None |
---|
728 | |
---|
729 | Cal_Bdd |
---|
730 | Cal_BddManagerGetVarWithId( |
---|
731 | Cal_BddManager bddManager, |
---|
732 | Cal_BddId_t id |
---|
733 | ) |
---|
734 | Returns the variable with the specified id, null if no such variable exists |
---|
735 | |
---|
736 | Side Effects: None |
---|
737 | |
---|
738 | Cal_Bdd |
---|
739 | Cal_BddManagerGetVarWithIndex( |
---|
740 | Cal_BddManager bddManager, |
---|
741 | Cal_BddIndex_t index |
---|
742 | ) |
---|
743 | Returns the variable with the specified index, null if no such variable |
---|
744 | exists |
---|
745 | |
---|
746 | Side Effects: None |
---|
747 | |
---|
748 | Cal_BddManager |
---|
749 | Cal_BddManagerInit( |
---|
750 | |
---|
751 | ) |
---|
752 | Initializes and allocates fields of the BDD manager. Some of the fields are |
---|
753 | initialized for maxNumVars+1 or numVars+1, whereas some of them are |
---|
754 | initialized for maxNumVars or numVars. The first kind of fields are |
---|
755 | associated with the id of a variable and the second ones are with the index |
---|
756 | of the variable. |
---|
757 | |
---|
758 | Side Effects: None |
---|
759 | |
---|
760 | int |
---|
761 | Cal_BddManagerQuit( |
---|
762 | Cal_BddManager bddManager |
---|
763 | ) |
---|
764 | Frees the BDD manager and all the associated allocations |
---|
765 | |
---|
766 | Side Effects: None |
---|
767 | |
---|
768 | void |
---|
769 | Cal_BddManagerSetGCLimit( |
---|
770 | Cal_BddManager manager |
---|
771 | ) |
---|
772 | It tries to set the limit at twice the number of nodes in the manager at the |
---|
773 | current point. However, the limit is not allowed to fall below the |
---|
774 | MIN_GC_LIMIT or to exceed the value of node limit (if one exists). |
---|
775 | |
---|
776 | Side Effects: None. |
---|
777 | |
---|
778 | void |
---|
779 | Cal_BddManagerSetHooks( |
---|
780 | Cal_BddManager bddManager, |
---|
781 | void * hooks |
---|
782 | ) |
---|
783 | Sets the hooks field of the manager. |
---|
784 | |
---|
785 | Side Effects: Hooks field changes. |
---|
786 | |
---|
787 | void |
---|
788 | Cal_BddManagerSetParameters( |
---|
789 | Cal_BddManager bddManager, |
---|
790 | long reorderingThresh |
---|
791 | long maxForwardedNode |
---|
792 | double repackAfterGCThr |
---|
793 | double tableRepackThres |
---|
794 | ) |
---|
795 | This function is used to set the parameters which are used to control the |
---|
796 | reordering process. "reorderingThreshold" determines the number of nodes |
---|
797 | below which reordering will NOT be invoked, "maxForwardedNodes" determines |
---|
798 | the maximum number of forwarded nodes which are allowed (at that point the |
---|
799 | cleanup must be done), and "repackingThreshold" determines the fraction of |
---|
800 | the page utilized below which repacking has to be invoked. These parameters |
---|
801 | have different affect on the computational and memory usage aspects of |
---|
802 | reordeing. For instance, higher value of "maxForwardedNodes" will result in |
---|
803 | process consuming more memory, and a lower value on the other hand would |
---|
804 | invoke the cleanup process repeatedly resulting in increased computation. |
---|
805 | |
---|
806 | Side Effects: None |
---|
807 | |
---|
808 | Cal_Bdd |
---|
809 | Cal_BddMultiwayAnd( |
---|
810 | Cal_BddManager bddManager, |
---|
811 | Cal_Bdd * userBddArray |
---|
812 | ) |
---|
813 | Returns the BDD for logical AND of set of BDDs in the bddArray |
---|
814 | |
---|
815 | Side Effects: None |
---|
816 | |
---|
817 | Cal_Bdd |
---|
818 | Cal_BddMultiwayOr( |
---|
819 | Cal_BddManager bddManager, |
---|
820 | Cal_Bdd * userBddArray |
---|
821 | ) |
---|
822 | Returns the BDD for logical OR of set of BDDs in the bddArray |
---|
823 | |
---|
824 | Side Effects: None |
---|
825 | |
---|
826 | Cal_Bdd |
---|
827 | Cal_BddMultiwayXor( |
---|
828 | Cal_BddManager bddManager, |
---|
829 | Cal_Bdd * userBddArray |
---|
830 | ) |
---|
831 | Returns the BDD for logical XOR of set of BDDs in the bddArray |
---|
832 | |
---|
833 | Side Effects: None |
---|
834 | |
---|
835 | Cal_Bdd |
---|
836 | Cal_BddNand( |
---|
837 | Cal_BddManager bddManager, |
---|
838 | Cal_Bdd fUserBdd, |
---|
839 | Cal_Bdd gUserBdd |
---|
840 | ) |
---|
841 | Returns the BDD for logical NAND of f and g |
---|
842 | |
---|
843 | Side Effects: None |
---|
844 | |
---|
845 | Cal_Block |
---|
846 | Cal_BddNewVarBlock( |
---|
847 | Cal_BddManager bddManager, |
---|
848 | Cal_Bdd variable, |
---|
849 | long length |
---|
850 | ) |
---|
851 | The block is specified by passing the first variable and the length of the |
---|
852 | block. The "length" number of consecutive variables starting from "variable" |
---|
853 | are put in the block. |
---|
854 | |
---|
855 | Side Effects: A new block is created. |
---|
856 | |
---|
857 | long |
---|
858 | Cal_BddNodeLimit( |
---|
859 | Cal_BddManager bddManager, |
---|
860 | long newLimit |
---|
861 | ) |
---|
862 | Sets the node limit to new_limit and returns the old limit. |
---|
863 | |
---|
864 | Side Effects: Threshold for garbage collection may change |
---|
865 | |
---|
866 | Cal_Bdd |
---|
867 | Cal_BddNor( |
---|
868 | Cal_BddManager bddManager, |
---|
869 | Cal_Bdd fUserBdd, |
---|
870 | Cal_Bdd gUserBdd |
---|
871 | ) |
---|
872 | Returns the BDD for logical NOR of f and g |
---|
873 | |
---|
874 | Side Effects: None |
---|
875 | |
---|
876 | Cal_Bdd |
---|
877 | Cal_BddNot( |
---|
878 | Cal_BddManager bddManager, |
---|
879 | Cal_Bdd userBdd |
---|
880 | ) |
---|
881 | Returns the complement of the argument BDD. |
---|
882 | |
---|
883 | Side Effects: The reference count of the argument BDD is increased by 1. |
---|
884 | |
---|
885 | Cal_Bdd |
---|
886 | Cal_BddOne( |
---|
887 | Cal_BddManager bddManager |
---|
888 | ) |
---|
889 | Returns the BDD for the constant one |
---|
890 | |
---|
891 | Side Effects: None |
---|
892 | |
---|
893 | Cal_Bdd |
---|
894 | Cal_BddOr( |
---|
895 | Cal_BddManager bddManager, |
---|
896 | Cal_Bdd fUserBdd, |
---|
897 | Cal_Bdd gUserBdd |
---|
898 | ) |
---|
899 | Returns the BDD for logical OR of f and g |
---|
900 | |
---|
901 | Side Effects: None |
---|
902 | |
---|
903 | int |
---|
904 | Cal_BddOverflow( |
---|
905 | Cal_BddManager bddManager |
---|
906 | ) |
---|
907 | Returns 1 if the node limit has been exceeded, 0 otherwise. The overflow |
---|
908 | flag is cleared. |
---|
909 | |
---|
910 | Side Effects: None |
---|
911 | |
---|
912 | Cal_Bdd * |
---|
913 | Cal_BddPairwiseAnd( |
---|
914 | Cal_BddManager bddManager, |
---|
915 | Cal_Bdd * userBddArray |
---|
916 | ) |
---|
917 | Returns an array of BDDs obtained by logical AND of BDD pairs specified by |
---|
918 | an BDD array in which a BDD at an even location is paired with a BDD at an |
---|
919 | odd location of the array |
---|
920 | |
---|
921 | Side Effects: None |
---|
922 | |
---|
923 | Cal_Bdd * |
---|
924 | Cal_BddPairwiseOr( |
---|
925 | Cal_BddManager bddManager, |
---|
926 | Cal_Bdd * userBddArray |
---|
927 | ) |
---|
928 | Returns an array of BDDs obtained by logical OR of BDD pairs specified by an |
---|
929 | BDD array in which a BDD at an even location is paired with a BDD at an odd |
---|
930 | location of the array |
---|
931 | |
---|
932 | Side Effects: None |
---|
933 | |
---|
934 | Cal_Bdd * |
---|
935 | Cal_BddPairwiseXor( |
---|
936 | Cal_BddManager bddManager, |
---|
937 | Cal_Bdd * userBddArray |
---|
938 | ) |
---|
939 | Returns an array of BDDs obtained by logical XOR of BDD pairs specified by |
---|
940 | an BDD array in which a BDD at an even location is paired with a BDD at an |
---|
941 | odd location of the array |
---|
942 | |
---|
943 | Side Effects: None |
---|
944 | |
---|
945 | void |
---|
946 | Cal_BddPrintBdd( |
---|
947 | Cal_BddManager bddManager, |
---|
948 | Cal_Bdd fUserBdd, |
---|
949 | Cal_VarNamingFn_t VarNamingFn, |
---|
950 | Cal_TerminalIdFn_ TerminalIdFn, |
---|
951 | Cal_Pointer_t env, |
---|
952 | FILE * fp |
---|
953 | ) |
---|
954 | Prints a human-readable representation of the BDD f to the file given by fp. |
---|
955 | The namingFn should be a pointer to a function taking a bddManager, a BDD |
---|
956 | and the pointer given by env. This function should return either a null |
---|
957 | pointer or a srting that is the name of the supplied variable. If it returns |
---|
958 | a null pointer, a default name is generated based on the index of the |
---|
959 | variable. It is also legal for naminFN to e null; in this case, default |
---|
960 | names are generated for all variables. The macro bddNamingFnNone is a null |
---|
961 | pointer of suitable type. terminalIdFn should be apointer to a function |
---|
962 | taking a bddManager and two longs. plus the pointer given by the env. It |
---|
963 | should return either a null pointer. If it returns a null pointer, or if |
---|
964 | terminalIdFn is null, then default names are generated for the terminals. |
---|
965 | The macro bddTerminalIdFnNone is a null pointer of suitable type. |
---|
966 | |
---|
967 | Side Effects: None. |
---|
968 | |
---|
969 | void |
---|
970 | Cal_BddPrintFunctionProfileMultiple( |
---|
971 | Cal_BddManager bddManager, |
---|
972 | Cal_Bdd * userBdds, |
---|
973 | Cal_VarNamingFn_t varNamingProc, |
---|
974 | char * env, |
---|
975 | int lineLength, |
---|
976 | FILE * fp |
---|
977 | ) |
---|
978 | optional |
---|
979 | |
---|
980 | Side Effects: None |
---|
981 | |
---|
982 | void |
---|
983 | Cal_BddPrintFunctionProfile( |
---|
984 | Cal_BddManager bddManager, |
---|
985 | Cal_Bdd f, |
---|
986 | Cal_VarNamingFn_t varNamingProc, |
---|
987 | char * env, |
---|
988 | int lineLength, |
---|
989 | FILE * fp |
---|
990 | ) |
---|
991 | optional |
---|
992 | |
---|
993 | Side Effects: None |
---|
994 | |
---|
995 | void |
---|
996 | Cal_BddPrintProfileMultiple( |
---|
997 | Cal_BddManager bddManager, |
---|
998 | Cal_Bdd * userBdds, |
---|
999 | Cal_VarNamingFn_t varNamingProc, |
---|
1000 | char * env, |
---|
1001 | int lineLength, |
---|
1002 | FILE * fp |
---|
1003 | ) |
---|
1004 | optional |
---|
1005 | |
---|
1006 | Side Effects: None |
---|
1007 | |
---|
1008 | void |
---|
1009 | Cal_BddPrintProfile( |
---|
1010 | Cal_BddManager bddManager, |
---|
1011 | Cal_Bdd fUserBdd, |
---|
1012 | Cal_VarNamingFn_t varNamingProc, |
---|
1013 | char * env, |
---|
1014 | int lineLength, |
---|
1015 | FILE * fp |
---|
1016 | ) |
---|
1017 | optional |
---|
1018 | |
---|
1019 | Side Effects: None |
---|
1020 | |
---|
1021 | void |
---|
1022 | Cal_BddProfileMultiple( |
---|
1023 | Cal_BddManager bddManager, |
---|
1024 | Cal_Bdd * fUserBddArray, |
---|
1025 | long * levelCounts, |
---|
1026 | int negout |
---|
1027 | ) |
---|
1028 | optional |
---|
1029 | |
---|
1030 | Side Effects: None |
---|
1031 | |
---|
1032 | void |
---|
1033 | Cal_BddProfile( |
---|
1034 | Cal_BddManager bddManager, |
---|
1035 | Cal_Bdd fUserBdd, |
---|
1036 | long * levelCounts, |
---|
1037 | int negout |
---|
1038 | ) |
---|
1039 | negout is as in Cal_BddSize. levelCounts should be an array of size |
---|
1040 | Cal_BddVars(bddManager)+1 to hold the profile. |
---|
1041 | |
---|
1042 | Side Effects: None |
---|
1043 | |
---|
1044 | Cal_Bdd |
---|
1045 | Cal_BddReduce( |
---|
1046 | Cal_BddManager bddManager, |
---|
1047 | Cal_Bdd fUserBdd, |
---|
1048 | Cal_Bdd cUserBdd |
---|
1049 | ) |
---|
1050 | Returns a BDD which agrees with f for all valuations which satisfy c. The |
---|
1051 | result is usually smaller in terms of number of BDD nodes than f. This |
---|
1052 | operation is typically used in state space searches to simplify the |
---|
1053 | representation for the set of states wich will be expanded at each step. |
---|
1054 | |
---|
1055 | Side Effects: None |
---|
1056 | |
---|
1057 | Cal_Bdd |
---|
1058 | Cal_BddRelProd( |
---|
1059 | Cal_BddManager bddManager, |
---|
1060 | Cal_Bdd fUserBdd, |
---|
1061 | Cal_Bdd gUserBdd |
---|
1062 | ) |
---|
1063 | Returns the BDD for the logical AND of f and g with all the variables that |
---|
1064 | are paired with something in the current variable association existentially |
---|
1065 | quantified out. |
---|
1066 | |
---|
1067 | Side Effects: None. |
---|
1068 | |
---|
1069 | void |
---|
1070 | Cal_BddReorder( |
---|
1071 | Cal_BddManager bddManager |
---|
1072 | ) |
---|
1073 | Invoke the current dynamic reodering method. |
---|
1074 | |
---|
1075 | Side Effects: Index of a variable may change due to reodering |
---|
1076 | |
---|
1077 | Cal_Bdd |
---|
1078 | Cal_BddSatisfySupport( |
---|
1079 | Cal_BddManager bddManager, |
---|
1080 | Cal_Bdd fUserBdd |
---|
1081 | ) |
---|
1082 | The returned BDD which implies f, is true for some valuation on which f is |
---|
1083 | true, which has at most one node at each level, and which has exactly one |
---|
1084 | node corresponding to each variable which is associated with something in |
---|
1085 | the current variable association. |
---|
1086 | |
---|
1087 | Side Effects: required |
---|
1088 | |
---|
1089 | double |
---|
1090 | Cal_BddSatisfyingFraction( |
---|
1091 | Cal_BddManager bddManager, |
---|
1092 | Cal_Bdd fUserBdd |
---|
1093 | ) |
---|
1094 | optional |
---|
1095 | |
---|
1096 | Side Effects: required |
---|
1097 | |
---|
1098 | Cal_Bdd |
---|
1099 | Cal_BddSatisfy( |
---|
1100 | Cal_BddManager bddManager, |
---|
1101 | Cal_Bdd fUserBdd |
---|
1102 | ) |
---|
1103 | optional |
---|
1104 | |
---|
1105 | Side Effects: required |
---|
1106 | |
---|
1107 | void |
---|
1108 | Cal_BddSetGCMode( |
---|
1109 | Cal_BddManager bddManager, |
---|
1110 | int gcMode |
---|
1111 | ) |
---|
1112 | Sets the garbage collection mode, 0 means the garbage collection should be |
---|
1113 | turned off, 1 means garbage collection should be on. |
---|
1114 | |
---|
1115 | Side Effects: None. |
---|
1116 | |
---|
1117 | long |
---|
1118 | Cal_BddSizeMultiple( |
---|
1119 | Cal_BddManager bddManager, |
---|
1120 | Cal_Bdd * fUserBddArray, |
---|
1121 | int negout |
---|
1122 | ) |
---|
1123 | optional |
---|
1124 | |
---|
1125 | Side Effects: None |
---|
1126 | |
---|
1127 | long |
---|
1128 | Cal_BddSize( |
---|
1129 | Cal_BddManager bddManager, |
---|
1130 | Cal_Bdd fUserBdd, |
---|
1131 | int negout |
---|
1132 | ) |
---|
1133 | optional |
---|
1134 | |
---|
1135 | Side Effects: None |
---|
1136 | |
---|
1137 | void |
---|
1138 | Cal_BddStats( |
---|
1139 | Cal_BddManager bddManager, |
---|
1140 | FILE * fp |
---|
1141 | ) |
---|
1142 | Prints miscellaneous BDD statistics |
---|
1143 | |
---|
1144 | Side Effects: None |
---|
1145 | |
---|
1146 | Cal_Bdd |
---|
1147 | Cal_BddSubstitute( |
---|
1148 | Cal_BddManager bddManager, |
---|
1149 | Cal_Bdd fUserBdd |
---|
1150 | ) |
---|
1151 | Returns a BDD for f using the substitution defined by current variable |
---|
1152 | association. Each variable is replaced by its associated BDDs. The |
---|
1153 | substitution is effective simultaneously |
---|
1154 | |
---|
1155 | Side Effects: None |
---|
1156 | |
---|
1157 | void |
---|
1158 | Cal_BddSupport( |
---|
1159 | Cal_BddManager bddManager, |
---|
1160 | Cal_Bdd fUserBdd, |
---|
1161 | Cal_Bdd * support |
---|
1162 | ) |
---|
1163 | optional |
---|
1164 | |
---|
1165 | Side Effects: None |
---|
1166 | |
---|
1167 | Cal_Bdd |
---|
1168 | Cal_BddSwapVars( |
---|
1169 | Cal_BddManager bddManager, |
---|
1170 | Cal_Bdd fUserBdd, |
---|
1171 | Cal_Bdd gUserBdd, |
---|
1172 | Cal_Bdd hUserBdd |
---|
1173 | ) |
---|
1174 | Returns the BDD obtained by simultaneously substituting variable g by |
---|
1175 | variable h and variable h and variable g in the BDD f |
---|
1176 | |
---|
1177 | Side Effects: None |
---|
1178 | |
---|
1179 | Cal_Bdd |
---|
1180 | Cal_BddThen( |
---|
1181 | Cal_BddManager bddManager, |
---|
1182 | Cal_Bdd userBdd |
---|
1183 | ) |
---|
1184 | Returns the positive cofactor of the argument BDD with respect to the top |
---|
1185 | variable of the BDD. |
---|
1186 | |
---|
1187 | Side Effects: The reference count of the returned BDD is increased by 1. |
---|
1188 | |
---|
1189 | unsigned long |
---|
1190 | Cal_BddTotalSize( |
---|
1191 | Cal_BddManager bddManager |
---|
1192 | ) |
---|
1193 | Returns the number of nodes in the Unique table |
---|
1194 | |
---|
1195 | Side Effects: None |
---|
1196 | |
---|
1197 | int |
---|
1198 | Cal_BddType( |
---|
1199 | Cal_BddManager bddManager, |
---|
1200 | Cal_Bdd fUserBdd |
---|
1201 | ) |
---|
1202 | Returns BDD_TYPE_ZERO if f is false, BDD_TYPE_ONE if f is true, |
---|
1203 | BDD_TYPE_POSVAR is f is an unnegated variable, BDD_TYPE_NEGVAR if f is a |
---|
1204 | negated variable, BDD_TYPE_OVERFLOW if f is null, and BDD_TYPE_NONTERMINAL |
---|
1205 | otherwise. |
---|
1206 | |
---|
1207 | Side Effects: None |
---|
1208 | |
---|
1209 | void |
---|
1210 | Cal_BddUnFree( |
---|
1211 | Cal_BddManager bddManager, |
---|
1212 | Cal_Bdd userBdd |
---|
1213 | ) |
---|
1214 | Unfrees the argument BDD. It is an error to pass a BDD with reference count |
---|
1215 | of zero to be unfreed. |
---|
1216 | |
---|
1217 | Side Effects: The reference count of the argument BDD is increased by 1. |
---|
1218 | |
---|
1219 | Cal_Bdd |
---|
1220 | Cal_BddUndumpBdd( |
---|
1221 | Cal_BddManager bddManager, |
---|
1222 | Cal_Bdd * userVars, |
---|
1223 | FILE * fp, |
---|
1224 | int * error |
---|
1225 | ) |
---|
1226 | Loads an encoded description of a BDD from the file given by fp. The |
---|
1227 | argument vars should be a null terminated array of variables that will |
---|
1228 | become the support of the BDD. As in Cal_BddDumpBdd, these need not be in |
---|
1229 | the order of increasing index. If the same array of variables in used in |
---|
1230 | dumping and undumping, the BDD returned will be equal to the one that was |
---|
1231 | dumped. More generally, if array v1 is used when dumping, and the array v2 |
---|
1232 | is used when undumping, the BDD returned will be equal to the original BDD |
---|
1233 | with the ith variable in v2 substituted for the ith variable in v1 for all |
---|
1234 | i. Null BDD is returned in the operation fails for reason (node limit |
---|
1235 | reached, I/O error, invalid file format, etc.). In this case, an error code |
---|
1236 | is stored in error. the code will be one of the following. |
---|
1237 | CAL_BDD_UNDUMP_FORMAT Invalid file format CAL_BDD_UNDUMP_OVERFLOW Node limit |
---|
1238 | exceeded CAL_BDD_UNDUMP_IOERROR File I/O error CAL_BDD_UNDUMP_EOF Unexpected |
---|
1239 | EOF |
---|
1240 | |
---|
1241 | Side Effects: required |
---|
1242 | |
---|
1243 | void |
---|
1244 | Cal_BddVarBlockReorderable( |
---|
1245 | Cal_BddManager bddManager, |
---|
1246 | Cal_Block block, |
---|
1247 | int reorderable |
---|
1248 | ) |
---|
1249 | If a block is reorderable, the child blocks are recursively involved in |
---|
1250 | swapping. |
---|
1251 | |
---|
1252 | Side Effects: None. |
---|
1253 | |
---|
1254 | Cal_Bdd |
---|
1255 | Cal_BddVarSubstitute( |
---|
1256 | Cal_BddManager bddManager, |
---|
1257 | Cal_Bdd fUserBdd |
---|
1258 | ) |
---|
1259 | Returns a BDD for f using the substitution defined by current variable |
---|
1260 | association. It is assumed that each variable is replaced by another |
---|
1261 | variable. For the substitution of a variable by a function, use |
---|
1262 | Cal_BddSubstitute instead. |
---|
1263 | |
---|
1264 | Side Effects: None |
---|
1265 | |
---|
1266 | long |
---|
1267 | Cal_BddVars( |
---|
1268 | Cal_BddManager bddManager |
---|
1269 | ) |
---|
1270 | Returns the number of BDD variables |
---|
1271 | |
---|
1272 | Side Effects: None |
---|
1273 | |
---|
1274 | Cal_Bdd |
---|
1275 | Cal_BddXnor( |
---|
1276 | Cal_BddManager bddManager, |
---|
1277 | Cal_Bdd fUserBdd, |
---|
1278 | Cal_Bdd gUserBdd |
---|
1279 | ) |
---|
1280 | Returns the BDD for logical exclusive NOR of f and g |
---|
1281 | |
---|
1282 | Side Effects: None |
---|
1283 | |
---|
1284 | Cal_Bdd |
---|
1285 | Cal_BddXor( |
---|
1286 | Cal_BddManager bddManager, |
---|
1287 | Cal_Bdd fUserBdd, |
---|
1288 | Cal_Bdd gUserBdd |
---|
1289 | ) |
---|
1290 | Returns the BDD for logical exclusive OR of f and g |
---|
1291 | |
---|
1292 | Side Effects: None |
---|
1293 | |
---|
1294 | Cal_Bdd |
---|
1295 | Cal_BddZero( |
---|
1296 | Cal_BddManager bddManager |
---|
1297 | ) |
---|
1298 | Returns the BDD for the constant zero |
---|
1299 | |
---|
1300 | Side Effects: None |
---|
1301 | |
---|
1302 | Cal_Address_t |
---|
1303 | Cal_MemAllocation( |
---|
1304 | |
---|
1305 | ) |
---|
1306 | Returns the memory allocated. |
---|
1307 | |
---|
1308 | Side Effects: required |
---|
1309 | |
---|
1310 | void |
---|
1311 | Cal_MemFatal( |
---|
1312 | char * message |
---|
1313 | ) |
---|
1314 | Prints an error message and exits. |
---|
1315 | |
---|
1316 | Side Effects: required |
---|
1317 | |
---|
1318 | void |
---|
1319 | Cal_MemFreeBlock( |
---|
1320 | Cal_Pointer_t p |
---|
1321 | ) |
---|
1322 | Frees the block. |
---|
1323 | |
---|
1324 | Side Effects: required |
---|
1325 | |
---|
1326 | void |
---|
1327 | Cal_MemFreeRecMgr( |
---|
1328 | Cal_RecMgr mgr |
---|
1329 | ) |
---|
1330 | Frees all the storage associated with the specified record manager. |
---|
1331 | |
---|
1332 | Side Effects: required |
---|
1333 | |
---|
1334 | void |
---|
1335 | Cal_MemFreeRec( |
---|
1336 | Cal_RecMgr mgr, |
---|
1337 | Cal_Pointer_t rec |
---|
1338 | ) |
---|
1339 | Frees a record managed by the indicated record manager. |
---|
1340 | |
---|
1341 | Side Effects: required |
---|
1342 | |
---|
1343 | Cal_Pointer_t |
---|
1344 | Cal_MemGetBlock( |
---|
1345 | Cal_Address_t size |
---|
1346 | ) |
---|
1347 | Allocates a new block of the specified size. |
---|
1348 | |
---|
1349 | Side Effects: required |
---|
1350 | |
---|
1351 | Cal_RecMgr |
---|
1352 | Cal_MemNewRecMgr( |
---|
1353 | int size |
---|
1354 | ) |
---|
1355 | Creates a new record manager with the given record size. |
---|
1356 | |
---|
1357 | Side Effects: required |
---|
1358 | |
---|
1359 | Cal_Pointer_t |
---|
1360 | Cal_MemNewRec( |
---|
1361 | Cal_RecMgr mgr |
---|
1362 | ) |
---|
1363 | Allocates a record from the specified record manager. |
---|
1364 | |
---|
1365 | Side Effects: required |
---|
1366 | |
---|
1367 | Cal_Pointer_t |
---|
1368 | Cal_MemResizeBlock( |
---|
1369 | Cal_Pointer_t p, |
---|
1370 | Cal_Address_t newSize |
---|
1371 | ) |
---|
1372 | Expands or contracts the block to a new size. We try to avoid moving the |
---|
1373 | block if possible. |
---|
1374 | |
---|
1375 | Side Effects: required |
---|
1376 | |
---|
1377 | int |
---|
1378 | Cal_PerformanceTest( |
---|
1379 | Cal_BddManager bddManager, |
---|
1380 | Cal_Bdd * outputBddArray, |
---|
1381 | int numFunctions, |
---|
1382 | int iteration, |
---|
1383 | int seed, |
---|
1384 | int andPerformanceFl |
---|
1385 | int multiwayPerforma |
---|
1386 | int onewayPerformanc |
---|
1387 | int quantifyPerforma |
---|
1388 | int composePerforman |
---|
1389 | int relprodPerforman |
---|
1390 | int swapPerformanceF |
---|
1391 | int substitutePerfor |
---|
1392 | int sanityCheckFlag, |
---|
1393 | int computeMemoryOve |
---|
1394 | int superscalarFlag |
---|
1395 | ) |
---|
1396 | optional |
---|
1397 | |
---|
1398 | Side Effects: required |
---|
1399 | |
---|
1400 | Cal_Bdd |
---|
1401 | Cal_PipelineCreateProvisionalBdd( |
---|
1402 | Cal_BddManager bddManager, |
---|
1403 | Cal_Bdd fUserBdd, |
---|
1404 | Cal_Bdd gUserBdd |
---|
1405 | ) |
---|
1406 | The provisional BDD is automatically freed once the pipeline is quitted. |
---|
1407 | |
---|
1408 | |
---|
1409 | int |
---|
1410 | Cal_PipelineExecute( |
---|
1411 | Cal_BddManager bddManager |
---|
1412 | ) |
---|
1413 | All the results are computed. User should update the BDDs of interest. |
---|
1414 | Eventually this feature would become transparent. |
---|
1415 | |
---|
1416 | Side Effects: required |
---|
1417 | |
---|
1418 | int |
---|
1419 | Cal_PipelineInit( |
---|
1420 | Cal_BddManager bddManager, |
---|
1421 | Cal_BddOp_t bddOp |
---|
1422 | ) |
---|
1423 | All the operations for this pipeline must be of the same kind. |
---|
1424 | |
---|
1425 | Side Effects: None. |
---|
1426 | |
---|
1427 | void |
---|
1428 | Cal_PipelineQuit( |
---|
1429 | Cal_BddManager bddManager |
---|
1430 | ) |
---|
1431 | The user must make sure to update all provisional BDDs of interest before |
---|
1432 | calling this routine. |
---|
1433 | |
---|
1434 | |
---|
1435 | void |
---|
1436 | Cal_PipelineSetDepth( |
---|
1437 | Cal_BddManager bddManager, |
---|
1438 | int depth |
---|
1439 | ) |
---|
1440 | The "depth" determines the amount of dependency we would allow in pipelined |
---|
1441 | computation. |
---|
1442 | |
---|
1443 | Side Effects: None. |
---|
1444 | |
---|
1445 | Cal_Bdd |
---|
1446 | Cal_PipelineUpdateProvisionalBdd( |
---|
1447 | Cal_BddManager bddManager, |
---|
1448 | Cal_Bdd provisionalBdd |
---|
1449 | ) |
---|
1450 | The provisional BDD is automatically freed after quitting pipeline. |
---|
1451 | |
---|
1452 | |
---|
1453 | void |
---|
1454 | Cal_TempAssociationAugment( |
---|
1455 | Cal_BddManager bddManager, |
---|
1456 | Cal_Bdd * associationInfoU |
---|
1457 | int pairs |
---|
1458 | ) |
---|
1459 | Pairs is 0 if the information represents only a list of variables rather |
---|
1460 | than a full association. |
---|
1461 | |
---|
1462 | Side Effects: None |
---|
1463 | |
---|
1464 | void |
---|
1465 | Cal_TempAssociationInit( |
---|
1466 | Cal_BddManager bddManager, |
---|
1467 | Cal_Bdd * associationInfoU |
---|
1468 | int pairs |
---|
1469 | ) |
---|
1470 | Pairs is 0 if the information represents only a list of variables rather |
---|
1471 | than a full association. |
---|
1472 | |
---|
1473 | Side Effects: None |
---|
1474 | |
---|
1475 | void |
---|
1476 | Cal_TempAssociationQuit( |
---|
1477 | Cal_BddManager bddManager |
---|
1478 | ) |
---|
1479 | Cleans up temporary associationoptional |
---|
1480 | |
---|
1481 | Side Effects: None |
---|
1482 | |
---|