70static inline unsigned Gia_ObjHandle(
Gia_Obj_t * pObj ) {
return pObj->
Value; }
72static inline int Cof_ObjLevel(
Cof_Man_t *
p,
Cof_Obj_t * pObj ) {
return Gia_ObjLevel(
p->pGia, Gia_ManObj(
p->pGia,pObj->
Id)); }
74static inline unsigned Cof_ObjHandle(
Cof_Man_t *
p,
Cof_Obj_t * pObj ) {
return (
unsigned)(((
int *)pObj) -
p->pObjData); }
75static inline unsigned Cof_ObjHandleDiff(
Cof_Obj_t * pObj,
Cof_Obj_t * pFanin ) {
return (
unsigned)(((
int *)pObj) - ((
int *)pFanin)); }
77static inline int Cof_ObjIsTerm(
Cof_Obj_t * pObj ) {
return pObj->
fTerm; }
83static inline int Cof_ObjFaninNum(
Cof_Obj_t * pObj ) {
return pObj->
nFanins; }
91static inline int Cof_ManObjNum(
Cof_Man_t *
p ) {
return p->nObjs; }
92static inline int Cof_ManNodeNum(
Cof_Man_t *
p ) {
return p->nNodes; }
95static inline void Cof_ManIncrementTravId(
Cof_Man_t *
p ) {
p->nTravIds++; }
96static inline void Cof_ObjSetTravId(
Cof_Obj_t * pObj,
int TravId ) { pObj->
Value = TravId; }
100static inline int Cof_ObjIsTravIdPrevious(
Cof_Man_t *
p,
Cof_Obj_t * pObj ) {
return ((
int)pObj->
Value ==
p->nTravIds - 1); }
102#define Cof_ManForEachObj( p, pObj, i ) \
103 for ( i = 0; (i < p->nObjData) && (pObj = Cof_ManObj(p,i)); i += Cof_ObjSize(pObj) )
104#define Cof_ManForEachNode( p, pObj, i ) \
105 for ( i = 0; (i < p->nObjData) && (pObj = Cof_ManObj(p,i)); i += Cof_ObjSize(pObj) ) if ( Cof_ObjIsTerm(pObj) ) {} else
106#define Cof_ObjForEachFanin( pObj, pNext, i ) \
107 for ( i = 0; (i < (int)pObj->nFanins) && (pNext = Cof_ObjFanin(pObj,i)); i++ )
108#define Cof_ObjForEachFanout( pObj, pNext, i ) \
109 for ( i = 0; (i < (int)pObj->nFanouts) && (pNext = Cof_ObjFanout(pObj,i)); i++ )
135 p->vCis = Vec_IntAlloc( Gia_ManCiNum(pGia) );
136 p->vCos = Vec_IntAlloc( Gia_ManCoNum(pGia) );
137 p->nObjData = (
sizeof(
Cof_Obj_t) / 4) * Gia_ManObjNum(pGia) + 4 * Gia_ManAndNum(pGia) + 2 * Gia_ManCoNum(pGia);
143 pObj->
Value = iHandle;
144 pObjLog = Cof_ManObj(
p, iHandle );
146 pObjLog->
nFanouts = Gia_ObjRefNum( pGia, pObj );
149 if ( Gia_ObjIsAnd(pObj) )
151 pFanLog = Cof_ManObj(
p, Gia_ObjHandle(Gia_ObjFanin0(pObj)) );
153 pObjLog->
Fanios[pObjLog->
nFanins].iFan = Cof_ObjHandleDiff( pObjLog, pFanLog );
154 pObjLog->
Fanios[pObjLog->
nFanins++].fCompl = Gia_ObjFaninC0(pObj);
156 pFanLog = Cof_ManObj(
p, Gia_ObjHandle(Gia_ObjFanin1(pObj)) );
158 pObjLog->
Fanios[pObjLog->
nFanins].iFan = Cof_ObjHandleDiff( pObjLog, pFanLog );
159 pObjLog->
Fanios[pObjLog->
nFanins++].fCompl = Gia_ObjFaninC1(pObj);
162 else if ( Gia_ObjIsCo(pObj) )
164 pFanLog = Cof_ManObj(
p, Gia_ObjHandle(Gia_ObjFanin0(pObj)) );
166 pObjLog->
Fanios[pObjLog->
nFanins].iFan = Cof_ObjHandleDiff( pObjLog, pFanLog );
167 pObjLog->
Fanios[pObjLog->
nFanins++].fCompl = Gia_ObjFaninC0(pObj);
170 Vec_IntPush(
p->vCos, iHandle );
172 else if ( Gia_ObjIsCi(pObj) )
175 Vec_IntPush(
p->vCis, iHandle );
177 iHandle += Cof_ObjSize( pObjLog );
180 assert( iHandle ==
p->nObjData );
184 pObjLog = Cof_ManObj(
p, Gia_ObjHandle(pObj) );
205 Vec_IntFree(
p->vCis );
206 Vec_IntFree(
p->vCos );
227 unsigned i, Counter = 0;
228 if ( Cof_ObjIsTravIdCurrent(
p, pObj) )
230 Cof_ObjSetTravIdCurrent(
p, pObj);
231 if ( Cof_ObjIsCo(pObj) )
233 assert( Cof_ObjIsCi(pObj) || Cof_ObjIsNode(pObj) );
253 Cof_ManIncrementTravId(
p );
254 for ( i = 0; i < nObjs; i++ )
273 unsigned i, Counter = 0;
274 if ( Cof_ObjIsTravIdCurrent(
p, pObj) )
276 Cof_ObjSetTravIdCurrent(
p, pObj);
277 if ( Cof_ObjIsCi(pObj) )
279 assert( Cof_ObjIsNode(pObj) );
299 Cof_ManIncrementTravId(
p );
300 for ( i = 0; i < nObjs; i++ )
301 if ( Cof_ObjIsCo(ppObjs[i]) )
322 unsigned i, Counter = 0;
323 if ( Cof_ObjIsTravIdCurrent(
p, pObj) )
325 Cof_ObjSetTravIdCurrent(
p, pObj);
326 if ( Cof_ObjIsCi(pObj) )
328 assert( Cof_ObjIsNode(pObj) );
348 Cof_ManIncrementTravId(
p );
349 for ( i = 0; i < nObjs; i++ )
350 if ( Cof_ObjIsCo(ppObjs[i]) )
391 if ( Vec_PtrSize(vNodes) == 0 )
393 Vec_PtrPush(vNodes, pNode);
397 if ( Cof_ObjFanoutNum(pLast) < Cof_ObjFanoutNum(pNode) )
400 if ( Vec_PtrSize(vNodes) < nNodeMax )
401 Vec_PtrPush( vNodes, pLast );
405 Vec_PtrPush( vNodes, pLast );
406 if ( Vec_PtrSize(vNodes) < nNodeMax )
407 Vec_PtrPush( vNodes, pNode );
427 vNodes = Vec_PtrAlloc( nNodes );
429 if ( Cof_ObjIsCi(pObj) || Cof_ObjIsNode(pObj) )
448 Cof_Obj_t * pTemp, * pNext, * pFanin0, * pFanin1;
449 int Counter = 0, LevelStart, LevelNext;
450 int i, k, iHandle, iLit0, iLit1, iNextNew;
452 Cof_ManIncrementTravId(
p );
453 Cof_ObjSetTravIdCurrent(
p, pRoot );
455 LevelStart = Cof_ObjLevel(
p, pRoot);
456 assert(
p->pLevels[LevelStart] == 0 );
458 p->pLevels[LevelStart] = Cof_ObjHandle(
p, pRoot );
460 pRoot->
iLit = Abc_Var2Lit( 0, fConst1 );
462 for ( i = LevelStart; i <
p->nLevels; i++ )
464 for ( iHandle =
p->pLevels[i];
465 iHandle && (pTemp = Cof_ManObj(
p, iHandle));
466 iHandle = pTemp->
iNext )
471 if ( Cof_ObjIsCo(pNext) )
473 if ( Cof_ObjIsTravIdCurrent(
p, pNext) )
475 pFanin0 = Cof_ObjFanin( pNext, 0 );
476 pFanin1 = Cof_ObjFanin( pNext, 1 );
477 assert( pFanin0 == pTemp || pFanin1 == pTemp );
478 pNextGia = Gia_ManObj(
p->pGia, pNext->
Id );
479 if ( Cof_ObjIsTravIdCurrent(
p, pFanin0) )
480 iLit0 = Abc_LitNotCond( pFanin0->
iLit, Gia_ObjFaninC0(pNextGia) );
482 iLit0 = Gia_ObjFaninLit0( pNextGia, pNext->
Id );
483 if ( Cof_ObjIsTravIdCurrent(
p, pFanin1) )
484 iLit1 = Abc_LitNotCond( pFanin1->
iLit, Gia_ObjFaninC1(pNextGia) );
486 iLit1 = Gia_ObjFaninLit1( pNextGia, pNext->
Id );
488 if ( iNextNew == -1 )
490 Cof_ObjSetTravIdCurrent(
p, pNext);
492 pNext->
iLit = iNextNew;
494 LevelNext = Cof_ObjLevel(
p, pNext );
495 assert( LevelNext > i && LevelNext < p->nLevels );
496 pNext->
iNext =
p->pLevels[LevelNext];
497 p->pLevels[LevelNext] = Cof_ObjHandle(
p, pNext );
519 printf(
"%7d : ", pObj->
Id );
520 printf(
"i/o/c =%2d %5d %5d ", Cof_ObjFaninNum(pObj), Cof_ObjFanoutNum(pObj), 2*pObj->
nFanoutsM );
521 printf(
"l =%4d ", Cof_ObjLevel(
p, pObj) );
549 Vec_PtrFree( vNodes );
582static inline int Cof_ObjMffcSize(
Cof_Obj_t * pNode )
584 int Count1, Count2, nFanout;
590 assert( Count1 == Count2 );
609 Vec_Int_t * vFanins, * vFanouts, * vMffcs;
610 int nFanins, nFanouts, nMffcs, nFaninsMax, nFanoutsMax, nMffcsMax, nFaninsAll, nFanoutsAll, nMffcsAll;
611 int i, k, nSizeMax, nMffcNodes = 0;
614 nFaninsMax = nFanoutsMax = nMffcsMax = 0;
615 nFaninsAll = nFanoutsAll = nMffcsAll = 0;
618 if ( i == 0 )
continue;
619 nFanins = Cof_ObjFaninNum(pNode);
620 nFanouts = Cof_ObjFanoutNum(pNode);
621 nMffcs = pNode->
nFanouts > 1 ? Cof_ObjMffcSize(pNode) : 0;
622 nFaninsAll += nFanins;
623 nFanoutsAll += nFanouts;
625 nFaninsMax = Abc_MaxInt( nFaninsMax, nFanins );
626 nFanoutsMax = Abc_MaxInt( nFanoutsMax, nFanouts );
627 nMffcsMax = Abc_MaxInt( nMffcsMax, nMffcs );
631 nSizeMax = Abc_MaxInt( 10 * (Abc_Base10Log(nFaninsMax) + 1), 10 * (Abc_Base10Log(nFanoutsMax) + 1) );
632 nSizeMax = Abc_MaxInt( 10 * (Abc_Base10Log(nMffcsMax) + 1), nSizeMax );
633 vFanins = Vec_IntStart( nSizeMax );
634 vFanouts = Vec_IntStart( nSizeMax );
635 vMffcs = Vec_IntStart( nSizeMax );
640 if ( i == 0 )
continue;
641 nFanins = Cof_ObjFaninNum(pNode);
642 nFanouts = Cof_ObjFanoutNum(pNode);
643 nMffcs = pNode->
nFanouts > 1 ? Cof_ObjMffcSize(pNode) : 0;
646 Vec_IntAddToEntry( vFanins, nFanins, 1 );
647 else if ( nFanins < 100 )
648 Vec_IntAddToEntry( vFanins, 10 + nFanins/10, 1 );
649 else if ( nFanins < 1000 )
650 Vec_IntAddToEntry( vFanins, 20 + nFanins/100, 1 );
651 else if ( nFanins < 10000 )
652 Vec_IntAddToEntry( vFanins, 30 + nFanins/1000, 1 );
653 else if ( nFanins < 100000 )
654 Vec_IntAddToEntry( vFanins, 40 + nFanins/10000, 1 );
655 else if ( nFanins < 1000000 )
656 Vec_IntAddToEntry( vFanins, 50 + nFanins/100000, 1 );
657 else if ( nFanins < 10000000 )
658 Vec_IntAddToEntry( vFanins, 60 + nFanins/1000000, 1 );
661 Vec_IntAddToEntry( vFanouts, nFanouts, 1 );
662 else if ( nFanouts < 100 )
663 Vec_IntAddToEntry( vFanouts, 10 + nFanouts/10, 1 );
664 else if ( nFanouts < 1000 )
665 Vec_IntAddToEntry( vFanouts, 20 + nFanouts/100, 1 );
666 else if ( nFanouts < 10000 )
667 Vec_IntAddToEntry( vFanouts, 30 + nFanouts/1000, 1 );
668 else if ( nFanouts < 100000 )
669 Vec_IntAddToEntry( vFanouts, 40 + nFanouts/10000, 1 );
670 else if ( nFanouts < 1000000 )
671 Vec_IntAddToEntry( vFanouts, 50 + nFanouts/100000, 1 );
672 else if ( nFanouts < 10000000 )
673 Vec_IntAddToEntry( vFanouts, 60 + nFanouts/1000000, 1 );
680 Vec_IntAddToEntry( vMffcs, nMffcs, 1 );
681 else if ( nMffcs < 100 )
682 Vec_IntAddToEntry( vMffcs, 10 + nMffcs/10, 1 );
683 else if ( nMffcs < 1000 )
684 Vec_IntAddToEntry( vMffcs, 20 + nMffcs/100, 1 );
685 else if ( nMffcs < 10000 )
686 Vec_IntAddToEntry( vMffcs, 30 + nMffcs/1000, 1 );
687 else if ( nMffcs < 100000 )
688 Vec_IntAddToEntry( vMffcs, 40 + nMffcs/10000, 1 );
689 else if ( nMffcs < 1000000 )
690 Vec_IntAddToEntry( vMffcs, 50 + nMffcs/100000, 1 );
691 else if ( nMffcs < 10000000 )
692 Vec_IntAddToEntry( vMffcs, 60 + nMffcs/1000000, 1 );
695 printf(
"The distribution of fanins, fanouts. and MFFCs in the network:\n" );
696 printf(
" Number Nodes with fanin Nodes with fanout Nodes with MFFC\n" );
698 for ( k = 0; k < nSizeMax; k++ )
700 if ( vFanins->pArray[k] == 0 && vFanouts->pArray[k] == 0 && vMffcs->pArray[k] == 0 )
703 printf(
"%15d : ", k );
706 sprintf( Buffer,
"%d - %d", (
int)pow((
double)10, k/10) * (k%10), (
int)pow((
double)10, k/10) * (k%10+1) - 1 );
707 printf(
"%15s : ", Buffer );
709 if ( vFanins->pArray[k] == 0 )
712 printf(
"%11d ", vFanins->pArray[k] );
714 if ( vFanouts->pArray[k] == 0 )
717 printf(
"%12d ", vFanouts->pArray[k] );
719 if ( vMffcs->pArray[k] == 0 )
722 printf(
" %12d ", vMffcs->pArray[k] );
725 Vec_IntFree( vFanins );
726 Vec_IntFree( vFanouts );
727 Vec_IntFree( vMffcs );
729 printf(
"Fanins: Max = %d. Ave = %.2f. Fanouts: Max = %d. Ave = %.2f. MFFCs: Max = %d. Ave = %.2f.\n",
730 nFaninsMax, 1.0*nFaninsAll /Cof_ManNodeNum(
p),
731 nFanoutsMax, 1.0*nFanoutsAll/Cof_ManNodeNum(
p),
732 nMffcsMax, 1.0*nMffcsAll /nMffcNodes );
757 Cof_ManResetTravId(
p );
761ABC_PRMn(
"Memory for logic network", 4*
p->nObjData );
762ABC_PRT(
"Time", Abc_Clock() - clk );
785 if ( !(iVar > 0 && iVar < Gia_ManObjNum(
p)) )
787 printf(
"Gia_ManDupCof(): Variable %d is out of range (%d; %d).\n", iVar, 0, Gia_ManObjNum(
p) );
791 pPivot = Gia_ManObj(
p, iVar );
792 if ( !Gia_ObjIsCand(pPivot) )
794 printf(
"Gia_ManDupCof(): Variable %d should be a CI or an AND node.\n", iVar );
798 pNew->
pName = Abc_UtilStrsav(
p->pName );
799 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
802 Gia_ManConst0(
p)->Value = 0;
806 pObj->
Value = Gia_ManAppendCi(pNew);
807 if ( pObj == pPivot )
809 iCofVar = pObj->
Value;
810 pObj->
Value = Abc_Var2Lit( 0, 0 );
816 if ( pObj == pPivot )
818 iCofVar = pObj->
Value;
819 pObj->
Value = Abc_Var2Lit( 0, 0 );
823 pObj->
Value = Gia_ObjFanin0Copy(pObj);
827 pObj->
Value = Abc_Var2Lit( Gia_ObjId(pNew, Gia_ManCi(pNew, i)), 0 );
828 if ( pObj == pPivot )
829 pObj->
Value = Abc_Var2Lit( 0, 1 );
834 if ( pObj == pPivot )
835 pObj->
Value = Abc_Var2Lit( 0, 1 );
841 if ( pObj->
Value == (
unsigned)Gia_ObjFanin0Copy(pObj) )
842 pObj->
Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
890 vVars = Vec_IntAlloc( 100 );
892 if ( Gia_ObjIsCand(pObj) && Gia_ObjRefNum(
p, pObj) >= nFanLim )
893 Vec_IntPush( vVars, i );
914 vSigsNew = Vec_IntAlloc( 100 );
917 assert( Gia_ObjIsCand(pObj) );
918 pObjF = Gia_ManObj( pCof, Abc_Lit2Var(pObj->
Value) );
920 Vec_IntPushUnique( vSigsNew, Abc_Lit2Var(pObjF->
Value) );
943 printf(
"Cofactoring %d signals.\n", Vec_IntSize(vSigs) );
946 if ( Vec_IntSize( vSigs ) > 200 )
948 printf(
"Too many signals to cofactor.\n" );
952 vSigsNew = Vec_IntDup( vSigs );
953 while ( Vec_IntSize(vSigsNew) > 0 )
955 Vec_IntSort( vSigsNew, 0 );
956 iVar = Vec_IntPop( vSigsNew );
963 Vec_IntFree( vTemp );
968 printf(
"Cofactored variable %d.\n", iVar );
972 Vec_IntFree( vSigsNew );
992 Vec_IntFree( vSigs );
1011 assert( Gia_ManPoNum(
p) == 1 );
1012 assert( iIn >= 0 && iIn < Gia_ManPiNum(
p) );
1014 pNew->
pName = Abc_UtilStrsav(
p->pName );
1015 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
1018 Gia_ManConst0(
p)->Value = 0;
1020 pObj->
Value = Gia_ManAppendCi(pNew);
1021 for ( i = 0; i < Gia_ManPiNum(
p); i++ )
if ( i != iIn )
1022 for ( j = i+1; j < Gia_ManPiNum(
p); j++ )
if ( j != iIn )
1025 int iLit0 = Gia_ManPi(
p, iIn)->Value;
1026 int iLit1 = Gia_ManPi(
p, i)->Value;
1027 int iLit2 = Gia_ManPi(
p, j)->Value;
1028 for ( k = 0; k < 8; k++ )
1030 Gia_ManPi(
p, iIn)->Value = k & 1;
1031 Gia_ManPi(
p, i)->Value = (k >> 1) & 1;
1032 Gia_ManPi(
p, j)->Value = (k >> 2) & 1;
1035 pRes[k] = Gia_ObjFanin0Copy(Gia_ManPo(
p, 0));
1037 Gia_ManPi(
p, iIn)->Value = iLit0;
1038 Gia_ManPi(
p, i)->Value = iLit1;
1039 Gia_ManPi(
p, j)->Value = iLit2;
1040 for ( k = 0; k < 4; k++ )
1045 Gia_ManAppendCo( pNew, j );
1046 Vec_IntFree( vRes );
1057 printf(
"%4c : ",
' ' );
1058 for ( j = 0; j < Gia_ManPiNum(
p); j++ )
1061 for ( i = 0; i < Gia_ManPiNum(
p); i++, printf(
"\n"), fFirst = 1 )
1062 for ( j = 0; j < Gia_ManPiNum(
p); j++ )
1065 printf(
"%4d : ", i ), fFirst = 0;
1069 printf(
"%4c",
' ' );
1073 if ( Gia_ObjFaninLit0p(pSweep, Gia_ManPo(pSweep, Count++)) == 0 )
1074 printf(
"%4c",
'.' );
1076 printf(
"%4c",
'+' );
1079 printf(
"%4c",
' ' );
1082 assert( Count == Gia_ManPoNum(pSweep) );
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Vec_Int_t * Gia_ManTransfer(Gia_Man_t *pAig, Gia_Man_t *pCof, Gia_Man_t *pNew, Vec_Int_t *vSigs)
Gia_Man_t * Gia_ManDupCof(Gia_Man_t *p, int iVar)
void Cof_ManInsertEntry_rec(Vec_Ptr_t *vNodes, Cof_Obj_t *pNode, int nNodeMax)
int Cof_ManSuppSize(Cof_Man_t *p, Cof_Obj_t **ppObjs, int nObjs)
void Gia_ManPrintFanio(Gia_Man_t *pGia, int nNodes)
int Cof_ManTfiSize(Cof_Man_t *p, Cof_Obj_t **ppObjs, int nObjs)
Vec_Int_t * Gia_ManCofVars(Gia_Man_t *p, int nFanLim)
struct Cof_Man_t_ Cof_Man_t
Gia_Man_t * Gia_ManDupCofInt(Gia_Man_t *p, int iVar)
void Cof_ManPrintHighFanout(Cof_Man_t *p, int nNodes)
int Cof_ManCountRemoved(Cof_Man_t *p, Cof_Obj_t *pRoot, int fConst1)
void Cof_ManStop(Cof_Man_t *p)
int Cof_NodeDeref_rec(Cof_Obj_t *pNode)
struct Cof_Obj_t_ Cof_Obj_t
void Cof_ManPrintFanio(Cof_Man_t *p)
void Cof_ManCleanValue(Cof_Man_t *p)
Gia_Man_t * Gia_ManDupCofAllInt(Gia_Man_t *p, Vec_Int_t *vSigs, int fVerbose)
int Cof_ManTfoSize(Cof_Man_t *p, Cof_Obj_t **ppObjs, int nObjs)
Gia_Man_t * Gia_ManDsdMatrix(Gia_Man_t *p, int iIn)
void Cof_ManPrintHighFanoutOne(Cof_Man_t *p, Cof_Obj_t *pObj)
#define Cof_ObjForEachFanout(pObj, pNext, i)
int Cof_NodeRef_rec(Cof_Obj_t *pNode)
typedefABC_NAMESPACE_IMPL_START struct Cof_Fan_t_ Cof_Fan_t
DECLARATIONS ///.
void Gia_ManPrintDsdMatrix(Gia_Man_t *p, int iIn)
#define Cof_ManForEachNode(p, pObj, i)
Gia_Man_t * Gia_ManDupCofAll(Gia_Man_t *p, int nFanLim, int fVerbose)
int Cof_ManTfoSize_rec(Cof_Man_t *p, Cof_Obj_t *pObj)
#define Cof_ObjForEachFanin(pObj, pNext, i)
Cof_Man_t * Cof_ManCreateLogicSimple(Gia_Man_t *pGia)
FUNCTION DEFINITIONS ///.
int Cof_ManTfiSize_rec(Cof_Man_t *p, Cof_Obj_t *pObj)
#define Cof_ManForEachObj(p, pObj, i)
int Cof_ManSuppSize_rec(Cof_Man_t *p, Cof_Obj_t *pObj)
Vec_Ptr_t * Cof_ManCollectHighFanout(Cof_Man_t *p, int nNodes)
void Gia_ManStop(Gia_Man_t *p)
Gia_Man_t * Gia_ManDup(Gia_Man_t *p)
int * Gia_ManCreateMuxRefs(Gia_Man_t *p)
void Gia_ManHashStart(Gia_Man_t *p)
#define Gia_ManForEachAnd(p, pObj, i)
void Gia_ManSetRegNum(Gia_Man_t *p, int nRegs)
void Gia_ManHashAlloc(Gia_Man_t *p)
Gia_Man_t * Gia_ManStart(int nObjsMax)
FUNCTION DEFINITIONS ///.
struct Gia_Obj_t_ Gia_Obj_t
int Gia_ManHashXor(Gia_Man_t *p, int iLit0, int iLit1)
void Gia_ManFillValue(Gia_Man_t *p)
struct Gia_Man_t_ Gia_Man_t
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
int Gia_ManHashMux(Gia_Man_t *p, int iCtrl, int iData1, int iData0)
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
void Gia_ManCreateRefs(Gia_Man_t *p)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
int Gia_ManHashAndTry(Gia_Man_t *p, int iLit0, int iLit1)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
#define Gia_ManForEachCo(p, pObj, i)
#define Gia_ManForEachCi(p, pObj, i)
void Gia_ManHashStop(Gia_Man_t *p)
void Gia_ManPrintStats(Gia_Man_t *p, Gps_Par_t *pPars)
int Gia_ManLevelNum(Gia_Man_t *p)
#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 ///.
Gia_Man_t * Cec4_ManSimulateTest3(Gia_Man_t *p, int nBTLimit, int fVerbose)