summaryrefslogtreecommitdiffstats
path: root/src/aig
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2016-05-20 18:01:01 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2016-05-20 18:01:01 -0700
commit7b570b62414f2482eed19af05a591803ff9315c5 (patch)
tree9161072e0c0c2f0558724f81077c55345b86d8ab /src/aig
parentce126db5f586332294b45bd467d6bc856e548738 (diff)
downloadabc-7b570b62414f2482eed19af05a591803ff9315c5.tar.gz
abc-7b570b62414f2482eed19af05a591803ff9315c5.tar.bz2
abc-7b570b62414f2482eed19af05a591803ff9315c5.zip
Enabling AIGs without structural hashing (&get -c to import logic network).
Diffstat (limited to 'src/aig')
-rw-r--r--src/aig/gia/gia.h21
-rw-r--r--src/aig/gia/giaUtil.c2
2 files changed, 13 insertions, 10 deletions
diff --git a/src/aig/gia/gia.h b/src/aig/gia/gia.h
index 58b00db2..f2baf7e0 100644
--- a/src/aig/gia/gia.h
+++ b/src/aig/gia/gia.h
@@ -538,7 +538,7 @@ static inline void Gia_ObjSetBufLevel( Gia_Man_t * p, Gia_Obj_t * pObj )
static inline void Gia_ObjSetAndLevel( Gia_Man_t * p, Gia_Obj_t * pObj ) { assert( Gia_ObjIsAnd(pObj) ); Gia_ObjSetLevel( p, pObj, 1+Abc_MaxInt(Gia_ObjLevel(p,Gia_ObjFanin0(pObj)),Gia_ObjLevel(p,Gia_ObjFanin1(pObj))) ); }
static inline void Gia_ObjSetXorLevel( Gia_Man_t * p, Gia_Obj_t * pObj ) { assert( Gia_ObjIsXor(pObj) ); Gia_ObjSetLevel( p, pObj, 2+Abc_MaxInt(Gia_ObjLevel(p,Gia_ObjFanin0(pObj)),Gia_ObjLevel(p,Gia_ObjFanin1(pObj))) ); }
static inline void Gia_ObjSetMuxLevel( Gia_Man_t * p, Gia_Obj_t * pObj ) { assert( Gia_ObjIsMux(p,pObj) ); Gia_ObjSetLevel( p, pObj, 2+Abc_MaxInt( Abc_MaxInt(Gia_ObjLevel(p,Gia_ObjFanin0(pObj)),Gia_ObjLevel(p,Gia_ObjFanin1(pObj))), Gia_ObjLevel(p,Gia_ObjFanin2(p,pObj))) ); }
-static inline void Gia_ObjSetGateLevel( Gia_Man_t * p, Gia_Obj_t * pObj ){ if ( Gia_ObjIsBuf(pObj) ) Gia_ObjSetBufLevel(p, pObj); else if ( Gia_ObjIsMux(p,pObj) ) Gia_ObjSetMuxLevel(p, pObj); else if ( Gia_ObjIsXor(pObj) ) Gia_ObjSetXorLevel(p, pObj); else if ( Gia_ObjIsAnd(pObj) ) Gia_ObjSetAndLevel(p, pObj); }
+static inline void Gia_ObjSetGateLevel( Gia_Man_t * p, Gia_Obj_t * pObj ){ if ( !p->fGiaSimple && Gia_ObjIsBuf(pObj) ) Gia_ObjSetBufLevel(p, pObj); else if ( Gia_ObjIsMux(p,pObj) ) Gia_ObjSetMuxLevel(p, pObj); else if ( Gia_ObjIsXor(pObj) ) Gia_ObjSetXorLevel(p, pObj); else if ( Gia_ObjIsAnd(pObj) ) Gia_ObjSetAndLevel(p, pObj); }
static inline int Gia_ObjHasNumId( Gia_Man_t * p, int Id ) { return Vec_IntEntry(p->vTtNums, Id) > -ABC_INFINITY; }
static inline int Gia_ObjNumId( Gia_Man_t * p, int Id ) { return Vec_IntEntry(p->vTtNums, Id); }
@@ -665,14 +665,17 @@ static inline int Gia_ManAppendAnd( Gia_Man_t * p, int iLit0, int iLit1 )
}
static inline int Gia_ManAppendAnd2( Gia_Man_t * p, int iLit0, int iLit1 )
{
- if ( iLit0 < 2 )
- return iLit0 ? iLit1 : 0;
- if ( iLit1 < 2 )
- return iLit1 ? iLit0 : 0;
- if ( iLit0 == iLit1 )
- return iLit1;
- if ( iLit0 == Abc_LitNot(iLit1) )
- return 0;
+ if ( !p->fGiaSimple )
+ {
+ if ( iLit0 < 2 )
+ return iLit0 ? iLit1 : 0;
+ if ( iLit1 < 2 )
+ return iLit1 ? iLit0 : 0;
+ if ( iLit0 == iLit1 )
+ return iLit1;
+ if ( iLit0 == Abc_LitNot(iLit1) )
+ return 0;
+ }
return Gia_ManAppendAnd( p, iLit0, iLit1 );
}
static inline int Gia_ManAppendXorReal( Gia_Man_t * p, int iLit0, int iLit1 )
diff --git a/src/aig/gia/giaUtil.c b/src/aig/gia/giaUtil.c
index 11a8b5b0..eccdbc73 100644
--- a/src/aig/gia/giaUtil.c
+++ b/src/aig/gia/giaUtil.c
@@ -510,7 +510,7 @@ int Gia_ManLevelNum( Gia_Man_t * p )
p->nLevels = 0;
Gia_ManForEachObj( p, pObj, i )
{
- if ( Gia_ObjIsBuf(pObj) )
+ if ( !p->fGiaSimple && Gia_ObjIsBuf(pObj) )
Gia_ObjSetBufLevel( p, pObj );
else if ( Gia_ObjIsAnd(pObj) )
Gia_ObjSetGateLevel( p, pObj );