67 return Abc_ObjId(Abc_ObjRegular(*pp1)) - Abc_ObjId(Abc_ObjRegular(*pp2));
83 if ( Abc_ObjIsComplement(pObj) || !Abc_ObjIsNode(pObj) )
85 Vec_PtrPush( vSuper, pObj );
94 Vec_PtrClear( vSuper );
95 if ( Abc_ObjIsComplement(pObj) )
101 Vec_PtrPush( vSuper, Abc_ObjNot(pObj) );
121 int i, k, nDontCares;
126 if ( Abc_LatchIsInitDc(pObj) )
128 Abc_LatchSetInit0(pObj);
133 Abc_Print( 1,
"Warning: %d registers in this network have don't-care init values.\n", nDontCares );
134 Abc_Print( 1,
"The don't-care are assumed to be 0. The result may not verify.\n" );
135 Abc_Print( 1,
"Use command \"print_latch\" to see the init values of registers.\n" );
136 Abc_Print( 1,
"Use command \"zero\" to convert or \"init\" to change the values.\n" );
140 vSuper = Vec_PtrAlloc( 100 );
141 vDrivers = Vec_PtrAlloc( 100 );
143 *pvMap = Vec_IntAlloc( 100 );
148 Vec_PtrPush( vDrivers, Abc_ObjNot(Abc_ObjChild0(pObj)) );
150 Vec_IntPush( *pvMap, i );
156 Vec_PtrPush( vDrivers, pTemp );
158 Vec_IntPush( *pvMap, i );
161 Vec_PtrFree( vSuper );
175 Abc_ObjFanout0(pObj)->pCopy = Abc_ObjNotCond( Abc_ObjFanout0(pObj)->pCopy, Abc_LatchIsInit1(pObj) );
182 Vec_PtrFree( vDrivers );
185 Aig_ObjCreateCo( pMan, (
Aig_Obj_t *)Abc_ObjNotCond(Abc_ObjChild0Copy(pObj), Abc_LatchIsInit1(Abc_ObjFanout0(pObj))) );
192 Abc_Print( 1,
"Abc_NtkToDarBmc: AIG check has failed.\n" );
216 vUnknown = Vec_IntStart( Abc_NtkLatchNum(pNtk) );
218 if ( Abc_LatchIsInitDc(pObj) )
220 Vec_IntWriteEntry( vUnknown, i, 1 );
221 Abc_LatchSetInit0(pObj);
243 int i, nNodes, nDontCares;
247 assert( Abc_NtkBoxNum(pNtk) == Abc_NtkLatchNum(pNtk) );
249 if ( i < Abc_NtkPiNum(pNtk) )
251 assert( Abc_ObjIsPi(pObj) );
252 if ( !Abc_ObjIsPi(pObj) )
253 Abc_Print( 1,
"Abc_NtkToDar(): Temporary bug: The PI ordering is wrong!\n" );
256 assert( Abc_ObjIsBo(pObj) );
258 if ( i < Abc_NtkPoNum(pNtk) )
260 assert( Abc_ObjIsPo(pObj) );
261 if ( !Abc_ObjIsPo(pObj) )
262 Abc_Print( 1,
"Abc_NtkToDar(): Temporary bug: The PO ordering is wrong!\n" );
265 assert( Abc_ObjIsBi(pObj) );
269 if ( Abc_LatchIsInitDc(pObj) )
271 Abc_LatchSetInit0(pObj);
276 Abc_Print( 1,
"Warning: %d registers in this network have don't-care init values.\n", nDontCares );
277 Abc_Print( 1,
"The don't-care are assumed to be 0. The result may not verify.\n" );
278 Abc_Print( 1,
"Use command \"print_latch\" to see the init values of registers.\n" );
279 Abc_Print( 1,
"Use command \"zero\" to convert or \"init\" to change the values.\n" );
284 pMan->fCatchExor = fExors;
301 if ( Abc_LatchIsInit1(pObj) )
302 Abc_ObjFanout0(pObj)->pCopy = Abc_ObjNot(Abc_ObjFanout0(pObj)->pCopy);
313 Vec_PtrFree( vNodes );
314 pMan->fAddStrash = 0;
322 if ( Abc_LatchIsInit1(Abc_ObjFanout0(Abc_NtkCo(pNtk,i))) )
326 if ( !fExors && nNodes )
327 Abc_Print( 1,
"Abc_NtkToDar(): Unexpected %d dangling nodes when converting to AIG!\n", nNodes );
333 pMan->vFlopNums = Vec_IntStartNatural( pMan->nRegs );
341 Abc_Print( 1,
"Abc_NtkToDar: AIG check has failed.\n" );
386 if ( Abc_AigNodeIsChoice( pObj ) )
393 Vec_PtrFree( vNodes );
401 Abc_Print( 1,
"Abc_NtkToDar: AIG check has failed.\n" );
425 assert( pMan->nAsserts == 0 );
435 pObj->
pData = Abc_NtkCi(pNtkNew, i);
442 if ( Aig_ObjIsBuf(pObj) )
446 Vec_PtrFree( vNodes );
450 if ( pMan->nAsserts && i == Aig_ManCoNum(pMan) - pMan->nAsserts )
456 Abc_Print( 1,
"Abc_NtkFromDar(): Network check has failed.\n" );
479 int i, iNodeId, nDigits;
480 assert( pMan->nAsserts == 0 );
488 if ( Abc_NtkCiNum(pNtkNew) < Aig_ManCiNum(pMan) - Aig_ManRegNum(pMan) )
490 for ( i = Aig_ManCiNum(pMan) - Aig_ManRegNum(pMan) - Abc_NtkCiNum(pNtkNew); i > 0; i-- )
492 pObjNew = Abc_NtkCreatePi( pNtkNew );
497 assert( Abc_NtkCiNum(pNtkNew) == Aig_ManCiNum(pMan) - Aig_ManRegNum(pMan) );
498 assert( Abc_NtkCoNum(pNtkNew) == Aig_ManCoNum(pMan) - Aig_ManRegNum(pMan) );
502 pObj->
pData = Abc_NtkCi(pNtkNew, i);
506 pObjNew = Abc_NtkCreateLatch( pNtkNew );
507 pObjLi->
pData = Abc_NtkCreateBi( pNtkNew );
508 pObjLo->
pData = Abc_NtkCreateBo( pNtkNew );
511 Abc_LatchSetInit0( pObjNew );
516 if ( Aig_ObjIsBuf(pObj) )
520 Vec_PtrFree( vNodes );
528 pObjNew = Abc_NtkObj( pNtkNew, iNodeId );
530 pObjNew = (
Abc_Obj_t *)Aig_ObjChild0Copy(pObj);
533 if ( pMan->vFlopNums == NULL )
558 assert( Abc_NtkBoxNum(pNtkOld) == Abc_NtkLatchNum(pNtkOld) );
559 nDigits = Abc_Base10Log( Abc_NtkLatchNum(pNtkNew) );
562 pLatch = Abc_NtkBox( pNtkOld, Vec_IntEntry( pMan->vFlopNums, i ) );
579 Abc_Print( 1,
"Abc_NtkFromDar(): Network check has failed.\n" );
602 assert( pMan->nAsserts == 0 );
614 pObjNew = Abc_NtkCreatePi( pNtkNew );
616 pObj->
pData = pObjNew;
621 pObjNew = Abc_NtkCreatePo( pNtkNew );
623 pObj->
pData = pObjNew;
625 assert( Abc_NtkCiNum(pNtkNew) == Aig_ManCiNum(pMan) - Aig_ManRegNum(pMan) );
626 assert( Abc_NtkCoNum(pNtkNew) == Aig_ManCoNum(pMan) - Aig_ManRegNum(pMan) );
630 pObjNew = Abc_NtkCreateLatch( pNtkNew );
631 pObjLi->
pData = Abc_NtkCreateBi( pNtkNew );
632 pObjLo->
pData = Abc_NtkCreateBo( pNtkNew );
635 Abc_LatchSetInit0( pObjNew );
642 if ( Aig_ObjIsBuf(pObj) )
646 Vec_PtrFree( vNodes );
650 pObjNew = (
Abc_Obj_t *)Aig_ObjChild0Copy(pObj);
660 Abc_Print( 1,
"Abc_NtkFromAigPhase(): Network check has failed.\n" );
708 if ( Gia_ObjIsTravIdCurrentId(
p, Id) )
709 return (
Hop_Obj_t *)Vec_PtrEntry( vCopies, Id );
710 Gia_ObjSetTravIdCurrentId(
p, Id);
711 pObj = Gia_ManObj(
p, Id);
712 assert( Gia_ObjIsAnd(pObj) );
717 gFunc =
Hop_And( pHopMan, Hop_NotCond(gFunc0, Gia_ObjFaninC0(pObj)), Hop_NotCond(gFunc1, Gia_ObjFaninC1(pObj)) );
718 Vec_PtrWriteEntry( vCopies, Id, gFunc );
724 assert( Gia_ObjIsLut(
p, GiaId) );
725 assert( Gia_ObjLutSize(
p, GiaId) > 0 );
729 Gia_ObjSetTravIdCurrentId(
p, iFan);
730 Vec_PtrWriteEntry( vCopies, iFan,
Hop_IthVar(pHopMan, k) );
750 if ( Gia_ObjValue(pObj) >= 0 )
751 pObjNew = Abc_NtkObj( pNtkNew, Gia_ObjValue(pObj) );
756 pObjNew = Abc_NtkCreateNode( pNtkNew );
757 Abc_ObjAddFanin( pObjNew, Abc_NtkObj(pNtkNew, Gia_ObjValue(Gia_ObjFanin0(pObj))) );
758 Abc_ObjAddFanin( pObjNew, Abc_NtkObj(pNtkNew, Gia_ObjValue(Gia_ObjFanin1(pObj))) );
762 pObj->
Value = Abc_ObjId( pObjNew );
773 Abc_Obj_t * pObjNew, * pObjNewLi, * pObjNewLo, * pConst0 = NULL;
776 int i, k, iFan, nDupGates, nCountMux = 0;
777 assert( Gia_ManHasMapping(
p) ||
p->pMuxes || fFindEnables );
778 assert( !fFindEnables || !
p->pMuxes );
786 Gia_ManConst0(
p)->Value = Abc_ObjId(pConst0);
789 pObj->
Value = Abc_ObjId( Abc_NtkCreatePi( pNtkNew ) );
792 pObj->
Value = Abc_ObjId( Abc_NtkCreatePo( pNtkNew ) );
796 pObjNew = Abc_NtkCreateLatch( pNtkNew );
797 pObjNewLi = Abc_NtkCreateBi( pNtkNew );
798 pObjNewLo = Abc_NtkCreateBo( pNtkNew );
801 pObjLi->
Value = Abc_ObjId( pObjNewLi );
802 pObjLo->
Value = Abc_ObjId( pObjNewLo );
803 Abc_LatchSetInit0( pObjNew );
813 int iObjRo = Gia_ObjRiToRoId(
p, Gia_ObjId(
p, pObj) );
815 iLitE = Abc_LitNotCond( iLitE, Gia_ObjFaninC0(pObj) );
816 iLitT = Abc_LitNotCond( iLitT, Gia_ObjFaninC0(pObj) );
817 if ( Abc_Lit2Var(iLitT) == iObjRo )
822 iCtrl = Abc_LitNot( iCtrl );
824 if ( Abc_Lit2Var(iLitE) == iObjRo )
829 pObjNew = Abc_NtkCreateNode( pNtkNew );
837 if ( pObjNew == NULL )
842 else if (
p->pMuxes )
846 pObjNew = Abc_NtkCreateNode( pNtkNew );
847 if ( Gia_ObjIsMuxId(
p, i) )
849 Abc_ObjAddFanin( pObjNew, Abc_NtkObj(pNtkNew, Gia_ObjValue(Gia_ObjFanin2(
p, pObj))) );
850 Abc_ObjAddFanin( pObjNew, Abc_NtkObj(pNtkNew, Gia_ObjValue(Gia_ObjFanin1(pObj))) );
851 Abc_ObjAddFanin( pObjNew, Abc_NtkObj(pNtkNew, Gia_ObjValue(Gia_ObjFanin0(pObj))) );
857 else if ( Gia_ObjIsXor(pObj) )
859 Abc_ObjAddFanin( pObjNew, Abc_NtkObj(pNtkNew, Gia_ObjValue(Gia_ObjFanin0(pObj))) );
860 Abc_ObjAddFanin( pObjNew, Abc_NtkObj(pNtkNew, Gia_ObjValue(Gia_ObjFanin1(pObj))) );
867 Abc_ObjAddFanin( pObjNew, Abc_NtkObj(pNtkNew, Gia_ObjValue(Gia_ObjFanin0(pObj))) );
868 Abc_ObjAddFanin( pObjNew, Abc_NtkObj(pNtkNew, Gia_ObjValue(Gia_ObjFanin1(pObj))) );
873 pObj->
Value = Abc_ObjId( pObjNew );
878 vReflect = Vec_PtrStart( Gia_ManObjNum(
p) );
881 pObj = Gia_ManObj(
p, i);
883 if ( Gia_ObjLutSize(
p, i) == 0 )
885 pObj->
Value = Abc_ObjId(pConst0);
888 pObjNew = Abc_NtkCreateNode( pNtkNew );
890 Abc_ObjAddFanin( pObjNew, Abc_NtkObj(pNtkNew, Gia_ObjValue(Gia_ManObj(
p, iFan))) );
892 pObjNew->
fPersist = Gia_ObjLutIsMux(
p, i) && Gia_ObjLutSize(
p, i) == 3;
893 pObj->
Value = Abc_ObjId( pObjNew );
895 Vec_PtrFree( vReflect );
903 pObjNew = Abc_NtkObj( pNtkNew, Gia_ObjValue(Gia_ObjFanin0(pObj)) );
904 Abc_ObjAddFanin( Abc_NtkCo(pNtkNew, i), Abc_ObjNotCond( pObjNew, Gia_ObjFaninC0(pObj) ) );
916 printf(
"Added %d buffers/inverters to decouple the CO drivers.\n", nDupGates );
918 printf(
"Duplicated %d gates to decouple the CO drivers.\n", nDupGates );
921 if ( !Abc_ObjIsNone(pConst0) && Abc_ObjFanoutNum(pConst0) == 0 )
924 assert( Gia_ManPiNum(
p) == Abc_NtkPiNum(pNtkNew) );
925 assert( Gia_ManPoNum(
p) == Abc_NtkPoNum(pNtkNew) );
926 assert( Gia_ManRegNum(
p) == Abc_NtkLatchNum(pNtkNew) );
930 Abc_Print( 1,
"Abc_NtkFromMappedGia(): Network check has failed.\n" );
945static inline void Abc_NtkFromCellWrite(
Vec_Int_t * vCopyLits,
int i,
int c,
int Id )
947 Vec_IntWriteEntry( vCopyLits, Abc_Var2Lit(i, c), Id );
952 int iObjNew = Vec_IntEntry( vCopyLits, Abc_Var2Lit(i, c) );
954 return Abc_NtkObj(
p, iObjNew);
961 iObjNew = Vec_IntEntry( vCopyLits, Abc_Var2Lit(i, !c) );
assert( iObjNew >= 0 );
964 Abc_NtkFromCellWrite( vCopyLits, i, c, Abc_ObjId(pObjNew) );
973 Abc_Obj_t * pObjNew, * pObjNewLi, * pObjNewLo;
975 int i, k, iLit, iFanLit, nCells, fNeedConst[2] = {0};
977 assert( Gia_ManHasCellMapping(
p) );
983 vCopyLits = Vec_IntStartFull( 2*Gia_ManObjNum(
p) );
986 Abc_NtkFromCellWrite( vCopyLits, Gia_ObjId(
p, pObj), 0, Abc_ObjId( Abc_NtkCreatePi( pNtkNew ) ) );
989 Abc_NtkFromCellWrite( vCopyLits, Gia_ObjId(
p, pObj), 0, Abc_ObjId( Abc_NtkCreatePo( pNtkNew ) ) );
993 pObjNew = Abc_NtkCreateLatch( pNtkNew );
994 pObjNewLi = Abc_NtkCreateBi( pNtkNew );
995 pObjNewLo = Abc_NtkCreateBo( pNtkNew );
1000 Abc_NtkFromCellWrite( vCopyLits, Gia_ObjId(
p, pObjLi), 0, Abc_ObjId( pObjNewLi ) );
1001 Abc_NtkFromCellWrite( vCopyLits, Gia_ObjId(
p, pObjLo), 0, Abc_ObjId( pObjNewLo ) );
1002 Abc_LatchSetInit0( pObjNew );
1007 if ( Gia_ObjFaninId0p(
p, pObj) == 0 )
1008 fNeedConst[Gia_ObjFaninC0(pObj)] = 1;
1010 if ( Gia_ObjFaninId0p(
p, pObj) == 0 )
1011 fNeedConst[Gia_ObjFaninC0(pObj)] = 1;
1012 if ( fNeedConst[0] )
1014 if ( fNeedConst[1] )
1021 if ( Gia_ObjIsCellBuf(
p, iLit) )
1023 assert( !Abc_LitIsCompl(iLit) );
1025 pObjNew = Abc_NtkCreateNode( pNtkNew );
1026 iFanLit = Gia_ObjFaninLit0p(
p, Gia_ManObj(
p, Abc_Lit2Var(iLit)) );
1027 Abc_ObjAddFanin( pObjNew, Abc_NtkFromCellRead(pNtkNew, vCopyLits, Abc_Lit2Var(iFanLit), Abc_LitIsCompl(iFanLit)) );
1028 pObjNew->
pData = NULL;
1029 assert( Abc_ObjIsBarBuf(pObjNew) );
1032 else if ( Gia_ObjIsCellInv(
p, iLit) )
1034 int iLitNot = Abc_LitNot(iLit);
1035 if ( !Abc_LitIsCompl(iLit) )
1038 assert( Vec_IntEntry(vCopyLits, iLitNot) == -1 );
1039 assert( Gia_ObjCellId(
p, iLitNot) > 0 );
1040 pObjNew = Abc_NtkCreateNode( pNtkNew );
1042 Abc_ObjAddFanin( pObjNew, Abc_NtkFromCellRead(pNtkNew, vCopyLits, Abc_Lit2Var(iFanLit), Abc_LitIsCompl(iFanLit)) );
1044 Abc_NtkFromCellWrite( vCopyLits, Abc_Lit2Var(iLitNot), Abc_LitIsCompl(iLitNot), Abc_ObjId(pObjNew) );
1050 assert( Vec_IntEntry(vCopyLits, iLitNot) != -1 );
1053 pObjNew = Abc_NtkCreateNode( pNtkNew );
1054 Abc_ObjAddFanin( pObjNew, Abc_NtkFromCellRead(pNtkNew, vCopyLits, Abc_Lit2Var(iLit), Abc_LitIsCompl(iLitNot)) );
1059 assert( Gia_ObjCellId(
p, iLit) >= 0 );
1060 pObjNew = Abc_NtkCreateNode( pNtkNew );
1062 Abc_ObjAddFanin( pObjNew, Abc_NtkFromCellRead(pNtkNew, vCopyLits, Abc_Lit2Var(iFanLit), Abc_LitIsCompl(iFanLit)) );
1065 assert( Vec_IntEntry(vCopyLits, iLit) == -1 );
1066 Abc_NtkFromCellWrite( vCopyLits, Abc_Lit2Var(iLit), Abc_LitIsCompl(iLit), Abc_ObjId(pObjNew) );
1074 pObjNew = Abc_NtkFromCellRead( pNtkNew, vCopyLits, Gia_ObjFaninId0p(
p, pObj), Gia_ObjFaninC0(pObj) );
1089 printf(
"Added %d buffers/inverters to decouple the CO drivers.\n", nDupGates );
1091 printf(
"Duplicated %d gates to decouple the CO drivers.\n", nDupGates );
1095 assert( Gia_ManPiNum(
p) == Abc_NtkPiNum(pNtkNew) );
1096 assert( Gia_ManPoNum(
p) == Abc_NtkPoNum(pNtkNew) );
1097 assert( Gia_ManRegNum(
p) == Abc_NtkLatchNum(pNtkNew) );
1098 Vec_IntFree( vCopyLits );
1103 Abc_Print( 1,
"Abc_NtkFromMappedGia(): Network check has failed.\n" );
1127 assert( pMan->nAsserts == 0 );
1129 assert( Aig_ManRegNum(pMan) <= Abc_NtkLatchNum(pNtkOld) );
1130 assert( Saig_ManPiNum(pMan) <= Abc_NtkCiNum(pNtkOld) );
1131 assert( Saig_ManPoNum(pMan) == Abc_NtkPoNum(pNtkOld) );
1132 assert( pMan->vCiNumsOrig != NULL );
1135 pNtkNew->
nConstrs = pMan->nConstrs;
1136 pNtkNew->
nBarBufs = pMan->nBarBufs;
1144 pObjNew = Abc_NtkCreatePi( pNtkNew );
1145 pObj->
pData = pObjNew;
1147 pObjOld = Abc_NtkCi( pNtkOld, Vec_IntEntry(pMan->vCiNumsOrig, i) );
1153 pObjNew = Abc_NtkCreatePo( pNtkNew );
1154 pObj->
pData = pObjNew;
1156 pObjOld = Abc_NtkCo( pNtkOld, i );
1159 assert( Abc_NtkCiNum(pNtkNew) == Aig_ManCiNum(pMan) - Aig_ManRegNum(pMan) );
1160 assert( Abc_NtkCoNum(pNtkNew) == Aig_ManCoNum(pMan) - Aig_ManRegNum(pMan) );
1164 pObjNew = Abc_NtkCreateLatch( pNtkNew );
1165 pObjLi->
pData = Abc_NtkCreateBi( pNtkNew );
1166 pObjLo->
pData = Abc_NtkCreateBo( pNtkNew );
1169 Abc_LatchSetInit0( pObjNew );
1171 pObjOld = Abc_NtkCi( pNtkOld, Vec_IntEntry(pMan->vCiNumsOrig, Saig_ManPiNum(pMan)+i) );
1174 pObjOld = Abc_NtkCo( pNtkOld, Saig_ManPoNum(pMan)+i );
1180 if ( Aig_ObjIsBuf(pObj) )
1184 Vec_PtrFree( vNodes );
1188 pObjNew = (
Abc_Obj_t *)Aig_ObjChild0Copy(pObj);
1193 Abc_Print( 1,
"Abc_NtkAfterTrim(): Network check has failed.\n" );
1213 assert( pMan->pEquivs != NULL );
1214 assert( Aig_ManBufNum(pMan) == 0 );
1217 pNtkNew->
nConstrs = pMan->nConstrs;
1223 pObj->
pData = Abc_NtkCi(pNtkNew, i);
1230 if ( (pTemp = Aig_ObjEquiv(pMan, pObj)) )
1241 Abc_Print( 1,
"Abc_NtkFromDar(): Network check has failed. Returning original network.\n" );
1251 if ( Abc_AigNodeIsChoice( pNode ) )
1254 for ( pNode = Abc_ObjEquiv(pNode); pNode; pNode = Abc_ObjEquiv(pNode) )
1256 printf(
"%d ", Counter );
1278 Abc_Obj_t * pObjNew, * pFaninNew, * pFaninNew0, * pFaninNew1;
1285 pNtkNew->
nConstrs = pMan->nConstrs;
1286 pNtkNew->
nBarBufs = pMan->nBarBufs;
1290 pObj->
pData = Abc_NtkPi(pNtkNew, i);
1294 pObjNew = Abc_NtkCreateLatch( pNtkNew );
1295 pFaninNew0 = Abc_NtkCreateBi( pNtkNew );
1296 pFaninNew1 = Abc_NtkCreateBo( pNtkNew );
1299 Abc_LatchSetInit0( pObjNew );
1300 pObj->
pData = Abc_ObjFanout0( pObjNew );
1309 if ( Aig_ObjIsBuf(pObj) )
1312 pFaninNew1 = (
Abc_Obj_t *)Aig_ObjChild1Copy(pObj);
1314 if ( Aig_ObjIsExor(pObj) )
1319 Vec_PtrFree( vNodes );
1323 pFaninNew = (
Abc_Obj_t *)Aig_ObjChild0Copy( pObj );
1329 pFaninNew = (
Abc_Obj_t *)Aig_ObjChild0Copy( pObj );
1333 Abc_Print( 1,
"Abc_NtkFromIvySeq(): Network check has failed.\n" );
1353 vNames = Vec_PtrAlloc( 100 );
1375 vNames = Vec_PtrAlloc( 100 );
1397 vInits = Vec_IntAlloc( Abc_NtkLatchNum(pNtk) );
1400 if ( Abc_LatchIsInit0(pLatch) )
1401 Vec_IntPush( vInits, 0 );
1402 else if ( Abc_LatchIsInit1(pLatch) )
1403 Vec_IntPush( vInits, 1 );
1404 else if ( Abc_LatchIsInitDc(pLatch) )
1405 Vec_IntPush( vInits, 2 );
1429 assert( Abc_NtkIsStrash(pNtk) );
1443 Abc_Print( 1,
"Abc_NtkDar: The network check has failed.\n" );
1471 pPars->nBTLimitNode = nConfLimit;
1472 pPars->fChoicing = fChoicing;
1473 pPars->fDoSparse = fDoSparse;
1474 pPars->fSpeculate = fSpeculate;
1475 pPars->fProve = fProve;
1476 pPars->fVerbose = fVerbose;
1531 pMan =
Csw_Sweep( pTemp = pMan, nCutsMax, nLeafMax, fVerbose );
1554 assert( Abc_NtkIsStrash(pNtk) );
1598 assert( Abc_NtkIsStrash(pNtk) );
1635 assert( Abc_NtkIsStrash(pNtk) );
1642 pMan =
Dar_ManCompress2( pTemp = pMan, fBalance, fUpdateLevel, fFanout, fPower, fVerbose );
1667 assert( Abc_NtkIsStrash(pNtk) );
1671 pMan =
Dar_ManChoice( pTemp = pMan, fBalance, fUpdateLevel, fConstruct, nConfMax, nLevelMax, fVerbose );
1699 assert( Abc_NtkIsStrash(pNtk) );
1703 if ( pPars->fUseNew )
1708 if ( pPars->fSynthesis )
1715pPars->timeSynth = Abc_Clock() - clk;
1716 if ( pPars->fUseGia )
1747 assert( Abc_NtkIsStrash(pNtk) );
1754 pMan =
Dar_ManRwsat( pTemp = pMan, fBalance, fVerbose );
1783 int i, k, nDupGates;
1789 Aig_ManCi(
p->pManAig, i)->pData = pNode->
pCopy;
1791 vCover = Vec_IntAlloc( 1 << 16 );
1795 pNodeNew = Abc_NtkCreateNode( pNtkNew );
1803 uTruth = 0xFFFF & *Cnf_CutTruth(pCut);
1810 pObj->
pData = pNodeNew;
1812 Vec_IntFree( vCover );
1816 pObj = Aig_ManCo(
p->pManAig, i);
1817 pNodeNew = Abc_ObjNotCond( (
Abc_Obj_t *)Aig_ObjFanin0(pObj)->pData, Aig_ObjFaninC0(pObj) );
1823 if ( Abc_ObjFanoutNum(pNodeNew) == 0 )
1832 Abc_Print( 1,
"Abc_NtkConstructFromCnf(): Network check has failed.\n" );
1855 assert( Abc_NtkIsStrash(pNtk) );
1863 Abc_Print( 1,
"Abc_NtkDarToCnf: AIG check has failed.\n" );
1884 Abc_Print( 1,
"CNF stats: Vars = %6d. Clauses = %7d. Literals = %8d. ", pCnf->
nVars, pCnf->
nClauses, pCnf->
nLiterals );
1885 Abc_PrintTime( 1,
"Time", Abc_Clock() - clk );
1915int Abc_NtkDSat(
Abc_Ntk_t * pNtk, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit,
int nLearnedStart,
int nLearnedDelta,
int nLearnedPerce,
int fAlignPol,
int fAndOuts,
int fNewSolver,
int fVerbose )
1919 assert( Abc_NtkIsStrash(pNtk) );
1920 assert( Abc_NtkLatchNum(pNtk) == 0 );
1923 RetValue =
Fra_FraigSat( pMan, nConfLimit, nInsLimit, nLearnedStart, nLearnedDelta, nLearnedPerce, fAlignPol, fAndOuts, fNewSolver, fVerbose );
1924 pNtk->
pModel = (
int *)pMan->pData, pMan->pData = NULL;
1942 extern int Aig_ManPartitionedSat(
Aig_Man_t * pNtk,
int nAlgo,
int nPartSize,
int nConfPart,
int nConfTotal,
int fAlignPol,
int fSynthesize,
int fVerbose );
1945 assert( Abc_NtkIsStrash(pNtk) );
1946 assert( Abc_NtkLatchNum(pNtk) == 0 );
1948 RetValue =
Aig_ManPartitionedSat( pMan, nAlgo, nPartSize, nConfPart, nConfTotal, fAlignPol, fSynthesize, fVerbose );
1949 pNtk->
pModel = (
int *)pMan->pData, pMan->pData = NULL;
1970 abctime clkTotal = Abc_Clock();
1983 if ( pNtk2 == NULL && fPartition == 1 )
1985 Abc_Print( 1,
"Abc_NtkDarCec(): Switching to non-partitioned CEC for the miter.\n" );
2000 if ( pNtk2 != NULL )
2004 if ( pMiter == NULL )
2006 Abc_Print( 1,
"Miter computation has failed.\n" );
2015 if ( RetValue == 0 )
2018 Abc_Print( 1,
"Networks are NOT EQUIVALENT after structural hashing.\n" );
2020 if ( pNtk2 == NULL )
2028 if ( RetValue == 1 )
2031 Abc_Print( 1,
"Networks are equivalent after structural hashing.\n" );
2040 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
2046 if ( pNtk2 == NULL )
2047 pNtk1->
pModel = (
int *)pMan->pData, pMan->pData = NULL;
2052 if ( RetValue == 1 )
2054 Abc_Print( 1,
"Networks are equivalent. " );
2055ABC_PRT(
"Time", Abc_Clock() - clkTotal );
2057 else if ( RetValue == 0 )
2059 Abc_Print( 1,
"Networks are NOT EQUIVALENT. " );
2060ABC_PRT(
"Time", Abc_Clock() - clkTotal );
2064 Abc_Print( 1,
"Networks are UNDECIDED. " );
2065ABC_PRT(
"Time", Abc_Clock() - clkTotal );
2085 Abc_Ntk_t * pNtkAig = NULL, * pNtkFraig;
2099ABC_PRT(
"Initial fraiging time", Abc_Clock() - clk );
2115 if ( Aig_ManRegNum(pMan) < Abc_NtkLatchNum(pNtk) )
2123 Abc_LatchSetInit0( pObj );
2143 int header_dumped = 0;
2144 int num_orig_latches = Abc_NtkLatchNum(pNtk);
2145 char **pNames =
ABC_ALLOC(
char *, num_orig_latches );
2146 int *p_irrelevant =
ABC_ALLOC(
int, num_orig_latches );
2147 char * pFlopName, * pReprName;
2155 char *temp_name =
Abc_ObjName( Abc_ObjFanout0(pNtkFlop) );
2157 strcpy(pNames[i], temp_name);
2164 p_irrelevant[i] =
false;
2166 pFlopName = pNames[i];
2168 pRepr = Aig_ObjRepr(pAig, pFlop);
2170 if ( pRepr == NULL )
2179 Abc_Print( 1,
"Here are the flop equivalences:\n");
2180 header_dumped =
true;
2184 if ( Aig_ObjIsConst1(pRepr) )
2186 Abc_Print( 1,
"Original flop %s is proved equivalent to constant.\n", pFlopName );
2191 assert( Saig_ObjIsLo( pAig, pRepr ) );
2192 repr_idx = Aig_ObjCioId(pRepr) - Saig_ManPiNum(pAig);
2193 pReprName = pNames[repr_idx];
2194 Abc_Print( 1,
"Original flop %s is proved equivalent to flop %s.\n", pFlopName, pReprName );
2198 header_dumped =
false;
2199 for (i=0; i<num_orig_latches; ++i)
2201 if (p_irrelevant[i])
2205 Abc_Print( 1,
"The following flops have been deemed irrelevant:\n");
2206 header_dumped =
true;
2208 Abc_Print( 1,
"%s ", pNames[i]);
2214 Abc_Print( 1,
"\n");
2242 if ( pPars->fFlopVerbose )
2249 if ( Aig_ManRegNum(pMan) < Abc_NtkLatchNum(pNtk) )
2257 Abc_LatchSetInit0( pObj );
2285 if ( Aig_ManRegNum(pMan) < Abc_NtkLatchNum(pNtk) )
2293 Abc_LatchSetInit0( pObj );
2320 pPars->fLatchCorrOpt = 1;
2321 pPars->nBTLimit = nConfMax;
2322 pPars->nSatVarMax = nVarsMax;
2323 pPars->nLimitMax = nLimitMax;
2324 pPars->fVerbose = fVerbose;
2329 if ( Aig_ManRegNum(pMan) < Abc_NtkLatchNum(pNtk) )
2337 Abc_LatchSetInit0( pObj );
2367int Abc_NtkDarBmc(
Abc_Ntk_t * pNtk,
int nStart,
int nFrames,
int nSizeMax,
int nNodeDelta,
int nTimeOut,
int nBTLimit,
int nBTLimitAll,
int fRewrite,
int fNewAlgo,
int fOrDecomp,
int nCofFanLit,
int fVerbose,
int * piFrames,
int fUseSatoko )
2371 int status, RetValue = -1;
2373 abctime nTimeLimit = nTimeOut ? nTimeOut * CLOCKS_PER_SEC + Abc_Clock(): 0;
2381 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
2384 assert( pMan->nRegs > 0 );
2385 assert( vMap == NULL || Vec_IntSize(vMap) == Saig_ManPoNum(pMan) );
2386 if ( fVerbose && vMap && Abc_NtkPoNum(pNtk) != Saig_ManPoNum(pMan) )
2387 Abc_Print( 1,
"Expanded %d outputs into %d outputs using OR decomposition.\n", Abc_NtkPoNum(pNtk), Saig_ManPoNum(pMan) );
2393 RetValue =
Saig_ManBmcSimple( pMan, nFrames, nSizeMax, nBTLimit, fRewrite, fVerbose, &iFrame, nCofFanLit, fUseSatoko );
2398 pNtk->
pSeqModel = pMan->pSeqModel; pMan->pSeqModel = NULL;
2399 if ( RetValue == 1 )
2400 Abc_Print( 1,
"Incorrect return value. " );
2401 else if ( RetValue == -1 )
2403 Abc_Print( 1,
"No output asserted in %d frames. Resource limit reached ", Abc_MaxInt(iFrame+1,0) );
2404 if ( nTimeLimit && Abc_Clock() > nTimeLimit )
2405 Abc_Print( 1,
"(timeout %d sec). ", nTimeLimit );
2407 Abc_Print( 1,
"(conf limit %d). ", nBTLimit );
2412 Abc_Print( 1,
"Output %d of miter \"%s\" was asserted in frame %d. ", pCex->iPo, pNtk->
pName, pCex->iFrame );
2414ABC_PRT(
"Time", Abc_Clock() - clk );
2418 RetValue =
Saig_BmcPerform( pMan, nStart, nFrames, nNodeDelta, nTimeOut, nBTLimit, nBTLimitAll, fVerbose, 0, piFrames, 0, fUseSatoko );
2421 pNtk->
pSeqModel = pMan->pSeqModel; pMan->pSeqModel = NULL;
2428 Abc_Print( 1,
"Abc_NtkDarBmc(): Counter-example verification has FAILED.\n" );
2434 Vec_IntFreeP( &vMap );
2453 int status, RetValue = -1;
2462 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
2465 assert( pMan->nRegs > 0 );
2466 if ( pPars->
fVerbose && vMap && Abc_NtkPoNum(pNtk) != Saig_ManPoNum(pMan) )
2467 Abc_Print( 1,
"Expanded %d outputs into %d outputs using OR decomposition.\n", Abc_NtkPoNum(pNtk), Saig_ManPoNum(pMan) );
2472 pNtk->
pSeqModel = pMan->pSeqModel; pMan->pSeqModel = NULL;
2475 if ( RetValue == 1 )
2477 Abc_Print( 1,
"Explored all reachable states after completing %d frames. ", 1<<Aig_ManRegNum(pMan) );
2479 else if ( RetValue == -1 )
2483 Abc_Print( 1,
"No output asserted in %d frames. Resource limit reached ", Abc_MaxInt(pPars->
iFrame+1,0) );
2484 if ( nTimeOut && Abc_Clock() > nTimeOut )
2485 Abc_Print( 1,
"(timeout %d sec). ", pPars->
nTimeOut );
2487 Abc_Print( 1,
"(conf limit %d). ", pPars->
nConfLimit );
2491 Abc_Print( 1,
"The total of %d outputs asserted in %d frames. Resource limit reached ", pPars->
nFailOuts, pPars->
iFrame );
2492 if ( Abc_Clock() > nTimeOut )
2493 Abc_Print( 1,
"(timeout %d sec). ", pPars->
nTimeOut );
2495 Abc_Print( 1,
"(conf limit %d). ", pPars->
nConfLimit );
2503 Abc_Print( 1,
"Output %d of miter \"%s\" was asserted in frame %d. ", pCex->iPo, pNtk->
pName, pCex->iFrame );
2507 int nOutputs = Saig_ManPoNum(pMan) - Saig_ManConstrNum(pMan);
2508 if ( pMan->vSeqModelVec == NULL || Vec_PtrCountZero(pMan->vSeqModelVec) == nOutputs )
2509 Abc_Print( 1,
"None of the %d outputs is found to be SAT", nOutputs );
2510 else if ( Vec_PtrCountZero(pMan->vSeqModelVec) == 0 )
2511 Abc_Print( 1,
"All %d outputs are found to be SAT", nOutputs );
2514 Abc_Print( 1,
"Some outputs are SAT (%d out of %d)", nOutputs - Vec_PtrCountZero(pMan->vSeqModelVec), nOutputs );
2516 Abc_Print( 1,
" while others timed out (%d out of %d)", pPars->
nDropOuts, nOutputs );
2518 Abc_Print( 1,
" after %d frames", pPars->
iFrame+2 );
2519 Abc_Print( 1,
". " );
2522 ABC_PRT(
"Time", Abc_Clock() - clk );
2524 if ( RetValue == 0 && pPars->
fSolveAll )
2528 pNtk->
vSeqModelVec = pMan->vSeqModelVec; pMan->vSeqModelVec = NULL;
2534 Abc_Print( 1,
"Abc_NtkDarBmc3(): Counter-example verification has FAILED.\n" );
2540 Vec_IntFreeP( &vMap );
2557 int RetValue = -1, iFrame;
2559 int nTotalProvedSat = 0;
2560 assert( pMan->nRegs > 0 );
2563 if ( pPars->fUseSeparate )
2570 if ( Aig_ObjFanin0(pObjPo) == Aig_ManConst1(pMan) )
2572 if ( pPars->fVerbose )
2573 Abc_Print( 1,
"Solving output %2d (out of %2d):\n", i, Saig_ManPoNum(pMan) );
2575 pTemp =
Aig_ManScl( pAux = pTemp, 1, 1, 0, -1, -1, 0, 0 );
2577 if ( Aig_ManRegNum(pTemp) == 0 )
2579 pTemp->pSeqModel = NULL;
2580 RetValue =
Fra_FraigSat( pTemp, pPars->nBTLimit, 0, 0, 0, 0, 0, 0, 0, 0 );
2582 pTemp->pSeqModel =
Abc_CexCreate( Aig_ManRegNum(pMan), Saig_ManPiNum(pMan), (
int *)pTemp->pData, 0, i, 1 );
2587 if ( pTemp->pSeqModel )
2589 if ( pPars->fDropSatOuts )
2591 Abc_Print( 1,
"Output %d proved SAT in frame %d (replacing by const 0 and continuing...)\n", i, pTemp->pSeqModel->iFrame );
2600 pCex = pMan->pSeqModel = pTemp->pSeqModel; pTemp->pSeqModel = NULL;
2607 if ( RetValue == 1 )
2619 Abc_Print( 1,
"Solving output %3d (out of %3d) using interpolation.\r", i, Saig_ManPoNum(pMan) );
2622 if ( pMan->pSeqModel == NULL )
2624 Abc_Print( 1,
"Interpolation left %d (out of %d) outputs unsolved \n", Counter, Saig_ManPoNum(pMan) );
2631 *ppNtkRes =
Aig_ManScl( pTemp, 1, 1, 0, -1, -1, 0, 0 );
2639 if ( nTotalProvedSat )
2640 Abc_Print( 1,
"The total of %d outputs proved SAT and replaced by const 0 in this run.\n", nTotalProvedSat );
2641 if ( RetValue == 1 )
2642 Abc_Print( 1,
"Property proved. " );
2643 else if ( RetValue == 0 )
2644 Abc_Print( 1,
"Output %d of miter \"%s\" was asserted in frame %d. ", pMan->pSeqModel ? pMan->pSeqModel->iPo : -1, pMan->pName, iFrame );
2645 else if ( RetValue == -1 )
2646 Abc_Print( 1,
"Property UNDECIDED. " );
2649ABC_PRT(
"Time", Abc_Clock() - clk );
2673 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
2676 if ( pPars->fUseSeparate && ppNtkRes )
2689 pNtk->
pSeqModel = pMan->pSeqModel; pMan->pSeqModel = NULL;
2707 char * pFileNameGeneric, pFileName0[1000], pFileName1[1000];
2713 Abc_Print( 1,
"Converting network into AIG has failed.\n" );
2720 Abc_Print( 1,
"Demitering has failed.\n" );
2727 sprintf( pFileName0,
"%s",
"part0.aig" );
2728 sprintf( pFileName1,
"%s",
"part1.aig" );
2733 Abc_Print( 1,
"Demitering produced two files \"%s\" and \"%s\".\n", pFileName0, pFileName1 );
2758 char * pFileNameGeneric, pFileName0[1000], pFileName1[1000];
2764 Abc_Print( 1,
"Converting network into AIG has failed.\n" );
2775 Abc_Print( 1,
"Demitering has failed.\n" );
2780 sprintf( pFileName0,
"%s%s", pFileNameGeneric,
"_part0.aig" );
2781 sprintf( pFileName1,
"%s%s", pFileNameGeneric,
"_part1.aig" );
2786 Abc_Print( 1,
"Demitering produced two files \"%s\" and \"%s\".\n", pFileName0, pFileName1 );
2811 char * pFileNameGeneric, pFileName0[1000], pFileName1[1000];
2813 if ( (Abc_NtkPoNum(pNtk) & 1) )
2815 Abc_Print( 1,
"The number of POs should be even.\n" );
2822 Abc_Print( 1,
"Converting network into AIG has failed.\n" );
2828 Abc_Print( 1,
"Demitering has failed.\n" );
2833 pPart0->pName = Abc_UtilStrsav(
"part0" );
2836 pPart1->pName = Abc_UtilStrsav(
"part1" );
2841 sprintf( pFileName0,
"%s",
"part0.aig" );
2842 sprintf( pFileName1,
"%s",
"part1.aig" );
2846 Abc_Print( 1,
"Demitering produced two files \"%s\" and \"%s\".\n", pFileName0, pFileName1 );
2882 int iFrame = -1, RetValue = -1;
2883 abctime clkTotal = Abc_Clock();
2884 if ( pSecPar->
fTryComb || Abc_NtkLatchNum(pNtk) == 0 )
2889 if ( Abc_NtkLatchNum(pNtk) == 0 )
2890 Abc_Print( 1,
"The network has no latches. Running CEC.\n" );
2900 if ( RetValue == 0 && (Abc_NtkLatchNum(pNtk) == 0) )
2904 Abc_Print( 1,
"SOLUTION: FAIL " );
2906 Abc_Print( 1,
"SATISFIABLE " );
2907 ABC_PRT(
"Time", Abc_Clock() - clkTotal );
2912 if ( RetValue == 1 )
2915 Abc_Print( 1,
"SOLUTION: PASS " );
2917 Abc_Print( 1,
"UNSATISFIABLE " );
2918 ABC_PRT(
"Time", Abc_Clock() - clkTotal );
2922 if ( Abc_NtkLatchNum(pNtk) == 0 )
2924 Abc_Print( 1,
"UNDECIDED " );
2925 ABC_PRT(
"Time", Abc_Clock() - clkTotal );
2933 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
2936 assert( pMan->nRegs > 0 );
2940 RetValue =
Saig_BmcPerform( pMan, 0, nBmcFramesMax, 2000, 0, nBmcConfMax, 0, pSecPar->
fVerbose, 0, &iFrame, 0, 0 );
2941 if ( RetValue == 0 )
2943 Abc_Print( 1,
"Networks are not equivalent.\n" );
2946 Abc_Print( 1,
"SOLUTION: FAIL " );
2947 ABC_PRT(
"Time", Abc_Clock() - clkTotal );
2952 pNtk->
pSeqModel = pMan->pSeqModel; pMan->pSeqModel = NULL;
2967 pNtk->
pSeqModel = pMan->pSeqModel; pMan->pSeqModel = NULL;
2971 Abc_Print( 1,
"Output %d of miter \"%s\" was asserted in frame %d.\n", pCex->iPo, pNtk->
pName, pCex->iFrame );
2973 Abc_Print( 1,
"Abc_NtkDarProve(): Counter-example verification has FAILED.\n" );
3000 if ( pMiter == NULL )
3002 Abc_Print( 1,
"Miter computation has failed.\n" );
3006 if ( RetValue == 0 )
3009 Abc_Print( 1,
"Networks are NOT EQUIVALENT after structural hashing.\n" );
3017 if ( RetValue == 1 )
3020 Abc_Print( 1,
"Networks are equivalent after structural hashing.\n" );
3057 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
3060 assert( pMan->nRegs > 0 );
3087 Abc_Print( 1,
"Converting network into AIG has failed.\n" );
3091 pPars->nDropOuts = Saig_ManPoNum(pMan) - pPars->nProveOuts - pPars->nFailOuts;
3092 if ( !pPars->fSilent )
3094 if ( pPars->fSolveAll )
3095 Abc_Print( 1,
"Properties: All = %d. Proved = %d. Disproved = %d. Undecided = %d. ",
3096 Saig_ManPoNum(pMan), pPars->nProveOuts, pPars->nFailOuts, pPars->nDropOuts );
3097 else if ( RetValue == 1 )
3098 Abc_Print( 1,
"Property proved. " );
3101 if ( RetValue == 0 )
3103 if ( pMan->pSeqModel == NULL )
3104 Abc_Print( 1,
"Abc_NtkDarPdr(): Counter-example is not available.\n" );
3107 Abc_Print( 1,
"Output %d of miter \"%s\" was asserted in frame %d. ", pMan->pSeqModel->iPo, pNtk->
pName, pMan->pSeqModel->iFrame );
3109 Abc_Print( 1,
"Abc_NtkDarPdr(): Counter-example verification has FAILED.\n" );
3112 else if ( RetValue == -1 )
3113 Abc_Print( 1,
"Property UNDECIDED. " );
3117 ABC_PRT(
"Time", Abc_Clock() - clk );
3137 pMan->pSeqModel = NULL;
3141 pMan->vSeqModelVec = NULL;
3163 if ( pMan1 == NULL )
3165 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
3168 assert( Aig_ManRegNum(pMan1) > 0 );
3173 if ( pMan2 == NULL )
3176 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
3179 assert( Aig_ManRegNum(pMan2) > 0 );
3180 if ( Saig_ManPiNum(pMan1) != Saig_ManPiNum(pMan2) )
3184 Abc_Print( 1,
"The networks have different number of PIs.\n" );
3187 if ( Saig_ManPoNum(pMan1) != Saig_ManPoNum(pMan2) )
3191 Abc_Print( 1,
"The networks have different number of POs.\n" );
3194 if ( Aig_ManRegNum(pMan1) != Aig_ManRegNum(pMan2) )
3198 Abc_Print( 1,
"The networks have different number of flops.\n" );
3228 if ( pMan1 == NULL )
3230 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
3233 assert( Aig_ManRegNum(pMan1) > 0 );
3238 if ( pMan2 == NULL )
3240 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
3243 assert( Aig_ManRegNum(pMan2) > 0 );
3269 Aig_Man_t * pMan1, * pMan2 = NULL, * pManRes;
3271 assert( Abc_NtkIsStrash(pNtk1) );
3274 if ( pMan1 == NULL )
3276 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
3279 assert( Aig_ManRegNum(pMan1) > 0 );
3284 if ( pMan2 == NULL )
3286 Abc_Print( 1,
"Converting miter into AIG has failed.\n" );
3289 assert( Aig_ManRegNum(pMan2) > 0 );
3296 Vec_IntFree( vPairs );
3328 if ( fLatchConst && pMan->nRegs )
3329 pMan =
Aig_ManConstReduce( pMan, fUseMvSweep, nFramesSymb, nFramesSatur, fVerbose, fVeryVerbose );
3330 if ( fLatchEqual && pMan->nRegs )
3335 if ( pMan->vFlopNums )
3336 Vec_IntFree( pMan->vFlopNums );
3337 pMan->vFlopNums = NULL;
3338 pMan =
Aig_ManScl( pTemp = pMan, fLatchConst, fLatchEqual, fUseMvSweep, nFramesSymb, nFramesSatur, fVerbose, fVeryVerbose );
3367 if ( pMan->vFlopNums )
3368 Vec_IntFree( pMan->vFlopNums );
3369 pMan->vFlopNums = NULL;
3371 pMan =
Rtm_ManRetime( pTemp = pMan, 1, nStepsMax, fVerbose );
3401 if ( pMan->vFlopNums )
3402 Vec_IntFree( pMan->vFlopNums );
3403 pMan->vFlopNums = NULL;
3437 if ( pMan->vFlopNums )
3438 Vec_IntFree( pMan->vFlopNums );
3439 pMan->vFlopNums = NULL;
3471 if ( pMan->vFlopNums )
3472 Vec_IntFree( pMan->vFlopNums );
3473 pMan->vFlopNums = NULL;
3475 pMan =
Saig_ManRetimeMinArea( pTemp = pMan, nMaxIters, fForwardOnly, fBackwardOnly, fInitial, fVerbose );
3498 assert( Abc_NtkIsStrash(pNtk) );
3502 if ( pMan->vFlopNums )
3503 Vec_IntFree( pMan->vFlopNums );
3504 pMan->vFlopNums = NULL;
3562 int status, RetValue = -1;
3585 Abc_Print( 1,
"Simulation of %d frames with %d words asserted output %d in frame %d. ",
3589 Abc_Print( 1,
"Abc_NtkDarSeqSim(): Counter-example verification has FAILED.\n" );
3598 Abc_Print( 1,
"Simulation of %d frames with %d words did not assert the outputs. ",
3606 if ( pFileSim != NULL )
3608 assert( Abc_NtkLatchNum(pNtk) == 0 );
3611 else if ( Abc_NtkLatchNum(pNtk) == 0 )
3620 Abc_Print( 1,
"Simulation of %d frame%s with %d word%s asserted output %d in frame %d. ",
3623 pCex->iPo, pCex->iFrame );
3626 Abc_Print( 1,
"Abc_NtkDarSeqSim(): Counter-example verification has FAILED.\n" );
3635 Abc_Print( 1,
"Simulation of %d frames with %d words did not assert the outputs. ",
3640 ABC_PRT(
"Time", Abc_Clock() - clk );
3659 int status, RetValue = -1;
3669 if ( pMan->pSeqModel )
3675 Abc_Print( 1,
"Abc_NtkDarSeqSim(): Counter-example verification has FAILED.\n" );
3679 pNtk->
pSeqModel = pMan->pSeqModel; pMan->pSeqModel = NULL;
3689 pNtk->
vSeqModelVec = pMan->vSeqModelVec; pMan->vSeqModelVec = NULL;
3691 pNtk->
pData = pMan->pData; pMan->pData = NULL;
3707int Abc_NtkDarClau(
Abc_Ntk_t * pNtk,
int nFrames,
int nPref,
int nClauses,
int nLutSize,
int nLevels,
int nCutsMax,
int nBatches,
int fStepUp,
int fBmc,
int fRefs,
int fTarget,
int fVerbose,
int fVeryVerbose )
3709 extern int Fra_Clau(
Aig_Man_t * pMan,
int nIters,
int fVerbose,
int fVeryVerbose );
3710 extern int Fra_Claus(
Aig_Man_t * pAig,
int nFrames,
int nPref,
int nClauses,
int nLutSize,
int nLevels,
int nCutsMax,
int nBatches,
int fStepUp,
int fBmc,
int fRefs,
int fTarget,
int fVerbose,
int fVeryVerbose );
3712 if ( fTarget && Abc_NtkPoNum(pNtk) != 1 )
3714 Abc_Print( 1,
"The number of outputs should be 1.\n" );
3721 if ( pMan->vFlopNums )
3722 Vec_IntFree( pMan->vFlopNums );
3723 pMan->vFlopNums = NULL;
3726 Fra_Claus( pMan, nFrames, nPref, nClauses, nLutSize, nLevels, nCutsMax, nBatches, fStepUp, fBmc, fRefs, fTarget, fVerbose, fVeryVerbose );
3749 pMan =
Aig_ManFrames( pTemp = pMan, nFrames, 0, 1, 1, 1, NULL );
3769 extern Aig_Man_t *
Saig_ManTempor(
Aig_Man_t * pAig,
int nFrames,
int TimeOut,
int nConfLimit,
int fUseBmc,
int fUseTransSigs,
int fVerbose,
int fVeryVerbose );
3775 pTemp =
Saig_ManTempor( pMan, nFrames, TimeOut, nConfLimit, fUseBmc, fUseTransSigs, fVerbose, fVeryVerbose );
3777 if ( pTemp == NULL )
3795int Abc_NtkDarInduction(
Abc_Ntk_t * pNtk,
int nTimeOut,
int nFramesMax,
int nConfMax,
int fUnique,
int fUniqueAll,
int fGetCex,
int fVerbose,
int fVeryVerbose )
3798 abctime clkTotal = Abc_Clock();
3803 RetValue =
Saig_ManInduction( pMan, nTimeOut, nFramesMax, nConfMax, fUnique, fUniqueAll, fGetCex, fVerbose, fVeryVerbose );
3804 if ( RetValue == 1 )
3806 Abc_Print( 1,
"Networks are equivalent. " );
3807ABC_PRT(
"Time", Abc_Clock() - clkTotal );
3809 else if ( RetValue == 0 )
3811 Abc_Print( 1,
"Networks are NOT EQUIVALENT. " );
3812ABC_PRT(
"Time", Abc_Clock() - clkTotal );
3816 Abc_Print( 1,
"Networks are UNDECIDED. " );
3817ABC_PRT(
"Time", Abc_Clock() - clkTotal );
3823 pNtk->
pSeqModel = pMan->pSeqModel; pMan->pSeqModel = NULL;
3845 Aig_Man_t * pManOn, * pManOff, * pManAig;
3846 if ( Abc_NtkCoNum(pNtkOn) != 1 || Abc_NtkCoNum(pNtkOff) != 1 )
3848 Abc_Print( 1,
"Currently works only for single-output networks.\n" );
3851 if ( Abc_NtkCiNum(pNtkOn) != Abc_NtkCiNum(pNtkOff) )
3853 Abc_Print( 1,
"The number of PIs should be the same.\n" );
3858 if ( pManOn == NULL )
3861 if ( pManOff == NULL )
3864 pManAig =
Aig_ManInter( pManOn, pManOff, fRelation, fVerbose );
3865 if ( pManAig == NULL )
3867 Abc_Print( 1,
"Interpolant computation failed.\n" );
3876 pObj = Abc_NtkCreatePi( pNtkOff );
3888 Aig_Man_t * pManOn, * pManOff, * pManAig;
3889 assert( Gia_ManCiNum(pNtkOn) == Gia_ManCiNum(pNtkOff) );
3890 assert( Gia_ManCoNum(pNtkOn) == 1 );
3891 assert( Gia_ManCoNum(pNtkOff) == 1 );
3894 if ( pManOn == NULL )
3897 if ( pManOff == NULL )
3900 pManAig =
Aig_ManInter( pManOn, pManOff, 0, fVerbose );
3901 if ( pManAig == NULL )
3903 Abc_Print( 1,
"Interpolant computation failed.\n" );
3931 if ( pManOn == NULL )
3934 if ( pManOff == NULL )
3958 Abc_Ntk_t * pNtkOn1, * pNtkOff1, * pNtkInter1, * pNtkInter;
3961 if ( Abc_NtkCoNum(pNtkOn) != Abc_NtkCoNum(pNtkOff) )
3963 Abc_Print( 1,
"Currently works only for networks with equal number of POs.\n" );
3969 if ( Abc_NtkCoNum(pNtkOn) == 1 )
3983 if ( Abc_ObjFaninC0(pObj) )
3984 Abc_ObjXorFaninC( Abc_NtkPo(pNtkOn1, 0), 0 );
3986 pObj = Abc_NtkCo(pNtkOff, i);
3988 if ( Abc_ObjFaninC0(pObj) )
3989 Abc_ObjXorFaninC( Abc_NtkPo(pNtkOff1, 0), 0 );
3991 if ( Abc_NtkNodeNum(pNtkOn1) == 0 )
3993 else if ( Abc_NtkNodeNum(pNtkOff1) == 0 )
3996 Abc_ObjXorFaninC( Abc_NtkPo(pNtkInter1, 0), 0 );
4016 Abc_Print( 1,
"Abc_NtkAttachBottom(): Network check has failed.\n" );
4061 assert( Aig_ManRegNum(pMan) > 0 );
4083 assert( Abc_NtkIsStrash(pNtk) );
4123 Vec_IntFree( vInits );
4156 Vec_IntFree( vInits );
4206 if ( pMan1 == NULL )
4209 if ( pMan2 == NULL )
4240 Aig_Man_t * pMan1, * pMan2 = NULL, * pMan;
4242 if ( pMan1 == NULL )
4247 if ( pMan2 == NULL )
4281 if ( pMan1 == NULL )
4286 Abc_Print( 1,
"Selected object %d as a window pivot.\n", pObj->
Id );
4290 if ( nObjId >= Aig_ManObjNumMax(pMan1) )
4293 Abc_Print( 1,
"The ID is too large.\n" );
4296 pObj = Aig_ManObj( pMan1, nObjId );
4300 Abc_Print( 1,
"Object with ID %d does not exist.\n", nObjId );
4303 if ( !Saig_ObjIsLo(pMan1, pObj) && !Aig_ObjIsNode(pObj) )
4306 Abc_Print( 1,
"Object with ID %d is not a node or reg output.\n", nObjId );
4335 Aig_Man_t * pMan1, * pMan2 = NULL, * pMan;
4338 if ( pMan1 == NULL )
4343 Abc_Print( 1,
"Selected object %d as a window pivot.\n", pObj->
Id );
4347 if ( nObjId >= Aig_ManObjNumMax(pMan1) )
4350 Abc_Print( 1,
"The ID is too large.\n" );
4353 pObj = Aig_ManObj( pMan1, nObjId );
4357 Abc_Print( 1,
"Object with ID %d does not exist.\n", nObjId );
4360 if ( !Saig_ObjIsLo(pMan1, pObj) && !Aig_ObjIsNode(pObj) )
4363 Abc_Print( 1,
"Object with ID %d is not a node or reg output.\n", nObjId );
4370 if ( pMan2 == NULL )
4438 Abc_Print( 1,
"Cleanup removed %d primary inputs without fanout.\n", Temp );
4444 Abc_Print( 1,
"Cleanup removed %d primary outputs driven by const-0.\n", Temp );
4474 pNtk->
pSeqModel = pMan->pSeqModel; pMan->pSeqModel = NULL;
4506 int i, k, iPis, iPos, nDupGates;
4511 Abc_Print( 1,
"Current library does not contain gate \"%s\".\n", pRes->
pName );
4518 vNodesNew = Vec_PtrAlloc( Vec_PtrSize(vMapping) );
4521 if ( pRes->
Type == -1 )
4522 pNodeNew = Abc_NtkCi( pNtkNew, iPis++ );
4523 else if ( pRes->
Type == 1 )
4524 pNodeNew = Abc_NtkCo( pNtkNew, iPos++ );
4527 pNodeNew = Abc_NtkCreateNode( pNtkNew );
4530 for ( k = 0; k < pRes->
nFans; k++ )
4532 pFaninNew = (
Abc_Obj_t *)Vec_PtrEntry( vNodesNew, pRes->
pFans[k] );
4535 Vec_PtrPush( vNodesNew, pNodeNew );
4537 Vec_PtrFree( vNodesNew );
4538 assert( iPis == Abc_NtkCiNum(pNtkNew) );
4539 assert( iPos == Abc_NtkCoNum(pNtkNew) );
4566 assert( Abc_NtkIsStrash(pNtk) );
4575 if ( vMapping == NULL )
4580 Vec_PtrFree( vMapping );
4585 Abc_Print( 1,
"Abc_NtkDar: The network check has failed.\n" );
4606 assert( Abc_NtkIsStrash(pNtk) );
4632 assert( Abc_NtkIsStrash(pNtk) );
4662 assert( Abc_NtkIsStrash(pNtk) );
4695 assert( Abc_NtkIsStrash(pNtk) );
4727 assert( Abc_NtkIsStrash(pNtk) );
4728 assert( Abc_NtkConstrNum(pNtk) );
4774 extern void Llb_ManComputeDomsTest(
Aig_Man_t * pAig,
int Num );
4782 assert( Abc_NtkIsStrash(pNtk) );
4829 extern void Llb_BddStructAnalysis(
Aig_Man_t * pMan );
4884 assert( Abc_NtkIsStrash(pNtk) );
4922int Data_ListDirsFilesCompareNames(
char ** pp1,
char ** pp2 )
4924 return strcmp( *pp1, *pp2 );
4926char ** Data_ListDirsFiles(
const char *path,
const char *ext)
4928 int iItems = 0, nItems = 1000;
4929 char ** pRes = (
char **)
calloc(
sizeof(
char*), nItems );
4931 struct dirent *entry;
4932 struct stat statbuf;
4935 if ((dir = opendir(path)) == NULL) {
4941 while ((entry = readdir(dir)) != NULL) {
4942 char full_path[1024];
4943 snprintf(full_path,
sizeof(full_path),
"%s/%s", path, entry->d_name);
4946 if (stat(full_path, &statbuf) == -1) {
4953 if (S_ISDIR(statbuf.st_mode)) {
4955 if (
strcmp(entry->d_name,
".") == 0 ||
strcmp(entry->d_name,
"..") == 0) {
4961 assert( iItems < nItems );
4962 pRes[iItems] = (
char *)
calloc(
sizeof(
char),
strlen(entry->d_name)+1 );
4963 memcpy( pRes[iItems++], entry->d_name,
strlen(entry->d_name) );
4967 if (S_ISREG(statbuf.st_mode)) {
4968 const char *dot =
strrchr(entry->d_name,
'.');
4969 if (dot &&
strcmp(dot + 1, ext) == 0) {
4972 assert( iItems <= nItems );
4973 if ( iItems == nItems ) {
4975 memset( pRes + nItems/2, 0,
sizeof(
char *) * nItems/2 );
4977 pRes[iItems] = (
char *)
calloc(
sizeof(
char),
strlen(entry->d_name)+1 );
4978 memcpy( pRes[iItems++], entry->d_name,
strlen(entry->d_name) );
4984 qsort( (
void *)pRes, (
size_t)iItems,
sizeof(
char *), (
int (*)(
const void *,
const void *)) Data_ListDirsFilesCompareNames );
5006 abctime clkStart = Abc_Clock();
5007 int nVars = Gia_ManCiNum(
p);
5008 int nWords = Abc_Truth6WordNum( nVars );
5009 Vec_Mem_t * vTtMem = Vec_MemAllocForTTSimple( nVars );
5010 Vec_Int_t * vRes = Vec_IntStartFull( Gia_ManObjNum(
p) );
5012 for ( i = 0; i <= nVars; i++ ) {
5013 int iFunc = Vec_MemHashInsert( vTtMem, Vec_WrdEntryP(vSims, i*
nWords) );
5015 Vec_IntWriteEntry( vRes, i, i );
5019 word * pTruth = Vec_WrdEntryP( vSims, i*
nWords );
5020 if ( pTruth[0] & 1 )
5021 for (
int k = 0; k <
nWords; k++ )
5022 pTruth[k] = ~pTruth[k];
5023 int iFunc = Vec_MemHashInsert(vTtMem, pTruth);
5025 Vec_IntWriteEntry( vRes, i, iFunc );
5027 printf(
"Detected %d unique functions among %d nodes. ", Vec_MemEntryNum(vTtMem) - nVars - 1, Gia_ManAndNum(
p) );
5028 Abc_PrintTime( 1,
"Time", Abc_Clock() - clkStart );
5029 Vec_MemFree( vTtMem );
5034 if ( Obj == Repr || Vec_IntEntry(vFuncs, Obj) == -1 )
5038 if ( Gia_ObjIsTravIdCurrentId(
p, Obj) )
5040 Gia_ObjSetTravIdCurrentId(
p, Obj);
5042 if ( !Gia_ManExploreNode_rec(
p, Gia_ObjFaninId0(pObj, Obj), Repr, vFuncs ) )
5044 if ( !Gia_ManExploreNode_rec(
p, Gia_ObjFaninId1(pObj, Obj), Repr, vFuncs ) )
5046 if ( Vec_IntEntry(vFuncs, Obj) != Obj ) {
5047 if ( !Gia_ManExploreNode_rec(
p, Vec_IntEntry(vFuncs, Obj), Repr, vFuncs ) )
5054 if ( Vec_IntEntry(vFuncs, Gia_ObjFaninId0p(
p, pObj)) == -1 || Vec_IntEntry(vFuncs, Gia_ObjFaninId1p(
p, pObj)) == -1 )
5056 if ( i == Vec_IntEntry(vFuncs, i) )
5058 assert( i > Vec_IntEntry(vFuncs, i) );
5060 if ( !Gia_ManExploreNode_rec(
p, i, Vec_IntEntry(vFuncs, i), vFuncs) )
5068 if ( Vec_IntEntry(vFuncs, i) <= Gia_ManCiNum(
p) || !Gia_ManChoiceCheck(
p, pObj, i, vFuncs) )
5069 Vec_IntWriteEntry( vFuncs, i, -1 );
5075 Vec_Int_t * vFuncs = Gia_ManDeriveNodeClasses(
p, vSims );
5076 Gia_ManChoicesClean(
p, vFuncs );
5077 Vec_WrdFree( vSims );
5080 pNew->
pName = Abc_UtilStrsav(
p->pName );
5085 Gia_ManConst0(
p)->Value = 0;
5087 pObj->
Value = Gia_ManAppendCi( pNew );
5089 if ( Vec_IntEntry(vFuncs, i) == -1 )
5091 else if ( Vec_IntEntry(vFuncs, i) == i )
5094 int iFunc = Vec_IntEntry(vFuncs, i);
5097 pObj->
Value = Abc_Var2Lit( iFunc, pObj->
fPhase ^ Gia_ManObj(
p, iFunc)->fPhase );
5102 Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
5103 Vec_IntFree( vFuncs );
5109 assert( Gia_ManCiNum(pNew) == Gia_ManCiNum(pTwo) );
5110 Gia_ManConst0(pTwo)->Value = 0;
5113 if ( Gia_ObjIsAnd(pObj) )
5115 else if ( Gia_ObjIsCi(pObj) )
5116 pObj->
Value = Gia_Obj2Lit( pNew, Gia_ManCi( pNew, Gia_ObjCioId(pObj) ) );
5121 char full_path[1024];
5122 const char *directory_path =
"temp";
5123 const char *ext =
"aig";
5124 char ** pItems = Data_ListDirsFiles(directory_path, ext);
5125 if ( pItems == NULL ) {
5126 printf(
"There are no files in directory \"%s\".\n", directory_path );
5136 for ( i = 0; pItems[i]; i++ )
5138 snprintf(full_path,
sizeof(full_path),
"%s/%s", directory_path, pItems[i]);
5144 for (
int k = 0; k < Gia_ManCiNum(pTwo); k++ )
5145 Gia_ManAppendCi( pNew );
5147 Gia_ManTestAppend( pNew, pTwo );
5153 printf(
"%d : %s\n", i, pItems[i] );
5155 printf(
"Finished reading %d files.\n", i );
5157 Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
5162 pNew = Gia_ManTransformToChoices( pTemp = pNew );
5167 for ( i = 0; pItems[i]; i++ )
Vec_Int_t * Abc_NtkGetLatchValues(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkDar(Abc_Ntk_t *pNtk)
void Abc_NtkDarConstrProfile(Abc_Ntk_t *pNtk, int fVerbose)
Abc_Ntk_t * Abc_NtkFromDar(Abc_Ntk_t *pNtkOld, Aig_Man_t *pMan)
Abc_Ntk_t * Abc_NtkFromCellMappedGia(Gia_Man_t *p, int fUseBuffs)
Abc_Ntk_t * Abc_NtkDch(Abc_Ntk_t *pNtk, Dch_Pars_t *pPars)
void Abc_NtkInterFast(Abc_Ntk_t *pNtkOn, Abc_Ntk_t *pNtkOff, int fVerbose)
Abc_Ntk_t * Abc_NtkDarFold(Abc_Ntk_t *pNtk, int fCompl, int fVerbose, int fSeqCleanup)
void Abc_CollectTopOr(Abc_Obj_t *pObj, Vec_Ptr_t *vSuper)
int Abc_NtkDarReach(Abc_Ntk_t *pNtk, Saig_ParBbr_t *pPars)
int Abc_NtkDarClau(Abc_Ntk_t *pNtk, int nFrames, int nPref, int nClauses, int nLutSize, int nLevels, int nCutsMax, int nBatches, int fStepUp, int fBmc, int fRefs, int fTarget, int fVerbose, int fVeryVerbose)
Vec_Int_t * Abc_NtkFindDcLatches(Abc_Ntk_t *pNtk)
int Abc_NtkDarBmc3(Abc_Ntk_t *pNtk, Saig_ParBmc_t *pPars, int fOrDecomp)
int Abc_NtkFromGiaCollapse(Gia_Man_t *pGia)
Abc_Ntk_t * Abc_NtkDarRetimeMinArea(Abc_Ntk_t *pNtk, int nMaxIters, int fForwardOnly, int fBackwardOnly, int fInitial, int fVerbose)
int Abc_NtkDarInduction(Abc_Ntk_t *pNtk, int nTimeOut, int nFramesMax, int nConfMax, int fUnique, int fUniqueAll, int fGetCex, int fVerbose, int fVeryVerbose)
Abc_Ntk_t * Abc_NtkDarLcorr(Abc_Ntk_t *pNtk, int nFramesP, int nConfMax, int fVerbose)
Abc_Ntk_t * Abc_NtkDarOutdec(Abc_Ntk_t *pNtk, int nLits, int fVerbose)
Abc_Ntk_t * Abc_NtkInter(Abc_Ntk_t *pNtkOn, Abc_Ntk_t *pNtkOff, int fRelation, int fVerbose)
Abc_Ntk_t * Abc_NtkDarSynch(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int nWords, int fVerbose)
Abc_Ntk_t * Abc_NtkDarEnlarge(Abc_Ntk_t *pNtk, int nFrames, int fVerbose)
int Abc_NtkDarPdr(Abc_Ntk_t *pNtk, Pdr_Par_t *pPars)
Abc_Ntk_t * Abc_NtkDarExtWin(Abc_Ntk_t *pNtk, int nObjId, int nDist, int fVerbose)
Aig_Man_t * Abc_NtkToDarChoices(Abc_Ntk_t *pNtk)
Abc_Obj_t * Abc_NtkFromMappedGia_rec(Abc_Ntk_t *pNtkNew, Gia_Man_t *p, int iObj, int fAddInv)
Abc_Ntk_t * Abc_NtkDarToCnf(Abc_Ntk_t *pNtk, char *pFileName, int fFastAlgo, int fChangePol, int fVerbose)
int Abc_NtkDarSimSec(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, Ssw_Pars_t *pPars)
Abc_Ntk_t * Abc_NtkFromDarSeqSweep(Abc_Ntk_t *pNtkOld, Aig_Man_t *pMan)
Vec_Ptr_t * Abc_NtkCollectCoNames(Abc_Ntk_t *pNtk)
Hop_Obj_t * Abc_ObjHopFromGia_rec(Hop_Man_t *pHopMan, Gia_Man_t *p, int Id, Vec_Ptr_t *vCopies)
int Abc_NtkDarBmcInter(Abc_Ntk_t *pNtk, Inter_ManParams_t *pPars, Abc_Ntk_t **ppNtkRes)
Abc_Ntk_t * Abc_NtkDarUnfold(Abc_Ntk_t *pNtk, int nFrames, int nConfs, int nProps, int fStruct, int fOldAlgo, int fVerbose)
int Abc_NtkDarSeqSim3(Abc_Ntk_t *pNtk, Ssw_RarPars_t *pPars)
Vec_Ptr_t * Abc_NtkCollectCiNames(Abc_Ntk_t *pNtk)
int Abc_NtkDarSec(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, Fra_Sec_t *pSecPar)
Abc_Ntk_t * Abc_NtkDarRetimeStep(Abc_Ntk_t *pNtk, int fVerbose)
int Abc_NtkPartitionedSat(Abc_Ntk_t *pNtk, int nAlgo, int nPartSize, int nConfPart, int nConfTotal, int fAlignPol, int fSynthesize, int fVerbose)
Abc_Ntk_t * Abc_NtkDarRetimeMostFwd(Abc_Ntk_t *pNtk, int nMaxIters, int fVerbose)
int Abc_NtkDarAbSec(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int nFrames, int fVerbose)
Abc_Ntk_t * Abc_NtkDC2(Abc_Ntk_t *pNtk, int fBalance, int fUpdateLevel, int fFanout, int fPower, int fVerbose)
int Abc_NtkDarDemiterDual(Abc_Ntk_t *pNtk, int fVerbose)
void Abc_NtkPrintSccs(Abc_Ntk_t *pNtk, int fVerbose)
Abc_Ntk_t * Abc_NtkDRefactor(Abc_Ntk_t *pNtk, Dar_RefPar_t *pPars)
Abc_Ntk_t * Abc_NtkDarSeqSweep(Abc_Ntk_t *pNtk, Fra_Ssw_t *pPars)
Abc_Ntk_t * Abc_NtkDarLcorrNew(Abc_Ntk_t *pNtk, int nVarsMax, int nConfMax, int nLimitMax, int fVerbose)
Abc_Ntk_t * Abc_NtkInterOne(Abc_Ntk_t *pNtkOn, Abc_Ntk_t *pNtkOff, int fRelation, int fVerbose)
int Abc_NtkDarDemiterNew(Abc_Ntk_t *pNtk)
void Abc_NtkDarTest(Abc_Ntk_t *pNtk, int Num)
Abc_Ntk_t * Abc_NtkDChoice(Abc_Ntk_t *pNtk, int fBalance, int fUpdateLevel, int fConstruct, int nConfMax, int nLevelMax, int fVerbose)
int Abc_NtkDSat(Abc_Ntk_t *pNtk, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, int nLearnedStart, int nLearnedDelta, int nLearnedPerce, int fAlignPol, int fAndOuts, int fNewSolver, int fVerbose)
Abc_Ntk_t * Abc_NtkConstructFromCnf(Abc_Ntk_t *pNtk, Cnf_Man_t *p, Vec_Ptr_t *vMapped)
int Abc_NtkDarSeqSim(Abc_Ntk_t *pNtk, int nFrames, int nWords, int TimeOut, int fNew, int fMiter, int fVerbose, char *pFileSim)
Aig_Man_t * Abc_NtkToDarBmc(Abc_Ntk_t *pNtk, Vec_Int_t **pvMap)
Gia_Man_t * Gia_ManInterOne(Gia_Man_t *pNtkOn, Gia_Man_t *pNtkOff, int fVerbose)
Abc_Ntk_t * Abc_NtkDarAmap(Abc_Ntk_t *pNtk, Amap_Par_t *pPars)
Abc_Ntk_t * Abc_NtkDarRetime(Abc_Ntk_t *pNtk, int nStepsMax, int fVerbose)
Abc_Ntk_t * Abc_NtkFromDarChoices(Abc_Ntk_t *pNtkOld, Aig_Man_t *pMan)
ABC_NAMESPACE_IMPL_START int Abc_ObjCompareById(Abc_Obj_t **pp1, Abc_Obj_t **pp2)
DECLARATIONS ///.
Aig_Man_t * Abc_NtkToDar(Abc_Ntk_t *pNtk, int fExors, int fRegisters)
DECLARATIONS ///.
Abc_Ntk_t * Abc_NtkDrwsat(Abc_Ntk_t *pNtk, int fBalance, int fVerbose)
int Abc_NtkDarCec(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int nConfLimit, int fPartition, int fVerbose)
void Abc_NtkPrintLatchEquivClasses(Abc_Ntk_t *pNtk, Aig_Man_t *pAig)
int Abc_NtkDarProve(Abc_Ntk_t *pNtk, Fra_Sec_t *pSecPar, int nBmcFramesMax, int nBmcConfMax)
Abc_Ntk_t * Abc_NtkDarInsWin(Abc_Ntk_t *pNtk, Abc_Ntk_t *pCare, int nObjId, int nDist, int fVerbose)
Abc_Ntk_t * Abc_NtkBalanceExor(Abc_Ntk_t *pNtk, int fUpdateLevel, int fVerbose)
Abc_Ntk_t * Abc_NtkDarClockGate(Abc_Ntk_t *pNtk, Abc_Ntk_t *pCare, Cgt_Par_t *pPars)
int Abc_NtkDarPrintCone(Abc_Ntk_t *pNtk)
void Abc_NtkDarConstr(Abc_Ntk_t *pNtk, int nFrames, int nConfs, int nProps, int fStruct, int fOldAlgo, int fVerbose)
Abc_Ntk_t * Abc_NtkDarTestNtk(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkCSweep(Abc_Ntk_t *pNtk, int nCutsMax, int nLeafMax, int fVerbose)
int Abc_NtkDarDemiter(Abc_Ntk_t *pNtk)
int Abc_NtkDarBmc(Abc_Ntk_t *pNtk, int nStart, int nFrames, int nSizeMax, int nNodeDelta, int nTimeOut, int nBTLimit, int nBTLimitAll, int fRewrite, int fNewAlgo, int fOrDecomp, int nCofFanLit, int fVerbose, int *piFrames, int fUseSatoko)
Abc_Ntk_t * Abc_NtkDarCleanupAig(Abc_Ntk_t *pNtk, int fCleanupPis, int fCleanupPos, int fVerbose)
Abc_Ntk_t * Abc_NtkDarRetimeF(Abc_Ntk_t *pNtk, int nStepsMax, int fVerbose)
Abc_Ntk_t * Abc_NtkAfterTrim(Aig_Man_t *pMan, Abc_Ntk_t *pNtkOld)
ABC_NAMESPACE_IMPL_END ABC_NAMESPACE_IMPL_START Abc_Ntk_t * Amap_ManProduceNetwork(Abc_Ntk_t *pNtk, Vec_Ptr_t *vMapping)
Abc_Ntk_t * Abc_NtkFromDarSeq(Abc_Ntk_t *pNtkOld, Aig_Man_t *pMan)
Abc_Ntk_t * Abc_NtkDRewrite(Abc_Ntk_t *pNtk, Dar_RwrPar_t *pPars)
Abc_Ntk_t * Abc_NtkDarFraig(Abc_Ntk_t *pNtk, int nConfLimit, int fDoSparse, int fProve, int fTransfer, int fSpeculate, int fChoicing, int fVerbose)
Abc_Ntk_t * Abc_NtkFromMappedGia(Gia_Man_t *p, int fFindEnables, int fUseBuffs)
Abc_Ntk_t * Abc_NtkDarFrames(Abc_Ntk_t *pNtk, int nPrefix, int nFrames, int fInit, int fVerbose)
Abc_Ntk_t * Abc_NtkPhaseAbstract(Abc_Ntk_t *pNtk, int nFrames, int nPref, int fIgnore, int fPrint, int fVerbose)
int Abc_NtkPhaseFrameNum(Abc_Ntk_t *pNtk)
Abc_Ntk_t * Abc_NtkDarSeqSweep2(Abc_Ntk_t *pNtk, Ssw_Pars_t *pPars)
int Abc_NtkDarBmcInter_int(Aig_Man_t *pMan, Inter_ManParams_t *pPars, Aig_Man_t **ppNtkRes)
void Abc_CollectTopOr_rec(Abc_Obj_t *pObj, Vec_Ptr_t *vSuper)
Abc_Ntk_t * Abc_NtkFromAigPhase(Aig_Man_t *pMan)
DECLARATIONS ///.
Abc_Ntk_t * Abc_NtkDarSynchOne(Abc_Ntk_t *pNtk, int nWords, int fVerbose)
Abc_Ntk_t * Abc_NtkDarTempor(Abc_Ntk_t *pNtk, int nFrames, int TimeOut, int nConfLimit, int fUseBmc, int fUseTransSigs, int fVerbose, int fVeryVerbose)
Hop_Obj_t * Abc_ObjHopFromGia(Hop_Man_t *pHopMan, Gia_Man_t *p, int GiaId, Vec_Ptr_t *vCopies)
Abc_Ntk_t * Abc_NtkDarMatch(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int nDist, int fVerbose)
Abc_Ntk_t * Abc_NtkDarFraigPart(Abc_Ntk_t *pNtk, int nPartSize, int nConfLimit, int nLevelMax, int fVerbose)
Abc_Ntk_t * Abc_NtkDarLatchSweep(Abc_Ntk_t *pNtk, int fLatchConst, int fLatchEqual, int fSaveNames, int fUseMvSweep, int nFramesSymb, int nFramesSatur, int fVerbose, int fVeryVerbose)
void Abc_NtkVerifyReportErrorSeq(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int *pModel, int nFrames)
struct Abc_Obj_t_ Abc_Obj_t
#define Abc_NtkForEachCo(pNtk, pCo, i)
ABC_DLL Vec_Ptr_t * Abc_AigDfs(Abc_Ntk_t *pNtk, int fCollectAll, int fCollectCos)
ABC_DLL int Abc_NtkIvyProve(Abc_Ntk_t **ppNtk, void *pPars)
ABC_DLL Abc_Ntk_t * Abc_NtkAlloc(Abc_NtkType_t Type, Abc_NtkFunc_t Func, int fUseMemMan)
DECLARATIONS ///.
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
ABC_DLL Abc_Obj_t * Abc_AigXor(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
ABC_DLL void Abc_NtkDeleteObj(Abc_Obj_t *pObj)
ABC_DLL Abc_Ntk_t * Abc_NtkCreateCone(Abc_Ntk_t *pNtk, Abc_Obj_t *pNode, char *pNodeName, int fUseAllCis)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst1(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachPo(pNtk, pPo, i)
ABC_DLL Abc_Obj_t * Abc_NtkDupObj(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pObj, int fCopyName)
ABC_DLL void Abc_NtkAddDummyBoxNames(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachLatch(pNtk, pObj, i)
ABC_DLL int Abc_NtkGetChoiceNum(Abc_Ntk_t *pNtk)
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst0(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Ntk_t * Abc_NtkStartFromNoLatches(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
ABC_DLL Abc_Ntk_t * Abc_NtkCollapse(Abc_Ntk_t *pNtk, int fBddSizeMax, int fDualRail, int fReorder, int fReverse, int fDumpOrder, int fVerbose)
DECLARATIONS ///.
struct Abc_Aig_t_ Abc_Aig_t
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
struct Abc_Ntk_t_ Abc_Ntk_t
ABC_DLL char * Abc_ObjAssignName(Abc_Obj_t *pObj, char *pName, char *pSuffix)
ABC_DLL char * Abc_SopCreateAnd(Mem_Flex_t *pMan, int nVars, int *pfCompl)
ABC_DLL void Abc_NtkAddDummyPoNames(Abc_Ntk_t *pNtk)
ABC_DLL int * Abc_NtkVerifyGetCleanModel(Abc_Ntk_t *pNtk, int nFrames)
ABC_DLL int Abc_NtkLogicMakeSimpleCos(Abc_Ntk_t *pNtk, int fDuplicate)
ABC_DLL int Abc_AigCleanup(Abc_Aig_t *pMan)
ABC_DLL void Abc_SopComplementVar(char *pSop, int iVar)
ABC_DLL int Abc_NtkGetBddNodeNum(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_AigAnd(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
ABC_DLL Abc_Ntk_t * Abc_NtkMiter(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fComb, int nPartSize, int fImplic, int fMulti)
FUNCTION DEFINITIONS ///.
ABC_DLL void Abc_NtkMakeComb(Abc_Ntk_t *pNtk, int fRemoveLatches)
#define Abc_NtkForEachLatchInput(pNtk, pObj, i)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeInv(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
ABC_DLL char * Abc_ObjNameDummy(char *pPrefix, int Num, int nDigits)
#define Abc_NtkForEachPi(pNtk, pPi, i)
ABC_DLL int Abc_NtkAppend(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fAddPos)
ABC_DLL char * Abc_SopCreateFromIsop(Mem_Flex_t *pMan, int nVars, Vec_Int_t *vCover)
ABC_DLL Abc_Ntk_t * Abc_NtkFraig(Abc_Ntk_t *pNtk, void *pParams, int fAllNodes, int fExdc)
FUNCTION DEFINITIONS ///.
#define Abc_NtkForEachCi(pNtk, pCi, i)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL char * Abc_SopCreateXor(Mem_Flex_t *pMan, int nVars)
ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
ABC_DLL void Abc_NtkOrderCisCos(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_NtkAddDummyPiNames(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_NtkMiterIsConstant(Abc_Ntk_t *pMiter)
#define Abc_NtkForEachNode(pNtk, pNode, i)
ABC_DLL char * Abc_SopCreateMux(Mem_Flex_t *pMan)
#define ABC_ALLOC(type, num)
#define ABC_REALLOC(type, obj, num)
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_ManInterFast(Aig_Man_t *pManOn, Aig_Man_t *pManOff, int fVerbose)
FUNCTION DEFINITIONS ///.
Aig_Man_t * Aig_ManInter(Aig_Man_t *pManOn, Aig_Man_t *pManOff, int fRelation, int fVerbose)
ABC_NAMESPACE_IMPL_START abctime timeCnf
DECLARATIONS ///.
ABC_NAMESPACE_IMPL_START Aig_Man_t * Dar_ManRwsat(Aig_Man_t *pAig, int fBalance, int fVerbose)
DECLARATIONS ///.
int Aig_ManPartitionedSat(Aig_Man_t *p, int nAlgo, int nPartSize, int nConfPart, int nConfTotal, int fAlignPol, int fSynthesize, int fVerbose)
void Aig_ManPrintControlFanouts(Aig_Man_t *p)
int Aig_ManCoCleanup(Aig_Man_t *p)
int Aig_ManSeqCleanup(Aig_Man_t *p)
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
void Aig_MmFlexStop(Aig_MmFlex_t *p, int fVerbose)
void Aig_ManSetCioIds(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupDfs(Aig_Man_t *p)
#define Aig_ManForEachObj(p, pObj, i)
void Aig_ManStop(Aig_Man_t *p)
Aig_Man_t * Aig_ManReduceLaches(Aig_Man_t *p, int fVerbose)
Aig_Man_t * Rtm_ManRetime(Aig_Man_t *p, int fForward, int nStepsMax, int fVerbose)
#define Aig_ManForEachLiSeq(p, pObj, i)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
Aig_Man_t * Aig_ManFraigPartitioned(Aig_Man_t *pAig, int nPartSize, int nConfMax, int nLevelMax, int fVerbose)
Aig_Man_t * Aig_ManConstReduce(Aig_Man_t *p, int fUseMvSweep, int nFramesSymb, int nFramesSatur, int fVerbose, int fVeryVerbose)
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
int Aig_ManCiCleanup(Aig_Man_t *p)
struct Aig_Obj_t_ Aig_Obj_t
struct Aig_MmFlex_t_ Aig_MmFlex_t
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
Aig_Man_t * Aig_ManFrames(Aig_Man_t *pAig, int nFs, int fInit, int fOuts, int fRegs, int fEnlarge, Aig_Obj_t ***ppObjMap)
FUNCTION DEFINITIONS ///.
void Aig_ManPrintStats(Aig_Man_t *p)
#define Aig_ManForEachNode(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
int Aig_ManCleanup(Aig_Man_t *p)
void Aig_ObjPatchFanin0(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pFaninNew)
Aig_Man_t * Aig_ManRetimeFrontier(Aig_Man_t *p, int nStepsMax)
#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)
Aig_Man_t * Aig_ManDupUnsolvedOutputs(Aig_Man_t *p, int fAddRegs)
#define Aig_ManForEachPoSeq(p, pObj, i)
Aig_Man_t * Aig_ManDupOneOutput(Aig_Man_t *p, int iPoNum, int fAddRegs)
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
Aig_Man_t * Aig_ManScl(Aig_Man_t *pAig, int fLatchConst, int fLatchEqual, int fUseMvSweep, int nFramesSymb, int nFramesSatur, int fVerbose, int fVeryVerbose)
void Aig_ManCleanData(Aig_Man_t *p)
#define Aig_ManForEachLiLoSeq(p, pObjLi, pObjLo, k)
ABC_DLL int Aig_ManCheck(Aig_Man_t *p)
FUNCTION DECLARATIONS ///.
void Aig_ManComputeSccs(Aig_Man_t *p)
Vec_Ptr_t * Amap_ManTest(Aig_Man_t *pAig, Amap_Par_t *pPars)
struct Amap_Par_t_ Amap_Par_t
struct Amap_Out_t_ Amap_Out_t
ABC_DLL char * Abc_FrameReadFlag(char *pFlag)
ABC_DLL void * Abc_FrameReadLibGen()
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Saig_ManBmcMappingTest(Aig_Man_t *p)
void Saig_ManBmcTerSimTest(Aig_Man_t *p)
void Saig_ManBmcSupergateTest(Aig_Man_t *p)
void Saig_ManBmcSectionsTest(Aig_Man_t *p)
int Saig_BmcPerform(Aig_Man_t *pAig, int nStart, int nFramesMax, int nNodesMax, int nTimeOut, int nConfMaxOne, int nConfMaxAll, int fVerbose, int fVerbOverwrite, int *piFrames, int fSilent, int fUseSatoko)
int Saig_ManBmcScalable(Aig_Man_t *pAig, Saig_ParBmc_t *pPars)
int Saig_ManBmcSimple(Aig_Man_t *pAig, int nFrames, int nSizeMax, int nBTLimit, int fRewrite, int fVerbose, int *piFrame, int nCofFanLit, int fUseSatoko)
struct Saig_ParBmc_t_ Saig_ParBmc_t
Aig_Man_t * Cec_ComputeChoices(Gia_Man_t *pGia, Dch_Pars_t *pPars)
typedefABC_NAMESPACE_HEADER_START struct Cgt_Par_t_ Cgt_Par_t
INCLUDES ///.
Aig_Man_t * Cgt_ClockGating(Aig_Man_t *pAig, Aig_Man_t *pCare, Cgt_Par_t *pPars)
Cnf_Dat_t * Cnf_DeriveFast(Aig_Man_t *p, int nOutputs)
Cnf_Dat_t * Cnf_Derive(Aig_Man_t *pAig, int nOutputs)
void Cnf_DataTranformPolarity(Cnf_Dat_t *pCnf, int fTransformPos)
typedefABC_NAMESPACE_HEADER_START struct Cnf_Man_t_ Cnf_Man_t
INCLUDES ///.
void Cnf_SopConvertToVector(char *pSop, int nCubes, Vec_Int_t *vCover)
struct Cnf_Dat_t_ Cnf_Dat_t
void Cnf_DataFree(Cnf_Dat_t *p)
struct Cnf_Cut_t_ Cnf_Cut_t
#define Cnf_CutForEachLeaf(p, pCut, pLeaf, i)
void Cnf_DataWriteIntoFile(Cnf_Dat_t *p, char *pFileName, int fReadable, Vec_Int_t *vForAlls, Vec_Int_t *vExists)
ABC_NAMESPACE_HEADER_START Aig_Man_t * Csw_Sweep(Aig_Man_t *pAig, int nCutsMax, int nLeafMax, int fVerbose)
INCLUDES ///.
Gia_Man_t * Dar_NewChoiceSynthesis(Aig_Man_t *pAig, int fBalance, int fUpdateLevel, int fPower, int fLightSynth, int fVerbose)
Aig_Man_t * Dar_ManChoiceNew(Aig_Man_t *pAig, Dch_Pars_t *pPars)
Aig_Man_t * Dar_ManCompress2(Aig_Man_t *pAig, int fBalance, int fUpdateLevel, int fFanout, int fPower, int fVerbose)
int Dar_ManRefactor(Aig_Man_t *pAig, Dar_RefPar_t *pPars)
typedefABC_NAMESPACE_HEADER_START struct Dar_RwrPar_t_ Dar_RwrPar_t
INCLUDES ///.
Aig_Man_t * Dar_ManBalance(Aig_Man_t *p, int fUpdateLevel)
struct Dar_RefPar_t_ Dar_RefPar_t
int Dar_ManRewrite(Aig_Man_t *pAig, Dar_RwrPar_t *pPars)
void Dar_BalancePrintStats(Aig_Man_t *p)
Aig_Man_t * Dar_ManChoice(Aig_Man_t *pAig, int fBalance, int fUpdateLevel, int fConstruct, int nConfMax, int nLevelMax, int fVerbose)
typedefABC_NAMESPACE_HEADER_START struct Dch_Pars_t_ Dch_Pars_t
INCLUDES ///.
Aig_Man_t * Dch_ComputeChoices(Aig_Man_t *pAig, Dch_Pars_t *pPars)
int Fra_Clau(Aig_Man_t *pMan, int nIters, int fVerbose, int fVeryVerbose)
int Fra_Claus(Aig_Man_t *pAig, int nFrames, int nPref, int nClausesMax, int nLutSize, int nLevels, int nCutsMax, int nBatches, int fStepUp, int fBmc, int fRefs, int fTarget, int fVerbose, int fVeryVerbose)
ABC_NAMESPACE_IMPL_START void Fra_ManPartitionTest(Aig_Man_t *p, int nComLim)
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Fra_Par_t_ Fra_Par_t
INCLUDES ///.
int Fra_FraigCecPartitioned(Aig_Man_t *pMan1, Aig_Man_t *pMan2, int nConfLimit, int nPartSize, int fSmart, int fVerbose)
Aig_Man_t * Fra_FraigLatchCorrespondence(Aig_Man_t *pAig, int nFramesP, int nConfMax, int fProve, int fVerbose, int *pnIter, float TimeLimit)
Aig_Man_t * Fra_FraigPerform(Aig_Man_t *pManAig, Fra_Par_t *pPars)
void Fra_SmlStop(Fra_Sml_t *p)
int Fra_FraigCec(Aig_Man_t **ppAig, int nConfLimit, int fVerbose)
int Fra_FraigSat(Aig_Man_t *pMan, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, int nLearnedStart, int nLearnedDelta, int nLearnedPerce, int fFlipBits, int fAndOuts, int fNewSolver, int fVerbose)
ITERATORS ///.
struct Fra_Sec_t_ Fra_Sec_t
struct Fra_Sml_t_ Fra_Sml_t
Fra_Sml_t * Fra_SmlSimulateComb(Aig_Man_t *pAig, int nWords, int fCheckMiter)
Fra_Sml_t * Fra_SmlSimulateCombGiven(Aig_Man_t *pAig, char *pFileName, int fCheckMiter, int fVerbose)
struct Fra_Ssw_t_ Fra_Ssw_t
Fra_Sml_t * Fra_SmlSimulateSeq(Aig_Man_t *pAig, int nPref, int nFrames, int nWords, int fCheckMiter)
Aig_Man_t * Fra_FraigInduction(Aig_Man_t *p, Fra_Ssw_t *pPars)
int Fra_FraigSec(Aig_Man_t *p, Fra_Sec_t *pParSec, Aig_Man_t **ppResult)
void Fra_ParamsDefault(Fra_Par_t *pParams)
DECLARATIONS ///.
Abc_Cex_t * Fra_SmlGetCounterExample(Fra_Sml_t *p)
void Prove_ParamsSetDefault(Prove_Params_t *pParams)
FUNCTION DEFINITIONS ///.
void Fraig_ParamsSetDefault(Fraig_Params_t *pParams)
struct Fraig_ParamsStruct_t_ Fraig_Params_t
Aig_Man_t * Gia_ManToAigSimple(Gia_Man_t *p)
Gia_Man_t * Gia_ManFromAig(Aig_Man_t *p)
INCLUDES ///.
Aig_Man_t * Gia_ManToAig(Gia_Man_t *p, int fChoices)
Aig_Man_t * Gia_ManToAigSkip(Gia_Man_t *p, int nOutDelta)
Gia_Man_t * Gia_ManFromAigSimple(Aig_Man_t *p)
Vec_Wrd_t * Gia_ManDeriveNodeFuncs(Gia_Man_t *p)
Vec_Int_t * Saig_ManComputeSwitchProbs(Aig_Man_t *pAig, int nFrames, int nPref, int fProbOne)
void Gia_ManStop(Gia_Man_t *p)
#define Gia_ManForEachBuf(p, pObj, i)
#define Gia_ManForEachPo(p, pObj, i)
#define Gia_ManForEachAnd(p, pObj, i)
#define Gia_ManForEachCand(p, pObj, i)
Gia_Man_t * Gia_AigerRead(char *pFileName, int fGiaSimple, int fSkipStrash, int fCheck)
void Gia_ManHashAlloc(Gia_Man_t *p)
#define Gia_ManForEachCell(p, i)
#define Gia_ManForEachPi(p, pObj, i)
int Gia_ObjRecognizeMuxLits(Gia_Man_t *p, Gia_Obj_t *pNode, int *iLitT, int *iLitE)
#define Gia_ManForEachLut(p, i)
Gia_Man_t * Gia_ManStart(int nObjsMax)
FUNCTION DEFINITIONS ///.
struct Gia_Obj_t_ Gia_Obj_t
#define Gia_LutForEachFanin(p, i, iFan, k)
void Gia_ManSimSetDefaultParams(Gia_ParSim_t *p)
int Gia_ObjIsMuxType(Gia_Obj_t *pNode)
void Gia_ManFillValue(Gia_Man_t *p)
struct Gia_Man_t_ Gia_Man_t
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
void Gia_ManIncrementTravId(Gia_Man_t *p)
#define Gia_ManForEachCo(p, pObj, i)
#define Gia_ManForEachCi(p, pObj, i)
#define Gia_ManForEachRiRo(p, pObjRi, pObjRo, i)
#define Gia_CellForEachFanin(p, i, iFanLit, k)
void Gia_ManSetPhase(Gia_Man_t *p)
void Gia_ManPrintStats(Gia_Man_t *p, Gps_Par_t *pPars)
int Gia_ManSimSimulate(Gia_Man_t *pAig, Gia_ParSim_t *pPars)
struct Gia_ParSim_t_ Gia_ParSim_t
typedefABC_NAMESPACE_HEADER_START struct Hop_Man_t_ Hop_Man_t
INCLUDES ///.
Hop_Obj_t * Hop_IthVar(Hop_Man_t *p, int i)
FUNCTION DEFINITIONS ///.
Hop_Obj_t * Hop_And(Hop_Man_t *p, Hop_Obj_t *p0, Hop_Obj_t *p1)
struct Hop_Obj_t_ Hop_Obj_t
typedefABC_NAMESPACE_HEADER_START struct Inter_ManParams_t_ Inter_ManParams_t
INCLUDES ///.
int Inter_ManPerformInterpolation(Aig_Man_t *pAig, Inter_ManParams_t *pPars, int *piFrame)
void Ioa_WriteAiger(Aig_Man_t *pMan, char *pFileName, int fWriteSymbols, int fCompact)
struct Prove_ParamsStruct_t_ Prove_Params_t
unsigned __int64 word
DECLARATIONS ///.
void Llb_ManMinCutTest(Aig_Man_t *pAig, int Num)
void Llb_NonlinExperiment(Aig_Man_t *pAig, int Num)
struct Mio_LibraryStruct_t_ Mio_Library_t
Mio_Cell2_t * Mio_CollectRootsNewDefault2(int nInputs, int *pnGates, int fVerbose)
Mio_Gate_t * Mio_LibraryReadGateByName(Mio_Library_t *pLib, char *pName, char *pOutName)
struct Mio_Cell2_t_ Mio_Cell2_t
struct Mem_Flex_t_ Mem_Flex_t
int Nm_ManFindIdByNameTwoTypes(Nm_Man_t *p, char *pName, int Type1, int Type2)
int Nm_ManFindIdByName(Nm_Man_t *p, char *pName, int Type)
typedefABC_NAMESPACE_HEADER_START struct Pdr_Par_t_ Pdr_Par_t
INCLUDES ///.
int Pdr_ManSolve(Aig_Man_t *p, Pdr_Par_t *pPars)
int Ssw_ManProfileConstraints(Aig_Man_t *p, int nWords, int nFrames, int fVerbose)
FUNCTION DEFINITIONS ///.
int Aig_ManVerifyUsingBdds(Aig_Man_t *pInit, Saig_ParBbr_t *pPars)
int Saig_ManPhaseFrameNum(Aig_Man_t *p, Vec_Int_t *vInits)
Aig_Man_t * Saig_SynchSequenceApply(Aig_Man_t *pAig, int nWords, int fVerbose)
Aig_Man_t * Saig_Synchronize(Aig_Man_t *pAig1, Aig_Man_t *pAig2, int nWords, int fVerbose)
Aig_Man_t * Saig_ManTempor(Aig_Man_t *pAig, int nFrames, int TimeOut, int nConfLimit, int fUseBmc, int fUseTransSigs, int fVerbose, int fVeryVerbose)
int Saig_ManDemiterDual(Aig_Man_t *p, Aig_Man_t **ppAig0, Aig_Man_t **ppAig1)
struct Saig_ParBbr_t_ Saig_ParBbr_t
Aig_Obj_t * Saig_ManFindPivot(Aig_Man_t *p)
Aig_Man_t * Saig_ManDupUnfoldConstrsFunc(Aig_Man_t *pAig, int nFrames, int nConfs, int nProps, int fOldAlgo, int fVerbose)
Aig_Man_t * Saig_ManRetimeMinArea(Aig_Man_t *p, int nMaxIters, int fForwardOnly, int fBackwardOnly, int fInitial, int fVerbose)
Aig_Man_t * Saig_ManTimeframeSimplify(Aig_Man_t *pAig, int nFrames, int nFramesMax, int fInit, int fVerbose)
Aig_Man_t * Saig_ManDupUnfoldConstrs(Aig_Man_t *pAig)
int Saig_ManDemiterNew(Aig_Man_t *pMan)
Aig_Man_t * Saig_ManDupFoldConstrsFunc(Aig_Man_t *pAig, int fCompl, int fVerbose, int fSeqCleanup)
Aig_Man_t * Saig_ManWindowExtract(Aig_Man_t *p, Aig_Obj_t *pObj, int nDist)
Vec_Int_t * Saig_StrSimPerformMatching(Aig_Man_t *p0, Aig_Man_t *p1, int nDist, int fVerbose, Aig_Man_t **ppMiter)
Aig_Man_t * Saig_ManPhaseAbstract(Aig_Man_t *p, Vec_Int_t *vInits, int nFrames, int nPref, int fIgnore, int fPrint, int fVerbose)
int Ssw_SecSpecialMiter(Aig_Man_t *p0, Aig_Man_t *p1, int nFrames, int fVerbose)
#define Saig_ManForEachPo(p, pObj, i)
Aig_Man_t * Saig_ManDecPropertyOutput(Aig_Man_t *pAig, int nLits, int fVerbose)
int Saig_ManDetectConstrTest(Aig_Man_t *p)
Aig_Man_t * Saig_ManWindowInsert(Aig_Man_t *p, Aig_Obj_t *pObj, int nDist, Aig_Man_t *pWnd)
int Saig_ManDemiterSimpleDiff(Aig_Man_t *p, Aig_Man_t **ppAig0, Aig_Man_t **ppAig1)
int Saig_ManInduction(Aig_Man_t *p, int nTimeOut, int nFramesMax, int nConfMax, int fUnique, int fUniqueAll, int fGetCex, int fVerbose, int fVeryVerbose)
void Saig_ManPrintCones(Aig_Man_t *p)
FUNCTION DECLARATIONS ///.
Aig_Man_t * Saig_ManRetimeForward(Aig_Man_t *p, int nMaxIters, int fVerbose)
#define Saig_ManForEachLo(p, pObj, i)
int Saig_ManRetimeSteps(Aig_Man_t *p, int nSteps, int fForward, int fAddBugs)
void Saig_ManDetectConstrFuncTest(Aig_Man_t *p, int nFrames, int nConfs, int nProps, int fOldAlgo, int fVerbose)
int Saig_ManVerifyCex(Aig_Man_t *pAig, Abc_Cex_t *p)
void Ssw_ManSetDefaultParams(Ssw_Pars_t *p)
DECLARATIONS ///.
int Ssw_ManSetConstrPhases(Aig_Man_t *p, int nFrames, Vec_Int_t **pvInits)
int Ssw_SecWithSimilarity(Aig_Man_t *p0, Aig_Man_t *p1, Ssw_Pars_t *pPars)
struct Ssw_RarPars_t_ Ssw_RarPars_t
typedefABC_NAMESPACE_HEADER_START struct Ssw_Pars_t_ Ssw_Pars_t
INCLUDES ///.
int Ssw_RarSimulate(Aig_Man_t *pAig, Ssw_RarPars_t *pPars)
int Ssw_SecGeneralMiter(Aig_Man_t *pMiter, Ssw_Pars_t *pPars)
Aig_Man_t * Ssw_SignalCorrespondence(Aig_Man_t *pAig, Ssw_Pars_t *pPars)
Abc_Cex_t * Abc_CexCreate(int nRegs, int nPis, int *pArray, int iFrame, int iPo, int fSkipRegs)
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Mem_t_ Vec_Mem_t
DECLARATIONS ///.
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 ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.