50 int * pFanin, iFanin, i;
51 if ( Acb_ObjSetTravIdCur(
p, iObj) )
53 if ( !fTerm && Acb_ObjIsCi(
p, iObj) )
57 Vec_IntPush( &
p->vArray0, iObj );
62 Vec_IntClear( &
p->vArray0 );
63 Acb_NtkIncTravId(
p );
78 Vec_IntClear( &
p->vArray0 );
79 Acb_NtkIncTravId(
p );
88 if ( Acb_ObjSetTravIdCur(
p, iObj) )
90 if ( !fTerm && Acb_ObjIsCo(
p, iObj) )
94 Vec_IntPush( &
p->vArray1, iObj );
99 Vec_IntClear( &
p->vArray1 );
100 Acb_NtkIncTravId(
p );
111 if ( !Acb_NtkHasObjFanout(
p) )
112 Acb_NtkCreateFanout(
p );
113 Vec_IntClear( &
p->vArray1 );
114 Acb_NtkIncTravId(
p );
133 if ( Acb_ObjIsCi(
p, iObj) )
135 if ( Acb_ObjFaninNum(
p, iObj) != 1 )
141 int i, iObj, Count = 0;
148 int i, iObj, Count = 0;
149 Acb_NtkIncTravId(
p );
152 int Fanin0 = Acb_ObjFanin0(
p, iObj);
153 Acb_ObjSetTravIdCur(
p, iObj );
154 Acb_ObjSetTravIdCur(
p, Fanin0 );
155 if ( Acb_ObjFaninNum(
p, Fanin0) == 1 )
156 Acb_ObjSetTravIdCur(
p, Acb_ObjFanin0(
p, Fanin0) );
159 Count += Acb_ObjIsTravIdCur(
p, iObj);
176 int i, Fanin, * pFanins, Counter = 1;
177 if ( Acb_ObjIsCi(
p, iObj) )
181 assert( Vec_IntEntry(vRefs, Fanin) > 0 );
182 Vec_IntAddToEntry( vRefs, Fanin, -1 );
183 if ( Vec_IntEntry(vRefs, Fanin) == 0 )
190 int i, Fanin, * pFanins, Counter = 1;
191 if ( Acb_ObjIsCi(
p, iObj) )
195 if ( Vec_IntEntry(vRefs, Fanin) == 0 )
197 Vec_IntAddToEntry( vRefs, Fanin, 1 );
215 int i, Fanin, * pFanins;
216 if ( Acb_ObjIsCi(
p, iObj) )
218 Vec_IntPush( vRes, iObj );
221 assert( Vec_IntEntry(vRefs, Fanin) > 0 );
222 Vec_IntAddToEntry( vRefs, Fanin, -1 );
223 if ( Vec_IntEntry(vRefs, Fanin) == 0 )
230 Vec_Int_t * vRefs = Vec_IntStart( Acb_NtkObjNumMax(
p) );
231 int i, iObj, Fanin, * pFanins;
234 Vec_IntAddToEntry( vRefs, Fanin, 1 );
236 Vec_IntAddToEntry( vRefs, iObj, 1 );
239 Vec_IntAddToEntry( vRefs, iObj, 1 );
242 if ( Acb_ObjIsCo(
p, iObj) )
243 iObj = Acb_ObjFanin0(
p, iObj);
244 if ( Vec_IntEntry(vRefs, iObj) != 0 )
247 Vec_IntFree( vRefs );
248 Vec_IntUniqify( vRes );
254 Vec_Int_t * vRes = Vec_IntAlloc( Vec_PtrSize(vNames) );
258 int NameId = Acb_NtkStrId(pNtk, pName);
261 printf(
"Cannot find name \"%s\" in the network \"%s\".\n", pName, pNtk->
pDesign->
pName );
263 iObjId = Vec_IntEntry( vNamesInv, NameId );
264 Vec_IntPush( vRes, iObjId );
275 int i, iObj, RetValue = Vec_IntSize(vNodes);
276 Vec_IntFree( vNamesInv );
277 Vec_IntFree( vObjsRefed );
278 Vec_IntFree( vObjsDerefed );
279 for ( i = 0; i < 5; i++ )
283 int nFan = Acb_ObjFaninNum(pNtkF, iObj);
284 int Type = Acb_ObjType( pNtkF, iObj );
296 nGates[4] += Acb_ObjFaninNum(pNtkF, iObj)-1;
299 Vec_IntFree( vNodes );
312 Vec_PtrPush( vMffc, Abc_UtilStrsav( Acb_ObjNameStr(pNtkF, iObj) ) );
315 Vec_IntFree( vNodeMffc );
316 Vec_IntFree( vNodeObjs );
317 Vec_IntFree( vNamesInv );
335 int * pFanins, iFanin, k, Level = 0;
337 Level = Abc_MaxInt( Level, Acb_ObjLevelD(
p, iFanin) );
338 return Acb_ObjSetLevelD(
p, iObj, Level + !Acb_ObjIsCio(
p, iObj) );
343 int i, iObj, Level = 0;
344 if ( !Acb_NtkHasObjLevelD(
p ) )
345 Acb_NtkCleanObjLevelD(
p );
349 Level = Abc_MaxInt( Level, Acb_ObjLevelD(
p, iObj) );
356 int iFanout, k, Level = 0;
358 Level = Abc_MaxInt( Level, Acb_ObjLevelR(
p, iFanout) );
359 return Acb_ObjSetLevelR(
p, iObj, Level + !Acb_ObjIsCio(
p, iObj) );
364 int i, iObj, Level = 0;
365 if ( !Acb_NtkHasObjLevelR(
p ) )
366 Acb_NtkCleanObjLevelR(
p );
370 Level = Abc_MaxInt( Level, Acb_ObjLevelR(
p, iObj) );
395 int LevelSum = Acb_ObjLevelD(
p, iObj) + Acb_ObjLevelR(
p, iObj);
396 assert( !Acb_ObjIsCio(
p, iObj) +
p->LevelMax >= LevelSum );
397 return !Acb_ObjIsCio(
p, iObj) +
p->LevelMax - LevelSum;
402 int * pFanins, iFanin, k, Path = 0;
403 assert( !Acb_ObjIsCi(
p, iObj) );
406 Path += Acb_ObjPathD(
p, iFanin);
407 return Acb_ObjSetPathD(
p, iObj, Path );
411 int i, iObj, Path = 0;
413 if ( !Acb_NtkHasObjPathD(
p ) )
414 Acb_NtkCleanObjPathD(
p );
421 if ( Acb_ObjIsCi(
p, iObj) )
424 Acb_ObjSetPathD(
p, iObj, 0 );
433 if ( Acb_ObjIsCi(
p, iObj) )
436 Acb_ObjSetPathD(
p, iObj, 0 );
442 Path += Acb_ObjPathD(
p, iObj);
449 int iFanout, k, Path = 0;
450 assert( !Acb_ObjIsCo(
p, iObj) );
453 Path += Acb_ObjPathR(
p, iFanout);
454 return Acb_ObjSetPathR(
p, iObj, Path );
458 int i, iObj, Path = 0;
459 if ( !Acb_NtkHasObjPathR(
p ) )
460 Acb_NtkCleanObjPathR(
p );
467 if ( Acb_ObjIsCo(
p, iObj) )
470 Acb_ObjSetPathR(
p, iObj, 0 );
479 if ( Acb_ObjIsCo(
p, iObj) )
482 Acb_ObjSetPathR(
p, iObj, 0 );
488 Path += Acb_ObjPathR(
p, iObj);
499 printf(
"Obj = %5d : ", iObj );
500 printf(
"LevelD = %5d ", Acb_ObjLevelD(
p, iObj) );
501 printf(
"LevelR = %5d ", Acb_ObjLevelR(
p, iObj) );
502 printf(
"PathD = %5d ", Acb_ObjPathD(
p, iObj) );
503 printf(
"PathR = %5d ", Acb_ObjPathR(
p, iObj) );
504 printf(
"Paths = %5d ", Acb_ObjPathD(
p, iObj) * Acb_ObjPathR(
p, iObj) );
515 LevelD =
p->LevelMax;
517 LevelR =
p->LevelMax;
518 assert( LevelD == LevelR );
527 Acb_NtkCreateFanout( pNtk );
528 Acb_NtkCleanObjCounts( pNtk );
549 if ( Acb_ObjIsCio(
p, iObj) || Acb_ObjLevelD(
p, iObj) == 1 )
551 if (
p->vQue == NULL )
553 Acb_NtkCleanObjCounts(
p );
554 p->vQue = Vec_QueAlloc( 1000 );
555 Vec_QueSetPriority(
p->vQue, Vec_FltArrayP(&
p->vCounts) );
557 nPaths = Acb_ObjPathD(
p, iObj) * Acb_ObjPathR(
p, iObj);
558 Acb_ObjSetCounts(
p, iObj, (
float)nPaths );
559 if ( Vec_QueIsMember(
p->vQue, iObj ) )
562 Vec_QueUpdate(
p->vQue, iObj );
567 Vec_QuePush(
p->vQue, iObj );
572 int i, Entry, LevelMax =
p->LevelMax;
573 int LevelD, LevelR, nPaths1, nPaths2;
579 assert( Vec_IntEntryLast(vTfi) == iObj );
580 assert( Vec_IntEntryLast(vTfo) == iObj );
584 LevelD =
p->LevelMax;
586 LevelR =
p->LevelMax;
587 assert( LevelD == LevelR );
588 if ( iObj > 0 && LevelMax >
p->LevelMax )
593 Vec_QueClear(
p->vQue );
604 assert( nPaths1 == nPaths2 );
630 int k, iFanin, * pFanins;
631 printf(
"Node %5d : ", iObj );
633 printf(
"%d ", iFanin );
634 printf(
"LevelD = %d. LevelR = %d.\n", Acb_ObjLevelD(
p, iObj), Acb_ObjLevelR(
p, iObj) );
638 int Pivot = Acb_ObjAlloc(
p,
ABC_OPER_LUT, Vec_IntSize(vSupp), 0 );
639 Acb_ObjSetTruth(
p, Pivot, uTruth );
640 Acb_ObjAddFanins(
p, Pivot, vSupp );
641 Acb_ObjAddFaninFanout(
p, Pivot );
648 int k, iFanin, * pFanins;
650 assert( !Acb_ObjIsCio(
p, Pivot) );
652 Vec_IntPush( vFanins, iFanin );
654 Vec_WrdSetEntry( &
p->vObjTruth, Pivot, uTruth );
655 Vec_IntErase( Vec_WecEntry(&
p->vCnfs, Pivot) );
657 Acb_ObjRemoveFaninFanout(
p, Pivot );
658 Acb_ObjRemoveFanins(
p, Pivot );
662 assert( Acb_ObjFanoutNum(
p, Pivot) > 0 );
663 Acb_ObjAddFanins(
p, Pivot, vSupp );
664 Acb_ObjAddFaninFanout(
p, Pivot );
666 else if ( Acb_ObjFanoutNum(
p, Pivot) == 0 )
667 Acb_ObjCleanType(
p, Pivot );
670 if ( !Acb_ObjIsCio(
p, iFanin) && Acb_ObjFanoutNum(
p, iFanin) == 0 )
672 Vec_IntFree( vFanins );
676 int k, iFanin, * pFanins;
677 Vec_IntClear( &
p->vSuppOld );
679 Vec_IntPush( &
p->vSuppOld, iFanin );
690 if (
p->vQue == NULL )
695 Vec_IntClear( &
p->vSuppOld );
711 int * pFanin, iFanin, i;
712 if ( Acb_ObjSetTravIdCur(
p, iObj) )
714 if ( Acb_ObjIsCi(
p, iObj) )
718 assert( !Acb_ObjIsCo(
p, iObj) );
719 Vec_IntPush( vNodes, iObj );
724 Vec_Int_t * vNodes = Vec_IntAlloc( 1000 );
725 Acb_NtkIncTravId(
p );
733 int * pFanin, iFanin, k, Type, Res;
734 assert( !Acb_ObjIsCio(
p, iObj) );
735 Vec_IntClear( vTemp );
738 assert( Acb_ObjCopy(
p, iFanin) >= 0 );
739 Vec_IntPush( vTemp, Acb_ObjCopy(
p, iFanin) );
741 Type = Acb_ObjType(
p, iObj );
748 Res = fUseBuf ? Gia_ManAppendBuf(pNew, Vec_IntEntry(vTemp, 0)) : Vec_IntEntry(vTemp, 0);
755 Res = Gia_ManAppendAnd2( pNew, Res, iFanin );
762 Res = Gia_ManAppendOr2( pNew, Res, iFanin );
769 Res = fUseXors ? Gia_ManAppendXorReal2(pNew, Res, iFanin) : Gia_ManAppendXor2(pNew, Res, iFanin);
781 pNew->
pName = Abc_UtilStrsav(Acb_NtkName(
p));
782 Acb_NtkCleanObjCopies(
p );
784 Acb_ObjSetCopy(
p, iObj, Gia_ManAppendCi(pNew) );
787 Acb_ObjSetCopy(
p, iObj, Gia_ManAppendCi(pNew) );
789 for ( i = 0; i < nTargets; i++ )
790 Gia_ManAppendCi(pNew);
791 vFanins = Vec_IntAlloc( 4 );
794 if ( Acb_ObjCopy(
p, iObj) == -1 )
795 Acb_ObjSetCopy(
p, iObj,
Acb_ObjToGia2(pNew, fUseBuf,
p, iObj, vFanins, fUseXors) );
796 Vec_IntFree( vNodes );
797 Vec_IntFree( vFanins );
799 Gia_ManAppendCo( pNew, Acb_ObjCopy(
p, Acb_ObjFanin(
p, iObj, 0)) );
819 int i, iObj, iLit, nTargets = Vec_IntSize(&
p->vTargets);
821 Vec_Int_t * vNodes = Vec_IntAlloc( Acb_NtkObjNum(
p) );
822 Vec_Ptr_t * vNodesR = Vec_PtrStart( Gia_ManObjNum(pGia) );
823 Vec_Bit_t * vDriver = Vec_BitStart( Gia_ManObjNum(pGia) );
824 Vec_Bit_t * vPolar = Vec_BitStart( Gia_ManObjNum(pGia) );
826 if ( i < Gia_ManCiNum(pGia) - nTargets )
827 Vec_PtrWriteEntry( vNodesR, iObj, Abc_UtilStrsav(Acb_ObjNameStr(
p, Acb_NtkCi(
p, i))) );
829 Vec_PtrWriteEntry( vNodesR, iObj, Abc_UtilStrsav(Acb_ObjNameStr(
p, Vec_IntEntry(&
p->vTargets, i-(Gia_ManCiNum(pGia) - nTargets)))) );
832 Vec_BitWriteEntry( vDriver, Gia_ObjFaninId0(Gia_ManObj(pGia, iObj), iObj), 1 );
833 Vec_PtrWriteEntry( vNodesR, iObj, Abc_UtilStrsav(Acb_ObjNameStr(
p, Acb_NtkCo(
p, i))) );
834 Vec_IntPush( vNodes, iObj );
837 if ( (iLit = Acb_ObjCopy(
p, iObj)) >= 0 && Gia_ObjIsAnd(Gia_ManObj(pGia, Abc_Lit2Var(iLit))) )
839 if ( !Vec_BitEntry(vDriver, Abc_Lit2Var(iLit)) && Vec_PtrEntry(vNodesR, Abc_Lit2Var(iLit)) == NULL )
841 Vec_PtrWriteEntry( vNodesR, Abc_Lit2Var(iLit), Abc_UtilStrsav(Acb_ObjNameStr(
p, iObj)) );
842 Vec_IntPush( vNodes, Abc_Lit2Var(iLit) );
843 Vec_BitWriteEntry( vPolar, Abc_Lit2Var(iLit), Abc_LitIsCompl(iLit) );
846 Vec_BitFree( vDriver );
847 Vec_IntFree( vObjs );
848 Vec_IntSort( vNodes, 0 );
856 Vec_Int_t * vRes = Vec_IntAlloc( Vec_PtrSize(vUser) );
859 if ( Acb_ObjName(
p, i) > 0 )
860 Vec_IntWriteEntry( vMap, Acb_ObjName(
p, i), Acb_ObjCopy(
p, i) );
862 if ( Acb_NtkStrId(
p, pTemp) < Vec_IntSize(vMap) )
864 int iLit = Vec_IntEntry( vMap, Acb_NtkStrId(
p, pTemp) );
867 Vec_IntPush( vRes, Abc_Lit2Var(iLit) );
869 assert( Vec_IntSize(vRes) == Vec_PtrSize(vUser) );
871 Vec_IntUniqify( vRes );
886int Acb_NtkExtract(
char * pFileName0,
char * pFileName1,
int fUseXors,
int fVerbose,
892 if ( pNtkF && pNtkG )
894 int nTargets = Vec_IntSize(&pNtkF->
vTargets);
899 assert( Acb_NtkCiNum(pNtkF) == Acb_NtkCiNum(pNtkG) );
900 assert( Acb_NtkCoNum(pNtkF) == Acb_NtkCoNum(pNtkG) );
906 if ( pNtkF ) Acb_ManFree( pNtkF->
pDesign );
907 if ( pNtkG ) Acb_ManFree( pNtkG->
pDesign );
927 Vec_Int_t * vNodes = Vec_IntAlloc( Abc_NtkObjNumMax(
p) );
928 Vec_Ptr_t * vNodesR = Vec_PtrStart( Gia_ManObjNum(pGia) );
929 Vec_Bit_t * vDriver = Vec_BitStart( Gia_ManObjNum(pGia) );
930 Vec_Bit_t * vPolar = Vec_BitStart( Gia_ManObjNum(pGia) );
932 Vec_PtrWriteEntry( vNodesR, iObj, Abc_UtilStrsav(
Abc_ObjName(Abc_NtkCi(
p, i))) );
935 Vec_BitWriteEntry( vDriver, Gia_ObjFaninId0(Gia_ManObj(pGia, iObj), iObj), 1 );
936 Vec_PtrWriteEntry( vNodesR, iObj, Abc_UtilStrsav(
Abc_ObjName(Abc_NtkCo(
p, i))) );
937 Vec_IntPush( vNodes, iObj );
940 if ( (iLit = pObj->
iTemp) >= 0 && Gia_ObjIsAnd(Gia_ManObj(pGia, Abc_Lit2Var(iLit))) )
942 if ( !Vec_BitEntry(vDriver, Abc_Lit2Var(iLit)) && Vec_PtrEntry(vNodesR, Abc_Lit2Var(iLit)) == NULL )
944 Vec_PtrWriteEntry( vNodesR, Abc_Lit2Var(iLit), Abc_UtilStrsav(
Abc_ObjName(pObj)) );
945 Vec_IntPush( vNodes, Abc_Lit2Var(iLit) );
946 Vec_BitWriteEntry( vPolar, Abc_Lit2Var(iLit), Abc_LitIsCompl(iLit) );
949 Vec_BitFree( vDriver );
950 Vec_PtrFree( vObjs );
951 Vec_IntSort( vNodes, 0 );
959 assert( Abc_ObjIsNode(pObj) );
960 Vec_IntClear( vTemp );
964 Vec_IntPush( vTemp, pFanin->
iTemp );
966 if ( Abc_ObjFaninNum(pObj) == 0 )
968 if ( Abc_ObjFaninNum(pObj) == 1 )
969 return Abc_SopIsBuf( (
char*)pObj->
pData ) ? Vec_IntEntry(vTemp, 0) : Abc_LitNot(Vec_IntEntry(vTemp, 0));
970 if ( Abc_ObjFaninNum(pObj) == 2 )
971 return Abc_LitNot( Gia_ManAppendAnd2( pNew, Vec_IntEntry(vTemp, 0), Vec_IntEntry(vTemp, 1) ) );
982 pNew->
pName = Abc_UtilStrsav(Abc_NtkName(
p));
986 pObj->
iTemp = Gia_ManAppendCi(pNew);
987 vFanins = Vec_IntAlloc( 4 );
991 Vec_PtrFree( vNodes );
992 Vec_IntFree( vFanins );
994 Gia_ManAppendCo( pNew, Abc_ObjFanin0(pObj)->iTemp );
1006 if ( pNtkF && pNtkG )
1010 assert( Abc_NtkCiNum(pNtkF) == Abc_NtkCiNum(pNtkG) );
1011 assert( Abc_NtkCoNum(pNtkF) == Abc_NtkCoNum(pNtkG) );
1012 pGiaF->
pSpec = Abc_UtilStrsav( pNtkF->
pSpec );
1013 pGiaG->
pSpec = Abc_UtilStrsav( pNtkG->
pSpec );
1037 Vec_Int_t * vPlaces;
int First = 1,
Pos = -1, fComment = 0;
1039 char * pLimit = pBuffer +
strlen(pBuffer);
1040 if ( pBuffer == NULL )
1042 vPlaces = Vec_IntAlloc( Vec_PtrSize(vNames) );
1043 for ( pTemp = pBuffer; *pTemp; pTemp++ )
1045 if ( *pTemp ==
'\n' )
1047 if ( *pTemp ==
'/' && *(pTemp + 1) ==
'/' )
1052 if ( *pTemp ==
'\n' )
1053 Pos = pTemp - pBuffer + 1;
1054 else if ( *pTemp ==
'(' )
1060 char * pToken =
strtok( pTemp+1,
" \n\r\t," );
1061 char * pName;
int i;
1063 if ( !
strcmp(pName, pToken) )
1064 Vec_IntPushTwo( vPlaces,
Pos, i );
1065 pTemp = pToken +
strlen(pToken);
1066 while ( *pTemp == 0 )
1068 assert( pTemp < pLimit );
1072 assert( Vec_IntSize(vPlaces) == 2*Vec_PtrSize(vNames) );
1078 int i, k, Prev = 0,
Pos, Pos2, iObj;
1080 char * pName, * pBuffer;
1081 FILE * pFile = fopen( pFileNameOut,
"wb" );
1082 if ( pFile == NULL )
1084 printf(
"Cannot open output file \"%s\".\n", pFileNameOut );
1088 if ( pBuffer == NULL )
1091 printf(
"Cannot open input file \"%s\".\n", pFileNameIn );
1100 for ( k = Prev; k <
Pos; k++ )
1101 fputc( pBuffer[k], pFile );
1102 fprintf( pFile,
"// MFFC %d = %s //", iObj, (
char *)Vec_PtrEntry(vMffcNames, iObj) );
1105 Vec_IntFree( vPlaces );
1106 Vec_PtrFreeFree( vMffcNames );
1113 for ( k = Prev; k <
Pos; k++ )
1114 fputc( pBuffer[k], pFile );
1115 fprintf( pFile,
"// [t_%d = %s] //", iObj, (
char *)Vec_PtrEntry(vNames, iObj) );
1118 Vec_IntFree( vPlaces );
1120 pName =
strstr(pBuffer,
"endmodule");
1121 Pos2 = pName - pBuffer;
1122 for ( k = Prev; k < Pos2; k++ )
1123 fputc( pBuffer[k], pFile );
1124 fprintf( pFile,
"\n\n" );
1125 fprintf( pFile,
" wire " );
1129 fprintf( pFile,
" t_%d%s", i, i==Vec_PtrSize(vNames)-1 ?
";" :
"," );
1134 fprintf( pFile,
" t%d_%s%s", i, pName, i==Vec_PtrSize(vNames)-1 ?
";" :
"," );
1136 fprintf( pFile,
"\n\n" );
1140 fprintf( pFile,
" buf( %s, t_%d );\n", pName, i );
1145 fprintf( pFile,
" buf( %s, t%d_%s );\n", pName, i, pName );
1147 fprintf( pFile,
"\n" );
1148 for ( k = Pos2; pBuffer[k]; k++ )
1149 fputc( pBuffer[k], pFile );
1167 if ( Acb_ObjSetTravIdCur(pNtk, iObj) )
1169 Vec_IntWriteEntry( vDists, iObj,
Dist );
1170 Vec_IntPush( vRes, iObj );
1177 int k, iFanin, * pFanins, Weight = Vec_IntEntry(vDists, iObj);
1179 Acb_Ntk4CollectAdd( pNtk, iFanin, vRes, vDists, Weight + 1*(Acb_ObjFaninNum(pNtk, iObj) > 1) );
1181 Acb_Ntk4CollectAdd( pNtk, iFanin, vRes, vDists, Weight + 2*(Acb_ObjFaninNum(pNtk, iObj) > 1) );
1188 FILE * pFile = fopen( pFileName,
"wb" );
1189 if ( pFile == NULL )
1191 printf(
"Canont open input file \"%s\".\n", pFileName );
1194 vStart = Vec_IntAlloc( 100 );
1195 vNexts = Vec_IntAlloc( 100 );
1196 vDists = Vec_IntStart( Acb_NtkObjNumMax(pNtk) );
1197 Acb_NtkIncTravId( pNtk );
1200 Acb_ObjSetTravIdCur(pNtk, iObj);
1201 Vec_IntWriteEntry( vDists, iObj, 1 );
1202 Vec_IntPush( vStart, iObj );
1207 if ( Vec_IntSize(vNexts) == 0 )
1209 Vec_IntClear( vStart );
1212 Vec_IntFree( vStart );
1213 Vec_IntFree( vNexts );
1228 char * pName = Acb_ObjNameStr(pNtk, iObj);
1229 int Weight = Vec_IntEntry(vDists, iObj);
1239 fprintf( pFile,
"%s %d\n", pName, 100000+Weight );
1242 Vec_IntFree( vDists );
1247 char * pName;
int i, iObj;
1248 Vec_Int_t * vObjs = Vec_IntAlloc( Vec_PtrSize(vObjNames) );
1250 Acb_NtkCreateFanout( pNtkF );
1254 if ( !
strcmp(Acb_ObjNameStr(pNtkF, iObj), pName) )
1255 Vec_IntPush( vObjs, iObj );
1258 Acb_ManFree( pNtkF->
pDesign );
1259 Vec_IntFree( vObjs );
struct Abc_Obj_t_ Abc_Obj_t
#define Abc_NtkForEachCo(pNtk, pCo, i)
ABC_DLL int Abc_SopIsConst0(char *pSop)
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
#define Abc_ObjForEachFanin(pObj, pFanin, i)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
struct Abc_Ntk_t_ Abc_Ntk_t
#define Abc_NtkForEachCi(pNtk, pCi, i)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_SopIsBuf(char *pSop)
#define ABC_SWAP(Type, a, b)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
Acb_Ntk_t * Acb_NtkFromAbc(Abc_Ntk_t *p)
int Acb_NtkComputePaths(Acb_Ntk_t *p)
Gia_Man_t * Abc_NtkToGia2(Abc_Ntk_t *p, int fUseXors)
int Acb_NtkCollectMfsGates(char *pFileName, Vec_Ptr_t *vNamesRefed, Vec_Ptr_t *vNamesDerefed, int nGates[5])
int Acb_NtkNodeRef_rec(Vec_Int_t *vRefs, Acb_Ntk_t *p, int iObj)
void Acb_NtkSaveSupport(Acb_Ntk_t *p, int iObj)
int Abc_NtkExtract(char *pFileName0, char *pFileName1, int fUseXors, int fVerbose, Gia_Man_t **ppGiaF, Gia_Man_t **ppGiaG, Vec_Int_t **pvNodes, Vec_Ptr_t **pvNodesR, Vec_Bit_t **pvPolar)
int Acb_ObjToGia2(Gia_Man_t *pNew, int fUseBuf, Acb_Ntk_t *p, int iObj, Vec_Int_t *vTemp, int fUseXors)
int Acb_ObjSlack(Acb_Ntk_t *p, int iObj)
void Acb_NtkInsert(char *pFileNameIn, char *pFileNameOut, Vec_Ptr_t *vNames, int fNumber, int fSkipMffc)
int Acb_ObjComputePathD(Acb_Ntk_t *p, int iObj)
int Acb_NtkCountPiBuffers(Acb_Ntk_t *p, Vec_Int_t *vObjs)
void Acb_NtkFindNodes2_rec(Acb_Ntk_t *p, int iObj, Vec_Int_t *vNodes)
void Abc_NtkComputePaths(Abc_Ntk_t *p)
Vec_Int_t * Acb_NtkPlaces(char *pFileName, Vec_Ptr_t *vNames)
void Acb_NtkUpdateLevelD(Acb_Ntk_t *p, int Pivot)
void Acb_NtkUpdateNode(Acb_Ntk_t *p, int Pivot, word uTruth, Vec_Int_t *vSupp)
int Acb_NtkCreateNode(Acb_Ntk_t *p, word uTruth, Vec_Int_t *vSupp)
int Acb_NtkComputeLevelR(Acb_Ntk_t *p, Vec_Int_t *vTfi)
void Acb_NtkPrintNode(Acb_Ntk_t *p, int iObj)
void Acb_ObjCollectTfo_rec(Acb_Ntk_t *p, int iObj, int fTerm)
void Acb_NtkUpdateTiming(Acb_Ntk_t *p, int iObj)
Vec_Int_t * Acb_NtkCollectCopies(Acb_Ntk_t *p, Gia_Man_t *pGia, Vec_Ptr_t **pvNodesR, Vec_Bit_t **pvPolar)
Vec_Int_t * Abc_NtkCollectCopies(Abc_Ntk_t *p, Gia_Man_t *pGia, Vec_Ptr_t **pvNodesR, Vec_Bit_t **pvPolar)
int Acb_NtkComputePathsD(Acb_Ntk_t *p, Vec_Int_t *vTfo, int fReverse)
Vec_Int_t * Acb_ObjCollectTfi(Acb_Ntk_t *p, int iObj, int fTerm)
int Acb_NtkNodeDeref_rec(Vec_Int_t *vRefs, Acb_Ntk_t *p, int iObj)
Vec_Int_t * Acb_ObjCollectTfoVec(Acb_Ntk_t *p, Vec_Int_t *vObjs)
int Acb_ObjComputeLevelR(Acb_Ntk_t *p, int iObj)
void Acb_NtkCollectDeref_rec(Vec_Int_t *vRefs, Acb_Ntk_t *p, int iObj, Vec_Int_t *vRes)
void Acb_NtkPrintPaths(Acb_Ntk_t *p)
int Acb_ObjComputeLevelD(Acb_Ntk_t *p, int iObj)
void Acb_Ntk4DumpWeightsInt(Acb_Ntk_t *pNtk, Vec_Int_t *vObjs, char *pFileName)
Vec_Int_t * Acb_NtkCollectUser(Acb_Ntk_t *p, Vec_Ptr_t *vUser)
int Acb_NtkCountPoDrivers(Acb_Ntk_t *p, Vec_Int_t *vObjs)
Vec_Int_t * Acb_ObjCollectTfiVec(Acb_Ntk_t *p, Vec_Int_t *vObjs)
void Acb_Ntk4CollectAdd(Acb_Ntk_t *pNtk, int iObj, Vec_Int_t *vRes, Vec_Int_t *vDists, int Dist)
Vec_Ptr_t * Acb_NtkReturnMfsGates(char *pFileName, Vec_Ptr_t *vNodes)
Vec_Int_t * Acb_NtkFindNodes2(Acb_Ntk_t *p)
Vec_Int_t * Acb_ObjCollectTfo(Acb_Ntk_t *p, int iObj, int fTerm)
Vec_Int_t * Acb_NtkCollectMffc(Acb_Ntk_t *p, Vec_Int_t *vObjsRefed, Vec_Int_t *vObjsDerefed)
int Acb_NtkExtract(char *pFileName0, char *pFileName1, int fUseXors, int fVerbose, Gia_Man_t **ppGiaF, Gia_Man_t **ppGiaG, int fUseBuf, Vec_Int_t **pvNodes, Vec_Ptr_t **pvNodesR, Vec_Bit_t **pvPolar)
void Acb_Ntk4CollectRing(Acb_Ntk_t *pNtk, Vec_Int_t *vStart, Vec_Int_t *vRes, Vec_Int_t *vDists)
Vec_Int_t * Acb_NamesToIds(Acb_Ntk_t *pNtk, Vec_Int_t *vNamesInv, Vec_Ptr_t *vNames)
int Abc_ObjToGia2(Gia_Man_t *pNew, Abc_Ntk_t *p, Abc_Obj_t *pObj, Vec_Int_t *vTemp, int fUseXors)
void Acb_NtkResetNode(Acb_Ntk_t *p, int Pivot, word uTruth, Vec_Int_t *vSupp)
int Acb_NtkComputePathsR(Acb_Ntk_t *p, Vec_Int_t *vTfi, int fReverse)
ABC_NAMESPACE_IMPL_START void Acb_ObjCollectTfi_rec(Acb_Ntk_t *p, int iObj, int fTerm)
DECLARATIONS ///.
void Acb_Ntk4DumpWeights(char *pFileNameIn, Vec_Ptr_t *vObjNames, char *pFileName)
int Acb_NtkComputeLevelD(Acb_Ntk_t *p, Vec_Int_t *vTfo)
int Acb_ObjComputePathR(Acb_Ntk_t *p, int iObj)
int Acb_NtkIsPiBuffers(Acb_Ntk_t *p, int iObj)
void Acb_ObjUpdatePriority(Acb_Ntk_t *p, int iObj)
Gia_Man_t * Acb_NtkToGia2(Acb_Ntk_t *p, int fUseBuf, int fUseXors, Vec_Int_t *vTargets, int nTargets)
Acb_Ntk_t * Acb_VerilogSimpleRead(char *pFileName, char *pFileNameW)
#define Acb_NtkForEachCi(p, iObj, i)
struct Acb_Ntk_t_ Acb_Ntk_t
#define Acb_ObjForEachFanout(p, iObj, iFanout, k)
#define Acb_NtkForEachCo(p, iObj, i)
#define Acb_NtkForEachObj(p, i)
#define Acb_NtkForEachNode(p, i)
#define Acb_ObjForEachFaninFast(p, iObj, pFanins, iFanin, k)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Gia_ManStop(Gia_Man_t *p)
#define Gia_ManForEachCoId(p, Id, i)
Gia_Man_t * Gia_ManStart(int nObjsMax)
FUNCTION DEFINITIONS ///.
void Gia_ManUpdateCopy(Vec_Int_t *vCopy, Gia_Man_t *p)
struct Gia_Man_t_ Gia_Man_t
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
#define Gia_ManForEachCiId(p, Id, i)
Io_FileType_t Io_ReadFileType(char *pFileName)
DECLARATIONS ///.
Abc_Ntk_t * Io_Read(char *pFileName, Io_FileType_t FileType, int fCheck, int fBarBufs)
unsigned __int64 word
DECLARATIONS ///.
int Abc_NamObjNumMax(Abc_Nam_t *p)
typedefABC_NAMESPACE_HEADER_START struct Vec_Bit_t_ Vec_Bit_t
INCLUDES ///.
#define Vec_IntForEachEntryDouble(vVec, Entry1, Entry2, i)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
#define Vec_IntForEachEntryReverse(vVec, pEntry, i)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.