summaryrefslogtreecommitdiffstats
path: root/src/base/cba/cbaPrsTrans.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-01-31 19:58:38 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2015-01-31 19:58:38 -0800
commit2c8c0d873646f3c2b12d48bae44bb98e3b3ce781 (patch)
treeb152b965f06d453579dfb1b38b206971f6930801 /src/base/cba/cbaPrsTrans.c
parent77dbe2b6565dbc68a04a315fb51b50a35b763228 (diff)
downloadabc-2c8c0d873646f3c2b12d48bae44bb98e3b3ce781.tar.gz
abc-2c8c0d873646f3c2b12d48bae44bb98e3b3ce781.tar.bz2
abc-2c8c0d873646f3c2b12d48bae44bb98e3b3ce781.zip
Compiler warnings.
Diffstat (limited to 'src/base/cba/cbaPrsTrans.c')
-rw-r--r--src/base/cba/cbaPrsTrans.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/base/cba/cbaPrsTrans.c b/src/base/cba/cbaPrsTrans.c
index 1f5ad97d..b3cd6625 100644
--- a/src/base/cba/cbaPrsTrans.c
+++ b/src/base/cba/cbaPrsTrans.c
@@ -33,6 +33,70 @@ ABC_NAMESPACE_IMPL_START
/**Function*************************************************************
+ Synopsis [Count range size.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+static inline int Prs_ManRangeSizeName( Prs_Ntk_t * p, int Name )
+{
+ return 1;
+}
+static inline int Prs_ManRangeSizeRange( Prs_Ntk_t * p, int Range )
+{
+ char * pStr;
+ int Left, Right;
+ if ( Range == 0 )
+ return 1;
+ pStr = Prs_NtkStr( p, Range );
+ assert( pStr[0] == '[' );
+ Left = Right = atoi( pStr + 1 );
+ pStr = strstr( pStr, "=" );
+ if ( pStr )
+ Right = atoi( pStr + 1 );
+ return 1 + (Left > Right ? Left - Right : Right - Left);
+}
+static inline int Prs_ManRangeSizeConst( Prs_Ntk_t * p, int Const )
+{
+ return atoi( Prs_NtkStr(p, Const) );
+}
+static inline int Prs_ManRangeSizeConcat( Prs_Ntk_t * p, int Con )
+{
+ extern int Prs_ManRangeSizeArray( Prs_Ntk_t * p, Vec_Int_t * vSlices, int Start, int Stop );
+ Vec_Int_t * vSigs = Prs_CatSignals(p, Con);
+ return Prs_ManRangeSizeArray( p, vSigs, 0, Vec_IntSize(vSigs) );
+}
+static inline int Prs_ManRangeSizeSignal( Prs_Ntk_t * p, int Sig )
+{
+ int Value = Abc_Lit2Var2( Sig );
+ Prs_ManType_t Type = Abc_Lit2Att2( Sig );
+ if ( Type == CBA_PRS_NAME )
+ return Prs_ManRangeSizeName( p, Value );
+ if ( Type == CBA_PRS_SLICE )
+ return Prs_ManRangeSizeRange( p, Prs_SliceRange(p, Value) );
+ if ( Type == CBA_PRS_CONST )
+ return Prs_ManRangeSizeConst( p, Value );
+ if ( Type == CBA_PRS_CONCAT )
+ return Prs_ManRangeSizeConcat( p, Value );
+ assert( 0 );
+ return 0;
+}
+int Prs_ManRangeSizeArray( Prs_Ntk_t * p, Vec_Int_t * vSlices, int Start, int Stop )
+{
+ int i, Sig, Count = 0;
+ assert( Vec_IntSize(vSlices) > 0 );
+ Vec_IntForEachEntryStartStop( vSlices, Sig, i, Start, Stop )
+ Count += Prs_ManRangeSizeSignal( p, Sig );
+ return Count;
+}
+
+
+/**Function*************************************************************
+
Synopsis []
Description []