mirror of
https://github.com/YosysHQ/abc.git
synced 2026-09-03 08:25:20 +02:00
New hierarchy manager.
This commit is contained in:
@@ -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 )
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user