diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2012-07-08 17:56:49 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2012-07-08 17:56:49 -0700 |
commit | 685faae8e2e54e0d2d4a302f37ef9895073eb412 (patch) | |
tree | 54ee747f3ca085ad99c36c988f01abc4e86424f9 /src/aig/gia/giaUtil.c | |
parent | 21b847a8db06267db0f44d991236e20efe327a03 (diff) | |
download | abc-685faae8e2e54e0d2d4a302f37ef9895073eb412.tar.gz abc-685faae8e2e54e0d2d4a302f37ef9895073eb412.tar.bz2 abc-685faae8e2e54e0d2d4a302f37ef9895073eb412.zip |
Added command &gla_purify.
Diffstat (limited to 'src/aig/gia/giaUtil.c')
-rw-r--r-- | src/aig/gia/giaUtil.c | 154 |
1 files changed, 1 insertions, 153 deletions
diff --git a/src/aig/gia/giaUtil.c b/src/aig/gia/giaUtil.c index 6e2c49ff..3acd3213 100644 --- a/src/aig/gia/giaUtil.c +++ b/src/aig/gia/giaUtil.c @@ -1280,159 +1280,6 @@ void Gia_ManInvertConstraints( Gia_Man_t * pAig ) /**Function************************************************************* - Synopsis [Converting VTA vector to GLA vector.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -Vec_Int_t * Gia_VtaConvertToGla( Gia_Man_t * p, Vec_Int_t * vVta ) -{ - Gia_Obj_t * pObj; - Vec_Int_t * vGla; - int nObjMask, nObjs = Gia_ManObjNum(p); - int i, Entry, nFrames = Vec_IntEntry( vVta, 0 ); - assert( Vec_IntEntry(vVta, nFrames+1) == Vec_IntSize(vVta) ); - // get the bitmask - nObjMask = (1 << Abc_Base2Log(nObjs)) - 1; - assert( nObjs <= nObjMask ); - // go through objects - vGla = Vec_IntStart( nObjs ); - Vec_IntWriteEntry( vGla, 0, 1 ); - Vec_IntForEachEntryStart( vVta, Entry, i, nFrames+2 ) - { - pObj = Gia_ManObj( p, (Entry & nObjMask) ); - assert( Gia_ObjIsRo(p, pObj) || Gia_ObjIsAnd(pObj) || Gia_ObjIsConst0(pObj) ); - Vec_IntWriteEntry( vGla, (Entry & nObjMask), 1 ); - } - return vGla; -} - -/**Function************************************************************* - - Synopsis [Converting GLA vector to VTA vector.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -Vec_Int_t * Gia_VtaConvertFromGla( Gia_Man_t * p, Vec_Int_t * vGla, int nFrames ) -{ - Vec_Int_t * vVta; - int nObjBits, nObjMask, nObjs = Gia_ManObjNum(p); - int i, k, j, Entry, Counter, nGlaSize; - //. get the GLA size - nGlaSize = Vec_IntSum(vGla); - // get the bitmask - nObjBits = Abc_Base2Log(nObjs); - nObjMask = (1 << Abc_Base2Log(nObjs)) - 1; - assert( nObjs <= nObjMask ); - // go through objects - vVta = Vec_IntAlloc( 1000 ); - Vec_IntPush( vVta, nFrames ); - Counter = nFrames + 2; - for ( i = 0; i <= nFrames; i++, Counter += i * nGlaSize ) - Vec_IntPush( vVta, Counter ); - for ( i = 0; i < nFrames; i++ ) - for ( k = 0; k <= i; k++ ) - Vec_IntForEachEntry( vGla, Entry, j ) - if ( Entry ) - Vec_IntPush( vVta, (k << nObjBits) | j ); - Counter = Vec_IntEntry(vVta, nFrames+1); - assert( Vec_IntEntry(vVta, nFrames+1) == Vec_IntSize(vVta) ); - return vVta; -} - -/**Function************************************************************* - - Synopsis [Converting GLA vector to FLA vector.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Gia_FlaConvertToGla_rec( Gia_Man_t * p, Gia_Obj_t * pObj, Vec_Int_t * vGla ) -{ - if ( Gia_ObjIsTravIdCurrent(p, pObj) ) - return; - Gia_ObjSetTravIdCurrent(p, pObj); - Vec_IntWriteEntry( vGla, Gia_ObjId(p, pObj), 1 ); - if ( Gia_ObjIsRo(p, pObj) ) - return; - assert( Gia_ObjIsAnd(pObj) ); - Gia_FlaConvertToGla_rec( p, Gia_ObjFanin0(pObj), vGla ); - Gia_FlaConvertToGla_rec( p, Gia_ObjFanin1(pObj), vGla ); -} - -/**Function************************************************************* - - Synopsis [Converting FLA vector to GLA vector.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -Vec_Int_t * Gia_FlaConvertToGla( Gia_Man_t * p, Vec_Int_t * vFla ) -{ - Vec_Int_t * vGla; - Gia_Obj_t * pObj; - int i; - // mark const0 and relevant CI objects - Gia_ManIncrementTravId( p ); - Gia_ObjSetTravIdCurrent(p, Gia_ManConst0(p)); - Gia_ManForEachPi( p, pObj, i ) - Gia_ObjSetTravIdCurrent(p, pObj); - Gia_ManForEachRo( p, pObj, i ) - if ( !Vec_IntEntry(vFla, i) ) - Gia_ObjSetTravIdCurrent(p, pObj); - // label all objects reachable from the PO and selected flops - vGla = Vec_IntStart( Gia_ManObjNum(p) ); - Vec_IntWriteEntry( vGla, 0, 1 ); - Gia_ManForEachPo( p, pObj, i ) - Gia_FlaConvertToGla_rec( p, Gia_ObjFanin0(pObj), vGla ); - Gia_ManForEachRi( p, pObj, i ) - if ( Vec_IntEntry(vFla, i) ) - Gia_FlaConvertToGla_rec( p, Gia_ObjFanin0(pObj), vGla ); - return vGla; -} - -/**Function************************************************************* - - Synopsis [Converting GLA vector to FLA vector.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -Vec_Int_t * Gia_GlaConvertToFla( Gia_Man_t * p, Vec_Int_t * vGla ) -{ - Vec_Int_t * vFla; - Gia_Obj_t * pObj; - int i; - vFla = Vec_IntStart( Gia_ManRegNum(p) ); - Gia_ManForEachRo( p, pObj, i ) - if ( Vec_IntEntry(vGla, Gia_ObjId(p, pObj)) ) - Vec_IntWriteEntry( vFla, i, 1 ); - return vFla; -} - -/**Function************************************************************* - Synopsis [Testing the speedup due to grouping POs into batches.] Description [] @@ -1627,6 +1474,7 @@ void Gia_ObjComputeTruthTableTest( Gia_Man_t * p ) } + //////////////////////////////////////////////////////////////////////// /// END OF FILE /// //////////////////////////////////////////////////////////////////////// |