diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2015-02-13 16:28:17 -0800 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2015-02-13 16:28:17 -0800 |
commit | edf3622ceb8569b87ffc007c75716f1042ba00d7 (patch) | |
tree | bc8246d3cb5878b31e10c1a472a1ad6bd312660d /src/base/cba/cbaNtk.c | |
parent | ea2d82ab141c5a162f2c2cf0adce74a21d911d8a (diff) | |
download | abc-edf3622ceb8569b87ffc007c75716f1042ba00d7.tar.gz abc-edf3622ceb8569b87ffc007c75716f1042ba00d7.tar.bz2 abc-edf3622ceb8569b87ffc007c75716f1042ba00d7.zip |
Several improvements to CBA data-structure.
Diffstat (limited to 'src/base/cba/cbaNtk.c')
-rw-r--r-- | src/base/cba/cbaNtk.c | 26 |
1 files changed, 4 insertions, 22 deletions
diff --git a/src/base/cba/cbaNtk.c b/src/base/cba/cbaNtk.c index fb9b5fb3..2c9d8492 100644 --- a/src/base/cba/cbaNtk.c +++ b/src/base/cba/cbaNtk.c @@ -77,30 +77,18 @@ void Cba_ManAssignInternNamesNtk( Cba_Ntk_t * p, Vec_Int_t * vMap ) // set all names Cba_NtkForEachPi( p, iObj, i ) nNameless += Cba_ManSetInternOne( p, iObj, vMap ); - Cba_NtkForEachPo( p, iObj, i ) - nNameless += Cba_ManSetInternOne( p, iObj, vMap ); Cba_NtkForEachBox( p, iObj ) - { - Cba_BoxForEachBi( p, iObj, iTerm, i ) - nNameless += Cba_ManSetInternOne( p, iTerm, vMap ); Cba_BoxForEachBo( p, iObj, iTerm, i ) nNameless += Cba_ManSetInternOne( p, iTerm, vMap ); - } + // generate new names if ( nNameless ) { int nNameless2 = 0; - // generate new names Cba_NtkForEachPi( p, iObj, i ) nNameless2 += Cba_ManAssignInternOne( p, iObj, vMap ); - Cba_NtkForEachPo( p, iObj, i ) - nNameless2 += Cba_ManAssignInternOne( p, iObj, vMap ); Cba_NtkForEachBox( p, iObj ) - { - Cba_BoxForEachBi( p, iObj, iTerm, i ) - nNameless2 += Cba_ManAssignInternOne( p, iTerm, vMap ); Cba_BoxForEachBo( p, iObj, iTerm, i ) nNameless2 += Cba_ManAssignInternOne( p, iTerm, vMap ); - } assert( nNameless == nNameless2 ); if ( nNameless ) printf( "Generated unique names for %d objects in network \"%s\".\n", nNameless, Cba_NtkName(p) ); @@ -108,16 +96,9 @@ void Cba_ManAssignInternNamesNtk( Cba_Ntk_t * p, Vec_Int_t * vMap ) // unmark all names Cba_NtkForEachPi( p, iObj, i ) Vec_IntWriteEntry( vMap, Cba_ObjName(p, iObj), 0 ); - Cba_NtkForEachPo( p, iObj, i ) - Vec_IntWriteEntry( vMap, Cba_ObjName(p, iObj), 0 ); Cba_NtkForEachBox( p, iObj ) - { - Cba_BoxForEachBi( p, iObj, iTerm, i ) - Vec_IntWriteEntry( vMap, Cba_ObjName(p, iTerm), 0 ); Cba_BoxForEachBo( p, iObj, iTerm, i ) Vec_IntWriteEntry( vMap, Cba_ObjName(p, iTerm), 0 ); - } - } void Cba_ManAssignInternNames( Cba_Man_t * p ) { @@ -315,8 +296,9 @@ Cba_Man_t * Cba_ManCollapse( Cba_Man_t * p ) Cba_NtkStartNames( pRootNew ); Cba_NtkForEachPi( pRoot, iObj, i ) Cba_ObjSetName( pRootNew, Cba_NtkPi(pRootNew, i), Cba_ObjName(pRoot, iObj) ); - Cba_NtkForEachPo( pRoot, iObj, i ) - Cba_ObjSetName( pRootNew, Cba_NtkPo(pRootNew, i), Cba_ObjName(pRoot, iObj) ); + Cba_NtkForEachPoDriver( pRoot, iObj, i ) + if ( !Cba_ObjIsPi(pRoot, iObj) ) + Cba_ObjSetName( pRootNew, Cba_ObjCopy(pRoot, iObj), Cba_ObjName(pRoot, iObj) ); } return pNew; } |