72 if (
pCache->nTableSize != nRequested )
78 pCache->nTableSize = nRequested;
117 for ( i = 0; i <
pCache->nTableSize; i++ )
118 pCache->pTable[0].bX[0] = NULL;
164 if ( bC1 ==
b1 && bC2 ==
b1 )
return (
int)( bF1 == bF2 );
183 if (
pCache->pTable[HKey].bX[0] == bF1 &&
184 pCache->pTable[HKey].bX[1] == bF2 &&
185 pCache->pTable[HKey].bX[2] == bC1 &&
186 pCache->pTable[HKey].bX[3] == bC2 )
189 return (
int)(ABC_PTRUINT_T)
pCache->pTable[HKey].bX[4];
196 DdNode * bA[4] = { bF1, bF2, bC1, bC2 };
198 int CurLevel[4] = {
cuddI(dd,bAR[0]->index),
cuddI(dd,bAR[1]->index),
cuddI(dd,bAR[2]->index),
cuddI(dd,bAR[3]->index) };
202 DdNode * bF1next, * bF2next, * bC1next, * bC2next;
207 for ( i = 0; i < 4; i++ )
208 if ( TopLevel > CurLevel[i] )
209 TopLevel = CurLevel[i];
212 for ( i = 0; i < 4; i++ )
213 if ( TopLevel == CurLevel[i] )
215 if ( bA[i] != bAR[i] )
222 bE[i] =
cuddE(bAR[i]);
223 bT[i] =
cuddT(bAR[i]);
227 bE[i] = bT[i] = bA[i];
235 if ( TopLevel == CurLevel[2] && TopLevel == CurLevel[3] )
261 else if ( TopLevel == CurLevel[2] && TopLevel != CurLevel[3] )
278 else if ( TopLevel != CurLevel[2] && TopLevel == CurLevel[3] )
306 for ( i = 0; i < 4; i++ )
307 pCache->pTable[HKey].bX[i] = bA[i];
308 pCache->pTable[HKey].bX[4] = (
DdNode*)(ABC_PTRUINT_T)RetValue;
static int Abc_PrimeCudd(unsigned int p)
#define Cudd_Regular(node)
void Dsd_CheckCacheAllocate(int nEntries)
FUNCTION DEFINITIONS ///.
#define ABC_ALLOC(type, num)
int Dsd_CheckRootFunctionIdentity(DdManager *dd, DdNode *bF1, DdNode *bF2, DdNode *bC1, DdNode *bC2)
typedefABC_NAMESPACE_IMPL_START struct Dsd_Cache_t_ Dds_Cache_t
DECLARATIONS ///.
void Dsd_CheckCacheClear()
static Dds_Cache_t * pCache
#define ABC_NAMESPACE_IMPL_END
static int Dsd_CheckRootFunctionIdentity_rec(DdManager *dd, DdNode *bF1, DdNode *bF2, DdNode *bC1, DdNode *bC2)
void Dsd_CheckCacheDeallocate()
#define ABC_NAMESPACE_IMPL_START
int Cudd_bddLeq(DdManager *dd, DdNode *f, DdNode *g)