summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-01-19 12:02:07 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2012-01-19 12:02:07 -0800
commit0111d43b543cd6c02a91bcd93423d45f3f65e5b9 (patch)
tree3d007916ff40454438481a80bbf676f0e45ad749
parent8c62c9db6c41adabff0cc30a4254ad62733dd77f (diff)
downloadabc-0111d43b543cd6c02a91bcd93423d45f3f65e5b9.tar.gz
abc-0111d43b543cd6c02a91bcd93423d45f3f65e5b9.tar.bz2
abc-0111d43b543cd6c02a91bcd93423d45f3f65e5b9.zip
New hierarchy manager.
-rw-r--r--src/base/abc/abcHieNew.c38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/base/abc/abcHieNew.c b/src/base/abc/abcHieNew.c
index 17dc94c9..5eaedfaa 100644
--- a/src/base/abc/abcHieNew.c
+++ b/src/base/abc/abcHieNew.c
@@ -352,6 +352,13 @@ int Au_ManFindNtk( Au_Man_t * p, char * pName )
return i;
return -1;
}
+Au_Ntk_t * Au_ManFindNtkP( Au_Man_t * p, char * pName )
+{
+ int iNtk = Au_ManFindNtk( p, pName );
+ if ( iNtk == -1 )
+ return NULL;
+ return Au_ManNtk( p, iNtk );
+}
void Au_ManAddNtk( Au_Man_t * pMan, Au_Ntk_t * p )
{
assert( Au_ManFindNtk(pMan, Au_NtkName(p)) == -1 );
@@ -1208,6 +1215,7 @@ Gia_Man_t * Au_NtkDeriveFlatGia( Au_Ntk_t * p )
Gia_Man_t * pTemp, * pGia = NULL;
Au_Obj_t * pTerm;
int i;
+ printf( "Collapsing model \"%s\"...\n", Au_NtkName(p) );
Au_NtkCleanCopy( p );
// start the network
pGia = Gia_ManStart( (1<<16) );
@@ -1292,11 +1300,13 @@ Gia_Man_t * Au_ManDeriveTest( Abc_Ntk_t * pRoot )
{
extern Vec_Ptr_t * Abc_NtkCollectHie( Abc_Ntk_t * pNtk );
+// char * pModelName = NULL;
+ char * pModelName = "path_0_r_x_lhs";
Gia_Man_t * pGia = NULL;
Vec_Ptr_t * vOrder, * vModels;
Abc_Ntk_t * pMod;
Au_Man_t * pMan;
- Au_Ntk_t * pNtk;
+ Au_Ntk_t * pNtk = NULL;
int i, clk1, clk2 = 0, clk3 = 0, clk4 = 0, clk = clock();
clk1 = clock();
@@ -1325,10 +1335,17 @@ Gia_Man_t * Au_ManDeriveTest( Abc_Ntk_t * pRoot )
Au_ManPrintStats( pMan );
Au_ManCountThings( pNtk->pMan );
+ // select network
+ if ( pModelName )
+ pNtk = Au_ManFindNtkP( pMan, pModelName );
+ if ( pNtk == NULL )
+ pNtk = (Au_Ntk_t *)pRoot->pData;
+
+
// if ( !Abc_NtkCheckRecursive(pRoot) )
{
clk1 = clock();
- pGia = Au_NtkDeriveFlatGia( (Au_Ntk_t *)pRoot->pData );
+ pGia = Au_NtkDeriveFlatGia( pNtk );
clk3 = clock() - clk1;
// printf( "GIA objects max = %d.\n", pMan->nGiaObjMax );
}
@@ -1361,8 +1378,10 @@ Gia_Man_t * Au_ManDeriveTest( Abc_Ntk_t * pRoot )
***********************************************************************/
Gia_Man_t * Abc_NtkHieCecTest2( char * pFileName, int fVerbose )
{
- Au_Ntk_t * pNtk;
- Gia_Man_t * pGia;
+// char * pModelName = NULL;
+ char * pModelName = "path_0_r_x_lhs";
+ Gia_Man_t * pGia = NULL;
+ Au_Ntk_t * pNtk, * pNtkClp = NULL;
int clk1 = 0, clk2 = 0, clk3 = 0, clk = clock();
// read hierarchical netlist
@@ -1386,11 +1405,18 @@ Gia_Man_t * Abc_NtkHieCecTest2( char * pFileName, int fVerbose )
Au_ManPrintStats( pNtk->pMan );
Au_ManCountThings( pNtk->pMan );
- if ( !Au_NtkCheckRecursive(pNtk) ); // COMMA!!!
+ // select network
+ if ( pModelName )
+ pNtkClp = Au_ManFindNtkP( pNtk->pMan, pModelName );
+ if ( pNtkClp == NULL )
+ pNtkClp = pNtk;
+
+
+ if ( !Au_NtkCheckRecursive(pNtkClp) ); // COMMA!!!
{
clk1 = clock();
- pGia = Au_NtkDeriveFlatGia( pNtk );
+ pGia = Au_NtkDeriveFlatGia( pNtkClp );
clk3 = clock() - clk1;
}