src/mdd/mdd_search.c File Reference

#include "mdd.h"
Include dependency graph for mdd_search.c:

Go to the source code of this file.

Functions

static void mdd_pr_cubes (mdd_manager *mgr)
static void mdd_pr_minterms (mdd_manager *mgr)
void mdd_search (mdd_manager *mgr, bdd_t *top, int phase, boolean minterms)

Function Documentation

static void mdd_pr_cubes ( mdd_manager mgr  )  [static]

Definition at line 19 of file mdd_search.c.

00020 {
00021     int i, j;
00022     array_t *mvar_list = mdd_ret_mvar_list(mgr);
00023     mvar_type mv;
00024 
00025     for (i=0; i<array_n(mvar_list); i++) {
00026         mv = array_fetch(mvar_type, mvar_list, i);
00027         (void) printf("\n%s = ", mv.name);
00028         for (j=0; j<mv.encode_length; j++)
00029             (void) printf("%d",mv.encoding[j]);
00030     }
00031     (void) printf("\n");
00032 }

static void mdd_pr_minterms ( mdd_manager mgr  )  [static]

Definition at line 35 of file mdd_search.c.

00036 {
00037         /* not implemented yet */
00038 
00039     int i, j;
00040     mvar_type mv;
00041     array_t *mvar_list = mdd_ret_mvar_list(mgr);
00042 
00043     for (i=0; i<array_n(mvar_list); i++) {
00044         mv = array_fetch(mvar_type, mvar_list, i);
00045         (void) printf("\n%s = ", mv.name);
00046         for (j=0; j<mv.encode_length; j++)
00047             (void) printf("%d",mv.encoding[j]);
00048     }
00049     (void) printf("\n");
00050 }

void mdd_search ( mdd_manager mgr,
bdd_t top,
int  phase,
boolean  minterms 
)

Definition at line 53 of file mdd_search.c.

00058 {
00059     int is_complemented;
00060     bdd_t *child, *top_uncomp;
00061     
00062     if (mdd_is_tautology(top,1)) {
00063         if (phase == 1) {
00064             if (minterms == 1) mdd_pr_minterms(mgr);    
00065             else mdd_pr_cubes(mgr);     
00066         }
00067         return;
00068     }
00069     if (mdd_is_tautology(top,0)) {
00070         if (phase == 0) {
00071             if (minterms == 1) mdd_pr_minterms(mgr);    
00072             else mdd_pr_cubes(mgr);     
00073         }
00074         return;
00075     }
00076 
00077     (void)bdd_get_node(top,&is_complemented);
00078 
00079     if (is_complemented != 0) { 
00080         phase = toggle(phase);
00081     }
00082 
00083     (void) mdd_mark(mgr, top, 1);
00084 
00085     if (is_complemented) top_uncomp = bdd_not(top); 
00086     else top_uncomp = mdd_dup(top);
00087 
00088     child = bdd_then(top_uncomp);
00089     mdd_search(mgr, child, phase, minterms);
00090     mdd_free(child);
00091 
00092 
00093     child = bdd_else(top_uncomp);
00094     (void) mdd_mark(mgr, top, 0);
00095     mdd_search(mgr, child, phase, minterms);
00096     mdd_unmark(mgr, top);
00097 
00098     mdd_free(top_uncomp);
00099     mdd_free(child);
00100     return;
00101 }


Generated on Tue Jan 12 13:57:26 2010 for glu-2.2 by  doxygen 1.6.1