summaryrefslogtreecommitdiffstats
path: root/src/base/cba/cba.h
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-09-07 19:23:17 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2015-09-07 19:23:17 -0700
commitf623b04da47aaa2810c06b880f85354becef288e (patch)
treefd8c416257c92484b56ff1222e82acde9bf1aa3e /src/base/cba/cba.h
parent2540f02e7e81f8ec7521dea54c8d080890ad5209 (diff)
downloadabc-f623b04da47aaa2810c06b880f85354becef288e.tar.gz
abc-f623b04da47aaa2810c06b880f85354becef288e.tar.bz2
abc-f623b04da47aaa2810c06b880f85354becef288e.zip
Cleaning up boolean operators; adding unique name support; minor changes.
Diffstat (limited to 'src/base/cba/cba.h')
-rw-r--r--src/base/cba/cba.h91
1 files changed, 63 insertions, 28 deletions
diff --git a/src/base/cba/cba.h b/src/base/cba/cba.h
index 0086d031..8ae9a81c 100644
--- a/src/base/cba/cba.h
+++ b/src/base/cba/cba.h
@@ -630,33 +630,6 @@ static inline Vec_Int_t * Cba_NtkCollect( Cba_Ntk_t * p )
Vec_IntPush( vObjs, iObj );
return vObjs;
}
-static inline void Cba_NtkCreateFonNames( Cba_Ntk_t * p, char * pPref )
-{
- int i, iObj, iFon, NameId;
- Cba_NtkCleanFonNames( p );
- Cba_NtkForEachPiFon( p, iObj, iFon, i )
- if ( !Cba_FonName(p, iFon) )
- Cba_FonSetName( p, iFon, Cba_ObjName(p, iObj) );
- Cba_NtkForEachPoDriverFon( p, iObj, iFon, i )
- if ( Cba_FonIsReal(iFon) && !Cba_FonName(p, iFon) )
- Cba_FonSetName( p, iFon, Cba_ObjName(p, iObj) );
- Vec_IntForEachEntryStart( &p->vFonName, NameId, iFon, 1 )
- if ( NameId == 0 )
- Vec_IntWriteEntry( &p->vFonName, iFon, Cba_NtkNewStrId(p, "%s%d", pPref, iFon) );
-}
-static inline void Cba_NtkMissingFonNames( Cba_Ntk_t * p, char * pPref )
-{
- int i, iObj, iFon, NameId;
- Cba_NtkForEachPiFon( p, iObj, iFon, i )
- if ( !Cba_FonName(p, iFon) )
- Cba_FonSetName( p, iFon, Cba_ObjName(p, iObj) );
- Cba_NtkForEachPoDriverFon( p, iObj, iFon, i )
- if ( Cba_FonIsReal(iFon) && !Cba_FonName(p, iFon) )
- Cba_FonSetName( p, iFon, Cba_ObjName(p, iObj) );
- Vec_IntForEachEntryStart( &p->vFonName, NameId, iFon, 1 )
- if ( NameId == 0 )
- Cba_FonSetName( p, iFon, Cba_NtkNewStrId(p, "%s%d", pPref, iFon) );
-}
static inline int Cba_NtkIsSeq( Cba_Ntk_t * p )
{
int iObj;
@@ -1046,6 +1019,68 @@ static inline void Cba_ManPrintStats( Cba_Man_t * p, int nModules, int fVerbose
}
+/**Function*************************************************************
+
+ Synopsis [Name handling.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+static inline void Cba_NtkAddMissingFonNames( Cba_Ntk_t * p, char * pPref )
+{
+ int iFon, NameId, Index;
+ // populate map
+ Cba_ManCleanMap( p->pDesign );
+ Vec_IntForEachEntryStart( &p->vFonName, NameId, iFon, 1 )
+ if ( NameId )
+ Cba_ManSetMap( p->pDesign, NameId, iFon );
+ // check remaining ones
+ Vec_IntForEachEntryStart( &p->vFonName, NameId, iFon, 1 )
+ {
+ if ( NameId )
+ continue;
+ NameId = Cba_NtkNewStrId(p, "%s%d", pPref, iFon);
+ for ( Index = 1; Cba_ManGetMap(p->pDesign, NameId); Index++ )
+ NameId = Cba_NtkNewStrId(p, "%s%d_%d", pPref, iFon, Index);
+ Cba_FonSetName( p, iFon, NameId );
+ Cba_ManSetMap( p->pDesign, NameId, iFon );
+ }
+}
+static inline void Cba_NtkCreateFonNames( Cba_Ntk_t * p, char * pPref )
+{
+ int i, iObj, iFon;//, NameId;
+ Cba_NtkCleanFonNames( p );
+ Cba_NtkForEachPiFon( p, iObj, iFon, i )
+ if ( !Cba_FonName(p, iFon) )
+ Cba_FonSetName( p, iFon, Cba_ObjName(p, iObj) );
+ Cba_NtkForEachPoDriverFon( p, iObj, iFon, i )
+ if ( Cba_FonIsReal(iFon) && !Cba_FonName(p, iFon) )
+ Cba_FonSetName( p, iFon, Cba_ObjName(p, iObj) );
+// Vec_IntForEachEntryStart( &p->vFonName, NameId, iFon, 1 )
+// if ( NameId == 0 )
+// Vec_IntWriteEntry( &p->vFonName, iFon, Cba_NtkNewStrId(p, "%s%d", pPref, iFon) );
+ Cba_NtkAddMissingFonNames( p, pPref );
+}
+static inline void Cba_NtkMissingFonNames( Cba_Ntk_t * p, char * pPref )
+{
+ int i, iObj, iFon;//, NameId;
+ Cba_NtkForEachPiFon( p, iObj, iFon, i )
+ if ( !Cba_FonName(p, iFon) )
+ Cba_FonSetName( p, iFon, Cba_ObjName(p, iObj) );
+ Cba_NtkForEachPoDriverFon( p, iObj, iFon, i )
+ if ( Cba_FonIsReal(iFon) && !Cba_FonName(p, iFon) )
+ Cba_FonSetName( p, iFon, Cba_ObjName(p, iObj) );
+// Vec_IntForEachEntryStart( &p->vFonName, NameId, iFon, 1 )
+// if ( NameId == 0 )
+// Cba_FonSetName( p, iFon, Cba_NtkNewStrId(p, "%s%d", pPref, iFon) );
+ Cba_NtkAddMissingFonNames( p, pPref );
+}
+
+
/*=== cbaBlast.c =============================================================*/
extern Gia_Man_t * Cba_ManBlast( Cba_Man_t * p, int fBarBufs, int fSeq, int fVerbose );
extern Cba_Man_t * Cba_ManInsertGia( Cba_Man_t * p, Gia_Man_t * pGia );
@@ -1066,7 +1101,7 @@ extern int Cba_NtkCoFinNum( Cba_Ntk_t * p );
extern int Cba_NtkCheckComboLoop( Cba_Ntk_t * p );
extern int Cba_ManIsTopoOrder( Cba_Man_t * p );
extern Vec_Int_t * Cba_NtkCollectDfs( Cba_Ntk_t * p );
-extern Cba_Man_t * Cba_ManCollapse( Cba_Man_t * p, int TypeBuf );
+extern Cba_Man_t * Cba_ManCollapse( Cba_Man_t * p );
extern Cba_Man_t * Cba_ManExtractGroup( Cba_Man_t * p, Vec_Int_t * vObjs );
extern Cba_Man_t * Cba_ManDeriveFromGia( Gia_Man_t * pGia, int fUseXor );
extern Cba_Man_t * Cba_ManInsertGroup( Cba_Man_t * p, Vec_Int_t * vObjs, Cba_Ntk_t * pSyn );