33 int * pVar2Form,
int * pForm2Var,
DdNode * pbCube0[],
DdNode * pbCube1[] );
58 int i, iVar, iLev, * pPermute;
59 DdNode ** pbCube0, ** pbCube1;
60 DdNode * bFunc, * bRes, * bTemp;
73 for ( i = 0; i < pNode->
nDecs; i++ )
76 for ( bTemp = pNode->
pDecs[i]->
S; bTemp !=
b1; bTemp =
cuddT(bTemp) )
79 pPermute[bTemp->
index] = iVar;
94 for ( i = 0; i < pNode->
nDecs; i++ )
108 for ( i = 0; i < pNode->
nDecs; i++ )
115 // permute the function once again
116 // in such a way that i-th var stood for i-th formal input
117 for ( i = 0; i < dd->size; i++ )
119 for ( i = 0; i < pNode->nDecs; i++ )
120 pPermute[dd->invperm[i]] = i;
121 bRes = Cudd_bddPermute( dd, bTemp = bRes, pPermute ); Cudd_Ref( bRes );
122 Cudd_RecursiveDeref( dd, bTemp );
147 int * pVar2Form,
int * pForm2Var,
DdNode * pbCube0[],
DdNode * pbCube1[] )
149 DdNode * bFR, * bF0, * bF1;
150 DdNode * bRes0, * bRes1, * bRes;
160 if (
st__lookup( pCache, (
char *)bF, (
char **)&bRes ) )
165 iForm = pVar2Form[bFR->
index];
182 st__insert( pCache, (
char *)bF, (
char *)bRes );
224 if ( LevelF <= LevelC )
242 if ( LevelC <= LevelF )
281 DdNode * bCof0, * bCof1, * bCube0, * bCube1, * bNewFunc, * bTemp;
297 bNewFunc = pNode->
G;
Cudd_Ref( bNewFunc );
299 for ( i = 0; i < pNode->
nDecs; i++ )
324 for ( i = 0; i < pNode->
nDecs; i++ )
void st__free_table(st__table *table)
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
int st__insert(st__table *table, const char *key, char *value)
void Cudd_Deref(DdNode *node)
#define MAXINPUTS
INCLUDES ///.
#define Cudd_Regular(node)
int st__ptrcmp(const char *, const char *)
#define ABC_ALLOC(type, num)
DdNode * Cudd_bddIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
st__table * st__init_table(st__compare_func_type compare, st__hash_func_type hash)
DdNode * Cudd_Cofactor(DdManager *dd, DdNode *f, DdNode *g)
DdNode * Cudd_bddPermute(DdManager *manager, DdNode *node, int *permut)
DdNode * Dsd_TreeGetPrimeFunction(DdManager *dd, Dsd_Node_t *pNode)
FUNCTION DEFINITIONS ///.
static Dds_Cache_t * pCache
#define ABC_NAMESPACE_IMPL_END
#define cuddIsConstant(node)
#define Dsd_IsComplement(p)
MACRO DEFINITIONS ///.
#define ABC_NAMESPACE_IMPL_START
int st__lookup(st__table *table, const char *key, char **value)
static ABC_NAMESPACE_IMPL_START DdNode * Extra_dsdRemap(DdManager *dd, DdNode *bFunc, st__table *pCache, int *pVar2Form, int *pForm2Var, DdNode *pbCube0[], DdNode *pbCube1[])
FUNCTION DECLARATIONS ///.
int st__ptrhash(const char *, int)
static DdNode * Extra_bddNodePointedByCube(DdManager *dd, DdNode *bF, DdNode *bC)