34static void Abc_NtkMiterPrepare(
Abc_Ntk_t * pNtk1,
Abc_Ntk_t * pNtk2,
Abc_Ntk_t * pNtkMiter,
int fComb,
int nPartSize,
int fMulti );
36static void Abc_NtkMiterFinalize(
Abc_Ntk_t * pNtk1,
Abc_Ntk_t * pNtk2,
Abc_Ntk_t * pNtkMiter,
int fComb,
int nPartSize,
int fImplic,
int fMulti );
62 int fRemove1, fRemove2;
63 assert( Abc_NtkHasOnlyLatchBoxes(pNtk1) );
64 assert( Abc_NtkHasOnlyLatchBoxes(pNtk2) );
72 pTemp = Abc_NtkMiterInt( pNtk1, pNtk2, fComb, nPartSize, fImplic, fMulti );
94 assert( Abc_NtkIsStrash(pNtk1) );
95 assert( Abc_NtkIsStrash(pNtk2) );
103 Abc_NtkMiterPrepare( pNtk1, pNtk2, pNtkMiter, fComb, nPartSize, fMulti );
104 Abc_NtkMiterAddOne( pNtk1, pNtkMiter );
105 Abc_NtkMiterAddOne( pNtk2, pNtkMiter );
106 Abc_NtkMiterFinalize( pNtk1, pNtk2, pNtkMiter, fComb, nPartSize, fImplic, fMulti );
112 printf(
"Abc_NtkMiter: The network check has failed.\n" );
145 pObjNew = Abc_NtkCreatePi( pNtkMiter );
147 pObj->
pCopy = pObjNew;
148 pObj = Abc_NtkCi(pNtk2, i);
149 pObj->
pCopy = pObjNew;
153 if ( nPartSize <= 0 )
160 pObjNew = Abc_NtkCreatePo( pNtkMiter );
167 pObjNew = Abc_NtkCreatePo( pNtkMiter );
177 pObjNew = Abc_NtkCreatePi( pNtkMiter );
179 pObj->
pCopy = pObjNew;
180 pObj = Abc_NtkPi(pNtk2, i);
181 pObj->
pCopy = pObjNew;
185 if ( nPartSize <= 0 )
192 pObjNew = Abc_NtkCreatePo( pNtkMiter );
199 pObjNew = Abc_NtkCreatePo( pNtkMiter );
264 if ( Abc_AigNodeIsAnd(pNode) )
266 Vec_PtrFree( vNodes );
281void Abc_NtkMiterFinalize(
Abc_Ntk_t * pNtk1,
Abc_Ntk_t * pNtk2,
Abc_Ntk_t * pNtkMiter,
int fComb,
int nPartSize,
int fImplic,
int fMulti )
286 assert( nPartSize == 0 || fMulti == 0 );
288 vPairs = Vec_PtrAlloc( 100 );
301 Vec_PtrPush( vPairs, Abc_ObjChild0Copy(pNode) );
302 pNode = Abc_NtkCo( pNtk2, i );
303 Vec_PtrPush( vPairs, Abc_ObjChild0Copy(pNode) );
319 Vec_PtrPush( vPairs, Abc_ObjChild0Copy(pNode) );
320 pNode = Abc_NtkPo( pNtk2, i );
321 Vec_PtrPush( vPairs, Abc_ObjChild0Copy(pNode) );
326 Abc_ObjAddFanin( Abc_ObjFanin0(pNode)->pCopy, Abc_ObjChild0Copy(Abc_ObjFanin0(pNode)) );
328 Abc_ObjAddFanin( Abc_ObjFanin0(pNode)->pCopy, Abc_ObjChild0Copy(Abc_ObjFanin0(pNode)) );
331 if ( nPartSize <= 0 )
343 int nParts, i, k, iCur;
344 assert( Vec_PtrSize(vPairs) == 2 * Abc_NtkCoNum(pNtk1) );
346 nParts = Abc_NtkCoNum(pNtk1) / nPartSize + (int)((Abc_NtkCoNum(pNtk1) % nPartSize) > 0);
347 vPairsPart = Vec_PtrAlloc( nPartSize );
348 for ( i = 0; i < nParts; i++ )
350 Vec_PtrClear( vPairsPart );
351 for ( k = 0; k < nPartSize; k++ )
353 iCur = i * nPartSize + k;
354 if ( iCur >= Abc_NtkCoNum(pNtk1) )
356 Vec_PtrPush( vPairsPart, Vec_PtrEntry(vPairs, 2*iCur ) );
357 Vec_PtrPush( vPairsPart, Vec_PtrEntry(vPairs, 2*iCur+1) );
360 pNode = Abc_NtkCreatePo( pNtkMiter );
363 if ( nPartSize == 1 )
369 Vec_PtrFree( vPairsPart );
371 Vec_PtrFree( vPairs );
394 assert( Abc_NtkIsStrash(pNtk1) );
395 assert( Abc_NtkIsStrash(pNtk2) );
396 assert( 1 == Abc_NtkCoNum(pNtk1) );
397 assert( 1 == Abc_NtkCoNum(pNtk2) );
398 assert( 0 == Abc_NtkLatchNum(pNtk1) );
399 assert( 0 == Abc_NtkLatchNum(pNtk2) );
400 assert( Abc_NtkCiNum(pNtk1) == Abc_NtkCiNum(pNtk2) );
401 assert( Abc_NtkHasOnlyLatchBoxes(pNtk1) );
402 assert( Abc_NtkHasOnlyLatchBoxes(pNtk2) );
411 Abc_NtkMiterPrepare( pNtk1, pNtk2, pNtkMiter, 1, -1, 0 );
412 Abc_NtkMiterAddOne( pNtk1, pNtkMiter );
413 Abc_NtkMiterAddOne( pNtk2, pNtkMiter );
415 pRoot1 = Abc_NtkPo(pNtk1,0);
416 pRoot2 = Abc_NtkPo(pNtk2,0);
417 pOutput1 = Abc_ObjNotCond( Abc_ObjFanin0(pRoot1)->pCopy, Abc_ObjFaninC0(pRoot1) );
418 pOutput2 = Abc_ObjNotCond( Abc_ObjFanin0(pRoot2)->pCopy, (
int)Abc_ObjFaninC0(pRoot2) ^ fCompl2 );
430 printf(
"Abc_NtkMiterAnd: The network check has failed.\n" );
457 assert( Abc_NtkIsStrash(pNtk) );
458 assert( 1 == Abc_NtkCoNum(pNtk) );
459 assert( Abc_NtkHasOnlyLatchBoxes(pNtk) );
467 pRoot = Abc_NtkCo( pNtk, 0 );
470 Abc_NtkMiterPrepare( pNtk, pNtk, pNtkMiter, 1, -1, 0 );
478 Abc_NtkCi(pNtk, i)->pCopy = Abc_ObjNot(
Abc_AigConst1(pNtkMiter) );
492 pOutput1 = Abc_ObjNotCond( Abc_ObjFanin0(pRoot)->pCopy, Abc_ObjFaninC0(pRoot) );
500 printf(
"Abc_NtkMiterCofactor: The network check has failed.\n" );
521 Abc_Obj_t * pRoot, * pOutput1, * pOutput2, * pMiter;
523 assert( Abc_NtkIsStrash(pNtk) );
524 assert( Out < Abc_NtkCoNum(pNtk) );
525 assert( In1 < Abc_NtkCiNum(pNtk) );
526 assert( In2 < Abc_NtkCiNum(pNtk) );
527 assert( Abc_NtkHasOnlyLatchBoxes(pNtk) );
535 pRoot = Abc_NtkCo( pNtk, Out );
538 Abc_NtkMiterPrepare( pNtk, pNtk, pNtkMiter, 1, -1, 0 );
540 Abc_NtkCi(pNtk, In1)->pCopy = Abc_ObjNot(
Abc_AigConst1(pNtkMiter) );
547 pOutput1 = Abc_ObjFanin0(pRoot)->
pCopy;
552 Abc_NtkCi(pNtk, In2)->pCopy = Abc_ObjNot(
Abc_AigConst1(pNtkMiter) );
557 pOutput2 = Abc_ObjFanin0(pRoot)->
pCopy;
566 printf(
"Abc_NtkMiter: The network check has failed.\n" );
588 Abc_Obj_t * pRoot, * pOutput1, * pOutput2, * pMiter;
590 assert( Abc_NtkIsStrash(pNtk) );
591 assert( 1 == Abc_NtkCoNum(pNtk) );
592 assert( In < Abc_NtkCiNum(pNtk) );
593 assert( Abc_NtkHasOnlyLatchBoxes(pNtk) );
600 pRoot = Abc_NtkCo( pNtk, 0 );
603 Abc_NtkMiterPrepare( pNtk, pNtk, pNtkMiter, 1, -1, 0 );
605 Abc_NtkCi(pNtk, In)->pCopy = Abc_ObjNot(
Abc_AigConst1(pNtkMiter) );
610 pOutput1 = Abc_ObjNotCond( Abc_ObjFanin0(pRoot)->pCopy, Abc_ObjFaninC0(pRoot) );
618 pOutput2 = Abc_ObjNotCond( Abc_ObjFanin0(pRoot)->pCopy, Abc_ObjFaninC0(pRoot) );
630 printf(
"Abc_NtkMiter: The network check has failed.\n" );
653 assert( Abc_NtkHasOnlyLatchBoxes(pNtk) );
657 if ( Abc_ObjFanoutNum(pObj) == 0 )
686 assert( Abc_NtkIsStrash(pMiter) );
689 pChild = Abc_ObjChild0( pNodePo );
691 if ( Abc_AigNodeIsConst(pChild) )
694 if ( !Abc_ObjIsComplement(pChild) )
731 if ( Abc_NtkPoNum(pMiter) == 1 )
733 pChild = Abc_ObjChild0( Abc_NtkPo(pMiter,0) );
734 if ( Abc_AigNodeIsConst(pChild) )
736 if ( Abc_ObjIsComplement(pChild) )
737 printf(
"Unsatisfiable.\n" );
739 printf(
"Satisfiable. (Constant 1).\n" );
742 printf(
"Satisfiable.\n" );
748 pChild = Abc_ObjChild0( Abc_NtkPo(pMiter,i) );
749 printf(
"Output #%2d : ", i );
750 if ( Abc_AigNodeIsConst(pChild) )
752 if ( Abc_ObjIsComplement(pChild) )
753 printf(
"Unsatisfiable.\n" );
755 printf(
"Satisfiable. (Constant 1).\n" );
758 printf(
"Satisfiable.\n" );
783 assert( Abc_NtkIsStrash(pNtk) );
785 assert( Abc_NtkHasOnlyLatchBoxes(pNtk) );
788 sprintf( Buffer,
"%s_%d_frames", pNtk->
pName, nFrames );
804 pLatchOut = Abc_ObjFanout0(pLatch);
805 if ( Abc_LatchIsInitNone(pLatch) || Abc_LatchIsInitDc(pLatch) )
807 pLatchOut->
pCopy = Abc_NtkCreatePi(pNtkFrames);
812 pLatchOut->
pCopy = Abc_ObjNotCond(
Abc_AigConst1(pNtkFrames), Abc_LatchIsInit0(pLatch) );
815 printf(
"Warning: %d uninitialized latches are replaced by free PI variables.\n", Counter );
820 for ( i = 0; i < nFrames; i++ )
822 Extra_ProgressBarUpdate( pProgress, i, NULL );
823 Abc_NtkAddFrame( pNtkFrames, pNtk, i );
832 Abc_ObjAddFanin( Abc_ObjFanin0(pLatch)->pCopy, Abc_ObjFanout0(pLatch)->pCopy );
842 printf(
"Abc_NtkFrames: The network check has failed.\n" );
866 int NodeBef = Abc_NtkNodeNum(pNtkFrames);
871 sprintf( Buffer,
"_%02d", iFrame );
886 pLatch->
pCopy = Abc_ObjChild0Copy(Abc_ObjFanin0(pLatch));
888 Abc_ObjFanout0(pLatch)->pCopy = pLatch->
pCopy;
891 printf(
"F = %4d : Total = %6d. Nodes = %6d. Prop = %s.\n",
892 iFrame, Abc_NtkNodeNum(pNtk), Abc_NtkNodeNum(pNtkFrames)-NodeBef,
893 Abc_AigNodeIsConst( Abc_ObjFanin0(Abc_NtkPo(pNtk,0))->pCopy ) ?
"proof" :
"unknown" );
1089 Abc_Obj_t * pNodeC, * pNodeA, * pNodeB, * pNode;
1094 assert( Abc_NtkIsStrash(pNtk) );
1095 assert( Abc_NtkPoNum(pNtk) == 1 );
1098 printf(
"The root of the miter is not an EXOR gate.\n" );
1102 assert( Abc_ObjRegular(pNodeA) == Abc_ObjRegular(pNodeB) );
1103 if ( Abc_ObjFaninC0(Abc_NtkPo(pNtk,0)) )
1105 pNodeA = Abc_ObjNot(pNodeA);
1106 pNodeB = Abc_ObjNot(pNodeB);
1110 pPoNew = Abc_NtkCreatePo( pNtk );
1115 pPoNew = Abc_NtkCreatePo( pNtk );
1120 pNodeB = Abc_ObjRegular(pNodeB);
1128 nCommon += pNode->
fMarkA;
1132 printf(
"First cone = %6d. Second cone = %6d. Common = %6d.\n", vNodes1->nSize, vNodes2->nSize, nCommon );
1133 Vec_PtrFree( vNodes1 );
1134 Vec_PtrFree( vNodes2 );
1140 printf(
"Abc_NtkDemiter: The network check has failed.\n" );
1159 assert( Abc_NtkIsStrash(pNtk) );
1161 if ( Abc_NtkPoNum(pNtk) == 1 )
1177 for ( i = Abc_NtkPoNum(pNtk) - 1; i >= 0; i-- )
1179 assert( Abc_NtkPoNum(pNtk) == 0 );
1181 pNode = Abc_NtkCreatePo( pNtk );
1188 printf(
"Abc_NtkOrPos: The network check has failed.\n" );
1208 int i, nVars, * pVars, iCiVarBeg, iCoVarBeg = 1, nBTLimit = 100000;
1218 assert( Abc_NtkCiNum(pNtk1) == Abc_NtkCiNum(pNtk2) );
1219 assert( Abc_NtkCoNum(pNtk1) == Abc_NtkCoNum(pNtk2) );
1225 vCexes = Vec_PtrStart( Gia_ManPoNum(pGia) );
1227 nVars = Gia_ManPiNum(pGia);
1228 iCiVarBeg = pCnf->
nVars - nVars;
1230 for ( i = 0; i < nVars; i++ )
1231 pVars[i] = iCiVarBeg + i;
1234 for ( i = 0; i < Gia_ManPoNum(pGia); i++ )
1236 int Lit = Abc_Var2Lit( iCoVarBeg + i, 0 );
1242 printf(
"Output %3d (out of %3d) is SAT.\n", i, Gia_ManPoNum(pGia) );
1265 FILE * pFile = fopen( pFileName,
"rb" );
1266 if ( pFile == NULL )
1268 printf(
"Cannot open node list \"%s\".\n", pFileName );
1271 vNodes = Vec_PtrAlloc( 100 );
1272 while ( fgets(Buffer, 1000, pFile) != NULL )
1274 char * pToken =
strtok( Buffer,
" \n\r\t" );
1280 printf(
"Cannot find node \"%s\".\n", pToken );
1281 Vec_PtrFree( vNodes );
1285 Vec_PtrPush( vNodes, pObj );
1286 pToken =
strtok( NULL,
" \n\r\t" );
1308 return pData[Shift];
1316 Abc_Obj_t * pObj, * pFanin, * pObjNew, * pPoNew;
char * pName;
1317 Vec_Int_t * vFirsts = Vec_IntAlloc( Vec_PtrSize(vNodes) );
1318 Vec_Ptr_t * vNames = Vec_PtrAlloc( 100 );
1319 Vec_Ptr_t * vFanins = Vec_PtrAlloc( 100 );
1320 Vec_Ptr_t * vDatas = Vec_PtrAlloc( 100 );
1322 Vec_Ptr_t * vCopies = Vec_PtrStart( Abc_NtkObjNumMax(pNtk) );
1323 int i, k, Index, First, nNewPis = 0;
1330 assert( Abc_ObjIsNode(pObj) );
1332 Vec_IntPush( vFirsts, nNewPis );
1333 nNewPis += 1 << Abc_ObjFaninNum(pObj);
1334 for ( k = 0; k < (1 << Abc_ObjFaninNum(pObj)); k++ )
1337 Vec_PtrPush( vNames, Abc_UtilStrsav(Buffer) );
1356 Vec_PtrWriteEntry( vCopies, pObj->
Id, pObj->
pCopy );
1359 Vec_PtrClear( vFanins );
1361 Vec_PtrPush( vFanins, pFanin->
pCopy );
1362 Index = Vec_PtrFind( vNodes, pObj );
1364 First = Vec_IntEntry( vFirsts, Index );
1365 Vec_PtrClear( vDatas );
1366 for ( k = 0; k < (1 << Abc_ObjFaninNum(pObj)); k++ )
1367 Vec_PtrPush( vDatas, Abc_NtkCi(pNtkNew, First + k) );
1369 (
Abc_Obj_t **)Vec_PtrArray(vFanins), Vec_PtrSize(vFanins),
1370 (
Abc_Obj_t **)Vec_PtrArray(vDatas), 0 );
1371 Vec_PtrWriteEntry( vCopies, pObj->
Id, pObj->
pCopy );
1382 Vec_PtrClear( vDatas );
1385 Vec_PtrClear( vFanins );
1386 Vec_PtrPush( vFanins, Abc_ObjFanin0(pObj)->pCopy );
1387 Vec_PtrPush( vFanins, (
Abc_Obj_t *)Vec_PtrEntry(vCopies, Abc_ObjId(Abc_ObjFanin0(pObj))) );
1390 if ( Vec_PtrSize(vDatas) > 1 )
1393 pObjNew = (
Abc_Obj_t *)Vec_PtrEntry(vDatas, 0);
1397 Vec_IntFree( vFirsts );
1398 Vec_PtrFreeFree( vNames );
1399 Vec_PtrFree( vFanins );
1400 Vec_PtrFree( vDatas );
1401 Vec_PtrFree( vDfs );
1402 Vec_PtrFree( vCopies );
Abc_Ntk_t * Abc_NtkFrames2(Abc_Ntk_t *pNtk, int nFrames, int fInitial, AddFrameMapping addFrameMapping, void *arg)
Abc_Ntk_t * Abc_NtkMiterQuantifyPis(Abc_Ntk_t *pNtk)
Abc_Obj_t * Abc_NtkSpecialMuxTree_rec(Abc_Ntk_t *pNew, Abc_Obj_t **pCtrl, int nCtrl, Abc_Obj_t **pData, int Shift)
Abc_Ntk_t * Abc_NtkMiterCofactor(Abc_Ntk_t *pNtk, Vec_Int_t *vPiValues)
Abc_Ntk_t * Abc_NtkMiterForCofactors(Abc_Ntk_t *pNtk, int Out, int In1, int In2)
void Abc_NtkMiterAddCone(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkMiter, Abc_Obj_t *pRoot)
Abc_Ntk_t * Abc_NtkMiterQuantify(Abc_Ntk_t *pNtk, int In, int fExist)
Vec_Ptr_t * Abc_NtkTryNewMiter(char *pFileName0, char *pFileName1)
Abc_Ntk_t * Abc_NtkMiterAnd(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fOr, int fCompl2)
Abc_Ntk_t * Abc_NtkFrames(Abc_Ntk_t *pNtk, int nFrames, int fInitial, int fVerbose)
int Abc_NtkDemiter(Abc_Ntk_t *pNtk)
int Abc_NtkMiterIsConstant(Abc_Ntk_t *pMiter)
Abc_Ntk_t * Abc_NtkSpecialMiter(Abc_Ntk_t *pNtk, Vec_Ptr_t *vNodes)
int Abc_NtkCombinePos(Abc_Ntk_t *pNtk, int fAnd, int fXor)
void(* AddFrameMapping)(Abc_Obj_t *, Abc_Obj_t *, int, void *)
void Abc_NtkMiterReport(Abc_Ntk_t *pMiter)
Vec_Ptr_t * Abc_NtkReadNodeNames(Abc_Ntk_t *pNtk, char *pFileName)
Abc_Ntk_t * Abc_NtkMiter(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fComb, int nPartSize, int fImplic, int fMulti)
FUNCTION DEFINITIONS ///.
struct Abc_Obj_t_ Abc_Obj_t
ABC_DLL void Abc_NtkCleanMarkA(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachCo(pNtk, pCo, i)
ABC_DLL Abc_Obj_t * Abc_NtkFindNode(Abc_Ntk_t *pNtk, char *pName)
ABC_DLL int Abc_NtkIsDfsOrdered(Abc_Ntk_t *pNtk)
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)
#define Abc_AigForEachAnd(pNtk, pNode, i)
#define Abc_NtkForEachPo(pNtk, pPo, i)
ABC_DLL Abc_Obj_t * Abc_NtkDupObj(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pObj, int fCopyName)
#define Abc_NtkForEachLatch(pNtk, pObj, i)
ABC_DLL Gia_Man_t * Abc_NtkClpGia(Abc_Ntk_t *pNtk)
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 ///.
#define Abc_ObjForEachFanin(pObj, pFanin, i)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeOr(Abc_Ntk_t *pNtk, Vec_Ptr_t *vFanins)
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 int Abc_AigCleanup(Abc_Aig_t *pMan)
ABC_DLL Abc_Obj_t * Abc_AigAnd(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeMux(Abc_Ntk_t *pNtk, Abc_Obj_t *pNodeC, Abc_Obj_t *pNode1, Abc_Obj_t *pNode0)
ABC_DLL Abc_Obj_t * Abc_AigOr(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
#define Abc_NtkForEachPi(pNtk, pPi, i)
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeExor(Abc_Ntk_t *pNtk, Vec_Ptr_t *vFanins)
#define Abc_NtkForEachCi(pNtk, pCi, i)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL Vec_Ptr_t * Abc_NtkDfsNodes(Abc_Ntk_t *pNtk, Abc_Obj_t **ppNodes, int nNodes)
ABC_DLL Abc_Obj_t * Abc_AigMiter(Abc_Aig_t *pMan, Vec_Ptr_t *vPairs, int fImplic)
ABC_DLL void Abc_NtkCleanCopy(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_NtkCompareSignals(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fOnlyPis, int fComb)
ABC_DLL Abc_Obj_t * Abc_NodeRecognizeMux(Abc_Obj_t *pNode, Abc_Obj_t **ppNodeT, Abc_Obj_t **ppNodeE)
ABC_DLL void Abc_NtkOrderCisCos(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_NodeIsExorType(Abc_Obj_t *pNode)
ABC_DLL Abc_Obj_t * Abc_NtkDupBox(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pBox, int fCopyName)
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
ABC_NAMESPACE_IMPL_START typedef char ProgressBar
void * Cnf_DataWriteIntoSolver2(Cnf_Dat_t *p, int nFrames, int fInit)
struct Cnf_Dat_t_ Cnf_Dat_t
void Cnf_DataFree(Cnf_Dat_t *p)
void Gia_ManStop(Gia_Man_t *p)
struct Gia_Man_t_ Gia_Man_t
void * Mf_ManGenerateCnf(Gia_Man_t *pGia, int nLutSize, int fCnfObjIds, int fAddOrCla, int fMapping, int fVerbose)
Abc_Ntk_t * Io_Read(char *pFileName, Io_FileType_t FileType, int fCheck, int fBarBufs)
void * Cnf_DataWriteIntoSolver(Cnf_Dat_t *p, int nFrames, int fInit)
void sat_solver_delete(sat_solver *s)
int * Sat_SolverGetModel(sat_solver *p, int *pVars, int nVars)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.