summaryrefslogtreecommitdiffstats
path: root/src/aig/gia/giaAig.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2020-10-29 17:21:37 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2020-10-29 17:21:37 -0700
commit73f8b598ac0809f646007c84504ac6afb2a922e8 (patch)
tree870b335d7179a50df725c1fc64bfa8c417c9e9a0 /src/aig/gia/giaAig.c
parentb2aa245eaacb47837d9a9d63b231903888adfe13 (diff)
downloadabc-73f8b598ac0809f646007c84504ac6afb2a922e8.tar.gz
abc-73f8b598ac0809f646007c84504ac6afb2a922e8.tar.bz2
abc-73f8b598ac0809f646007c84504ac6afb2a922e8.zip
Rare bug fix in mapping with choices.
Diffstat (limited to 'src/aig/gia/giaAig.c')
-rw-r--r--src/aig/gia/giaAig.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/aig/gia/giaAig.c b/src/aig/gia/giaAig.c
index dfd4a467..91a9c600 100644
--- a/src/aig/gia/giaAig.c
+++ b/src/aig/gia/giaAig.c
@@ -102,6 +102,41 @@ Gia_Man_t * Gia_ManFromAig( Aig_Man_t * p )
/**Function*************************************************************
+ Synopsis [Checks integrity of choice nodes.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Gia_ManCheckChoices_rec( Gia_Man_t * p, Gia_Obj_t * pObj )
+{
+ if ( !pObj || !Gia_ObjIsAnd(pObj) || pObj->fPhase )
+ return;
+ pObj->fPhase = 1;
+ Gia_ManCheckChoices_rec( p, Gia_ObjFanin0(pObj) );
+ Gia_ManCheckChoices_rec( p, Gia_ObjFanin1(pObj) );
+ Gia_ManCheckChoices_rec( p, Gia_ObjSiblObj(p, Gia_ObjId(p, pObj)) );
+}
+void Gia_ManCheckChoices( Gia_Man_t * p )
+{
+ Gia_Obj_t * pObj;
+ int i, fFound = 0;
+ Gia_ManCleanPhase( p );
+ Gia_ManForEachCo( p, pObj, i )
+ Gia_ManCheckChoices_rec( p, Gia_ObjFanin0(pObj) );
+ Gia_ManForEachAnd( p, pObj, i )
+ if ( !pObj->fPhase )
+ printf( "Object %d is dangling.\n", i ), fFound = 1;
+ if ( !fFound )
+ printf( "There are no dangling objects.\n" );
+ Gia_ManCleanPhase( p );
+}
+
+/**Function*************************************************************
+
Synopsis [Duplicates AIG in the DFS order.]
Description []
@@ -155,6 +190,7 @@ Gia_Man_t * Gia_ManFromAigChoices( Aig_Man_t * p )
Gia_ManAppendCo( pNew, Gia_ObjChild0Copy(pObj) );
Gia_ManSetRegNum( pNew, Aig_ManRegNum(p) );
//assert( Gia_ManObjNum(pNew) == Aig_ManObjNum(p) );
+ //Gia_ManCheckChoices( pNew );
return pNew;
}