89 static int s_FPrimes[128] = {
90 1009, 1049, 1093, 1151, 1201, 1249, 1297, 1361, 1427, 1459,
91 1499, 1559, 1607, 1657, 1709, 1759, 1823, 1877, 1933, 1997,
92 2039, 2089, 2141, 2213, 2269, 2311, 2371, 2411, 2467, 2543,
93 2609, 2663, 2699, 2741, 2797, 2851, 2909, 2969, 3037, 3089,
94 3169, 3221, 3299, 3331, 3389, 3461, 3517, 3557, 3613, 3671,
95 3719, 3779, 3847, 3907, 3943, 4013, 4073, 4129, 4201, 4243,
96 4289, 4363, 4441, 4493, 4549, 4621, 4663, 4729, 4793, 4871,
97 4933, 4973, 5021, 5087, 5153, 5227, 5281, 5351, 5417, 5471,
98 5519, 5573, 5651, 5693, 5749, 5821, 5861, 5923, 6011, 6073,
99 6131, 6199, 6257, 6301, 6353, 6397, 6481, 6563, 6619, 6689,
100 6737, 6803, 6863, 6917, 6977, 7027, 7109, 7187, 7237, 7309,
101 7393, 7477, 7523, 7561, 7607, 7681, 7727, 7817, 7877, 7933,
102 8011, 8039, 8059, 8081, 8093, 8111, 8123, 8147
112 for ( k = 0; k <
nWords; k++ )
113 uHash ^= ~pSim[k] * s_FPrimes[k & 0x7F];
117 for ( k = 0; k <
nWords; k++ )
118 uHash ^= pSim[k] * s_FPrimes[k & 0x7F];
143 for ( k = 0; k <
nWords; k++ )
149 for ( k = 0; k <
nWords; k++ )
170 unsigned * pSim0, * pSim1;
177 for ( k = 0; k <
nWords; k++ )
178 if ( pSim0[k] != ~pSim1[k] )
183 for ( k = 0; k <
nWords; k++ )
184 if ( pSim0[k] != pSim1[k] )
203 unsigned * pSim, * pSim0, * pSim1;
211 memset( pSim, 0xff,
sizeof(
unsigned) * nWords );
217 for ( k = 0; k <
nWords; k++ )
231 for ( k = 0; k <
nWords; k++ )
232 pSim[k] = ~pSim0[k] & ~pSim1[k];
236 for ( k = 0; k <
nWords; k++ )
237 pSim[k] = ~pSim0[k] & pSim1[k];
241 for ( k = 0; k <
nWords; k++ )
242 pSim[k] = pSim0[k] & ~pSim1[k];
246 for ( k = 0; k <
nWords; k++ )
247 pSim[k] = pSim0[k] & pSim1[k];
279 for ( i = 0; i < 7; i++ )
Dch_Cla_t * Dch_CreateCandEquivClasses(Aig_Man_t *pAig, int nWords, int fVerbose)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
int Dch_NodesAreEqualCex(void *p, Aig_Obj_t *pObj0, Aig_Obj_t *pObj1)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
int Dch_NodeIsConstCex(void *p, Aig_Obj_t *pObj)
FUNCTION DEFINITIONS ///.
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
int Dch_ClassesRefine(Dch_Cla_t *p)
unsigned Aig_ManRandom(int fReset)
unsigned Dch_NodeHash(void *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjFanin1(Aig_Obj_t *pObj)
#define Aig_ManForEachNode(p, pObj, i)
static unsigned Dch_ObjRandomSim()
int Dch_NodesAreEqual(void *p, Aig_Obj_t *pObj0, Aig_Obj_t *pObj1)
#define ABC_NAMESPACE_IMPL_END
void Dch_ClassesSetData(Dch_Cla_t *p, void *pManData, unsigned(*pFuncNodeHash)(void *, Aig_Obj_t *), int(*pFuncNodeIsConst)(void *, Aig_Obj_t *), int(*pFuncNodesAreEqual)(void *, Aig_Obj_t *, Aig_Obj_t *))
static int Aig_ObjFaninC0(Aig_Obj_t *pObj)
static int Aig_ManObjNumMax(Aig_Man_t *p)
void Dch_ClassesPrepare(Dch_Cla_t *p, int fLatchCorr, int nMaxLevs)
static Aig_Obj_t * Aig_ManConst1(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
int Dch_NodeIsConst(void *p, Aig_Obj_t *pObj)
Dch_Cla_t * Dch_ClassesStart(Aig_Man_t *pAig)
static int Aig_ObjFaninC1(Aig_Obj_t *pObj)
void Dch_PerformRandomSimulation(Aig_Man_t *pAig, Vec_Ptr_t *vSims)
static Vec_Ptr_t * Vec_PtrAllocSimInfo(int nEntries, int nWords)
static ABC_NAMESPACE_IMPL_START unsigned * Dch_ObjSim(Vec_Ptr_t *vSims, Aig_Obj_t *pObj)
DECLARATIONS ///.
static void Vec_PtrFree(Vec_Ptr_t *p)
typedefABC_NAMESPACE_HEADER_START struct Dch_Cla_t_ Dch_Cla_t
INCLUDES ///.