#include "cmuPortInt.h"
#include "epd.h"
Go to the source code of this file.
bdd_node* bdd_add_apply | ( | bdd_manager * | mgr, | |
bdd_node *(*)(bdd_manager *, bdd_node **, bdd_node **) | operation, | |||
bdd_node * | fn1, | |||
bdd_node * | fn2 | |||
) |
bdd_node* bdd_add_apply_recur | ( | bdd_manager * | mgr, | |
bdd_node *(*)(bdd_manager *, bdd_node **, bdd_node **) | operation, | |||
bdd_node * | fn1, | |||
bdd_node * | fn2 | |||
) |
bdd_node* bdd_add_bdd_strict_threshold | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
BDD_VALUE_TYPE | value | |||
) |
bdd_node* bdd_add_bdd_threshold | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
BDD_VALUE_TYPE | value | |||
) |
bdd_node* bdd_add_cmpl | ( | bdd_manager * | mgr, | |
bdd_node * | f | |||
) |
bdd_node* bdd_add_compose | ( | bdd_manager * | mgr, | |
bdd_node * | fn1, | |||
bdd_node * | fn2, | |||
int | var | |||
) |
bdd_node* bdd_add_compute_cube | ( | bdd_manager * | mgr, | |
bdd_node ** | vars, | |||
int * | phase, | |||
int | n | |||
) |
bdd_node* bdd_add_const | ( | bdd_manager * | mgr, | |
BDD_VALUE_TYPE | c | |||
) |
bdd_node* bdd_add_divide | ( | bdd_manager * | mgr, | |
bdd_node ** | fn1, | |||
bdd_node ** | fn2 | |||
) |
bdd_node* bdd_add_exist_abstract | ( | bdd_manager * | mgr, | |
bdd_node * | fn, | |||
bdd_node * | vars | |||
) |
bdd_node* bdd_add_find_max | ( | bdd_manager * | mgr, | |
bdd_node * | f | |||
) |
bdd_node* bdd_add_general_vector_compose | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node ** | vectorOn, | |||
bdd_node ** | vectorOff | |||
) |
bdd_node* bdd_add_hamming | ( | bdd_manager * | mgr, | |
bdd_node ** | xVars, | |||
bdd_node ** | yVars, | |||
int | nVars | |||
) |
int bdd_add_hook | ( | bdd_manager * | mgr, | |
int(*)(bdd_manager *, char *, void *) | procedure, | |||
bdd_hook_type_t | whichHook | |||
) |
bdd_node* bdd_add_ite | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g, | |||
bdd_node * | h | |||
) |
bdd_node* bdd_add_ith_var | ( | bdd_manager * | mgr, | |
int | i | |||
) |
bdd_node* bdd_add_matrix_multiply | ( | bdd_manager * | mgr, | |
bdd_node * | A, | |||
bdd_node * | B, | |||
bdd_node ** | z, | |||
int | nz | |||
) |
bdd_node* bdd_add_minus | ( | bdd_manager * | mgr, | |
bdd_node ** | fn1, | |||
bdd_node ** | fn2 | |||
) |
bdd_node* bdd_add_nonsim_compose | ( | bdd_manager * | mgr, | |
bdd_node * | fn, | |||
bdd_node ** | vector | |||
) |
bdd_node* bdd_add_permute | ( | bdd_manager * | mgr, | |
bdd_node * | fn, | |||
int * | permut | |||
) |
bdd_node* bdd_add_plus | ( | bdd_manager * | mgr, | |
bdd_node ** | fn1, | |||
bdd_node ** | fn2 | |||
) |
bdd_node* bdd_add_residue | ( | bdd_manager * | mgr, | |
int | n, | |||
int | m, | |||
int | options, | |||
int | top | |||
) |
bdd_node* bdd_add_roundoff | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
int | N | |||
) |
bdd_node* bdd_add_swap_variables | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node ** | x, | |||
bdd_node ** | y, | |||
int | n | |||
) |
bdd_node* bdd_add_times | ( | bdd_manager * | mgr, | |
bdd_node ** | fn1, | |||
bdd_node ** | fn2 | |||
) |
BDD_VALUE_TYPE bdd_add_value | ( | bdd_node * | f | ) |
bdd_node* bdd_add_vector_compose | ( | bdd_manager * | mgr, | |
bdd_node * | fn, | |||
bdd_node ** | vector | |||
) |
bdd_node* bdd_add_xnor | ( | bdd_manager * | mgr, | |
bdd_node ** | fn1, | |||
bdd_node ** | fn2 | |||
) |
Definition at line 250 of file cmuPort.c.
00255 { 00256 struct bdd_ *temp1, *temp2; 00257 bdd_t *result; 00258 struct bdd_manager_ *mgr; 00259 00260 mgr = f->mgr; 00261 temp1 = ( (f_phase == TRUE) ? cmu_bdd_identity(mgr, f->node) : cmu_bdd_not(mgr, f->node)); 00262 temp2 = ( (g_phase == TRUE) ? cmu_bdd_identity(mgr, g->node) : cmu_bdd_not(mgr, g->node)); 00263 result = bdd_construct_bdd_t(mgr, cmu_bdd_and(mgr, temp1, temp2)); 00264 cmu_bdd_free(mgr, temp1); 00265 cmu_bdd_free(mgr, temp2); 00266 return result; 00267 }
Definition at line 282 of file cmuPort.c.
00287 { 00288 struct bdd_ *temp1, *temp2, *result; 00289 bdd_t *g; 00290 struct bdd_manager_ *mgr; 00291 int i; 00292 00293 mgr = f->mgr; 00294 result = ((f_phase == TRUE) ? cmu_bdd_identity(mgr, f->node) : 00295 cmu_bdd_not(mgr, f->node)); 00296 00297 for (i = 0; i < array_n(g_array); i++) { 00298 g = array_fetch(bdd_t *, g_array, i); 00299 temp1 = result; 00300 temp2 = ((g_phase == TRUE) ? cmu_bdd_identity(mgr, g->node) : 00301 cmu_bdd_not(mgr, g->node)); 00302 result = cmu_bdd_and(mgr, temp1, temp2); 00303 cmu_bdd_free(mgr, temp1); 00304 cmu_bdd_free(mgr, temp2); 00305 if (result == NULL) 00306 return(NULL); 00307 } 00308 00309 return(bdd_construct_bdd_t(mgr, result)); 00310 }
Definition at line 436 of file cmuPort.c.
00440 { 00441 int num_vars, i; 00442 bdd_t *fn, *result; 00443 struct bdd_ **assoc; 00444 struct bdd_manager_ *mgr; 00445 00446 num_vars = array_n(smoothing_vars); 00447 if (num_vars <= 0) { 00448 cmu_bdd_fatal("bdd_and_smooth: no smoothing variables"); 00449 } 00450 00451 assoc = ALLOC(struct bdd_ *, num_vars+1); 00452 00453 for (i = 0; i < num_vars; i++) { 00454 fn = array_fetch(bdd_t *, smoothing_vars, i); 00455 assoc[i] = fn->node; 00456 } 00457 assoc[num_vars] = (struct bdd_ *) 0; 00458 00459 mgr = f->mgr; 00460 cmu_bdd_temp_assoc(mgr, assoc, 0); 00461 (void) cmu_bdd_assoc(mgr, -1); /* set the temp association as the current association */ 00462 00463 result = bdd_construct_bdd_t(mgr, cmu_bdd_rel_prod(mgr, f->node, g->node)); 00464 FREE(assoc); 00465 return result; 00466 }
bdd_t* bdd_and_smooth_with_limit | ( | bdd_t * | f, | |
bdd_t * | g, | |||
array_t * | smoothing_vars, | |||
unsigned int | limit | |||
) |
Definition at line 469 of file cmuPort.c.
00474 { 00475 /* Unsupported: fall back to standard and_smooth */ 00476 return bdd_and_smooth(f, g, smoothing_vars); 00477 }
bdd_t* bdd_approx_biased_rua | ( | bdd_t * | f, | |
bdd_approx_dir_t | approxDir, | |||
bdd_t * | bias, | |||
int | numVars, | |||
int | threshold, | |||
double | quality, | |||
double | quality1 | |||
) |
bdd_t* bdd_approx_compress | ( | bdd_t * | f, | |
bdd_approx_dir_t | approxDir, | |||
int | numVars, | |||
int | threshold | |||
) |
int bdd_approx_decomp | ( | bdd_t * | f, | |
bdd_partition_type_t | partType, | |||
bdd_t *** | conjArray | |||
) |
bdd_t* bdd_approx_hb | ( | bdd_t * | f, | |
bdd_approx_dir_t | approxDir, | |||
int | numVars, | |||
int | threshold | |||
) |
bdd_t* bdd_approx_remap_ua | ( | bdd_t * | f, | |
bdd_approx_dir_t | approxDir, | |||
int | numVars, | |||
int | threshold, | |||
double | quality | |||
) |
bdd_t* bdd_approx_sp | ( | bdd_t * | f, | |
bdd_approx_dir_t | approxDir, | |||
int | numVars, | |||
int | threshold, | |||
int | hardlimit | |||
) |
bdd_t* bdd_approx_ua | ( | bdd_t * | f, | |
bdd_approx_dir_t | approxDir, | |||
int | numVars, | |||
int | threshold, | |||
int | safe, | |||
double | quality | |||
) |
bdd_node* bdd_bdd_and | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_node* bdd_bdd_and_abstract | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g, | |||
bdd_node * | cube | |||
) |
bdd_node* bdd_bdd_and_recur | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_node* bdd_bdd_boolean_diff | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
int | x | |||
) |
bdd_node* bdd_bdd_cofactor | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_node* bdd_bdd_compute_cube | ( | bdd_manager * | mgr, | |
bdd_node ** | vars, | |||
int * | phase, | |||
int | n | |||
) |
bdd_node* bdd_bdd_constrain | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | c | |||
) |
bdd_node* bdd_bdd_cprojection | ( | bdd_manager * | mgr, | |
bdd_node * | R, | |||
bdd_node * | Y | |||
) |
bdd_node* bdd_bdd_exist_abstract | ( | bdd_manager * | mgr, | |
bdd_node * | fn, | |||
bdd_node * | cube | |||
) |
bdd_node* bdd_bdd_ite | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g, | |||
bdd_node * | h | |||
) |
bdd_node* bdd_bdd_ith_var | ( | bdd_manager * | mgr, | |
int | i | |||
) |
int bdd_bdd_leq | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_node* bdd_bdd_new_var | ( | bdd_manager * | mgr | ) |
bdd_node* bdd_bdd_or | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_node* bdd_bdd_permute | ( | bdd_manager * | mgr, | |
bdd_node * | fn, | |||
int * | permut | |||
) |
int bdd_bdd_pick_one_cube | ( | bdd_manager * | mgr, | |
bdd_node * | node, | |||
char * | string | |||
) |
bdd_node* bdd_bdd_pick_one_minterm | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node ** | vars, | |||
int | n | |||
) |
bdd_node* bdd_bdd_restrict | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | c | |||
) |
bdd_node* bdd_bdd_support | ( | bdd_manager * | mgr, | |
bdd_node * | F | |||
) |
int bdd_bdd_support_size | ( | bdd_manager * | mgr, | |
bdd_node * | F | |||
) |
bdd_node* bdd_bdd_swap_variables | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node ** | x, | |||
bdd_node ** | y, | |||
int | n | |||
) |
bdd_node* bdd_bdd_to_add | ( | bdd_manager * | mgr, | |
bdd_node * | fn | |||
) |
bdd_node* bdd_bdd_univ_abstract | ( | bdd_manager * | mgr, | |
bdd_node * | fn, | |||
bdd_node * | vars | |||
) |
bdd_node* bdd_bdd_vector_compose | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node ** | vector | |||
) |
bdd_node* bdd_bdd_vector_support | ( | bdd_manager * | mgr, | |
bdd_node ** | F, | |||
int | n | |||
) |
int bdd_bdd_vector_support_size | ( | bdd_manager * | mgr, | |
bdd_node ** | F, | |||
int | n | |||
) |
bdd_node* bdd_bdd_xnor | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_node* bdd_bdd_xor | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
Definition at line 480 of file cmuPort.c.
00481 { 00482 bdd_t *temp, *ret; 00483 long size1, size2, size3; 00484 temp = bdd_or(f_min, f_max, 1, 0); 00485 ret = bdd_minimize(f_min, temp); 00486 bdd_free(temp); 00487 size1 = bdd_size(f_min); 00488 size2 = bdd_size(f_max); 00489 size3 = bdd_size(ret); 00490 if (size3 < size1) { 00491 if (size3 < size2){ 00492 return ret; 00493 } 00494 else { 00495 bdd_free(ret); 00496 return bdd_dup(f_max); 00497 } 00498 } 00499 else { 00500 bdd_free(ret); 00501 if (size1 < size2){ 00502 return bdd_dup(f_min); 00503 } 00504 else { 00505 return bdd_dup(f_max); 00506 } 00507 } 00508 }
int bdd_bind_var | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_check_zero_ref | ( | bdd_manager * | mgr | ) |
double* bdd_cof_minterm | ( | bdd_t * | f | ) |
Definition at line 511 of file cmuPort.c.
00512 { 00513 return bdd_construct_bdd_t(f->mgr, cmu_bdd_cofactor(f->mgr, f->node, g->node)); 00514 }
Definition at line 517 of file cmuPort.c.
00518 { 00519 bdd_t *operand; 00520 struct bdd_ *result, *temp; 00521 int i; 00522 00523 result = cmu_bdd_identity(f->mgr, f->node); 00524 00525 for (i = 0; i < array_n(bddArray); i++) { 00526 operand = array_fetch(bdd_t *, bddArray, i); 00527 temp = cmu_bdd_cofactor(f->mgr, result, operand->node); 00528 if (temp == NULL) { 00529 cmu_bdd_free(f->mgr, result); 00530 return(NULL); 00531 } 00532 cmu_bdd_free(f->mgr, result); 00533 result = temp; 00534 } 00535 00536 return(bdd_construct_bdd_t(f->mgr, result)); 00537 }
Definition at line 540 of file cmuPort.c.
00544 { 00545 return bdd_construct_bdd_t(f->mgr, cmu_bdd_compose(f->mgr, f->node, v->node, g->node)); 00546 }
bdd_t* bdd_compute_cube | ( | bdd_manager * | mgr, | |
array_t * | vars | |||
) |
bdd_t* bdd_compute_cube_with_phase | ( | bdd_manager * | mgr, | |
array_t * | vars, | |||
array_t * | phase | |||
) |
Definition at line 549 of file cmuPort.c.
00552 { 00553 int num_vars, i; 00554 bdd_t *fn, *result; 00555 struct bdd_ **assoc; 00556 struct bdd_manager_ *mgr; 00557 00558 num_vars = array_n(quantifying_vars); 00559 if (num_vars <= 0) { 00560 cmu_bdd_fatal("bdd_consensus: no quantifying variables"); 00561 } 00562 00563 assoc = ALLOC(struct bdd_ *, num_vars+1); 00564 00565 for (i = 0; i < num_vars; i++) { 00566 fn = array_fetch(bdd_t *, quantifying_vars, i); 00567 assoc[i] = fn->node; 00568 } 00569 assoc[num_vars] = (struct bdd_ *) 0; 00570 00571 mgr = f->mgr; 00572 cmu_bdd_temp_assoc(mgr, assoc, 0); 00573 (void) cmu_bdd_assoc(mgr, -1); /* set the temp association as the current association */ 00574 00575 result = bdd_construct_bdd_t(mgr, cmu_bdd_forall(mgr, f->node)); 00576 FREE(assoc); 00577 return result; 00578 }
bdd_t* bdd_construct_bdd_t | ( | bdd_manager * | manager, | |
bdd_node * | func | |||
) |
CFile***********************************************************************
FileName [cmuPort.c]
PackageName [cmu_port]
Synopsis [Port routines for CMU package.]
Description [optional]
SeeAlso [optional]
Author [Thomas R. Shiple. Some changes by Rajeev K. Ranjan.]
Copyright [Copyright (c) 1994-1996 The Regents of the Univ. of California. All rights reserved.
Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software.
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.]
Revision [
]AutomaticStart AutomaticEnd Function********************************************************************
Synopsis [Builds the bdd_t structure.]
Description [Builds the bdd_t structure from manager and node. Assumes that the reference count of the node has already been increased.]
SideEffects []
Definition at line 93 of file cmuPort.c.
00094 { 00095 bdd_t *result; 00096 cmu_bdd_manager mgr = (cmu_bdd_manager)manager; 00097 bdd fn = (bdd)func; 00098 00099 if (fn == (struct bdd_ *) 0) { 00100 cmu_bdd_fatal("bdd_construct_bdd_t: possible memory overflow"); 00101 } 00102 00103 result = ALLOC(bdd_t, 1); 00104 result->mgr = mgr; 00105 result->node = fn; 00106 result->free = FALSE; 00107 return result; 00108 }
double bdd_count_minterm | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
int | n | |||
) |
Definition at line 582 of file cmuPort.c.
00585 { 00586 int num_vars, i; 00587 bdd_t *fn, *result; 00588 struct bdd_ **assoc; 00589 struct bdd_manager_ *mgr; 00590 00591 if (f == NIL(bdd_t)) fail ("bdd_cproject: invalid BDD"); 00592 00593 num_vars = array_n(quantifying_vars); 00594 if (num_vars <= 0) { 00595 printf("Warning: bdd_cproject: no projection variables\n"); 00596 result = bdd_dup(f); 00597 } 00598 else { 00599 assoc = ALLOC(struct bdd_ *, num_vars+1); 00600 for (i = 0; i < num_vars; i++) { 00601 fn = array_fetch(bdd_t *, quantifying_vars, i); 00602 assoc[i] = fn->node; 00603 } 00604 assoc[num_vars] = (struct bdd_ *) 0; 00605 mgr = f->mgr; 00606 cmu_bdd_temp_assoc(mgr, assoc, 0); 00607 (void) cmu_bdd_assoc(mgr, -1); /* set the temp association as the current a 00608 ssociation */ 00609 00610 result = bdd_construct_bdd_t(mgr, cmu_bdd_project(mgr, f->node)); 00611 FREE(assoc); 00612 } 00613 return result; 00614 }
bdd_t* bdd_create_variable | ( | bdd_manager * | manager | ) |
Definition at line 171 of file cmuPort.c.
00172 { 00173 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00174 return bdd_construct_bdd_t(mgr, cmu_bdd_new_var_last(mgr)); 00175 }
bdd_t* bdd_create_variable_after | ( | bdd_manager * | manager, | |
bdd_variableId | after_id | |||
) |
Definition at line 178 of file cmuPort.c.
00179 { 00180 struct bdd_ *after_var; 00181 bdd_t *result; 00182 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00183 00184 after_var = cmu_bdd_var_with_id(mgr, (long)after_id + 1); 00185 00186 result = bdd_construct_bdd_t(mgr, cmu_bdd_new_var_after(mgr, after_var)); 00187 00188 /* No need to free after_var, since single variable BDDs are never garbage collected */ 00189 00190 return result; 00191 }
int bdd_debug_check | ( | bdd_manager * | mgr | ) |
int bdd_disable_reordering_reporting | ( | bdd_manager * | mgr | ) |
void bdd_discard_all_var_groups | ( | bdd_manager * | mgr | ) |
void bdd_dump_blif | ( | bdd_manager * | mgr, | |
int | nBdds, | |||
bdd_node ** | bdds, | |||
char ** | inames, | |||
char ** | onames, | |||
char * | model, | |||
FILE * | fp | |||
) |
void bdd_dump_blif_body | ( | bdd_manager * | mgr, | |
int | nBdds, | |||
bdd_node ** | bdds, | |||
char ** | inames, | |||
char ** | onames, | |||
FILE * | fp | |||
) |
void bdd_dump_dot | ( | bdd_manager * | mgr, | |
int | nBdds, | |||
bdd_node ** | bdds, | |||
char ** | inames, | |||
char ** | onames, | |||
FILE * | fp | |||
) |
Definition at line 217 of file cmuPort.c.
00218 { 00219 return bdd_construct_bdd_t(f->mgr, cmu_bdd_identity(f->mgr, f->node)); 00220 }
bdd_node* bdd_dxygtdxz | ( | bdd_manager * | mgr, | |
int | N, | |||
bdd_node ** | x, | |||
bdd_node ** | y, | |||
bdd_node ** | z | |||
) |
void bdd_dynamic_reordering | ( | bdd_manager * | manager, | |
bdd_reorder_type_t | algorithm_type, | |||
bdd_reorder_verbosity_t | verbosity | |||
) |
Definition at line 1209 of file cmuPort.c.
01211 { 01212 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 01213 switch(algorithm_type) { 01214 case BDD_REORDER_SIFT: 01215 cmu_bdd_dynamic_reordering(mgr, cmu_bdd_reorder_sift); 01216 break; 01217 case BDD_REORDER_WINDOW: 01218 cmu_bdd_dynamic_reordering(mgr, cmu_bdd_reorder_stable_window3); 01219 break; 01220 case BDD_REORDER_NONE: 01221 cmu_bdd_dynamic_reordering(mgr, cmu_bdd_reorder_none); 01222 break; 01223 default: 01224 fprintf(stderr,"CMU: bdd_dynamic_reordering: unknown algorithm type\n"); 01225 fprintf(stderr,"Using SIFT method instead\n"); 01226 cmu_bdd_dynamic_reordering(mgr, cmu_bdd_reorder_sift); 01227 } 01228 }
void bdd_dynamic_reordering_disable | ( | bdd_manager * | mgr | ) |
void bdd_dynamic_reordering_zdd | ( | bdd_manager * | manager, | |
bdd_reorder_type_t | algorithm_type, | |||
bdd_reorder_verbosity_t | verbosity | |||
) |
void bdd_dynamic_reordering_zdd_disable | ( | bdd_manager * | mgr | ) |
Definition at line 618 of file cmuPort.c.
00619 { 00620 return bdd_construct_bdd_t(f->mgr, cmu_bdd_else(f->mgr, f->node)); 00621 }
int bdd_enable_reordering_reporting | ( | bdd_manager * | mgr | ) |
void bdd_end | ( | bdd_manager * | manager | ) |
Definition at line 129 of file cmuPort.c.
00130 { 00131 bdd_external_hooks *hooks; 00132 cmu_bdd_manager mgr = (cmu_bdd_manager)manager; 00133 hooks = (bdd_external_hooks *) mgr->hooks; 00134 FREE(hooks); 00135 cmu_bdd_quit(mgr); 00136 }
Function********************************************************************
Synopsis [Counts the number of minterms in the on set.]
SideEffects []
Definition at line 992 of file cmuPort.c.
00996 { 00997 double nMinterms; 00998 00999 nMinterms = bdd_count_onset(f, var_array); 01000 EpdConvert(nMinterms, epd); 01001 return 0; 01002 } /* end of bdd_epd_count_onset */
int bdd_equal_sup_norm | ( | bdd_manager * | mgr, | |
bdd_node * | fn, | |||
bdd_node * | gn, | |||
BDD_VALUE_TYPE | tolerance, | |||
int | pr | |||
) |
void bdd_free | ( | bdd_t * | f | ) |
Definition at line 223 of file cmuPort.c.
00224 { 00225 if (f == NIL(bdd_t)) { 00226 fail("bdd_free: trying to free a NIL bdd_t"); 00227 } 00228 00229 if (f->free == TRUE) { 00230 fail("bdd_free: trying to free a freed bdd_t"); 00231 } 00232 00233 cmu_bdd_free(f->mgr, f->node); 00234 00235 /* 00236 * In case the user tries to free this bdd_t again, set the free field to TRUE, 00237 * and NIL out the other fields. Then free the bdd_t structure itself. 00238 */ 00239 f->free = TRUE; 00240 f->node = NIL(struct bdd_); 00241 f->mgr = NIL(struct bdd_manager_); 00242 FREE(f); 00243 }
int bdd_gen_decomp | ( | bdd_t * | f, | |
bdd_partition_type_t | partType, | |||
bdd_t *** | conjArray | |||
) |
bdd_external_hooks* bdd_get_external_hooks | ( | bdd_manager * | manager | ) |
Definition at line 1195 of file cmuPort.c.
01196 { 01197 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 01198 return ((bdd_external_hooks *) mgr->hooks); 01199 }
int bdd_get_free | ( | bdd_t * | f | ) |
bdd_variableId bdd_get_id_from_level | ( | bdd_manager * | manager, | |
long | level | |||
) |
Definition at line 1245 of file cmuPort.c.
01246 { 01247 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 01248 struct bdd_ *fn; 01249 01250 fn = cmu_bdd_var_with_index(mgr, level); 01251 01252 if (fn == (struct bdd_ *) 0) { 01253 /* variable should always be found, since they are created at bdd_start */ 01254 cmu_bdd_fatal("bdd_get_id_from_level: assumption violated"); 01255 } 01256 01257 return ((bdd_variableId)(cmu_bdd_if_id(mgr, fn) - 1 )); 01258 01259 }
int bdd_get_level_from_id | ( | bdd_manager * | mgr, | |
int | id | |||
) |
bdd_manager* bdd_get_manager | ( | bdd_t * | f | ) |
Definition at line 1011 of file cmuPort.c.
01012 { 01013 return (bdd_manager *) (f->mgr); 01014 }
bdd_package_type_t bdd_get_package_name | ( | void | ) |
Definition at line 1026 of file cmuPort.c.
01027 { 01028 struct bdd_ **support, *var; 01029 struct bdd_manager_ *mgr; 01030 long num_vars; 01031 var_set_t *result; 01032 int id, i; 01033 01034 mgr = f->mgr; 01035 num_vars = cmu_bdd_vars(mgr); 01036 01037 result = var_set_new((int) num_vars); 01038 support = (struct bdd_ **) mem_get_block((num_vars+1) * sizeof(struct bdd_ *)); 01039 (void) cmu_bdd_support(mgr, f->node, support); 01040 01041 for (i = 0; i < num_vars; ++i) { /* can never have more than num_var non-zero entries in array */ 01042 var = support[i]; 01043 if (var == (struct bdd_ *) 0) { 01044 break; /* have reach end of null-terminated array */ 01045 } 01046 id = (int) (cmu_bdd_if_id(mgr, var) - 1); /* a variable is never garbage collected, so no need to free */ 01047 var_set_set_elt(result, id); 01048 } 01049 01050 mem_free_block((pointer)support); 01051 01052 return result; 01053 }
bdd_t* bdd_get_variable | ( | bdd_manager * | manager, | |
bdd_variableId | variable_ID | |||
) |
Definition at line 196 of file cmuPort.c.
00197 { 00198 struct bdd_ *fn; 00199 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00200 fn = cmu_bdd_var_with_id(mgr, (long) (variable_ID + 1)); 00201 00202 if (fn == (struct bdd_ *) 0) { 00203 int i; 00204 for (i=cmu_bdd_vars(mgr); i < variable_ID + 1; i++) { 00205 fn = cmu_bdd_new_var_last(mgr); 00206 } 00207 } 00208 00209 return bdd_construct_bdd_t(mgr, fn); 00210 }
Definition at line 1093 of file cmuPort.c.
01094 { 01095 int i; 01096 bdd_t *var; 01097 array_t *result; 01098 01099 result = array_alloc(bdd_variableId, 0); 01100 for (i = 0; i < array_n(var_array); i++) { 01101 var = array_fetch(bdd_t *, var_array, i); 01102 array_insert_last(bdd_variableId, result, bdd_top_var_id(var)); 01103 } 01104 return result; 01105 }
bdd_node* bdd_indices_to_cube | ( | bdd_manager * | mgr, | |
int * | idArray, | |||
int | n | |||
) |
Definition at line 879 of file cmuPort.c.
00880 { 00881 return bdd_construct_bdd_t(f->mgr, cmu_bdd_intersects(f->mgr, f->node, g->node)); 00882 }
int bdd_is_complement | ( | bdd_node * | f | ) |
int bdd_is_constant | ( | bdd_node * | f | ) |
Definition at line 1272 of file cmuPort.c.
01273 { 01274 struct bdd_manager_ *manager; 01275 01276 if (f == NIL(bdd_t)) { 01277 fail("bdd_is_cube: invalid BDD"); 01278 } 01279 if( f->free ) fail ("Freed Bdd passed to bdd_is_cube"); 01280 manager = f->mgr; 01281 return ((boolean)cmu_bdd_is_cube(manager, f->node)); 01282 }
int bdd_is_lazy_sift | ( | bdd_manager * | mgr | ) |
int bdd_is_ns_var | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_is_pi_var | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_is_ps_var | ( | bdd_manager * | mgr, | |
int | index | |||
) |
Definition at line 1056 of file cmuPort.c.
01057 { 01058 return(bdd_is_support_var_id(f, bdd_top_var_id(var))); 01059 }
int bdd_is_support_var_id | ( | bdd_t * | f, | |
int | index | |||
) |
Definition at line 1062 of file cmuPort.c.
01063 { 01064 struct bdd_ **support, *var; 01065 struct bdd_manager_ *mgr; 01066 long num_vars; 01067 int id, i; 01068 01069 mgr = f->mgr; 01070 num_vars = cmu_bdd_vars(mgr); 01071 01072 support = (struct bdd_ **) mem_get_block((num_vars+1) * sizeof(struct bdd_ *)); 01073 (void) cmu_bdd_support(mgr, f->node, support); 01074 01075 for (i = 0; i < num_vars; ++i) { /* can never have more than num_var non-zero entries in array */ 01076 var = support[i]; 01077 if (var == (struct bdd_ *) 0) { 01078 break; /* have reach end of null-terminated array */ 01079 } 01080 id = (int) (cmu_bdd_if_id(mgr, var) - 1); /* a variable is never garbage collected, so no need to free */ 01081 if (id == index) { 01082 mem_free_block((pointer)support); 01083 return 1; 01084 } 01085 } 01086 01087 mem_free_block((pointer)support); 01088 01089 return 0; 01090 }
Definition at line 891 of file cmuPort.c.
00892 { 00893 return ((phase == TRUE) ? (f->node == cmu_bdd_one(f->mgr)) : (f->node == cmu_bdd_zero(f->mgr))); 00894 }
int bdd_is_var_hard_group | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_is_var_to_be_grouped | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_is_var_to_be_ungrouped | ( | bdd_manager * | mgr, | |
int | index | |||
) |
bdd_t* bdd_ite | ( | bdd_t * | i, | |
bdd_t * | t, | |||
bdd_t * | e, | |||
boolean | i_phase, | |||
boolean | t_phase, | |||
boolean | e_phase | |||
) |
Definition at line 625 of file cmuPort.c.
00632 { 00633 struct bdd_ *temp1, *temp2, *temp3; 00634 bdd_t *result; 00635 struct bdd_manager_ *mgr; 00636 00637 mgr = i->mgr; 00638 temp1 = ( (i_phase == TRUE) ? cmu_bdd_identity(mgr, i->node) : cmu_bdd_not(mgr, i->node)); 00639 temp2 = ( (t_phase == TRUE) ? cmu_bdd_identity(mgr, t->node) : cmu_bdd_not(mgr, t->node)); 00640 temp3 = ( (e_phase == TRUE) ? cmu_bdd_identity(mgr, e->node) : cmu_bdd_not(mgr, e->node)); 00641 result = bdd_construct_bdd_t(mgr, cmu_bdd_ite(mgr, temp1, temp2, temp3)); 00642 cmu_bdd_free(mgr, temp1); 00643 cmu_bdd_free(mgr, temp2); 00644 cmu_bdd_free(mgr, temp3); 00645 return result; 00646 }
int bdd_iter_decomp | ( | bdd_t * | f, | |
bdd_partition_type_t | partType, | |||
bdd_t *** | conjArray | |||
) |
Definition at line 897 of file cmuPort.c.
00902 { 00903 struct bdd_ *temp1, *temp2, *implies_fn; 00904 struct bdd_manager_ *mgr; 00905 boolean result_value; 00906 00907 mgr = f->mgr; 00908 temp1 = ( (f_phase == TRUE) ? cmu_bdd_identity(mgr, f->node) : cmu_bdd_not(mgr, f->node)); 00909 temp2 = ( (g_phase == TRUE) ? cmu_bdd_identity(mgr, g->node) : cmu_bdd_not(mgr, g->node)); 00910 implies_fn = cmu_bdd_implies(mgr, temp1, temp2); /* returns a minterm of temp1*!temp2 */ 00911 result_value = (implies_fn == cmu_bdd_zero(mgr)); 00912 cmu_bdd_free(mgr, temp1); 00913 cmu_bdd_free(mgr, temp2); 00914 cmu_bdd_free(mgr, implies_fn); 00915 return result_value; 00916 }
Definition at line 941 of file cmuPort.c.
00946 { 00947 int i; 00948 bdd_t *g; 00949 boolean result; 00950 00951 arrayForEachItem(bdd_t *, g_array, i, g) { 00952 result = bdd_leq(f, g, f_phase, g_phase); 00953 if (g_phase) { 00954 if (!result) 00955 return(0); 00956 } else { 00957 if (result) 00958 return(1); 00959 } 00960 } 00961 if (g_phase) 00962 return(1); 00963 else 00964 return(0); 00965 }
boolean bdd_lequal_mod_care_set | ( | bdd_t * | f, | |
bdd_t * | g, | |||
boolean | f_phase, | |||
boolean | g_phase, | |||
bdd_t * | careSet | |||
) |
bdd_node* bdd_make_bdd_from_zdd_cover | ( | bdd_manager * | mgr, | |
bdd_node * | node | |||
) |
Definition at line 664 of file cmuPort.c.
00665 { 00666 bdd_t *operand; 00667 struct bdd_ *result, *temp; 00668 bdd_t *final; 00669 int i; 00670 00671 result = cmu_bdd_identity(f->mgr, f->node); 00672 for (i = 0; i < array_n(bddArray); i++) { 00673 operand = array_fetch(bdd_t *, bddArray, i); 00674 temp = cmu_bdd_reduce(f->mgr, result, operand->node); 00675 if (temp == NULL) { 00676 cmu_bdd_free(f->mgr, result); 00677 return(NULL); 00678 } 00679 cmu_bdd_free(f->mgr, result); 00680 result = temp; 00681 } 00682 00683 final = bdd_construct_bdd_t(f->mgr, result); 00684 00685 if (bdd_size(final) < bdd_size(f)){ 00686 return final; 00687 } 00688 else{ 00689 bdd_free(final); 00690 return bdd_dup(f); 00691 } 00692 }
bdd_t* bdd_multiway_and | ( | bdd_manager * | manager, | |
array_t * | bddArray | |||
) |
Definition at line 313 of file cmuPort.c.
00314 { 00315 int i; 00316 bdd temp, result; 00317 bdd_t *operand; 00318 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00319 result = cmu_bdd_one(mgr); 00320 for (i=0; i<array_n(bddArray); i++){ 00321 operand = array_fetch(bdd_t *, bddArray, i); 00322 temp = cmu_bdd_and(mgr, result, operand->node); 00323 cmu_bdd_free(mgr, result); 00324 result = temp; 00325 } 00326 return bdd_construct_bdd_t(mgr, result); 00327 }
bdd_t* bdd_multiway_or | ( | bdd_manager * | manager, | |
array_t * | bddArray | |||
) |
Definition at line 330 of file cmuPort.c.
00331 { 00332 int i; 00333 bdd temp, result; 00334 bdd_t *operand; 00335 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00336 result = cmu_bdd_zero(mgr); 00337 for (i=0; i<array_n(bddArray); i++){ 00338 operand = array_fetch(bdd_t *, bddArray, i); 00339 temp = cmu_bdd_or(mgr, result, operand->node); 00340 cmu_bdd_free(mgr, result); 00341 result = temp; 00342 } 00343 return bdd_construct_bdd_t(mgr, result); 00344 }
bdd_t* bdd_multiway_xor | ( | bdd_manager * | manager, | |
array_t * | bddArray | |||
) |
Definition at line 347 of file cmuPort.c.
00348 { 00349 int i; 00350 bdd temp, result; 00351 bdd_t *operand; 00352 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00353 result = cmu_bdd_zero(mgr); 00354 for (i=0; i<array_n(bddArray); i++){ 00355 operand = array_fetch(bdd_t *, bddArray, i); 00356 temp = cmu_bdd_xor(mgr, result, operand->node); 00357 cmu_bdd_free(mgr, result); 00358 result = temp; 00359 } 00360 return bdd_construct_bdd_t(mgr, result); 00361 }
Function********************************************************************
Synopsis []
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 1285 of file cmuPort.c.
01286 { 01287 struct bdd_manager_ *manager; 01288 if (f == NIL(bdd_t)) { 01289 fail("bdd_new_var_block: invalid BDD"); 01290 } 01291 manager = f->mgr; 01292 return (bdd_block *)cmu_bdd_new_var_block(manager, f->node, length); 01293 }
int bdd_node_read_index | ( | bdd_node * | f | ) |
int bdd_node_size | ( | bdd_node * | f | ) |
Definition at line 696 of file cmuPort.c.
00697 { 00698 return bdd_construct_bdd_t(f->mgr, cmu_bdd_not(f->mgr, f->node)); 00699 }
unsigned int bdd_num_vars | ( | bdd_manager * | manager | ) |
Definition at line 1108 of file cmuPort.c.
01109 { 01110 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 01111 return (cmu_bdd_vars(mgr)); 01112 }
int bdd_num_zdd_vars | ( | bdd_manager * | mgr | ) |
bdd_t* bdd_one | ( | bdd_manager * | manager | ) |
Definition at line 702 of file cmuPort.c.
00703 { 00704 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00705 return bdd_construct_bdd_t(mgr, cmu_bdd_one(mgr)); 00706 }
Definition at line 709 of file cmuPort.c.
00714 { 00715 struct bdd_ *temp1, *temp2; 00716 bdd_t *result; 00717 struct bdd_manager_ *mgr; 00718 00719 mgr = f->mgr; 00720 temp1 = ( (f_phase == TRUE) ? cmu_bdd_identity(mgr, f->node) : cmu_bdd_not(mgr, f->node)); 00721 temp2 = ( (g_phase == TRUE) ? cmu_bdd_identity(mgr, g->node) : cmu_bdd_not(mgr, g->node)); 00722 result = bdd_construct_bdd_t(mgr, cmu_bdd_or(mgr, temp1, temp2)); 00723 cmu_bdd_free(mgr, temp1); 00724 cmu_bdd_free(mgr, temp2); 00725 return result; 00726 }
array_t* bdd_pairwise_and | ( | bdd_manager * | manager, | |
array_t * | bddArray1, | |||
array_t * | bddArray2 | |||
) |
Definition at line 388 of file cmuPort.c.
00390 { 00391 int i; 00392 bdd_t *operand1, *operand2; 00393 array_t *resultArray; 00394 bdd result; 00395 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00396 if (array_n(bddArray1) != array_n(bddArray2)){ 00397 fprintf(stderr, "bdd_pairwise_and: Arrays of different lengths.\n"); 00398 return NIL(array_t); 00399 } 00400 resultArray = array_alloc(bdd_t *, 0); 00401 for (i=0; i<array_n(bddArray1); i++){ 00402 operand1 = array_fetch(bdd_t *, bddArray1, i); 00403 operand2 = array_fetch(bdd_t *, bddArray2, i); 00404 result = cmu_bdd_and(mgr, operand1->node, operand2->node); 00405 array_insert_last(bdd_t*, resultArray, 00406 bdd_construct_bdd_t(mgr, result)); 00407 } 00408 return resultArray; 00409 }
array_t* bdd_pairwise_or | ( | bdd_manager * | manager, | |
array_t * | bddArray1, | |||
array_t * | bddArray2 | |||
) |
Definition at line 364 of file cmuPort.c.
00366 { 00367 int i; 00368 bdd_t *operand1, *operand2; 00369 array_t *resultArray; 00370 bdd result; 00371 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00372 if (array_n(bddArray1) != array_n(bddArray2)){ 00373 fprintf(stderr, "bdd_pairwise_or: Arrays of different lengths.\n"); 00374 return NIL(array_t); 00375 } 00376 resultArray = array_alloc(bdd_t *, 0); 00377 for (i=0; i<array_n(bddArray1); i++){ 00378 operand1 = array_fetch(bdd_t *, bddArray1, i); 00379 operand2 = array_fetch(bdd_t *, bddArray2, i); 00380 result = cmu_bdd_or(mgr, operand1->node, operand2->node); 00381 array_insert_last(bdd_t*, resultArray, 00382 bdd_construct_bdd_t(mgr, result)); 00383 } 00384 return resultArray; 00385 }
array_t* bdd_pairwise_xor | ( | bdd_manager * | manager, | |
array_t * | bddArray1, | |||
array_t * | bddArray2 | |||
) |
Definition at line 412 of file cmuPort.c.
00414 { 00415 int i; 00416 bdd_t *operand1, *operand2; 00417 array_t *resultArray; 00418 bdd result; 00419 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00420 if (array_n(bddArray1) != array_n(bddArray2)){ 00421 fprintf(stderr, "bdd_pairwise_xor: Arrays of different lengths.\n"); 00422 return NIL(array_t); 00423 } 00424 resultArray = array_alloc(bdd_t *, 0); 00425 for (i=0; i<array_n(bddArray1); i++){ 00426 operand1 = array_fetch(bdd_t *, bddArray1, i); 00427 operand2 = array_fetch(bdd_t *, bddArray2, i); 00428 result = cmu_bdd_xor(mgr, operand1->node, operand2->node); 00429 array_insert_last(bdd_t*, resultArray, 00430 bdd_construct_bdd_t(mgr, result)); 00431 } 00432 return resultArray; 00433 }
void* bdd_pointer | ( | bdd_t * | f | ) |
void bdd_print | ( | bdd_t * | f | ) |
Definition at line 1115 of file cmuPort.c.
01116 { 01117 cmu_bdd_print_bdd(f->mgr, f->node, bdd_naming_fn_none, bdd_terminal_id_fn_none, (pointer) 0, stdout); 01118 }
int bdd_print_apa_minterm | ( | FILE * | fp, | |
bdd_t * | f, | |||
int | nvars, | |||
int | precision | |||
) |
int bdd_print_cover | ( | bdd_t * | f | ) |
int bdd_print_minterm | ( | bdd_t * | f | ) |
void bdd_print_stats | ( | bdd_manager * | manager, | |
FILE * | file | |||
) |
Definition at line 1121 of file cmuPort.c.
01122 { 01123 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 01124 cmu_bdd_stats(mgr, file); 01125 }
int bdd_ptrhash | ( | bdd_t * | f, | |
int | size | |||
) |
bdd_node* bdd_read_background | ( | bdd_manager * | mgr | ) |
BDD_VALUE_TYPE bdd_read_epsilon | ( | bdd_manager * | mgr | ) |
bdd_node* bdd_read_logic_zero | ( | bdd_manager * | mgr | ) |
int bdd_read_next_reordering | ( | bdd_manager * | mgr | ) |
int bdd_read_node_count | ( | bdd_manager * | mgr | ) |
bdd_node* bdd_read_one | ( | bdd_manager * | mgr | ) |
int bdd_read_pair_index | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_read_peak_live_node | ( | bdd_manager * | mgr | ) |
long bdd_read_peak_memory | ( | bdd_manager * | mgr | ) |
bdd_node* bdd_read_plus_infinity | ( | bdd_manager * | mgr | ) |
int bdd_read_reordered_field | ( | bdd_manager * | mgr | ) |
int bdd_read_reorderings | ( | bdd_manager * | mgr | ) |
int bdd_read_zdd_level | ( | bdd_manager * | mgr, | |
int | index | |||
) |
bdd_node* bdd_read_zero | ( | bdd_manager * | mgr | ) |
void bdd_realign_disable | ( | bdd_manager * | mgr | ) |
void bdd_realign_enable | ( | bdd_manager * | mgr | ) |
int bdd_realignment_enabled | ( | bdd_manager * | mgr | ) |
void bdd_recursive_deref | ( | bdd_manager * | mgr, | |
bdd_node * | f | |||
) |
void bdd_recursive_deref_zdd | ( | bdd_manager * | mgr, | |
bdd_node * | f | |||
) |
void bdd_ref | ( | bdd_node * | fn | ) |
int bdd_remove_hook | ( | bdd_manager * | mgr, | |
int(*)(bdd_manager *, char *, void *) | procedure, | |||
bdd_hook_type_t | whichHook | |||
) |
void bdd_reorder | ( | bdd_manager * | manager | ) |
Definition at line 1238 of file cmuPort.c.
01239 { 01240 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 01241 cmu_bdd_reorder(mgr); 01242 }
bdd_reorder_verbosity_t bdd_reordering_reporting | ( | bdd_manager * | mgr | ) |
Definition at line 1516 of file cmuPort.c.
01517 { 01518 return BDD_REORDER_VERBOSITY_DEFAULT; 01519 }
int bdd_reordering_status | ( | bdd_manager * | mgr, | |
bdd_reorder_type_t * | method | |||
) |
int bdd_reordering_zdd_status | ( | bdd_manager * | mgr, | |
bdd_reorder_type_t * | method | |||
) |
int bdd_reset_var_to_be_grouped | ( | bdd_manager * | mgr, | |
int | index | |||
) |
void bdd_set_background | ( | bdd_manager * | mgr, | |
bdd_node * | f | |||
) |
void bdd_set_gc_mode | ( | bdd_manager * | manager, | |
boolean | no_gc | |||
) |
Definition at line 1203 of file cmuPort.c.
01204 { 01205 cmu_bdd_warning("bdd_set_gc_mode: translated to no-op in CMU package"); 01206 }
void bdd_set_next_reordering | ( | bdd_manager * | mgr, | |
int | next | |||
) |
int bdd_set_ns_var | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_set_pair_index | ( | bdd_manager * | mgr, | |
int | index, | |||
int | pairIndex | |||
) |
int bdd_set_parameters | ( | bdd_manager * | mgr, | |
avl_tree * | valueTable, | |||
FILE * | file | |||
) |
Function********************************************************************
Synopsis [Sets the internal parameters of the package to the given values.]
SideEffects []
int bdd_set_pi_var | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_set_ps_var | ( | bdd_manager * | mgr, | |
int | index | |||
) |
void bdd_set_reordered_field | ( | bdd_manager * | mgr, | |
int | n | |||
) |
int bdd_set_var_hard_group | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_set_var_to_be_grouped | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_set_var_to_be_ungrouped | ( | bdd_manager * | mgr, | |
int | index | |||
) |
int bdd_shuffle_heap | ( | bdd_manager * | mgr, | |
int * | permut | |||
) |
int bdd_size | ( | bdd_t * | f | ) |
Definition at line 1145 of file cmuPort.c.
01146 { 01147 return ((int) cmu_bdd_size(f->mgr, f->node, 1)); 01148 }
long bdd_size_multiple | ( | array_t * | bdd_array | ) |
Definition at line 1157 of file cmuPort.c.
01158 { 01159 long result; 01160 struct bdd_ **vector_bdd; 01161 bdd_t *f; 01162 int i; 01163 struct bdd_manager_ *mgr; 01164 01165 if ((bdd_array == NIL(array_t)) || (array_n(bdd_array) == 0)) 01166 return 0; 01167 01168 f = array_fetch(bdd_t*, bdd_array, 0); 01169 mgr = f->mgr; 01170 01171 vector_bdd = (struct bdd_ **) 01172 malloc((array_n(bdd_array)+1)*sizeof(struct bdd_ *)); 01173 01174 for(i=0; i<array_n(bdd_array);i++){ 01175 f = array_fetch(bdd_t*, bdd_array, i); 01176 vector_bdd[i] = f->node; 01177 } 01178 vector_bdd[array_n(bdd_array)] = 0; 01179 result = cmu_bdd_size_multiple(mgr, vector_bdd,1); 01180 FREE(vector_bdd); 01181 return result; 01182 }
Definition at line 729 of file cmuPort.c.
00732 { 00733 int num_vars, i; 00734 bdd_t *fn, *result; 00735 struct bdd_ **assoc; 00736 struct bdd_manager_ *mgr; 00737 00738 num_vars = array_n(smoothing_vars); 00739 if (num_vars <= 0) { 00740 cmu_bdd_fatal("bdd_smooth: no smoothing variables"); 00741 } 00742 00743 assoc = ALLOC(struct bdd_ *, num_vars+1); 00744 00745 for (i = 0; i < num_vars; i++) { 00746 fn = array_fetch(bdd_t *, smoothing_vars, i); 00747 assoc[i] = fn->node; 00748 } 00749 assoc[num_vars] = (struct bdd_ *) 0; 00750 00751 mgr = f->mgr; 00752 cmu_bdd_temp_assoc(mgr, assoc, 0); 00753 (void) cmu_bdd_assoc(mgr, -1); /* set the temp association as the current association */ 00754 00755 result = bdd_construct_bdd_t(mgr, cmu_bdd_exists(mgr, f->node)); 00756 FREE(assoc); 00757 return result; 00758 }
Definition at line 2737 of file cmuPort.c.
02738 { 02739 int i; 02740 bdd_t *var, *res; 02741 array_t *smoothingVars; 02742 var_set_t *supportVarSet; 02743 02744 smoothingVars = array_alloc(bdd_t *, 0); 02745 supportVarSet = bdd_get_support(f); 02746 for (i = 0; i < supportVarSet->n_elts; i++) { 02747 if (var_set_get_elt(supportVarSet, i) == 1) { 02748 var = bdd_var_with_index(f->mgr, i); 02749 array_insert_last(bdd_t *, smoothingVars, var); 02750 } 02751 } 02752 var_set_free(supportVarSet); 02753 02754 res = bdd_smooth(f, smoothingVars); 02755 02756 for (i = 0; i < array_n(smoothingVars); i++) { 02757 var = array_fetch(bdd_t *, smoothingVars, i); 02758 bdd_free(var); 02759 } 02760 array_free(smoothingVars); 02761 return res; 02762 }
bdd_node* bdd_split_set | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node ** | x, | |||
int | n, | |||
double | m | |||
) |
bdd_manager* bdd_start | ( | int | nvariables | ) |
Definition at line 140 of file cmuPort.c.
00141 { 00142 struct bdd_manager_ *mgr; 00143 int i; 00144 bdd_external_hooks *hooks; 00145 00146 mgr = cmu_bdd_init(); /*no args*/ 00147 00148 /* 00149 * Calls to UCB bdd_get_variable are translated into cmu_bdd_var_with_id calls. However, 00150 * cmu_bdd_var_with_id assumes that single variable BDDs have already been created for 00151 * all the variables that we wish to access. Thus, following, we explicitly create n 00152 * variables. We do not care about the return value of cmu_bdd_new_var_last; in the 00153 * CMU package, the single variable BDDs are NEVER garbage collected. 00154 */ 00155 for (i = 0; i < nvariables; i++) { 00156 (void) cmu_bdd_new_var_last(mgr); 00157 } 00158 00159 hooks = ALLOC(bdd_external_hooks, 1); 00160 hooks->mdd = hooks->network = hooks->undef1 = (char *) 0; 00161 mgr->hooks = (char *) hooks; /* new field added to CMU manager */ 00162 00163 return (bdd_manager *) mgr; 00164 }
Definition at line 761 of file cmuPort.c.
00765 { 00766 int num_old_vars, num_new_vars, i; 00767 bdd_t *fn_old, *fn_new, *result; 00768 struct bdd_ **assoc; 00769 struct bdd_manager_ *mgr; 00770 00771 num_old_vars = array_n(old_array); 00772 num_new_vars = array_n(new_array); 00773 if (num_old_vars != num_new_vars) { 00774 cmu_bdd_fatal("bdd_substitute: mismatch of number of new and old variables"); 00775 } 00776 00777 assoc = ALLOC(struct bdd_ *, 2*(num_old_vars+1)); 00778 00779 for (i = 0; i < num_old_vars; i++) { 00780 fn_old = array_fetch(bdd_t *, old_array, i); 00781 fn_new = array_fetch(bdd_t *, new_array, i); 00782 assoc[2*i] = fn_old->node; 00783 assoc[2*i+1] = fn_new->node; 00784 } 00785 assoc[2*num_old_vars] = (struct bdd_ *) 0; 00786 assoc[2*num_old_vars+1] = (struct bdd_ *) 0; /* not sure if we need this second 0 */ 00787 00788 mgr = f->mgr; 00789 cmu_bdd_temp_assoc(mgr, assoc, 1); 00790 (void) cmu_bdd_assoc(mgr, -1); /* set the temp association as the current association */ 00791 00792 result = bdd_construct_bdd_t(mgr, cmu_bdd_substitute(mgr, f->node)); 00793 FREE(assoc); 00794 return result; 00795 }
Definition at line 798 of file cmuPort.c.
00802 { 00803 int i; 00804 bdd_t *f, *new_; 00805 array_t *substitute_array = array_alloc(bdd_t *, 0); 00806 00807 arrayForEachItem(bdd_t *, f_array, i, f) { 00808 new_ = bdd_substitute(f, old_array, new_array); 00809 array_insert_last(bdd_t *, substitute_array, new_); 00810 } 00811 return(substitute_array); 00812 }
Definition at line 821 of file cmuPort.c.
00822 { 00823 return bdd_construct_bdd_t(f->mgr, cmu_bdd_then(f->mgr, f->node)); 00824 }
Definition at line 827 of file cmuPort.c.
00828 { 00829 return bdd_construct_bdd_t(f->mgr, cmu_bdd_if(f->mgr, f->node)); 00830 }
bdd_variableId bdd_top_var_id | ( | bdd_t * | f | ) |
Definition at line 1185 of file cmuPort.c.
01186 { 01187 return ((bdd_variableId) (cmu_bdd_if_id(f->mgr, f->node) - 1)); 01188 }
long bdd_top_var_level | ( | bdd_manager * | manager, | |
bdd_t * | fn | |||
) |
Definition at line 1262 of file cmuPort.c.
01263 { 01264 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 01265 return cmu_bdd_if_index(mgr, fn->node); 01266 }
int bdd_unbind_var | ( | bdd_manager * | mgr, | |
int | index | |||
) |
bdd_node* bdd_unique_inter | ( | bdd_manager * | mgr, | |
int | v, | |||
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_node* bdd_unique_inter_ivo | ( | bdd_manager * | mgr, | |
int | v, | |||
bdd_node * | f, | |||
bdd_node * | g | |||
) |
int bdd_var_decomp | ( | bdd_t * | f, | |
bdd_partition_type_t | partType, | |||
bdd_t *** | conjArray | |||
) |
bdd_t* bdd_var_with_index | ( | bdd_manager * | manager, | |
int | index | |||
) |
Definition at line 1296 of file cmuPort.c.
01297 { 01298 return bdd_construct_bdd_t(manager, 01299 cmu_bdd_var_with_index((cmu_bdd_manager) manager, 01300 index)); 01301 }
bdd_node* bdd_xeqy | ( | bdd_manager * | mgr, | |
int | N, | |||
bdd_node ** | x, | |||
bdd_node ** | y | |||
) |
bdd_node* bdd_xgty | ( | bdd_manager * | mgr, | |
int | N, | |||
bdd_node ** | x, | |||
bdd_node ** | y | |||
) |
Definition at line 833 of file cmuPort.c.
00834 { 00835 return bdd_construct_bdd_t(f->mgr, cmu_bdd_xnor(f->mgr, f->node, g->node)); 00836 }
Definition at line 839 of file cmuPort.c.
00840 { 00841 return bdd_construct_bdd_t(f->mgr, cmu_bdd_xor(f->mgr, f->node, g->node)); 00842 }
bdd_node* bdd_zdd_complement | ( | bdd_manager * | mgr, | |
bdd_node * | node | |||
) |
int bdd_zdd_count | ( | bdd_manager * | mgr, | |
bdd_node * | f | |||
) |
bdd_node* bdd_zdd_diff | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_node* bdd_zdd_diff_recur | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
int bdd_zdd_get_cofactors3 | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
int | v, | |||
bdd_node ** | f1, | |||
bdd_node ** | f0, | |||
bdd_node ** | fd | |||
) |
bdd_node* bdd_zdd_get_node | ( | bdd_manager * | mgr, | |
int | id, | |||
bdd_node * | g, | |||
bdd_node * | h | |||
) |
bdd_node* bdd_zdd_isop | ( | bdd_manager * | mgr, | |
bdd_node * | L, | |||
bdd_node * | U, | |||
bdd_node ** | zdd_I | |||
) |
bdd_node* bdd_zdd_isop_recur | ( | bdd_manager * | mgr, | |
bdd_node * | L, | |||
bdd_node * | U, | |||
bdd_node ** | zdd_I | |||
) |
bdd_node* bdd_zdd_product | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_node* bdd_zdd_product_recur | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
void bdd_zdd_realign_disable | ( | bdd_manager * | mgr | ) |
void bdd_zdd_realign_enable | ( | bdd_manager * | mgr | ) |
int bdd_zdd_realignment_enabled | ( | bdd_manager * | mgr | ) |
bdd_node* bdd_zdd_union | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
int bdd_zdd_vars_from_bdd_vars | ( | bdd_manager * | mgr, | |
int | multiplicity | |||
) |
bdd_node* bdd_zdd_weak_div | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_node* bdd_zdd_weak_div_recur | ( | bdd_manager * | mgr, | |
bdd_node * | f, | |||
bdd_node * | g | |||
) |
bdd_t* bdd_zero | ( | bdd_manager * | manager | ) |
Definition at line 845 of file cmuPort.c.
00846 { 00847 cmu_bdd_manager mgr = (cmu_bdd_manager) manager; 00848 return bdd_construct_bdd_t(mgr, cmu_bdd_zero(mgr)); 00849 }