177 static int s_FPrimes[128] = {
178 1009, 1049, 1093, 1151, 1201, 1249, 1297, 1361, 1427, 1459,
179 1499, 1559, 1607, 1657, 1709, 1759, 1823, 1877, 1933, 1997,
180 2039, 2089, 2141, 2213, 2269, 2311, 2371, 2411, 2467, 2543,
181 2609, 2663, 2699, 2741, 2797, 2851, 2909, 2969, 3037, 3089,
182 3169, 3221, 3299, 3331, 3389, 3461, 3517, 3557, 3613, 3671,
183 3719, 3779, 3847, 3907, 3943, 4013, 4073, 4129, 4201, 4243,
184 4289, 4363, 4441, 4493, 4549, 4621, 4663, 4729, 4793, 4871,
185 4933, 4973, 5021, 5087, 5153, 5227, 5281, 5351, 5417, 5471,
186 5519, 5573, 5651, 5693, 5749, 5821, 5861, 5923, 6011, 6073,
187 6131, 6199, 6257, 6301, 6353, 6397, 6481, 6563, 6619, 6689,
188 6737, 6803, 6863, 6917, 6977, 7027, 7109, 7187, 7237, 7309,
189 7393, 7477, 7523, 7561, 7607, 7681, 7727, 7817, 7877, 7933,
190 8011, 8039, 8059, 8081, 8093, 8111, 8123, 8147
195 for ( i = 0; i <
nWords; i++ )
196 uHash ^= pState[i] * s_FPrimes[i & 0x7F];
197 return uHash % nTableSize;
354 int i, f, fConstants, Value, nCounter, nRetired;
358 Aig_ObjSetXsim( Aig_ManConst1(
p),
AIG_XVS1 );
370 Value = Aig_ObjGetXsim(pObjLo);
372 Abc_InfoSetBit( pState, 2 * i );
374 Abc_InfoSetBit( pState, 2 * i + 1 );
380printf(
"%3d : ", f );
395 Aig_ObjSetXsim( pObj, Aig_XsimAnd(Aig_ObjGetXsimFanin0(pObj), Aig_ObjGetXsimFanin1(pObj)) );
402 Aig_ObjSetXsim( pObj, Aig_ObjGetXsimFanin0(pObj) );
408 Aig_ObjSetXsim( pObjLo, Aig_ObjGetXsim(pObjLi) );
411 if ( Aig_ObjGetXsim(pObjLi) != Aig_ObjGetXsim(pObjLo) )
417 nCounter += (Aig_ObjGetXsim(pObjLo) ==
AIG_XVS0);
429 printf(
"Aig_ManTernarySimulate(): Did not reach a fixed point after %d iterations (not a bug).\n",
TSI_MAX_ROUNDS );
434 pState = (
unsigned *)Vec_PtrEntry( pTsi->
vStates, 0 );
438 if ( 2*Aig_ManRegNum(
p) == 32*pTsi->
nWords )
440 for ( i = 0; i < pTsi->
nWords; i++ )
441 if ( pState[i] != ~0 )
446 for ( i = 0; i < pTsi->
nWords - 1; i++ )
447 if ( pState[i] != ~0 )
449 if ( pState[i] != Abc_InfoMask( 2*Aig_ManRegNum(
p) - 32*(pTsi->
nWords-1) ) )
452 if ( fConstants == 0 )
455 printf(
"Detected 0 constants after %d iterations of ternary simulation.\n", f );
461 vMap = Vec_PtrAlloc( Aig_ManCiNum(
p) );
463 Vec_PtrPush( vMap, pObj );
468 Value = (Abc_InfoHasBit( pState, 2 * i + 1 ) << 1) | Abc_InfoHasBit( pState, 2 * i );
469 nCounter += (Value == 1 || Value == 2);
471 Vec_PtrPush( vMap, Aig_ManConst0(
p) );
472 else if ( Value == 2 )
473 Vec_PtrPush( vMap, Aig_ManConst1(
p) );
474 else if ( Value == 3 )
475 Vec_PtrPush( vMap, pObjLo );
483 printf(
"Detected %d constants after %d iterations of ternary simulation.\n", nCounter, f );