summaryrefslogtreecommitdiffstats
path: root/src/aig/gia/giaAig.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-09-23 23:53:12 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2012-09-23 23:53:12 -0700
commit255f171f632610eead441e62c7fe4cd4148bb207 (patch)
tree321863ebb934ee8a72587a7d863919e949fb2228 /src/aig/gia/giaAig.c
parent40d9b5853b2849c3bf7e2157a4b4c6b798b043d5 (diff)
downloadabc-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.c35
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*************************************************************