31static inline unsigned * Gia_SimData(
Gia_ManSim_t *
p,
int i ) {
return p->pDataSim + i *
p->nWords; }
32static inline unsigned * Gia_SimDataCi(
Gia_ManSim_t *
p,
int i ) {
return p->pDataSimCis + i *
p->nWords; }
33static inline unsigned * Gia_SimDataCo(
Gia_ManSim_t *
p,
int i ) {
return p->pDataSimCos + i *
p->nWords; }
57 Vec_IntPush( vVec, Gia_ObjToLit(pGia, pObj) );
58 if ( Gia_IsComplement(pObj) || Gia_ObjIsCi(pObj) )
60 assert( Gia_ObjIsAnd(pObj) );
80 Vec_IntUniqify( vVec );
100 int i, k, Lit, Count;
101 int Counter0 = 0, Counter1 = 0;
102 int CounterPi0 = 0, CounterPi1 = 0;
106 vCountLits = Vec_IntStart( 2 * Gia_ManObjNum(pGia) );
109 vSuperGate = Vec_IntAlloc( 1000 );
112 if ( Gia_ObjFaninId0p(pGia, pObj) == 0 )
114 Vec_IntAddToEntry( vCountLits, Gia_ObjToLit(pGia, Gia_ObjChild0(pObj)), 1 );
117 Vec_IntAddToEntry( vCountLits, Lit, 1 );
119 Vec_IntFree( vSuperGate );
122 vResult = Vec_IntStartFull( Gia_ManObjNum(pGia) );
125 if ( Count < nImpLimit )
127 pObj = Gia_ManObj( pGia, Abc_Lit2Var(Lit) );
128 if ( Abc_LitIsCompl(Lit) )
131 Vec_IntWriteEntry( vResult, Abc_Lit2Var(Lit), 0 );
132 CounterPi0 += Gia_ObjIsPi(pGia, pObj);
138 Vec_IntWriteEntry( vResult, Abc_Lit2Var(Lit), 1 );
139 CounterPi1 += Gia_ObjIsPi(pGia, pObj);
146 Vec_IntFree( vCountLits );
148 printf(
"Logic0 = %d (%d). Logic1 = %d (%d). ", Counter0, CounterPi0, Counter1, CounterPi1 );
149 Abc_PrintTime( 1,
"Time", Abc_Clock() - clk );
191 Vec_IntFreeP( &
p->vConsts );
192 Vec_IntFreeP( &
p->vCis2Ids );
224 p->pDataSim =
ABC_ALLOC(
unsigned,
p->nWords *
p->pAig->nFront );
225 p->pDataSimCis =
ABC_ALLOC(
unsigned,
p->nWords * Gia_ManCiNum(
p->pAig) );
226 p->pDataSimCos =
ABC_ALLOC(
unsigned,
p->nWords * Gia_ManCoNum(
p->pAig) );
227 if ( !
p->pDataSim || !
p->pDataSimCis || !
p->pDataSimCos )
229 Abc_Print( 1,
"Simulator could not allocate %.2f GB for simulation info.\n",
230 4.0 *
p->nWords * (
p->pAig->nFront + Gia_ManCiNum(
p->pAig) + Gia_ManCoNum(
p->pAig)) / (1<<30) );
234 p->vCis2Ids = Vec_IntAlloc( Gia_ManCiNum(
p->pAig) );
236 Vec_IntPush(
p->vCis2Ids, i );
238 Abc_Print( 1,
"AIG = %7.2f MB. Front mem = %7.2f MB. Other mem = %7.2f MB.\n",
239 12.0*Gia_ManObjNum(
p->pAig)/(1<<20),
240 4.0*
p->nWords*
p->pAig->nFront/(1<<20),
241 4.0*
p->nWords*(Gia_ManCiNum(
p->pAig) + Gia_ManCoNum(
p->pAig))/(1<<20) );
257static inline void Gia_ManSimInfoRandom(
Gia_ManSim_t *
p,
unsigned * pInfo )
260 for ( w =
p->nWords-1; w >= 0; w-- )
275static inline void Gia_ManSimInfoZero(
Gia_ManSim_t *
p,
unsigned * pInfo )
278 for ( w =
p->nWords-1; w >= 0; w-- )
293static inline int Gia_ManSimInfoIsZero(
Gia_ManSim_t *
p,
unsigned * pInfo )
296 for ( w = 0; w <
p->nWords; w++ )
298 return 32*w + Gia_WordFindFirstBit( pInfo[w] );
313static inline void Gia_ManSimInfoOne(
Gia_ManSim_t *
p,
unsigned * pInfo )
316 for ( w =
p->nWords-1; w >= 0; w-- )
331static inline void Gia_ManSimInfoCopy(
Gia_ManSim_t *
p,
unsigned * pInfo,
unsigned * pInfo0 )
334 for ( w =
p->nWords-1; w >= 0; w-- )
335 pInfo[w] = pInfo0[w];
351 unsigned * pInfo = Gia_SimData(
p, Gia_ObjValue(pObj) );
352 unsigned * pInfo0 = Gia_SimDataCi(
p, iCi );
354 for ( w =
p->nWords-1; w >= 0; w-- )
355 pInfo[w] = pInfo0[w];
371 unsigned * pInfo = Gia_SimDataCo(
p, iCo );
372 unsigned * pInfo0 = Gia_SimData(
p, Gia_ObjDiff0(pObj) );
374 if ( Gia_ObjFaninC0(pObj) )
375 for ( w =
p->nWords-1; w >= 0; w-- )
376 pInfo[w] = ~pInfo0[w];
378 for ( w =
p->nWords-1; w >= 0; w-- )
379 pInfo[w] = pInfo0[w];
395 unsigned * pInfo = Gia_SimData(
p, Gia_ObjValue(pObj) );
396 unsigned * pInfo0 = Gia_SimData(
p, Gia_ObjDiff0(pObj) );
397 unsigned * pInfo1 = Gia_SimData(
p, Gia_ObjDiff1(pObj) );
399 if ( Gia_ObjFaninC0(pObj) )
401 if ( Gia_ObjFaninC1(pObj) )
402 for ( w =
p->nWords-1; w >= 0; w-- )
403 pInfo[w] = ~(pInfo0[w] | pInfo1[w]);
405 for ( w =
p->nWords-1; w >= 0; w-- )
406 pInfo[w] = ~pInfo0[w] & pInfo1[w];
410 if ( Gia_ObjFaninC1(pObj) )
411 for ( w =
p->nWords-1; w >= 0; w-- )
412 pInfo[w] = pInfo0[w] & ~pInfo1[w];
414 for ( w =
p->nWords-1; w >= 0; w-- )
415 pInfo[w] = pInfo0[w] & pInfo1[w];
435 if ( iPioNum < Gia_ManPiNum(
p->pAig) )
436 Gia_ManSimInfoRandom(
p, Gia_SimDataCi(
p, i) );
438 Gia_ManSimInfoZero(
p, Gia_SimDataCi(
p, i) );
458 if ( iPioNum < Gia_ManPiNum(
p->pAig) )
459 Gia_ManSimInfoRandom(
p, Gia_SimDataCi(
p, i) );
461 Gia_ManSimInfoCopy(
p, Gia_SimDataCi(
p, i), Gia_SimDataCo(
p, Gia_ManPoNum(
p->pAig)+iPioNum-Gia_ManPiNum(
p->pAig)) );
479 int i, iCis = 0, iCos = 0;
481 assert( Gia_ManConst0(
p->pAig)->Value == 0 );
482 Gia_ManSimInfoZero(
p, Gia_SimData(
p, 0) );
485 if ( Gia_ObjIsAndOrConst0(pObj) )
487 assert( Gia_ObjValue(pObj) <
p->pAig->nFront );
488 Gia_ManSimulateNode(
p, pObj );
490 else if ( Gia_ObjIsCo(pObj) )
493 Gia_ManSimulateCo(
p, iCos++, pObj );
497 assert( Gia_ObjValue(pObj) <
p->pAig->nFront );
498 Gia_ManSimulateCi(
p, pObj, iCis++ );
501 assert( Gia_ManCiNum(
p->pAig) == iCis );
502 assert( Gia_ManCoNum(
p->pAig) == iCos );
516static inline int Gia_ManCheckPos(
Gia_ManSim_t *
p,
int * piPo,
int * piPat )
519 for ( i = 0; i < Gia_ManPoNum(
p->pAig); i++ )
521 iPat = Gia_ManSimInfoIsZero(
p, Gia_SimDataCo(
p, i) );
547 int f, i, w, iPioId, Counter;
548 p =
Abc_CexAlloc( Gia_ManRegNum(pAig), Gia_ManPiNum(pAig), iFrame+1 );
554 for ( f = 0; f <= iFrame; f++, Counter +=
p->nPis )
555 for ( i = 0; i < Gia_ManPiNum(pAig); i++ )
557 iPioId = Vec_IntEntry( vCis2Ids, i );
558 if ( iPioId >=
p->nPis )
560 for ( w =
nWords-1; w >= 0; w-- )
562 if ( Abc_InfoHasBit( pData, iPat ) )
563 Abc_InfoSetBit(
p->pData, Counter + iPioId );
584 for ( i = 0; i < pPars->
RandSeed; i++ )
603 abctime clkTotal = Abc_Clock();
604 int i, iOut, iPat, RetValue = 0;
612 for ( i = 0; i < pPars->
nIters; i++ )
617 Abc_Print( 1,
"Frame %4d out of %4d and timeout %3d sec. ", i+1, pPars->
nIters, pPars->
TimeLimit );
618 Abc_Print( 1,
"Time = %7.2f sec\r", (1.0*Abc_Clock()-clkTotal)/CLOCKS_PER_SEC );
620 if ( pPars->
fCheckMiter && Gia_ManCheckPos(
p, &iOut, &iPat ) )
625 Abc_Print( 1,
"Output %d of miter \"%s\" was asserted in frame %d. ", iOut, pAig->
pName, i );
629 Abc_Print( 1,
"\nGenerated counter-example is INVALID. " );
642 if ( Abc_Clock() > nTimeToStop )
647 if ( i < pPars->nIters - 1 )
652 Abc_Print( 1,
"No bug detected after simulating %d frames with %d words. ", i, pPars->
nWords );
653 Abc_PrintTime( 1,
"Time", Abc_Clock() - clkTotal );
672 FILE * pFile = fopen( pFileIn,
"rb" );
675 printf(
"Cannot open input file.\n" );
678 vPat = Vec_IntAlloc( 1000 );
679 while ( (c = fgetc(pFile)) != EOF )
680 if ( c ==
'0' || c ==
'1' )
681 Vec_IntPush( vPat, c -
'0' );
688 FILE * pFile = fopen( pFileOut,
"wb" );
691 printf(
"Cannot open output file.\n" );
694 assert( Vec_IntSize(vPat) % nOuts == 0 );
697 fputc(
'0' + c, pFile );
698 if ( i % nOuts == nOuts - 1 )
699 fputc(
'\n', pFile );
709 assert( Vec_IntSize(vPat) % Gia_ManPiNum(
p) == 0 );
710 Gia_ManConst0(
p)->fMark1 = 0;
713 vPatOut = Vec_IntAlloc( 1000 );
714 for ( k = f = 0; f < Vec_IntSize(vPat) / Gia_ManPiNum(
p); f++ )
717 pObj->
fMark1 = Vec_IntEntry( vPat, k++ );
719 pObj->
fMark1 = (Gia_ObjFanin0(pObj)->fMark1 ^ Gia_ObjFaninC0(pObj)) & (Gia_ObjFanin1(pObj)->fMark1 ^ Gia_ObjFaninC1(pObj));
721 pObj->
fMark1 = (Gia_ObjFanin0(pObj)->fMark1 ^ Gia_ObjFaninC0(pObj));
723 Vec_IntPush( vPatOut, pObj->
fMark1 );
727 assert( k == Vec_IntSize(vPat) );
738 if ( Vec_IntSize(vPat) % Gia_ManPiNum(
p) )
740 printf(
"The number of 0s and 1s in the input file (%d) does not evenly divide by the number of primary inputs (%d).\n",
741 Vec_IntSize(vPat), Gia_ManPiNum(
p) );
747 printf(
"Output patterns are written into file \"%s\".\n", pFileOut );
749 Vec_IntFree( vPatOut );
764static inline word * Gia_ManBuiltInDataPi(
Gia_Man_t *
p,
int iCiId )
766 return Vec_WrdEntryP(
p->vSimsPi,
p->nSimWords * iCiId );
770 return Vec_WrdEntryP(
p->vSims,
p->nSimWords * iObj );
772static inline void Gia_ManBuiltInDataPrint(
Gia_Man_t *
p,
int iObj )
780 assert( Gia_ManAndNum(
p) == 0 );
788 p->vSimsPi = Vec_WrdAlloc(
p->nSimWords * Gia_ManCiNum(
p) );
789 Vec_WrdFill(
p->vSimsPi,
p->nSimWords * Gia_ManCiNum(
p), 0 );
791 p->vSims = Vec_WrdAlloc(
p->nSimWords * nObjs );
792 Vec_WrdFill(
p->vSims,
p->nSimWords, 0 );
793 for ( i = 0; i < Gia_ManCiNum(
p); i++ )
794 for ( k = 0; k <
p->nSimWords; k++ )
799 Gia_Obj_t * pObj = Gia_ManObj(
p, iObj );
int w;
800 word * pInfo = Gia_ManBuiltInData(
p, iObj );
801 word * pInfo0 = Gia_ManBuiltInData(
p, Gia_ObjFaninId0(pObj, iObj) );
802 word * pInfo1 = Gia_ManBuiltInData(
p, Gia_ObjFaninId1(pObj, iObj) );
803 assert(
p->fBuiltInSim ||
p->fIncrSim );
804 if ( Gia_ObjFaninC0(pObj) )
806 if ( Gia_ObjFaninC1(pObj) )
807 for ( w = 0; w <
p->nSimWords; w++ )
808 pInfo[w] = ~(pInfo0[w] | pInfo1[w]);
810 for ( w = 0; w <
p->nSimWords; w++ )
811 pInfo[w] = ~pInfo0[w] & pInfo1[w];
815 if ( Gia_ObjFaninC1(pObj) )
816 for ( w = 0; w <
p->nSimWords; w++ )
817 pInfo[w] = pInfo0[w] & ~pInfo1[w];
819 for ( w = 0; w <
p->nSimWords; w++ )
820 pInfo[w] = pInfo0[w] & pInfo1[w];
822 assert( Vec_WrdSize(
p->vSims) == Gia_ManObjNum(
p) *
p->nSimWords );
827 for ( w = 0; w <
p->nSimWords; w++ )
828 Vec_WrdPush(
p->vSims, 0 );
835 if ( Gia_ObjIsTravIdCurrentId(
p, iObj) )
837 Gia_ObjSetTravIdCurrentId(
p, iObj);
838 pObj = Gia_ManObj(
p, iObj );
839 if ( Gia_ObjIsCi(pObj) )
841 assert( Gia_ObjIsAnd(pObj) );
861 word * pInfo0 = Gia_ManBuiltInData(
p, Abc_Lit2Var(iLit0) );
862 word * pInfo1 = Gia_ManBuiltInData(
p, Abc_Lit2Var(iLit1) );
int w;
863 assert(
p->fBuiltInSim ||
p->fIncrSim );
870 if ( Abc_LitIsCompl(iLit0) )
872 if ( Abc_LitIsCompl(iLit1) )
874 for ( w = 0; w <
p->nSimWords; w++ )
875 if ( ~pInfo0[w] & ~pInfo1[w] )
880 for ( w = 0; w <
p->nSimWords; w++ )
881 if ( ~pInfo0[w] & pInfo1[w] )
887 if ( Abc_LitIsCompl(iLit1) )
889 for ( w = 0; w <
p->nSimWords; w++ )
890 if ( pInfo0[w] & ~pInfo1[w] )
895 for ( w = 0; w <
p->nSimWords; w++ )
896 if ( pInfo0[w] & pInfo1[w] )
904 word * pInfo0 = Gia_ManBuiltInData(
p, Abc_Lit2Var(iLit0) );
905 word * pInfo1 = Gia_ManBuiltInData(
p, Abc_Lit2Var(iLit1) );
int w;
906 assert(
p->fBuiltInSim ||
p->fIncrSim );
913 if ( Abc_LitIsCompl(iLit0) )
915 if ( Abc_LitIsCompl(iLit1) )
917 for ( w = 0; w <
p->nSimWords; w++ )
918 if ( ~pInfo0[w] != ~pInfo1[w] )
923 for ( w = 0; w <
p->nSimWords; w++ )
924 if ( ~pInfo0[w] != pInfo1[w] )
930 if ( Abc_LitIsCompl(iLit1) )
932 for ( w = 0; w <
p->nSimWords; w++ )
933 if ( pInfo0[w] != ~pInfo1[w] )
938 for ( w = 0; w <
p->nSimWords; w++ )
939 if ( pInfo0[w] != pInfo1[w] )
949 assert( Vec_IntSize(vPat) > 0 );
951 for ( i = 0; i <
p->iPatsPi; i++ )
954 if ( Abc_TtGetBit(Gia_ManBuiltInDataPi(
p, Abc_Lit2Var(iLit)), i) &&
955 Abc_TtGetBit(Gia_ManBuiltInData(
p, 1+Abc_Lit2Var(iLit)), i) == Abc_LitIsCompl(iLit) )
957 if ( k == Vec_IntSize(vPat) )
966 int fOverflow =
p->iPatsPi == 64 *
p->nSimWords &&
p->nSimWords ==
p->nSimWordsMax;
972 if ( (
p->iPastPiMax & Period) == 0 )
974 iPat =
p->iPastPiMax;
977 p->iPastPiMax =
p->iPastPiMax == 64 *
p->nSimWordsMax - 1 ? 0 :
p->iPastPiMax + 1;
981 if (
p->iPatsPi && (
p->iPatsPi & Period) == 0 )
983 if (
p->iPatsPi == 64 *
p->nSimWords )
985 Vec_Wrd_t * vTemp = Vec_WrdAlloc( 2 * Vec_WrdSize(
p->vSims) );
986 word Data;
int w, Count = 0, iObj = 0;
989 Vec_WrdPush( vTemp, Data );
990 if ( ++Count ==
p->nSimWords )
993 if ( Gia_ObjIsCi(pObj) )
995 else if ( Gia_ObjIsAnd(pObj) )
996 Vec_WrdPush( vTemp, pObj->
fPhase ? ~(
word)0 : 0 );
998 Vec_WrdPush( vTemp, 0 );
1002 assert( iObj == Gia_ManObjNum(
p) );
1003 Vec_WrdFree(
p->vSims );
1006 vTemp = Vec_WrdAlloc( 2 * Vec_WrdSize(
p->vSimsPi) );
1010 Vec_WrdPush( vTemp, Data );
1011 if ( ++Count ==
p->nSimWords )
1013 Vec_WrdPush( vTemp, 0 );
1017 Vec_WrdFree(
p->vSimsPi );
1022 assert( Vec_WrdSize(
p->vSims) ==
p->nSimWords * Gia_ManObjNum(
p) );
1023 assert( Vec_WrdSize(
p->vSimsPi) ==
p->nSimWords * Gia_ManCiNum(
p) );
1026 iPat =
p->iPatsPi++;
1029 assert( iPat >= 0 && iPat < p->iPatsPi );
1035 if ( Abc_TtGetBit(Gia_ManBuiltInDataPi(
p, iVar), iPat) )
1036 Abc_TtXorBit(Gia_ManBuiltInDataPi(
p, iVar), iPat);
1039 if ( Abc_TtGetBit(Gia_ManBuiltInData(
p, 1+Abc_Lit2Var(iLit)), iPat) == Abc_LitIsCompl(iLit) )
1040 Abc_TtXorBit(Gia_ManBuiltInData(
p, 1+Abc_Lit2Var(iLit)), iPat);
1041 Abc_TtXorBit(Gia_ManBuiltInDataPi(
p, Abc_Lit2Var(iLit)), iPat);
1048 if ( Abc_TtGetBit(Gia_ManBuiltInDataPi(
p, Abc_Lit2Var(iLit)), iPat) )
1049 assert( Abc_TtGetBit(Gia_ManBuiltInData(
p, 1+Abc_Lit2Var(iLit)), iPat) != Abc_LitIsCompl(iLit) );
1052 if ( Abc_TtGetBit(Gia_ManBuiltInData(
p, 1+Abc_Lit2Var(iLit)), iPat) == Abc_LitIsCompl(iLit) )
1053 Abc_TtXorBit(Gia_ManBuiltInData(
p, 1+Abc_Lit2Var(iLit)), iPat);
1054 Abc_TtXorBit(Gia_ManBuiltInDataPi(
p, Abc_Lit2Var(iLit)), iPat);
1074 int iObj = Abc_Lit2Var(iLit);
1077 return pObj->
fMark1 == (unsigned)Abc_LitIsCompl(iLit);
1079 pObj->
fMark1 = Abc_LitIsCompl(iLit);
1080 Vec_IntPush( vObjs, iObj );
1081 if ( Gia_ObjIsAnd(pObj) )
1098 int i, Res0, Res1 = 0;
1101 Vec_IntClear( vObjs );
1107 return Res0 && Res1;
1135 assert( Vec_IntSize(
p->vTimeStamps) <= Gia_ManObjNum(
p) );
1136 Vec_IntFillExtra(
p->vTimeStamps, Gia_ManObjNum(
p), 0 );
1138 assert( Vec_WrdSize(
p->vSims) <= Gia_ManObjNum(
p) *
p->nSimWords );
1139 Vec_WrdFillExtra(
p->vSims, Gia_ManObjNum(
p) *
p->nSimWords, 0 );
1141 assert(
p->iNextPi <= Gia_ManCiNum(
p) );
1142 for ( i =
p->iNextPi; i < Gia_ManCiNum(
p); i++ )
1144 word * pSims = Gia_ManBuiltInData(
p, Gia_ManCiIdToId(
p, i) );
1145 for ( k = 0; k <
p->nSimWords; k++ )
1148 p->iNextPi = Gia_ManCiNum(
p);
1158 p->vTimeStamps = Vec_IntAlloc(
p->nSimWords );
1161 p->vSims = Vec_WrdAlloc(
p->nSimWords * nObjs );
1171 Vec_IntFreeP( &
p->vTimeStamps );
1172 Vec_WrdFreeP( &
p->vSims );
1177 assert( Vec_IntSize(vObjLits) > 0 );
1181 word * pSims = Gia_ManBuiltInData(
p, Abc_Lit2Var(iLit) );
1182 if ( Gia_ObjIsAnd(Gia_ManObj(
p, Abc_Lit2Var(iLit))) )
1185 Vec_IntWriteEntry(
p->vTimeStamps, Abc_Lit2Var(iLit),
p->iTimeStamp);
1186 if ( Abc_TtGetBit(pSims,
p->iPatsPi) == Abc_LitIsCompl(iLit) )
1187 Abc_TtXorBit(pSims,
p->iPatsPi);
1189 p->iPatsPi = (
p->iPatsPi ==
p->nSimWords * 64 - 1) ? 0 :
p->iPatsPi + 1;
1194 if ( Gia_ObjIsCi(pObj) )
1196 if ( Vec_IntEntry(
p->vTimeStamps, iObj) ==
p->iTimeStamp )
1198 assert( Vec_IntEntry(
p->vTimeStamps, iObj) <
p->iTimeStamp );
1199 Vec_IntWriteEntry(
p->vTimeStamps, iObj,
p->iTimeStamp );
1200 assert( Gia_ObjIsAnd(pObj) );
1207 assert( iLit0 > 1 && iLit1 > 1 );
1216 assert( iLit0 > 1 && iLit1 > 1 );
1239 assert( Vec_IntSize(vValues) == Gia_ManCiNum(
p) );
1241 Gia_ManConst0(
p)->fMark0 = 0;
1243 pObj->
fMark0 = Vec_IntEntry(vValues, k);
1245 pObj->
fMark0 = (Gia_ObjFanin0(pObj)->fMark0 ^ Gia_ObjFaninC0(pObj)) & (Gia_ObjFanin1(pObj)->fMark0 ^ Gia_ObjFaninC1(pObj));
1247 pObj->
fMark0 = Gia_ObjFanin0(pObj)->fMark0 ^ Gia_ObjFaninC0(pObj);
1250 printf(
"%d", k % 10 );
1253 printf(
"%d", Vec_IntEntry(vValues, k) );
1257 printf(
"%d", k % 10 );
1260 printf(
"%d", pObj->
fMark0 );
1266 Vec_Int_t * vValues = Vec_IntStart( Gia_ManCiNum(
p) );
1268 Vec_IntWriteEntry( vValues, 0, 1 );
1270 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1272 Vec_IntWriteEntry( vValues, 0, 1 );
1273 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2, 1 );
1275 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1277 Vec_IntWriteEntry( vValues, 0, 1 );
1278 Vec_IntWriteEntry( vValues, 1, 1 );
1279 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2+2, 1 );
1281 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1283 Vec_IntWriteEntry( vValues, 0, 1 );
1284 Vec_IntWriteEntry( vValues, 1, 1 );
1285 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2, 1 );
1287 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1289 Vec_IntFill( vValues, Vec_IntSize(vValues)/2, 1 );
1290 Vec_IntFillExtra( vValues, Gia_ManCiNum(
p), 0 );
1292 Vec_IntFill( vValues, Gia_ManCiNum(
p), 0 );
1294 Vec_IntFill( vValues, Gia_ManCiNum(
p), 1 );
1296 Vec_IntFill( vValues, Gia_ManCiNum(
p), 0 );
1298 Vec_IntFill( vValues, Gia_ManCiNum(
p), 1 );
1299 Vec_IntWriteEntry( vValues, 127, 1 );
1300 Vec_IntWriteEntry( vValues, 255, 0 );
1302 Vec_IntFill( vValues, Gia_ManCiNum(
p), 0 );
1304 Vec_IntFill( vValues, Gia_ManCiNum(
p), 1 );
1305 Vec_IntWriteEntry( vValues, 127, 0 );
1306 Vec_IntWriteEntry( vValues, 255, 1 );
1308 Vec_IntFill( vValues, Gia_ManCiNum(
p), 0 );
1310 Vec_IntFill( vValues, Gia_ManCiNum(
p), 1 );
1311 Vec_IntWriteEntry( vValues, 127, 0 );
1312 Vec_IntWriteEntry( vValues, 255, 0 );
1314 Vec_IntFill( vValues, Gia_ManCiNum(
p), 0 );
1316 Vec_IntFree( vValues );
1320 Vec_Int_t * vValues = Vec_IntStart( Gia_ManCiNum(
p) );
1322 Vec_IntWriteEntry( vValues, 0, 1 );
1324 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1326 Vec_IntWriteEntry( vValues, 0, 1 );
1327 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2, 1 );
1329 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1331 Vec_IntWriteEntry( vValues, 0, 1 );
1332 Vec_IntWriteEntry( vValues, 1, 1 );
1333 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2+2, 1 );
1335 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1337 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2-1, 1 );
1338 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p) -1, 1 );
1340 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1342 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2-1, 1 );
1343 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2-2, 1 );
1344 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p) -1, 1 );
1345 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p) -2, 1 );
1347 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1349 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2-2, 1 );
1350 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p) -2, 1 );
1352 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1354 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2-1, 1 );
1355 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2-2, 1 );
1356 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2-3, 1 );
1357 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p) -1, 1 );
1358 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p) -2, 1 );
1359 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p) -3, 1 );
1361 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1363 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2-2, 1 );
1364 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p)/2-3, 1 );
1365 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p) -2, 1 );
1366 Vec_IntWriteEntry( vValues, Gia_ManCiNum(
p) -3, 1 );
1368 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1370 Vec_IntFill( vValues, Vec_IntSize(vValues), 1 );
1372 Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
1374 Vec_IntFree( vValues );
1380 Vec_Int_t * vValues = Vec_IntStart( Gia_ManCiNum(
p) );
1382 for ( i = 0; i < 10; i++ )
1384 for ( k = 0; k < Vec_IntSize(vValues); k++ )
1385 Vec_IntWriteEntry( vValues, k, Vec_IntEntry(vValues, k) ^ (rand()&1) );
1387 printf(
"Values = %d ", Vec_IntSum(vValues) );
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
int Gia_ManSimSimulateEquiv(Gia_Man_t *pAig, Gia_ParSim_t *pPars)
int Gia_ManSimWriteFile(char *pFileOut, Vec_Int_t *vPat, int nOuts)
void Gia_ManSimOneBitTest(Gia_Man_t *p)
void Gia_ManIncrSimCone_rec(Gia_Man_t *p, int iObj)
void Gia_ManSimDelete(Gia_ManSim_t *p)
void Gia_ManResetRandom(Gia_ParSim_t *pPars)
void Gia_ManBuiltInSimResimulateCone_rec(Gia_Man_t *p, int iObj)
void Gia_ManBuiltInSimStart(Gia_Man_t *p, int nWords, int nObjs)
void Gia_ManSimSimulatePattern(Gia_Man_t *p, char *pFileIn, char *pFileOut)
int Gia_ManObjCheckSat_rec(Gia_Man_t *p, int iLit, Vec_Int_t *vObjs)
void Gia_ManSimCollect_rec(Gia_Man_t *pGia, Gia_Obj_t *pObj, Vec_Int_t *vVec)
FUNCTION DEFINITIONS ///.
void Gia_ManIncrSimStart(Gia_Man_t *p, int nWords, int nObjs)
int Gia_ManBuiltInSimCheckEqual(Gia_Man_t *p, int iLit0, int iLit1)
unsigned * Gia_SimDataExt(Gia_ManSim_t *p, int i)
Gia_ManSim_t * Gia_ManSimCreate(Gia_Man_t *pAig, Gia_ParSim_t *pPars)
void Gia_ManIncrSimStop(Gia_Man_t *p)
void Gia_ManSimSetDefaultParams(Gia_ParSim_t *p)
void Gia_ManBuiltInSimPerform(Gia_Man_t *p, int iObj)
void Gia_ManSimOneBitTest2(Gia_Man_t *p)
int Gia_ManIncrSimCheckEqual(Gia_Man_t *p, int iLit0, int iLit1)
int Gia_ManBuiltInSimCheckOver(Gia_Man_t *p, int iLit0, int iLit1)
unsigned * Gia_SimDataCiExt(Gia_ManSim_t *p, int i)
void Gia_ManBuiltInSimPerformInt(Gia_Man_t *p, int iObj)
void Gia_ManSimInfoTransfer(Gia_ManSim_t *p)
int Gia_ManObjCheckOverlap1(Gia_Man_t *p, int iLit0, int iLit1, Vec_Int_t *vObjs)
unsigned * Gia_SimDataCoExt(Gia_ManSim_t *p, int i)
void Gia_ManSimInfoInit(Gia_ManSim_t *p)
void Gia_ManSimCollect(Gia_Man_t *pGia, Gia_Obj_t *pObj, Vec_Int_t *vVec)
int Gia_ManBuiltInSimPack(Gia_Man_t *p, Vec_Int_t *vPat)
int Gia_ManObjCheckOverlap(Gia_Man_t *p, int iLit0, int iLit1, Vec_Int_t *vObjs)
Vec_Int_t * Gia_ManSimReadFile(char *pFileIn)
void Gia_ManSimOneBit(Gia_Man_t *p, Vec_Int_t *vValues)
Vec_Int_t * Gia_ManSimSimulateOne(Gia_Man_t *p, Vec_Int_t *vPat)
void Gia_ManSimOneBitTest3(Gia_Man_t *p)
Abc_Cex_t * Gia_ManGenerateCounter(Gia_Man_t *pAig, int iFrame, int iOut, int nWords, int iPat, Vec_Int_t *vCis2Ids)
Vec_Int_t * Gia_ManSimDeriveResets(Gia_Man_t *pGia)
void Gia_ManSimulateRound(Gia_ManSim_t *p)
void Gia_ManIncrSimSet(Gia_Man_t *p, Vec_Int_t *vObjLits)
int Gia_ManIncrSimCheckOver(Gia_Man_t *p, int iLit0, int iLit1)
int Gia_ManBuiltInSimAddPat(Gia_Man_t *p, Vec_Int_t *vPat)
void Gia_ManBuiltInSimResimulate(Gia_Man_t *p)
int Gia_ManSimSimulate(Gia_Man_t *pAig, Gia_ParSim_t *pPars)
void Gia_ManBuiltInSimResimulateCone(Gia_Man_t *p, int iLit0, int iLit1)
void Gia_ManIncrSimUpdate(Gia_Man_t *p)
#define Gia_ManForEachRo(p, pObj, i)
#define Gia_ManForEachPo(p, pObj, i)
#define Gia_ManForEachAnd(p, pObj, i)
word Gia_ManRandomW(int fReset)
void Gia_ManStopP(Gia_Man_t **p)
#define Gia_ManForEachPi(p, pObj, i)
struct Gia_Obj_t_ Gia_Obj_t
struct Gia_ManSim_t_ Gia_ManSim_t
struct Gia_Man_t_ Gia_Man_t
#define Gia_ManForEachObj1(p, pObj, i)
#define GIA_NONE
INCLUDES ///.
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
int Gia_ManVerifyCex(Gia_Man_t *pAig, Abc_Cex_t *p, int fDualOut)
DECLARATIONS ///.
Gia_Man_t * Gia_ManFront(Gia_Man_t *p)
void Gia_ManIncrementTravId(Gia_Man_t *p)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
#define Gia_ManForEachCo(p, pObj, i)
#define Gia_ManForEachCi(p, pObj, i)
#define Gia_ManForEachRiRo(p, pObjRi, pObjRo, i)
struct Gia_ParSim_t_ Gia_ParSim_t
unsigned Gia_ManRandom(int fReset)
FUNCTION DEFINITIONS ///.
#define Gia_ManForEachRi(p, pObj, i)
unsigned __int64 word
DECLARATIONS ///.
ABC_NAMESPACE_IMPL_START Abc_Cex_t * Abc_CexAlloc(int nRegs, int nRealPis, int nFrames)
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
#define Vec_WrdForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.