diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2010-11-01 01:35:04 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2010-11-01 01:35:04 -0700 |
commit | 6130e39b18b5f53902e4eab14f6d5cdde5219563 (patch) | |
tree | 0db0628479a1b750e9af1f66cb8379ebd0913d31 /src/aig/cgt/cgtAig.c | |
parent | f0e77f6797c0504b0da25a56152b707d3357f386 (diff) | |
download | abc-6130e39b18b5f53902e4eab14f6d5cdde5219563.tar.gz abc-6130e39b18b5f53902e4eab14f6d5cdde5219563.tar.bz2 abc-6130e39b18b5f53902e4eab14f6d5cdde5219563.zip |
initial commit of public abc
Diffstat (limited to 'src/aig/cgt/cgtAig.c')
-rw-r--r-- | src/aig/cgt/cgtAig.c | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/src/aig/cgt/cgtAig.c b/src/aig/cgt/cgtAig.c index d411c25a..463c3060 100644 --- a/src/aig/cgt/cgtAig.c +++ b/src/aig/cgt/cgtAig.c @@ -20,6 +20,9 @@ #include "cgtInt.h" +ABC_NAMESPACE_IMPL_START + + //////////////////////////////////////////////////////////////////////// /// DECLARATIONS /// //////////////////////////////////////////////////////////////////////// @@ -119,7 +122,7 @@ void Cgt_ManDetectFanout( Aig_Man_t * pAig, Aig_Obj_t * pObj, int nOdcMax, Vec_P Cgt_ManDetectFanout_rec( pAig, pObj, nOdcMax, vFanout ); // remove those nodes whose fanout is included k = 0; - Vec_PtrForEachEntry( vFanout, pObj, i ) + Vec_PtrForEachEntry( Aig_Obj_t *, vFanout, pObj, i ) { // go through the fanouts of this node Aig_ObjForEachFanout( pAig, pObj, pFanout, iFanout, f ) @@ -130,7 +133,7 @@ void Cgt_ManDetectFanout( Aig_Man_t * pAig, Aig_Obj_t * pObj, int nOdcMax, Vec_P Vec_PtrWriteEntry( vFanout, k++, pObj ); } Vec_PtrShrink( vFanout, k ); - Vec_PtrSort( vFanout, Aig_ObjCompareIdIncrease ); + Vec_PtrSort( vFanout, (int (*)(void))Aig_ObjCompareIdIncrease ); assert( Vec_PtrSize(vFanout) > 0 ); } @@ -175,7 +178,7 @@ void Cgt_ManCollectVisited( Aig_Man_t * pAig, Vec_Ptr_t * vFanout, Vec_Ptr_t * v int i; Vec_PtrClear( vVisited ); Aig_ManIncrementTravId( pAig ); - Vec_PtrForEachEntry( vFanout, pObj, i ) + Vec_PtrForEachEntry( Aig_Obj_t *, vFanout, pObj, i ) Cgt_ManCollectVisited_rec( pAig, pObj, vVisited ); } @@ -215,7 +218,7 @@ Aig_Obj_t * Cgt_ManConstructCareCondition( Cgt_Man_t * p, Aig_Man_t * pNew, Aig_ Cgt_ManDetectFanout( p->pAig, pObjLo, p->pPars->nOdcMax, p->vFanout ); Cgt_ManCollectVisited( p->pAig, p->vFanout, p->vVisited ); // add new variables if the observability condition depends on PI variables - Vec_PtrForEachEntry( p->vVisited, pObj, i ) + Vec_PtrForEachEntry( Aig_Obj_t *, p->vVisited, pObj, i ) { assert( Aig_ObjIsNode(pObj) ); if ( Saig_ObjIsPi(p->pAig, Aig_ObjFanin0(pObj)) && Vec_PtrEntry(vCopy0, Aig_ObjFaninId0(pObj)) == NULL ) @@ -232,7 +235,7 @@ Aig_Obj_t * Cgt_ManConstructCareCondition( Cgt_Man_t * p, Aig_Man_t * pNew, Aig_ } } // construct AIGs for the nodes - Vec_PtrForEachEntry( p->vVisited, pObj, i ) + Vec_PtrForEachEntry( Aig_Obj_t *, p->vVisited, pObj, i ) { pTemp = Aig_And( pNew, Aig_ObjChild0CopyVec(vCopy0, pObj), Aig_ObjChild1CopyVec(vCopy0, pObj) ); Vec_PtrWriteEntry( vCopy0, Aig_ObjId(pObj), pTemp ); @@ -241,9 +244,9 @@ Aig_Obj_t * Cgt_ManConstructCareCondition( Cgt_Man_t * p, Aig_Man_t * pNew, Aig_ } // construct the care miter pMiter = Aig_ManConst0( pNew ); - Vec_PtrForEachEntry( p->vFanout, pObj, i ) + Vec_PtrForEachEntry( Aig_Obj_t *, p->vFanout, pObj, i ) { - pTemp = Aig_Exor( pNew, Vec_PtrEntry(vCopy0, Aig_ObjId(pObj)), Vec_PtrEntry(vCopy1, Aig_ObjId(pObj)) ); + pTemp = Aig_Exor( pNew, (Aig_Obj_t *)Vec_PtrEntry(vCopy0, Aig_ObjId(pObj)), (Aig_Obj_t *)Vec_PtrEntry(vCopy1, Aig_ObjId(pObj)) ); pMiter = Aig_Or( pNew, pMiter, pTemp ); } return pMiter; @@ -300,7 +303,7 @@ Aig_Man_t * Cgt_ManDeriveAigForGating( Cgt_Man_t * p ) Vec_PtrWriteEntry( vCopy0, Aig_ObjId(pObjLo), Aig_ObjChild0Copy(pObjLi) ); Vec_PtrWriteEntry( vCopy1, Aig_ObjId(pObjLo), Aig_ObjChild0Copy(pObjLi) ); // compute the miter - pMiter = Aig_Exor( pNew, pObjLo->pData, Aig_ObjChild0Copy(pObjLi) ); + pMiter = Aig_Exor( pNew, (Aig_Obj_t *)pObjLo->pData, Aig_ObjChild0Copy(pObjLi) ); pMiter = Aig_And( pNew, pMiter, pCare ); pObjLi->pData = Aig_ObjCreatePo( pNew, pMiter ); } @@ -312,7 +315,7 @@ Aig_Man_t * Cgt_ManDeriveAigForGating( Cgt_Man_t * p ) // construct clock-gating miters for each register input Saig_ManForEachLiLo( p->pAig, pObjLi, pObjLo, i ) { - pMiter = Aig_Exor( pNew, pObjLo->pData, Aig_ObjChild0Copy(pObjLi) ); + pMiter = Aig_Exor( pNew, (Aig_Obj_t *)pObjLo->pData, Aig_ObjChild0Copy(pObjLi) ); pObjLi->pData = Aig_ObjCreatePo( pNew, pMiter ); } } @@ -336,19 +339,19 @@ Aig_Obj_t * Cgt_ManConstructCare_rec( Aig_Man_t * pCare, Aig_Obj_t * pObj, Aig_M { Aig_Obj_t * pObj0, * pObj1; if ( Aig_ObjIsTravIdCurrent( pCare, pObj ) ) - return pObj->pData; + return (Aig_Obj_t *)pObj->pData; Aig_ObjSetTravIdCurrent( pCare, pObj ); if ( Aig_ObjIsPi(pObj) ) - return pObj->pData = NULL; + return (Aig_Obj_t *)(pObj->pData = NULL); pObj0 = Cgt_ManConstructCare_rec( pCare, Aig_ObjFanin0(pObj), pNew ); if ( pObj0 == NULL ) - return pObj->pData = NULL; + return (Aig_Obj_t *)(pObj->pData = NULL); pObj1 = Cgt_ManConstructCare_rec( pCare, Aig_ObjFanin1(pObj), pNew ); if ( pObj1 == NULL ) - return pObj->pData = NULL; + return (Aig_Obj_t *)(pObj->pData = NULL); pObj0 = Aig_NotCond( pObj0, Aig_ObjFaninC0(pObj) ); pObj1 = Aig_NotCond( pObj1, Aig_ObjFaninC1(pObj) ); - return pObj->pData = Aig_And( pNew, pObj0, pObj1 ); + return (Aig_Obj_t *)(pObj->pData = Aig_And( pNew, pObj0, pObj1 )); } /**Function************************************************************* @@ -370,16 +373,16 @@ void Cgt_ManConstructCare( Aig_Man_t * pNew, Aig_Man_t * pCare, Vec_Vec_t * vSup // go through the PIs of the partition // label the corresponding PIs of the care set Aig_ManIncrementTravId( pCare ); - Vec_PtrForEachEntry( vLeaves, pLeaf, i ) + Vec_PtrForEachEntry( Aig_Obj_t *, vLeaves, pLeaf, i ) { pPi = Aig_ManPi( pCare, Aig_ObjPioNum(pLeaf) ); Aig_ObjSetTravIdCurrent( pCare, pPi ); pPi->pData = pLeaf->pData; } // construct the constraints - Vec_PtrForEachEntry( vLeaves, pLeaf, i ) + Vec_PtrForEachEntry( Aig_Obj_t *, vLeaves, pLeaf, i ) { - vOuts = Vec_VecEntry( vSuppsInv, Aig_ObjPioNum(pLeaf) ); + vOuts = (Vec_Int_t *)Vec_VecEntry( vSuppsInv, Aig_ObjPioNum(pLeaf) ); Vec_IntForEachEntry( vOuts, iOut, k ) { pPo = Aig_ManPo( pCare, iOut ); @@ -411,17 +414,17 @@ void Cgt_ManConstructCare( Aig_Man_t * pNew, Aig_Man_t * pCare, Vec_Vec_t * vSup Aig_Obj_t * Cgt_ManDupPartition_rec( Aig_Man_t * pNew, Aig_Man_t * pAig, Aig_Obj_t * pObj, Vec_Ptr_t * vLeaves ) { if ( Aig_ObjIsTravIdCurrent(pAig, pObj) ) - return pObj->pData; + return (Aig_Obj_t *)pObj->pData; Aig_ObjSetTravIdCurrent(pAig, pObj); if ( Aig_ObjIsPi(pObj) ) { pObj->pData = Aig_ObjCreatePi( pNew ); Vec_PtrPush( vLeaves, pObj ); - return pObj->pData; + return (Aig_Obj_t *)pObj->pData; } Cgt_ManDupPartition_rec( pNew, pAig, Aig_ObjFanin0(pObj), vLeaves ); Cgt_ManDupPartition_rec( pNew, pAig, Aig_ObjFanin1(pObj), vLeaves ); - return pObj->pData = Aig_And( pNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) ); + return (Aig_Obj_t *)(pObj->pData = Aig_And( pNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) )); } /**Function************************************************************* @@ -469,8 +472,8 @@ Aig_Man_t * Cgt_ManDupPartition( Aig_Man_t * pFrame, int nVarsMin, int nFlopsMin if ( pCare ) Cgt_ManConstructCare( pNew, pCare, vSuppsInv, vLeaves ); // create POs - Vec_PtrForEachEntry( vPos, pObj, i ) - pObj->pData = Aig_ObjCreatePo( pNew, Vec_PtrEntry(vRoots, i) ); + Vec_PtrForEachEntry( Aig_Obj_t *, vPos, pObj, i ) + pObj->pData = (Aig_Obj_t *)Aig_ObjCreatePo( pNew, (Aig_Obj_t *)Vec_PtrEntry(vRoots, i) ); if ( pnOutputs != NULL ) *pnOutputs = Vec_PtrSize( vPos ); Vec_PtrFree( vRoots ); @@ -496,12 +499,12 @@ Aig_Obj_t * Cgt_ManBuildClockGate( Aig_Man_t * pNew, Vec_Ptr_t * vGates ) int i; assert( Vec_PtrSize(vGates) > 0 ); pTotal = Aig_ManConst0(pNew); - Vec_PtrForEachEntry( vGates, pGate, i ) + Vec_PtrForEachEntry( Aig_Obj_t *, vGates, pGate, i ) { if ( Aig_Regular(pGate)->pNext ) pGate = Aig_NotCond( Aig_Regular(pGate)->pNext, Aig_IsComplement(pGate) ); else - pGate = Aig_NotCond( Aig_Regular(pGate)->pData, Aig_IsComplement(pGate) ); + pGate = Aig_NotCond( (Aig_Obj_t *)Aig_Regular(pGate)->pData, Aig_IsComplement(pGate) ); pTotal = Aig_Or( pNew, pTotal, pGate ); } return pTotal; @@ -526,7 +529,7 @@ Aig_Man_t * Cgt_ManDeriveGatedAig( Aig_Man_t * pAig, Vec_Vec_t * vGates, int fRe int i, k; Aig_ManCleanNext( pAig ); // label nodes - Vec_VecForEachEntry( vGates, pObj, i, k ) + Vec_VecForEachEntry( Aig_Obj_t *, vGates, pObj, i, k ) { if ( Aig_IsComplement(pObj) ) Aig_Regular(pObj)->fMarkB = 1; @@ -549,12 +552,12 @@ Aig_Man_t * Cgt_ManDeriveGatedAig( Aig_Man_t * pAig, Vec_Vec_t * vGates, int fRe pObj->pData = Aig_And( pNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) ); if ( pObj->fMarkA ) { - pObj->pNext = pObj->pData; + pObj->pNext = (Aig_Obj_t *)pObj->pData; pObj->pData = Aig_ManConst0(pNew); } else if ( pObj->fMarkB ) { - pObj->pNext = pObj->pData; + pObj->pNext = (Aig_Obj_t *)pObj->pData; pObj->pData = Aig_ManConst1(pNew); } } @@ -570,14 +573,14 @@ Aig_Man_t * Cgt_ManDeriveGatedAig( Aig_Man_t * pAig, Vec_Vec_t * vGates, int fRe pObj->pData = Aig_ObjCreatePo( pNew, Aig_ObjChild0Copy(pObj) ); Saig_ManForEachLiLo( pAig, pObjLi, pObjLo, i ) { - vOne = Vec_VecEntry( vGates, i ); + vOne = (Vec_Ptr_t *)Vec_VecEntry( vGates, i ); if ( Vec_PtrSize(vOne) == 0 ) pObjNew = Aig_ObjChild0Copy(pObjLi); else { // pGateNew = Aig_NotCond( Aig_Regular(pGate)->pData, Aig_IsComplement(pGate) ); pGateNew = Cgt_ManBuildClockGate( pNew, vOne ); - pObjNew = Aig_Mux( pNew, pGateNew, pObjLo->pData, Aig_ObjChild0Copy(pObjLi) ); + pObjNew = Aig_Mux( pNew, pGateNew, (Aig_Obj_t *)pObjLo->pData, Aig_ObjChild0Copy(pObjLi) ); } pObjLi->pData = Aig_ObjCreatePo( pNew, pObjNew ); } @@ -594,3 +597,5 @@ Aig_Man_t * Cgt_ManDeriveGatedAig( Aig_Man_t * pAig, Vec_Vec_t * vGates, int fRe //////////////////////////////////////////////////////////////////////// +ABC_NAMESPACE_IMPL_END + |