diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2012-01-13 20:58:28 -0800 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2012-01-13 20:58:28 -0800 |
commit | b7ba9aa8dcdfee0c5fa42aec0385b83d2371da39 (patch) | |
tree | 2b5f55f03b0c4f701b824679e54524e4675b4211 /src | |
parent | 37b8a190baa91c69dcbd4300f03e209e19fb5b9b (diff) | |
download | abc-b7ba9aa8dcdfee0c5fa42aec0385b83d2371da39.tar.gz abc-b7ba9aa8dcdfee0c5fa42aec0385b83d2371da39.tar.bz2 abc-b7ba9aa8dcdfee0c5fa42aec0385b83d2371da39.zip |
New hierarchy manager.
Diffstat (limited to 'src')
-rw-r--r-- | src/aig/aig/aigPart.c | 23 | ||||
-rw-r--r-- | src/base/abc/abcHieCec.c | 37 | ||||
-rw-r--r-- | src/base/abc/abcHieNew.c | 2 | ||||
-rw-r--r-- | src/base/abci/abc.c | 2 |
4 files changed, 63 insertions, 1 deletions
diff --git a/src/aig/aig/aigPart.c b/src/aig/aig/aigPart.c index a481f2a9..6ee3930b 100644 --- a/src/aig/aig/aigPart.c +++ b/src/aig/aig/aigPart.c @@ -277,7 +277,7 @@ Vec_Ptr_t * Aig_ManSupports( Aig_Man_t * pMan ) Part_Man_t * p; Part_One_t * pPart0, * pPart1; Aig_Obj_t * pObj; - int i; + int i, Counter = 0; // set the number of PIs/POs Aig_ManForEachPi( pMan, pObj, i ) pObj->pNext = (Aig_Obj_t *)(long)i; @@ -301,6 +301,8 @@ Vec_Ptr_t * Aig_ManSupports( Aig_Man_t * pMan ) assert( pPart1->nRefs > 0 ); if ( --pPart1->nRefs == 0 ) Part_ManRecycleEntry( p, pPart1 ); + if ( ((Part_One_t *)pObj->pData)->nOuts <= 16 ) + Counter++; continue; } if ( Aig_ObjIsPo(pObj) ) @@ -346,11 +348,30 @@ Vec_Ptr_t * Aig_ManSupports( Aig_Man_t * pMan ) printf( "%d ", Vec_IntSize( Vec_VecEntryInt(vSupports, i) ) ); printf( "\n" ); */ +// printf( "%d \n", Counter ); return vSupports; } /**Function************************************************************* + Synopsis [] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +void Aig_ManSupportsTest( Aig_Man_t * pMan ) +{ + Vec_Ptr_t * vSupps; + vSupps = Aig_ManSupports( pMan ); + Vec_VecFree( (Vec_Vec_t *)vSupps ); +} + +/**Function************************************************************* + Synopsis [Computes the set of outputs for each input.] Description [Returns the array of integer arrays containing indices diff --git a/src/base/abc/abcHieCec.c b/src/base/abc/abcHieCec.c index dd691a4f..001705e3 100644 --- a/src/base/abc/abcHieCec.c +++ b/src/base/abc/abcHieCec.c @@ -552,6 +552,40 @@ void Abc_NtkCountInst( Abc_Ntk_t * pNtk ) printf( "Instances = %10d.\n", Counter ); } +/**Function************************************************************* + + Synopsis [Checks if there is a recursive definition.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +int Abc_NtkCheckRecursive( Abc_Ntk_t * pNtk ) +{ + Vec_Ptr_t * vMods; + Abc_Ntk_t * pModel; + Abc_Obj_t * pObj; + int i, k, RetValue = 0; + + assert( Abc_NtkIsNetlist(pNtk) ); + assert( !Abc_NtkLatchNum(pNtk) ); + + vMods = pNtk->pDesign->vModules; + Vec_PtrForEachEntry( Abc_Ntk_t *, vMods, pModel, i ) + { + Abc_NtkForEachObj( pModel, pObj, k ) + if ( Abc_ObjIsBox(pObj) && pObj->pData == (void *)pModel ) + { + printf( "WARNING: Model \"%s\" contains a recursive defition.\n", Abc_NtkName(pModel) ); + RetValue = 1; + break; + } + } + return RetValue; +} /**Function************************************************************* @@ -592,6 +626,9 @@ Gia_Man_t * Abc_NtkHieCecTest( char * pFileName, int fVerbose ) assert( Abc_NtkIsNetlist(pNtk) ); assert( !Abc_NtkLatchNum(pNtk) ); + if ( Abc_NtkCheckRecursive(pNtk) ) + return NULL; + // test the new data-structure if ( fUseTest ) { diff --git a/src/base/abc/abcHieNew.c b/src/base/abc/abcHieNew.c index 0712c574..cddc4968 100644 --- a/src/base/abc/abcHieNew.c +++ b/src/base/abc/abcHieNew.c @@ -638,6 +638,8 @@ Au_Ntk_t * Au_NtkDerive( Au_Man_t * pMan, Abc_Ntk_t * pNtk, Vec_Ptr_t * vOrder ) // copy POs Abc_NtkForEachPo( pNtk, pTerm, i ) Au_NtkCreatePo( p, Abc_ObjFanin0(pTerm)->iTemp ); + + Au_NtkPrintStats( p ); return p; } diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 8b1c8441..070ffbd9 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -8927,11 +8927,13 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv ) // extern void Abs_VfaManTest( Aig_Man_t * pAig, int nFrames, int nConfLimit, int fVerbose ); extern void Aig_ManInterRepar( Aig_Man_t * pMan, int fVerbose ); extern Aig_Man_t * Abc_NtkToDar( Abc_Ntk_t * pNtk, int fExors, int fRegisters ); + extern void Aig_ManSupportsTest( Aig_Man_t * pMan ); if ( pNtk ) { Aig_Man_t * pAig = Abc_NtkToDar( pNtk, 0, 1 ); // Aig_ManInterRepar( pAig, 1 ); // Aig_ManInterTest( pAig, 1 ); + Aig_ManSupportsTest( pAig ); Aig_ManStop( pAig ); } } |