summaryrefslogtreecommitdiffstats
path: root/src/base/cba/cbaNtk.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-03-04 16:07:33 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2015-03-04 16:07:33 -0800
commit6c93249373bb71f7f12cf99286bae0d31d884217 (patch)
tree25e82633852bba46b64ceea9a18cea4a60dc1b4e /src/base/cba/cbaNtk.c
parent360cc99f0114b0fbbb6b42b17c0d4d32cb121d99 (diff)
downloadabc-6c93249373bb71f7f12cf99286bae0d31d884217.tar.gz
abc-6c93249373bb71f7f12cf99286bae0d31d884217.tar.bz2
abc-6c93249373bb71f7f12cf99286bae0d31d884217.zip
Improvements to the CBA package.
Diffstat (limited to 'src/base/cba/cbaNtk.c')
-rw-r--r--src/base/cba/cbaNtk.c51
1 files changed, 28 insertions, 23 deletions
diff --git a/src/base/cba/cbaNtk.c b/src/base/cba/cbaNtk.c
index e567ae39..93f33839 100644
--- a/src/base/cba/cbaNtk.c
+++ b/src/base/cba/cbaNtk.c
@@ -341,30 +341,33 @@ void Cba_ManAssignInternWordNamesNtk( Cba_Ntk_t * p, Vec_Int_t * vMap )
}
}
// transfer names to the interface
- for ( k = 0; k < Cba_NtkInfoNum(p); k++ )
+ if ( Cba_NtkInfoNum(p) )
{
- //char * pName = Cba_NtkName(p);
- if ( Cba_NtkInfoType(p, k) == 1 ) // PI
+ for ( k = 0; k < Cba_NtkInfoNum(p); k++ )
{
- iObj = Cba_NtkPi(p, nPis);
- assert( !Cba_ObjBit(p, iObj) );
- assert( Cba_ObjNameType(p, iObj) <= CBA_NAME_WORD );
- Cba_NtkSetInfoName( p, k, Abc_Var2Lit2(Cba_ObjNameId(p, iObj), 1) );
- nPis += Cba_NtkInfoRange(p, k);
- }
- else if ( Cba_NtkInfoType(p, k) == 2 ) // PO
- {
- iObj = Cba_NtkPo(p, nPos);
- assert( !Cba_ObjBit(p, iObj) );
- iObj = Cba_ObjFanin(p, iObj);
- assert( Cba_ObjNameType(p, iObj) <= CBA_NAME_WORD );
- Cba_NtkSetInfoName( p, k, Abc_Var2Lit2(Cba_ObjNameId(p, iObj), 2) );
- nPos += Cba_NtkInfoRange(p, k);
+ //char * pName = Cba_NtkName(p);
+ if ( Cba_NtkInfoType(p, k) == 1 ) // PI
+ {
+ iObj = Cba_NtkPi(p, nPis);
+ assert( !Cba_ObjBit(p, iObj) );
+ assert( Cba_ObjNameType(p, iObj) <= CBA_NAME_WORD );
+ Cba_NtkSetInfoName( p, k, Abc_Var2Lit2(Cba_ObjNameId(p, iObj), 1) );
+ nPis += Cba_NtkInfoRange(p, k);
+ }
+ else if ( Cba_NtkInfoType(p, k) == 2 ) // PO
+ {
+ iObj = Cba_NtkPo(p, nPos);
+ assert( !Cba_ObjBit(p, iObj) );
+ iObj = Cba_ObjFanin(p, iObj);
+ assert( Cba_ObjNameType(p, iObj) <= CBA_NAME_WORD );
+ Cba_NtkSetInfoName( p, k, Abc_Var2Lit2(Cba_ObjNameId(p, iObj), 2) );
+ nPos += Cba_NtkInfoRange(p, k);
+ }
+ else assert( 0 );
}
- else assert( 0 );
+ assert( nPis == Cba_NtkPiNum(p) );
+ assert( nPos == Cba_NtkPoNum(p) );
}
- assert( nPis == Cba_NtkPiNum(p) );
- assert( nPos == Cba_NtkPoNum(p) );
// assign instance names
nDigits = Abc_Base10Log( Cba_NtkObjNum(p) );
Cba_NtkForEachBox( p, iObj )
@@ -388,7 +391,7 @@ void Cba_ManAssignInternWordNamesNtk( Cba_Ntk_t * p, Vec_Int_t * vMap )
}
void Cba_ManAssignInternWordNames( Cba_Man_t * p )
{
- Vec_Int_t * vMap = Vec_IntStart( Cba_ManObjNum(p) );
+ Vec_Int_t * vMap = Vec_IntStart( 2*Cba_ManObjNum(p) );
Cba_Ntk_t * pNtk; int i;
Cba_ManForEachNtk( p, pNtk, i )
Cba_ManAssignInternWordNamesNtk( pNtk, vMap );
@@ -569,6 +572,8 @@ Cba_Man_t * Cba_ManCollapse( Cba_Man_t * p )
Cba_Ntk_t * pRoot = Cba_ManRoot( p );
Cba_Ntk_t * pRootNew = Cba_ManRoot( pNew );
Cba_NtkAlloc( pRootNew, Cba_NtkNameId(pRoot), Cba_NtkPiNum(pRoot), Cba_NtkPoNum(pRoot), Cba_ManClpObjNum(p) );
+ if ( Vec_IntSize(&pRoot->vInfo) )
+ Vec_IntAppend( &pRootNew->vInfo, &pRoot->vInfo );
Cba_NtkForEachPi( pRoot, iObj, i )
Vec_IntPush( vSigs, Cba_ObjAlloc(pRootNew, CBA_OBJ_PI, -1) );
Cba_NtkCollapse_rec( pRootNew, pRoot, vSigs );
@@ -582,10 +587,10 @@ 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_ObjNameId(pRoot, iObj) );
+ Cba_ObjSetName( pRootNew, Cba_NtkPi(pRootNew, i), Cba_ObjName(pRoot, iObj) );
Cba_NtkForEachPoDriver( pRoot, iObj, i )
if ( !Cba_ObjIsPi(pRoot, iObj) )
- Cba_ObjSetName( pRootNew, Cba_ObjCopy(pRoot, iObj), Cba_ObjNameId(pRoot, iObj) );
+ Cba_ObjSetName( pRootNew, Cba_ObjCopy(pRoot, iObj), Cba_ObjName(pRoot, iObj) );
}
return pNew;
}