void BddBuilder::dotDumpCZdd(DdNode ** ddNodes){ char filename[128]; DdNode * dumpdd[1]; char * dumpname[1]; int res; for(int i=0 ; i<__outputWireCnt ; ++i){ if(ddNodes[i] != NULL){ sprintf(filename, "./dotdump/dumpC_zdd_%s.dot", __ppOutputNodesNames[i]); FILE * fp = fopen(filename, "w"); dumpdd[0] = Cudd_zddPortFromBdd(__pddManager, ddNodes[i]); dumpname[0] = __ppOutputNodesNames[i]; res = Cudd_zddDumpDot(__pddManager, 1, dumpdd, __ppInputNodesNames, dumpname, fp); fclose(fp); if(res == 1) printf("ZDD DOT dump for C's %s completed.\n", __ppOutputNodesNames[i]); else printf("ZDD DOT dump for C's %s failed.\n", __ppOutputNodesNames[i]); } else printf("ZDD DOT dump for C's %s not executed: A = B\n", __ppOutputNodesNames[i]); } }
/* Convert function to ZDD. This should only be done after all BDD variables have been declared */ static DdNode *zconvert(shadow_mgr mgr, DdNode *n) { if (mgr->nzvars < mgr->nvars) { Cudd_zddVarsFromBddVars(mgr->bdd_manager, 1); mgr->nzvars = mgr->nvars; } DdNode *zn = Cudd_zddPortFromBdd(mgr->bdd_manager, n); reference_dd(mgr, zn); return zn; }