diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2012-09-23 23:53:12 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2012-09-23 23:53:12 -0700 |
commit | 255f171f632610eead441e62c7fe4cd4148bb207 (patch) | |
tree | 321863ebb934ee8a72587a7d863919e949fb2228 /src/aig/gia/giaAig.c | |
parent | 40d9b5853b2849c3bf7e2157a4b4c6b798b043d5 (diff) | |
download | abc-255f171f632610eead441e62c7fe4cd4148bb207.tar.gz abc-255f171f632610eead441e62c7fe4cd4148bb207.tar.bz2 abc-255f171f632610eead441e62c7fe4cd4148bb207.zip |
Improving computation of choices from equivalence classes.
Diffstat (limited to 'src/aig/gia/giaAig.c')
-rw-r--r-- | src/aig/gia/giaAig.c | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/src/aig/gia/giaAig.c b/src/aig/gia/giaAig.c index d9a1693c..224d3bda 100644 --- a/src/aig/gia/giaAig.c +++ b/src/aig/gia/giaAig.c @@ -419,18 +419,6 @@ void Gia_ManReprToAigRepr( Aig_Man_t * pAig, Gia_Man_t * pGia ) Aig_ObjCreateRepr( pAig, Aig_ManObj(pAig, pGiaRepr->Value), Aig_ManObj(pAig, pGiaObj->Value) ); } } - -/**Function************************************************************* - - Synopsis [Transfers representatives from pGia to pAig.] - - Description [Assumes that pAig was created from pGia.] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ void Gia_ManReprToAigRepr2( Aig_Man_t * pAig, Gia_Man_t * pGia ) { Gia_Obj_t * pGiaObj, * pGiaRepr; @@ -470,9 +458,9 @@ void Gia_ManReprFromAigRepr( Aig_Man_t * pAig, Gia_Man_t * pGia ) pGia->pReprs = ABC_CALLOC( Gia_Rpr_t, Gia_ManObjNum(pGia) ); for ( i = 0; i < Gia_ManObjNum(pGia); i++ ) Gia_ObjSetRepr( pGia, i, GIA_VOID ); + // move pointers from GIA to AIG Gia_ManForEachObj( pGia, pObjGia, i ) { -// Abc_Print( 1, "%d -> %d %d\n", i, Gia_ObjValue(pObjGia), Gia_ObjValue(pObjGia)/2 ); if ( Gia_ObjIsCo(pObjGia) ) continue; assert( i == 0 || !Abc_LitIsCompl(Gia_ObjValue(pObjGia)) ); @@ -490,6 +478,27 @@ void Gia_ManReprFromAigRepr( Aig_Man_t * pAig, Gia_Man_t * pGia ) } pGia->pNexts = Gia_ManDeriveNexts( pGia ); } +void Gia_ManReprFromAigRepr2( Aig_Man_t * pAig, Gia_Man_t * pGia ) +{ + Aig_Obj_t * pObjAig, * pReprAig; + int i; + assert( pAig->pReprs != NULL ); + assert( pGia->pReprs == NULL ); + assert( Gia_ManObjNum(pGia) - Gia_ManCoNum(pGia) == Aig_ManObjNum(pAig) - Aig_ManCoNum(pAig) ); + pGia->pReprs = ABC_CALLOC( Gia_Rpr_t, Gia_ManObjNum(pGia) ); + for ( i = 0; i < Gia_ManObjNum(pGia); i++ ) + Gia_ObjSetRepr( pGia, i, GIA_VOID ); + Aig_ManForEachObj( pAig, pObjAig, i ) + { + if ( Aig_ObjIsCo(pObjAig) ) + continue; + if ( pAig->pReprs[i] == NULL ) + continue; + pReprAig = pAig->pReprs[i]; + Gia_ObjSetRepr( pGia, Abc_Lit2Var(pObjAig->iData), Abc_Lit2Var(pReprAig->iData) ); + } + pGia->pNexts = Gia_ManDeriveNexts( pGia ); +} /**Function************************************************************* |