summaryrefslogtreecommitdiffstats
path: root/src/aig/ntl/ntlUtil.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2009-04-24 08:01:00 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2009-04-24 08:01:00 -0700
commitd7a048d738381651b53340684e26f06b78b8a78c (patch)
tree82f7bea9d0750a388494e6fffceb61cfeff969b7 /src/aig/ntl/ntlUtil.c
parent77fab468ad32d15de5c065c211f6f74371670940 (diff)
downloadabc-d7a048d738381651b53340684e26f06b78b8a78c.tar.gz
abc-d7a048d738381651b53340684e26f06b78b8a78c.tar.bz2
abc-d7a048d738381651b53340684e26f06b78b8a78c.zip
Version abc90424
Diffstat (limited to 'src/aig/ntl/ntlUtil.c')
-rw-r--r--src/aig/ntl/ntlUtil.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/aig/ntl/ntlUtil.c b/src/aig/ntl/ntlUtil.c
index 9c3d4e42..6d1b6c83 100644
--- a/src/aig/ntl/ntlUtil.c
+++ b/src/aig/ntl/ntlUtil.c
@@ -657,6 +657,68 @@ void Ntl_ModelClearNets( Ntl_Mod_t * pModel )
}
}
+/**Function*************************************************************
+
+ Synopsis [Removes nets without fanins and fanouts.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Ntl_ManRemoveUselessNets( Ntl_Man_t * p )
+{
+ Ntl_Mod_t * pRoot;
+ Ntl_Obj_t * pNode;
+ Ntl_Net_t * pNet;
+ int i, k, Counter;
+ pRoot = Ntl_ManRootModel( p );
+ Ntl_ModelForEachNet( pRoot, pNet, i )
+ pNet->fMark = 0;
+ Ntl_ModelForEachPi( pRoot, pNode, i )
+ {
+ pNet = Ntl_ObjFanout0(pNode);
+ pNet->fMark = 1;
+ }
+ Ntl_ModelForEachPo( pRoot, pNode, i )
+ {
+ pNet = Ntl_ObjFanin0(pNode);
+ pNet->fMark = 1;
+ }
+ Ntl_ModelForEachNode( pRoot, pNode, i )
+ {
+ Ntl_ObjForEachFanin( pNode, pNet, k )
+ pNet->fMark = 1;
+ Ntl_ObjForEachFanout( pNode, pNet, k )
+ pNet->fMark = 1;
+ }
+ Ntl_ModelForEachBox( pRoot, pNode, i )
+ {
+ Ntl_ObjForEachFanin( pNode, pNet, k )
+ pNet->fMark = 1;
+ Ntl_ObjForEachFanout( pNode, pNet, k )
+ pNet->fMark = 1;
+ }
+ Counter = 0;
+ Ntl_ModelForEachNet( pRoot, pNet, i )
+ {
+ if ( pNet->fMark )
+ {
+ pNet->fMark = 0;
+ continue;
+ }
+ if ( pNet->fFixed )
+ continue;
+ Ntl_ModelDeleteNet( pRoot, pNet );
+ Vec_PtrWriteEntry( pRoot->vNets, pNet->NetId, NULL );
+ Counter++;
+ }
+ if ( Counter )
+ printf( "Deleted %d nets without fanins/fanouts.\n", Counter );
+}
+
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////