summaryrefslogtreecommitdiffstats
path: root/src/base/cba/cbaNtk.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-02-16 13:15:12 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2015-02-16 13:15:12 -0800
commit7a4a63d0c4a999c061f26ceebf278dbbc18bf24e (patch)
treed831d058d5bce328694928e74499f18b1ccfa9b7 /src/base/cba/cbaNtk.c
parentff1fd41a474849af69fafb66fe1cac2cce7bb61b (diff)
downloadabc-7a4a63d0c4a999c061f26ceebf278dbbc18bf24e.tar.gz
abc-7a4a63d0c4a999c061f26ceebf278dbbc18bf24e.tar.bz2
abc-7a4a63d0c4a999c061f26ceebf278dbbc18bf24e.zip
Several improvements to CBA data-structure.
Diffstat (limited to 'src/base/cba/cbaNtk.c')
-rw-r--r--src/base/cba/cbaNtk.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/base/cba/cbaNtk.c b/src/base/cba/cbaNtk.c
index 435cd83a..15aacd2e 100644
--- a/src/base/cba/cbaNtk.c
+++ b/src/base/cba/cbaNtk.c
@@ -32,6 +32,67 @@ ABC_NAMESPACE_IMPL_START
/**Function*************************************************************
+ Synopsis [Replaces fanin iOld by iNew in all fanouts.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Cba_NtkUpdateFanout( Cba_Ntk_t * p, int iOld, int iNew )
+{
+ int iCo;
+ assert( Cba_ObjIsCi(p, iOld) );
+ assert( Cba_ObjIsCi(p, iNew) );
+ Cba_ObjForEachFanout( p, iOld, iCo )
+ {
+ assert( Cba_ObjFanin(p, iCo) == iOld );
+ Cba_ObjCleanFanin( p, iCo );
+ Cba_ObjSetFanin( p, iCo, iNew );
+ }
+ Cba_ObjSetFanout( p, iNew, Cba_ObjFanout(p, iOld) );
+ Cba_ObjSetFanout( p, iOld, 0 );
+}
+
+/**Function*************************************************************
+
+ Synopsis [Derives fanout.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Cba_NtkDeriveFanout( Cba_Ntk_t * p )
+{
+ int iCi, iCo;
+ assert( !Cba_NtkHasFanouts(p) );
+ Cba_NtkStartFanouts( p );
+ Cba_NtkForEachCo( p, iCo )
+ {
+ assert( !Cba_ObjNextFanout(p, iCo) );
+ iCi = Cba_ObjFanin(p, iCo);
+ if ( Cba_ObjFanout(p, iCi) )
+ Cba_ObjSetNextFanout( p, Cba_ObjFanout(p, iCi), iCo );
+ Cba_ObjSetFanout( p, iCi, iCo );
+ }
+ Cba_NtkForEachCo( p, iCo )
+ if ( !Cba_ObjNextFanout(p, iCo) )
+ Cba_ObjSetFanout( p, Cba_ObjFanin(p, iCo), iCo );
+}
+void Cba_ManDeriveFanout( Cba_Man_t * p )
+{
+ Cba_Ntk_t * pNtk; int i;
+ Cba_ManForEachNtk( p, pNtk, i )
+ Cba_NtkDeriveFanout( pNtk );
+}
+
+/**Function*************************************************************
+
Synopsis [Assigns word-level names.]
Description []