From 8a30b675b5e93db1c63353b72820c95198d5dc4b Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Sun, 9 Aug 2015 17:19:22 -0700 Subject: Improvements to Cba data-structure. --- src/base/cba/cba.h | 3 ++- src/base/cba/cbaReadVer.c | 2 +- src/base/cba/cbaWriteVer.c | 7 ++++--- 3 files changed, 7 insertions(+), 5 deletions(-) (limited to 'src/base') diff --git a/src/base/cba/cba.h b/src/base/cba/cba.h index ab99514c..6e52daea 100644 --- a/src/base/cba/cba.h +++ b/src/base/cba/cba.h @@ -367,6 +367,7 @@ static inline int Cba_FonLeft( Cba_Ntk_t * p, int f ) { r static inline int Cba_FonRight( Cba_Ntk_t * p, int f ) { return Cba_NtkRangeRight(p, Cba_FonRange(p, f)); } static inline int Cba_FonRangeSize( Cba_Ntk_t * p, int f ) { return Cba_FonIsConst(f) ? Cba_FonConstRange(p, f):Cba_NtkRangeSize(p, Cba_FonRange(p, f)); } static inline void Cba_FonSetRange( Cba_Ntk_t * p, int f, int x ) { assert(Cba_NtkHasFonRanges(p)); Vec_IntSetEntry(&p->vFonRange, f, x); } +static inline void Cba_FonHashRange( Cba_Ntk_t * p, int f, int l, int r ) { Cba_FonSetRange( p, f, Cba_NtkHashRange(p, l, r) ); } static inline int Cba_FonCopy( Cba_Ntk_t * p, int f ) { return Cba_FonIsReal(f) ? Vec_IntEntry(&p->vFonCopy, f) : f; } static inline void Cba_FonSetCopy( Cba_Ntk_t * p, int f, int x ) { assert(Cba_FonIsReal(f)); assert(Cba_FonCopy(p, f) == 0); Vec_IntWriteEntry(&p->vFonCopy, f, x); } static inline int Cba_FonName( Cba_Ntk_t * p, int f ) { assert(Cba_NtkHasFonNames(p)); assert(Cba_FonIsReal(f)); return Vec_IntGetEntry( &p->vFonName, f ); } @@ -1050,7 +1051,7 @@ extern void Prs_ManWriteBlif( char * pFileName, Vec_Ptr_t * p ); extern void Cba_ManWriteBlif( char * pFileName, Cba_Man_t * p ); /*=== cbaWriteVer.c ==========================================================*/ extern void Cba_ManCreatePrimMap( char ** pMap ); -extern char * Cba_ManGetSliceName( Cba_Ntk_t * p, int iFon, int Left, int Right ); +extern char * Cba_ManGetSliceName( Cba_Ntk_t * p, int iFon, int RangeId ); extern void Prs_ManWriteVerilog( char * pFileName, Vec_Ptr_t * p ); extern void Cba_ManWriteVerilog( char * pFileName, Cba_Man_t * p, int fInlineConcat ); diff --git a/src/base/cba/cbaReadVer.c b/src/base/cba/cbaReadVer.c index d1c3ee58..268742d4 100644 --- a/src/base/cba/cbaReadVer.c +++ b/src/base/cba/cbaReadVer.c @@ -1013,7 +1013,7 @@ int Prs_CreateSlice( Cba_Ntk_t * p, int iFon, Prs_Ntk_t * pNtk, int Range ) int iObj, iFonNew, NameId; assert( Cba_FonIsReal(iFon) ); // check existing slice - NameId = Cba_NtkNewStrId( p, Cba_ManGetSliceName(p, iFon, Cba_NtkRangeLeft(p, Range), Cba_NtkRangeRight(p, Range)) ); + NameId = Cba_NtkNewStrId( p, Cba_ManGetSliceName(p, iFon, Range) ); iFonNew = Cba_NtkGetMap( p, NameId ); if ( iFonNew ) return iFonNew; diff --git a/src/base/cba/cbaWriteVer.c b/src/base/cba/cbaWriteVer.c index f5a97083..bf54e2a1 100644 --- a/src/base/cba/cbaWriteVer.c +++ b/src/base/cba/cbaWriteVer.c @@ -112,7 +112,7 @@ static void Prs_ManWriteVerilogBoxes( FILE * pFile, Prs_Ntk_t * p ) Prs_NtkForEachBox( p, vBox, i ) { Cba_ObjType_t NtkId = Prs_BoxNtk(p, i); - char * pNtkName = Prs_NtkStr(p, Prs_BoxName(p, i)); + //char * pNtkName = Prs_NtkStr(p, Prs_BoxName(p, i)); if ( NtkId == CBA_BOX_MUX ) Prs_ManWriteVerilogMux( pFile, p, vBox ); else if ( Prs_BoxIsNode(p, i) ) // node ------- check order of fanins @@ -123,7 +123,6 @@ static void Prs_ManWriteVerilogBoxes( FILE * pFile, Prs_Ntk_t * p ) } else // box { - //char * s = Prs_NtkStr(p, Vec_IntEntry(vBox, 0)); fprintf( pFile, " %s %s (", Prs_NtkStr(p, NtkId), Prs_BoxName(p, i) ? Prs_NtkStr(p, Prs_BoxName(p, i)) : "" ); Prs_ManWriteVerilogArray2( pFile, p, vBox ); fprintf( pFile, ");\n" ); @@ -311,8 +310,10 @@ char * Cba_FonGetName( Cba_Ntk_t * p, int i ) return pName; return Vec_StrPrintF( Abc_NamBuffer(Cba_NtkNam(p)), "\\%s ", pName ); } -char * Cba_ManGetSliceName( Cba_Ntk_t * p, int iFon, int Left, int Right ) +char * Cba_ManGetSliceName( Cba_Ntk_t * p, int iFon, int RangeId ) { + int Left = Cba_NtkRangeLeft(p, RangeId); + int Right = Cba_NtkRangeRight(p, RangeId); char * pName = Cba_FonNameStr(p, iFon); if ( Cba_NameIsLegalInVerilog(pName) ) if ( Left == Right ) -- cgit v1.2.3