Commit b7ba9aa8 by Alan Mishchenko

New hierarchy manager.

parent 37b8a190
......@@ -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
......
......@@ -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 );
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment