46 if (
p->nTravIds >= (1<<30)-1 )
64 static char Buffer[100];
69 TimeStamp = asctime( localtime( <ime ) );
70 TimeStamp[
strlen(TimeStamp) - 1 ] = 0;
71 strcpy( Buffer, TimeStamp );
88 return (
int)(Aig_ManObjNum(
p) == Aig_ManCiNum(
p) + Aig_ManCoNum(
p) + Aig_ManNodeNum(
p) + 1);
107 LevelMax = Abc_MaxInt( LevelMax, (
int)Aig_ObjFanin0(pObj)->Level );
130 if ( Aig_ObjFanin0(pObj) )
131 Aig_ObjFanin0(pObj)->nRefs++;
132 if ( Aig_ObjFanin1(pObj) )
133 Aig_ObjFanin1(pObj)->nRefs++;
245 assert( !Aig_IsComplement(pObj) );
246 assert( !Aig_ObjIsCo(pObj) );
247 if ( Aig_ObjIsAnd(pObj) )
269 if ( pRoot != pObj && (Aig_IsComplement(pObj) || Aig_ObjIsCi(pObj) || Aig_ObjType(pRoot) != Aig_ObjType(pObj)) )
271 Vec_PtrPushUnique(vSuper, pObj);
291 assert( !Aig_IsComplement(pRoot) );
292 Vec_PtrClear( vSuper );
311 assert( !Aig_IsComplement(pNode) );
313 if ( !Aig_ObjIsAnd(pNode) )
316 if ( !Aig_ObjFaninC0(pNode) || !Aig_ObjFaninC1(pNode) )
319 pNode0 = Aig_ObjFanin0(pNode);
320 pNode1 = Aig_ObjFanin1(pNode);
322 if ( !Aig_ObjIsAnd(pNode0) || !Aig_ObjIsAnd(pNode1) )
325 return (Aig_ObjFanin0(pNode0) == Aig_ObjFanin0(pNode1) && (Aig_ObjFaninC0(pNode0) ^ Aig_ObjFaninC0(pNode1))) ||
326 (Aig_ObjFanin0(pNode0) == Aig_ObjFanin1(pNode1) && (Aig_ObjFaninC0(pNode0) ^ Aig_ObjFaninC1(pNode1))) ||
327 (Aig_ObjFanin1(pNode0) == Aig_ObjFanin0(pNode1) && (Aig_ObjFaninC1(pNode0) ^ Aig_ObjFaninC0(pNode1))) ||
328 (Aig_ObjFanin1(pNode0) == Aig_ObjFanin1(pNode1) && (Aig_ObjFaninC1(pNode0) ^ Aig_ObjFaninC1(pNode1)));
346 assert( !Aig_IsComplement(pObj) );
347 if ( !Aig_ObjIsNode(pObj) )
349 if ( Aig_ObjIsExor(pObj) )
351 *ppFan0 = Aig_ObjChild0(pObj);
352 *ppFan1 = Aig_ObjChild1(pObj);
355 assert( Aig_ObjIsAnd(pObj) );
356 p0 = Aig_ObjChild0(pObj);
357 p1 = Aig_ObjChild1(pObj);
358 if ( !Aig_IsComplement(p0) || !Aig_IsComplement(p1) )
360 p0 = Aig_Regular(p0);
361 p1 = Aig_Regular(p1);
362 if ( !Aig_ObjIsAnd(p0) || !Aig_ObjIsAnd(p1) )
364 if ( Aig_ObjFanin0(p0) != Aig_ObjFanin0(p1) || Aig_ObjFanin1(p0) != Aig_ObjFanin1(p1) )
366 if ( Aig_ObjFaninC0(p0) == Aig_ObjFaninC0(p1) || Aig_ObjFaninC1(p0) == Aig_ObjFaninC1(p1) )
368 *ppFan0 = Aig_ObjChild0(p0);
369 *ppFan1 = Aig_ObjChild1(p0);
390 assert( !Aig_IsComplement(pNode) );
393 pNode0 = Aig_ObjFanin0(pNode);
394 pNode1 = Aig_ObjFanin1(pNode);
397 if ( Aig_ObjFanin1(pNode0) == Aig_ObjFanin1(pNode1) && (Aig_ObjFaninC1(pNode0) ^ Aig_ObjFaninC1(pNode1)) )
400 if ( Aig_ObjFaninC1(pNode0) )
402 *ppNodeT = Aig_Not(Aig_ObjChild0(pNode1));
403 *ppNodeE = Aig_Not(Aig_ObjChild0(pNode0));
404 return Aig_ObjChild1(pNode1);
408 *ppNodeT = Aig_Not(Aig_ObjChild0(pNode0));
409 *ppNodeE = Aig_Not(Aig_ObjChild0(pNode1));
410 return Aig_ObjChild1(pNode0);
413 else if ( Aig_ObjFanin0(pNode0) == Aig_ObjFanin0(pNode1) && (Aig_ObjFaninC0(pNode0) ^ Aig_ObjFaninC0(pNode1)) )
416 if ( Aig_ObjFaninC0(pNode0) )
418 *ppNodeT = Aig_Not(Aig_ObjChild1(pNode1));
419 *ppNodeE = Aig_Not(Aig_ObjChild1(pNode0));
420 return Aig_ObjChild0(pNode1);
424 *ppNodeT = Aig_Not(Aig_ObjChild1(pNode0));
425 *ppNodeE = Aig_Not(Aig_ObjChild1(pNode1));
426 return Aig_ObjChild0(pNode0);
429 else if ( Aig_ObjFanin0(pNode0) == Aig_ObjFanin1(pNode1) && (Aig_ObjFaninC0(pNode0) ^ Aig_ObjFaninC1(pNode1)) )
432 if ( Aig_ObjFaninC0(pNode0) )
434 *ppNodeT = Aig_Not(Aig_ObjChild0(pNode1));
435 *ppNodeE = Aig_Not(Aig_ObjChild1(pNode0));
436 return Aig_ObjChild1(pNode1);
440 *ppNodeT = Aig_Not(Aig_ObjChild1(pNode0));
441 *ppNodeE = Aig_Not(Aig_ObjChild0(pNode1));
442 return Aig_ObjChild0(pNode0);
445 else if ( Aig_ObjFanin1(pNode0) == Aig_ObjFanin0(pNode1) && (Aig_ObjFaninC1(pNode0) ^ Aig_ObjFaninC0(pNode1)) )
448 if ( Aig_ObjFaninC1(pNode0) )
450 *ppNodeT = Aig_Not(Aig_ObjChild1(pNode1));
451 *ppNodeE = Aig_Not(Aig_ObjChild0(pNode0));
452 return Aig_ObjChild0(pNode1);
456 *ppNodeT = Aig_Not(Aig_ObjChild0(pNode0));
457 *ppNodeE = Aig_Not(Aig_ObjChild1(pNode1));
458 return Aig_ObjChild1(pNode0);
478 Aig_Obj_t * pObjNew, * pObjR = Aig_Regular(pObj);
479 if ( !Aig_ObjIsBuf(pObjR) )
482 return Aig_NotCond( pObjNew, Aig_IsComplement(pObj) );
498 int Diff = Aig_ObjId(*pp1) - Aig_ObjId(*pp2);
525 fCompl = Aig_IsComplement(pObj);
526 pObj = Aig_Regular(pObj);
528 if ( Aig_ObjIsConst1(pObj) )
530 fprintf( pFile,
"%d", !fCompl );
534 if ( Aig_ObjIsCi(pObj) )
536 fprintf( pFile,
"%s%s", fCompl?
"!" :
"", (
char*)pObj->
pData );
540 Vec_VecExpand( vLevels, Level );
541 vSuper = Vec_VecEntry(vLevels, Level);
543 fprintf( pFile,
"%s", (Level==0?
"" :
"(") );
546 Aig_ObjPrintEqn( pFile, Aig_NotCond(pFanin, fCompl), vLevels, Level+1 );
547 if ( i < Vec_PtrSize(vSuper) - 1 )
548 fprintf( pFile,
" %s ", fCompl?
"+" :
"*" );
550 fprintf( pFile,
"%s", (Level==0?
"" :
")") );
569 Aig_Obj_t * pFanin, * pFanin0, * pFanin1, * pFaninC;
572 fCompl = Aig_IsComplement(pObj);
573 pObj = Aig_Regular(pObj);
575 if ( Aig_ObjIsConst1(pObj) )
577 fprintf( pFile,
"1\'b%d", !fCompl );
581 if ( Aig_ObjIsCi(pObj) )
583 fprintf( pFile,
"%s%s", fCompl?
"~" :
"", (
char*)pObj->
pData );
587 if ( Aig_ObjIsExor(pObj) )
589 Vec_VecExpand( vLevels, Level );
590 vSuper = Vec_VecEntry( vLevels, Level );
592 fprintf( pFile,
"%s", (Level==0?
"" :
"(") );
596 if ( i < Vec_PtrSize(vSuper) - 1 )
597 fprintf( pFile,
" ^ " );
599 fprintf( pFile,
"%s", (Level==0?
"" :
")") );
607 fprintf( pFile,
"%s", (Level==0?
"" :
"(") );
609 fprintf( pFile,
" ^ " );
611 fprintf( pFile,
"%s", (Level==0?
"" :
")") );
616 fprintf( pFile,
"%s", (Level==0?
"" :
"(") );
618 fprintf( pFile,
" ? " );
620 fprintf( pFile,
" : " );
622 fprintf( pFile,
"%s", (Level==0?
"" :
")") );
627 Vec_VecExpand( vLevels, Level );
628 vSuper = Vec_VecEntry(vLevels, Level);
630 fprintf( pFile,
"%s", (Level==0?
"" :
"(") );
634 if ( i < Vec_PtrSize(vSuper) - 1 )
635 fprintf( pFile,
" %s ", fCompl?
"|" :
"&" );
637 fprintf( pFile,
"%s", (Level==0?
"" :
")") );
655 assert( !Aig_IsComplement(pObj) );
656 printf(
"Node %d : ", pObj->
Id );
657 if ( Aig_ObjIsConst1(pObj) )
658 printf(
"constant 1" );
659 else if ( Aig_ObjIsCi(pObj) )
661 else if ( Aig_ObjIsCo(pObj) )
665 Aig_ObjFanin0(pObj)->Id, (Aig_ObjFaninC0(pObj)?
"\'" :
" ") );
668 printf(
"AND( %d%s, %d%s )",
669 Aig_ObjFanin0(pObj)->Id, (Aig_ObjFaninC0(pObj)?
"\'" :
" "),
670 Aig_ObjFanin1(pObj)->Id, (Aig_ObjFaninC1(pObj)?
"\'" :
" ") );
671 printf(
" (refs = %3d)", Aig_ObjRefs(pObj) );
683 Vec_PtrFree( vNodes );
705 printf(
" %p", pObj );
711 Vec_PtrFree( vNodes );
727 static int Counter = 0;
730 sprintf( FileName,
"aigbug\\%03d.blif", ++Counter );
732 printf(
"Intermediate AIG with %d nodes was written into file \"%s\".\n", Aig_ManNodeNum(
p), FileName );
750 Aig_Obj_t * pObj, * pObjLi, * pObjLo, * pConst1 = NULL;
751 int i, nDigits, Counter = 0;
752 if ( Aig_ManCoNum(
p) == 0 )
754 printf(
"Aig_ManDumpBlif(): AIG manager does not have POs.\n" );
759 if ( Aig_ObjIsConst1(Aig_ObjFanin0(pObj)) )
760 pConst1 = Aig_ManConst1(
p);
764 Aig_ManConst1(
p)->iData = Counter++;
766 pObj->
iData = Counter++;
768 pObj->
iData = Counter++;
770 pObj->
iData = Counter++;
771 nDigits = Abc_Base10Log( Counter );
773 pFile = fopen( pFileName,
"w" );
774 fprintf( pFile,
"# BLIF file written by procedure Aig_ManDumpBlif()\n" );
776 fprintf( pFile,
".model %s\n",
p->pName );
778 fprintf( pFile,
".inputs" );
781 fprintf( pFile,
" %s", (
char*)Vec_PtrEntry(vPiNames, i) );
783 fprintf( pFile,
" n%0*d", nDigits, pObj->
iData );
784 fprintf( pFile,
"\n" );
786 fprintf( pFile,
".outputs" );
789 fprintf( pFile,
" %s", (
char*)Vec_PtrEntry(vPoNames, i) );
791 fprintf( pFile,
" n%0*d", nDigits, pObj->
iData );
792 fprintf( pFile,
"\n" );
794 if ( Aig_ManRegNum(
p) )
796 fprintf( pFile,
"\n" );
799 fprintf( pFile,
".latch" );
801 fprintf( pFile,
" %s", (
char*)Vec_PtrEntry(vPoNames, Aig_ManCoNum(
p)-Aig_ManRegNum(
p)+i) );
803 fprintf( pFile,
" n%0*d", nDigits, pObjLi->
iData );
805 fprintf( pFile,
" %s", (
char*)Vec_PtrEntry(vPiNames, Aig_ManCiNum(
p)-Aig_ManRegNum(
p)+i) );
807 fprintf( pFile,
" n%0*d", nDigits, pObjLo->
iData );
808 fprintf( pFile,
" 0\n" );
810 fprintf( pFile,
"\n" );
814 fprintf( pFile,
".names n%0*d\n 1\n", nDigits, pConst1->
iData );
818 fprintf( pFile,
".names" );
819 if ( vPiNames && Aig_ObjIsCi(Aig_ObjFanin0(pObj)) )
820 fprintf( pFile,
" %s", (
char*)Vec_PtrEntry(vPiNames, Aig_ObjCioId(Aig_ObjFanin0(pObj))) );
822 fprintf( pFile,
" n%0*d", nDigits, Aig_ObjFanin0(pObj)->iData );
823 if ( vPiNames && Aig_ObjIsCi(Aig_ObjFanin1(pObj)) )
824 fprintf( pFile,
" %s", (
char*)Vec_PtrEntry(vPiNames, Aig_ObjCioId(Aig_ObjFanin1(pObj))) );
826 fprintf( pFile,
" n%0*d", nDigits, Aig_ObjFanin1(pObj)->iData );
827 fprintf( pFile,
" n%0*d\n", nDigits, pObj->
iData );
828 fprintf( pFile,
"%d%d 1\n", !Aig_ObjFaninC0(pObj), !Aig_ObjFaninC1(pObj) );
833 fprintf( pFile,
".names" );
834 if ( vPiNames && Aig_ObjIsCi(Aig_ObjFanin0(pObj)) )
835 fprintf( pFile,
" %s", (
char*)Vec_PtrEntry(vPiNames, Aig_ObjCioId(Aig_ObjFanin0(pObj))) );
837 fprintf( pFile,
" n%0*d", nDigits, Aig_ObjFanin0(pObj)->iData );
839 fprintf( pFile,
" %s\n", (
char*)Vec_PtrEntry(vPoNames, Aig_ObjCioId(pObj)) );
841 fprintf( pFile,
" n%0*d\n", nDigits, pObj->
iData );
842 fprintf( pFile,
"%d 1\n", !Aig_ObjFaninC0(pObj) );
845 fprintf( pFile,
".end\n\n" );
847 Vec_PtrFree( vNodes );
865 Aig_Obj_t * pObj, * pObjLi, * pObjLo, * pConst1 = NULL;
866 int i, nDigits, Counter = 0;
867 if ( Aig_ManCoNum(
p) == 0 )
869 printf(
"Aig_ManDumpBlif(): AIG manager does not have POs.\n" );
874 if ( Aig_ObjIsConst1(Aig_ObjFanin0(pObj)) )
875 pConst1 = Aig_ManConst1(
p);
879 Aig_ManConst1(
p)->iData = Counter++;
881 pObj->
iData = Counter++;
883 pObj->
iData = Counter++;
885 pObj->
iData = Counter++;
886 nDigits = Abc_Base10Log( Counter );
888 pFile = fopen( pFileName,
"w" );
889 fprintf( pFile,
"// Verilog file written by procedure Aig_ManDumpVerilog()\n" );
891 if ( Aig_ManRegNum(
p) )
892 fprintf( pFile,
"module %s ( clock",
p->pName?
p->pName:
"test" );
894 fprintf( pFile,
"module %s (",
p->pName?
p->pName:
"test" );
896 fprintf( pFile,
"%s n%0*d", ((Aig_ManRegNum(
p) || i)?
",":
""), nDigits, pObj->
iData );
898 fprintf( pFile,
", n%0*d", nDigits, pObj->
iData );
899 fprintf( pFile,
" );\n" );
902 if ( Aig_ManRegNum(
p) )
903 fprintf( pFile,
"input clock;\n" );
905 fprintf( pFile,
"input n%0*d;\n", nDigits, pObj->
iData );
908 fprintf( pFile,
"output n%0*d;\n", nDigits, pObj->
iData );
910 if ( Aig_ManRegNum(
p) )
913 fprintf( pFile,
"reg n%0*d;\n", nDigits, pObjLo->
iData );
915 fprintf( pFile,
"wire n%0*d;\n", nDigits, pObjLi->
iData );
919 fprintf( pFile,
"wire n%0*d;\n", nDigits, pObj->
iData );
921 fprintf( pFile,
"wire n%0*d;\n", nDigits, pConst1->
iData );
924 fprintf( pFile,
"assign n%0*d = 1\'b1;\n", nDigits, pConst1->
iData );
927 fprintf( pFile,
"assign n%0*d = %sn%0*d & %sn%0*d;\n",
928 nDigits, pObj->
iData,
929 !Aig_ObjFaninC0(pObj) ?
" " :
"~", nDigits, Aig_ObjFanin0(pObj)->iData,
930 !Aig_ObjFaninC1(pObj) ?
" " :
"~", nDigits, Aig_ObjFanin1(pObj)->iData
936 fprintf( pFile,
"assign n%0*d = %sn%0*d;\n",
937 nDigits, pObj->
iData,
938 !Aig_ObjFaninC0(pObj) ?
" " :
"~", nDigits, Aig_ObjFanin0(pObj)->iData );
940 if ( Aig_ManRegNum(
p) )
944 fprintf( pFile,
"assign n%0*d = %sn%0*d;\n",
945 nDigits, pObjLi->
iData,
946 !Aig_ObjFaninC0(pObjLi) ?
" " :
"~", nDigits, Aig_ObjFanin0(pObjLi)->iData );
951 if ( Aig_ManRegNum(
p) )
954 fprintf( pFile,
"always @ (posedge clock) begin n%0*d <= n%0*d; end\n",
955 nDigits, pObjLo->
iData,
956 nDigits, pObjLi->
iData );
958 fprintf( pFile,
"initial begin n%0*d <= 1\'b0; end\n",
959 nDigits, pObjLo->
iData );
962 fprintf( pFile,
"endmodule\n\n" );
964 Vec_PtrFree( vNodes );
1025 Counter += Aig_ObjIsChoice(
p, pObj );
1042 Aig_Obj_t * pObj, * pFanin0, * pFanin1, * pCtrl;
1045 pCtrl = Aig_ManCi(
p, Aig_ManCiNum(
p) - 1 );
1047 printf(
"Control signal:\n" );
1052 if ( !Aig_ObjIsNode(pObj) )
1055 pFanin0 = Aig_ObjFanin0(pObj);
1056 pFanin1 = Aig_ObjFanin1(pObj);
1057 if ( pFanin0 == pCtrl && Aig_ObjIsCi(pFanin1) )
1063 if ( pFanin1 == pCtrl && Aig_ObjIsCi(pFanin0) )
1085 static char Buffer[1000];
1088 if ( (pDot =
strrchr( Buffer,
'.' )) )
1090 strcat( Buffer, pSuffix );
1091 if ( (pDot =
strrchr( Buffer,
'\\' )) || (pDot =
strrchr( Buffer,
'/' )) )
1110 unsigned int lfsr = 1;
1111 unsigned int period = 0;
1112 pFile = fopen(
"rand.txt",
"w" );
1117 fprintf( pFile,
"%10d : %10d ", period, lfsr );
1119 fprintf( pFile,
"\n" );
1120 if ( period == 20000 )
1122 }
while(lfsr != 1u);
1141 unsigned int period = 0;
1142 pFile = fopen(
"rand.txt",
"w" );
1146 fprintf( pFile,
"%10d : %10d ", period, lfsr );
1148 fprintf( pFile,
"\n" );
1149 if ( period == 20000 )
1151 }
while(lfsr != 1u);
1156#define NUMBER1 3716960521u
1157#define NUMBER2 2174103536u
1173 static unsigned int m_z =
NUMBER1;
1174 static unsigned int m_w =
NUMBER2;
1176 static __thread
unsigned int m_z =
NUMBER1;
1177 static __thread
unsigned int m_w =
NUMBER2;
1184 m_z = 36969 * (m_z & 65535) + (m_z >> 16);
1185 m_w = 18000 * (m_w & 65535) + (m_w >> 16);
1186 return (m_z << 16) + m_w;
1223 for ( w = iWordStart; w < iWordStop; w++ )
1245 Vec_PtrGrow( vArr, Vec_PtrSize(vArr1) + Vec_PtrSize(vArr2) );
1247 while ( pBeg1 < pEnd1 && pBeg2 < pEnd2 )
1249 if ( (*pBeg1)->Id == (*pBeg2)->Id )
1250 *pBeg++ = *pBeg1++, pBeg2++;
1251 else if ( (*pBeg1)->Id < (*pBeg2)->Id )
1256 while ( pBeg1 < pEnd1 )
1258 while ( pBeg2 < pEnd2 )
1260 vArr->nSize = pBeg - (
Aig_Obj_t **)vArr->pArray;
1261 assert( vArr->nSize <= vArr->nCap );
1262 assert( vArr->nSize >= vArr1->nSize );
1263 assert( vArr->nSize >= vArr2->nSize );
1284 Vec_PtrGrow( vArr, Abc_MaxInt( Vec_PtrSize(vArr1), Vec_PtrSize(vArr2) ) );
1286 while ( pBeg1 < pEnd1 && pBeg2 < pEnd2 )
1288 if ( (*pBeg1)->Id == (*pBeg2)->Id )
1289 *pBeg++ = *pBeg1++, pBeg2++;
1290 else if ( (*pBeg1)->Id < (*pBeg2)->Id )
1301 vArr->nSize = pBeg - (
Aig_Obj_t **)vArr->pArray;
1302 assert( vArr->nSize <= vArr->nCap );
1303 assert( vArr->nSize <= vArr1->nSize );
1304 assert( vArr->nSize <= vArr2->nSize );
1334 int Val0, Val1, nObjs, i, k, iBit = 0;
1335 assert( Aig_ManRegNum(pAig) > 0 );
1336 assert( pAig->pData2 == NULL );
1338 pAig->pData2 =
ABC_CALLOC(
unsigned, Abc_BitWordNum( (pCex->iFrame + 1) * Aig_ManObjNumMax(pAig) ) );
1341 assert( Abc_InfoHasBit(pCex->pData, iBit) == 0 ), iBit++;
1343 nObjs = Aig_ManObjNumMax(pAig);
1344 for ( i = 0; i <= pCex->iFrame; i++ )
1347 Abc_InfoSetBit( (
unsigned *)pAig->pData2, nObjs * i + 0 );
1350 if ( Abc_InfoHasBit(pCex->pData, iBit++) )
1351 Abc_InfoSetBit( (
unsigned *)pAig->pData2, nObjs * i + Aig_ObjId(pObj) );
1355 Val0 = Abc_InfoHasBit( (
unsigned *)pAig->pData2, nObjs * i + Aig_ObjFaninId0(pObj) );
1356 Val1 = Abc_InfoHasBit( (
unsigned *)pAig->pData2, nObjs * i + Aig_ObjFaninId1(pObj) );
1357 if ( (Val0 ^ Aig_ObjFaninC0(pObj)) & (Val1 ^ Aig_ObjFaninC1(pObj)) )
1358 Abc_InfoSetBit( (
unsigned *)pAig->pData2, nObjs * i + Aig_ObjId(pObj) );
1363 Val0 = Abc_InfoHasBit( (
unsigned *)pAig->pData2, nObjs * i + Aig_ObjFaninId0(pObj) );
1364 if ( Val0 ^ Aig_ObjFaninC0(pObj) )
1365 Abc_InfoSetBit( (
unsigned *)pAig->pData2, nObjs * i + Aig_ObjId(pObj) );
1367 if ( i == pCex->iFrame )
1371 if ( Abc_InfoHasBit( (
unsigned *)pAig->pData2, nObjs * i + Aig_ObjId(pObjRi) ) )
1372 Abc_InfoSetBit( (
unsigned *)pAig->pData2, nObjs * (i+1) + Aig_ObjId(pObjRo) );
1374 assert( iBit == pCex->nBits );
1376 assert( Abc_InfoHasBit( (
unsigned *)pAig->pData2, nObjs * pCex->iFrame + Aig_ObjId(Aig_ManCo(pAig, pCex->iPo)) ) );
1392 assert( pAig->pData2 != NULL );
1393 free( pAig->pData2 );
1394 pAig->pData2 = NULL;
1412 assert( Id >= 0 && Id < Aig_ManObjNumMax(pAig) );
1413 return Abc_InfoHasBit( (
unsigned *)pAig->pData2, Aig_ManObjNumMax(pAig) * iFrame + Id );
1429 Aig_Obj_t * pObj = Aig_ManObj( pAig, Aig_ManObjNumMax(pAig)/2 );
1430 int iFrame = Abc_MaxInt( 0, pCex->iFrame - 1 );
1431 printf(
"\nUsing counter-example, which asserts output %d in frame %d.\n", pCex->iPo, pCex->iFrame );
1433 printf(
"Value of object %d in frame %d is %d.\n", Aig_ObjId(pObj), iFrame,
1454 Aig_ManConst1( pAig )->fPhase = 1;
1459 pObj->
fPhase = ( Aig_ObjFanin0(pObj)->fPhase ^ Aig_ObjFaninC0(pObj) )
1460 & ( Aig_ObjFanin1(pObj)->fPhase ^ Aig_ObjFaninC1(pObj) );
1463 pObj->
fPhase = Aig_ObjFanin0(pObj)->fPhase ^ Aig_ObjFaninC0(pObj);
1483 vMuxes = Vec_PtrAlloc( 100 );
1486 Vec_PtrPush( vMuxes, pObj );
1503 Aig_Obj_t * pObj, * pNodeT, * pNodeE, * pNodeC;
1533 Aig_Obj_t * pObj, * pNodeT, * pNodeE, * pNodeC;
1565 if ( Aig_ManConstrNum(pAig) == 0 )
1569 if ( i >= Saig_ManPoNum(pAig) - Aig_ManConstrNum(pAig) )
1570 Aig_ObjChild0Flip( pObj );
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
Vec_Ptr_t * Aig_ManDfsArray(Aig_Man_t *p, Aig_Obj_t **pNodes, int nNodes)
void Aig_ObjPrintVerilog(FILE *pFile, Aig_Obj_t *pObj, Vec_Vec_t *vLevels, int Level)
void Aig_ManPrintControlFanouts(Aig_Man_t *p)
void Aig_ManPrintVerbose(Aig_Man_t *p, int fHaig)
int Aig_ManChoiceNum(Aig_Man_t *p)
void Aig_ManCleanMarkB(Aig_Man_t *p)
void Aig_ObjPrintEqn(FILE *pFile, Aig_Obj_t *pObj, Vec_Vec_t *vLevels, int Level)
void Aig_ManSetCioIds(Aig_Man_t *p)
void Aig_ObjCollectMulti_rec(Aig_Obj_t *pRoot, Aig_Obj_t *pObj, Vec_Ptr_t *vSuper)
int Aig_ManHasNoGaps(Aig_Man_t *p)
void Aig_ManCleanMarkA(Aig_Man_t *p)
int Aig_ObjRecognizeExor(Aig_Obj_t *pObj, Aig_Obj_t **ppFan0, Aig_Obj_t **ppFan1)
void Aig_ManInvertConstraints(Aig_Man_t *pAig)
int Aig_ManCounterExampleValueLookup(Aig_Man_t *pAig, int Id, int iFrame)
ABC_NAMESPACE_IMPL_END ABC_NAMESPACE_IMPL_START void Aig_ManCounterExampleValueStart(Aig_Man_t *pAig, Abc_Cex_t *pCex)
void Aig_ManCounterExampleValueTest(Aig_Man_t *pAig, Abc_Cex_t *pCex)
void Aig_ManCleanNext(Aig_Man_t *p)
void Aig_ObjPrintVerboseCone(Aig_Man_t *p, Aig_Obj_t *pRoot, int fHaig)
void Aig_ManCleanCioIds(Aig_Man_t *p)
void Aig_ManDumpVerilog(Aig_Man_t *p, char *pFileName)
void Aig_NodeIntersectLists(Vec_Ptr_t *vArr1, Vec_Ptr_t *vArr2, Vec_Ptr_t *vArr)
void Aig_ObjPrintVerbose(Aig_Obj_t *pObj, int fHaig)
void Aig_ManMuxesDeref(Aig_Man_t *pAig, Vec_Ptr_t *vMuxes)
ABC_NAMESPACE_IMPL_START void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
int Aig_ManLevels(Aig_Man_t *p)
int Aig_ObjCompareIdIncrease(Aig_Obj_t **pp1, Aig_Obj_t **pp2)
Aig_Obj_t * Aig_ObjRecognizeMux(Aig_Obj_t *pNode, Aig_Obj_t **ppNodeT, Aig_Obj_t **ppNodeE)
void Aig_ManMuxesRef(Aig_Man_t *pAig, Vec_Ptr_t *vMuxes)
void Aig_ManCleanMarkAB(Aig_Man_t *p)
void Aig_ManResetRefs(Aig_Man_t *p)
void Aig_ManRandomTest2()
int Aig_ObjIsMuxType(Aig_Obj_t *pNode)
void Aig_NodeUnionLists(Vec_Ptr_t *vArr1, Vec_Ptr_t *vArr2, Vec_Ptr_t *vArr)
void Aig_ManRandomTest1()
void Aig_ObjCollectMulti(Aig_Obj_t *pRoot, Vec_Ptr_t *vSuper)
void Aig_ManCounterExampleValueStop(Aig_Man_t *pAig)
char * Aig_FileNameGenericAppend(char *pBase, char *pSuffix)
word Aig_ManRandom64(int fReset)
Aig_Obj_t * Aig_ObjReal_rec(Aig_Obj_t *pObj)
void Aig_ObjCleanData_rec(Aig_Obj_t *pObj)
void Aig_ManSetPhase(Aig_Man_t *pAig)
Vec_Ptr_t * Aig_ManMuxesCollect(Aig_Man_t *pAig)
void Aig_ManCleanData(Aig_Man_t *p)
void Aig_ManRandomInfo(Vec_Ptr_t *vInfo, int iInputStart, int iWordStart, int iWordStop)
unsigned Aig_ManRandom(int fReset)
GLOBAL VARIABLES ///.
void Aig_ManDump(Aig_Man_t *p)
void Aig_ManDumpBlif(Aig_Man_t *p, char *pFileName, Vec_Ptr_t *vPiNames, Vec_Ptr_t *vPoNames)
#define Aig_ManForEachObj(p, pObj, i)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
struct Aig_Obj_t_ Aig_Obj_t
#define Aig_ManForEachNode(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
#define Aig_ManForEachPiSeq(p, pObj, i)
SEQUENTIAL ITERATORS ///.
#define Aig_ManForEachCo(p, pObj, i)
Vec_Ptr_t * Aig_ManDfs(Aig_Man_t *p, int fNodesOnly)
#define Aig_ManForEachPoSeq(p, pObj, i)
#define Aig_ManForEachLiLoSeq(p, pObjLi, pObjLo, k)
void Aig_ObjPrint(Aig_Man_t *p, Aig_Obj_t *pObj)
unsigned __int64 word
DECLARATIONS ///.
#define Saig_ManForEachLiLo(p, pObjLi, pObjLo, i)
#define Saig_ManForEachPo(p, pObj, i)
#define Saig_ManForEachLo(p, pObj, i)
#define Saig_ManForEachPi(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
#define Vec_PtrForEachEntryStart(Type, vVec, pEntry, i, Start)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.