summaryrefslogtreecommitdiffstats
path: root/src/map/if/ifDsd.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2014-03-11 20:00:55 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2014-03-11 20:00:55 -0700
commit38e2c63e6ec21976bcc6b98a079d04d31744b2ba (patch)
treedb90b7316f939651cf177538d505d3585a7b5db1 /src/map/if/ifDsd.c
parentc97b685c949a1c07fd43e4683e00a030d42865c8 (diff)
downloadabc-38e2c63e6ec21976bcc6b98a079d04d31744b2ba.tar.gz
abc-38e2c63e6ec21976bcc6b98a079d04d31744b2ba.tar.bz2
abc-38e2c63e6ec21976bcc6b98a079d04d31744b2ba.zip
Improvements to print-outs.
Diffstat (limited to 'src/map/if/ifDsd.c')
-rw-r--r--src/map/if/ifDsd.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/map/if/ifDsd.c b/src/map/if/ifDsd.c
index 7668ee54..6953cf4c 100644
--- a/src/map/if/ifDsd.c
+++ b/src/map/if/ifDsd.c
@@ -529,7 +529,9 @@ void If_DsdManPrintDistrib( If_DsdMan_t * p )
void If_DsdManPrint( If_DsdMan_t * p, char * pFileName, int Number, int Support, int fOccurs, int fTtDump, int fVerbose )
{
If_DsdObj_t * pObj;
- int i, DsdMax = 0, CountUsed = 0, CountNonDsdStr = 0, CountMarked = 0;
+ Vec_Int_t * vStructs, * vCounts;
+ int CountUsed = 0, CountNonDsdStr = 0, CountMarked = 0;
+ int i, * pPerm, DsdMax = 0;
FILE * pFile;
pFile = pFileName ? fopen( pFileName, "wb" ) : stdout;
if ( pFileName && pFile == NULL )
@@ -555,6 +557,7 @@ void If_DsdManPrint( If_DsdMan_t * p, char * pFileName, int Number, int Support,
fprintf( pFile, "Memory used for objects = %8.2f MB.\n", 1.0*Mem_FlexReadMemUsage(p->pMem)/(1<<20) );
fprintf( pFile, "Memory used for functions = %8.2f MB.\n", 8.0*(Vec_MemEntrySize(p->vTtMem)+1)*Vec_MemEntryNum(p->vTtMem)/(1<<20) );
fprintf( pFile, "Memory used for hash table = %8.2f MB.\n", 1.0*sizeof(int)*(p->nBins+Vec_IntCap(p->vNexts))/(1<<20) );
+ fprintf( pFile, "Memory used for bound sets = %8.2f MB.\n", (float)Vec_VecMemoryInt((Vec_Vec_t *)p->vTtDecs)/(1<<20) );
fprintf( pFile, "Memory used for array = %8.2f MB.\n", 1.0*sizeof(void *)*Vec_PtrCap(p->vObjs)/(1<<20) );
If_DsdManPrintDistrib( p );
if ( fOccurs )
@@ -575,15 +578,29 @@ void If_DsdManPrint( If_DsdMan_t * p, char * pFileName, int Number, int Support,
// If_DsdManPrintDecs( stdout, p );
if ( !fVerbose )
return;
+ vStructs = Vec_IntAlloc( 1000 );
+ vCounts = Vec_IntAlloc( 1000 );
If_DsdVecForEachObj( p->vObjs, pObj, i )
{
if ( Number && i % Number )
continue;
if ( Support && Support != If_DsdObjSuppSize(pObj) )
continue;
+ Vec_IntPush( vStructs, i );
+ Vec_IntPush( vCounts, -(int)pObj->Count );
+// If_DsdManPrintOne( pFile, p, pObj->Id, NULL, 1 );
+ }
+// fprintf( pFile, "\n" );
+ pPerm = Abc_MergeSortCost( Vec_IntArray(vCounts), Vec_IntSize(vCounts) );
+ for ( i = 0; i < Abc_MinInt(Vec_IntSize(vCounts), 20); i++ )
+ {
+ printf( "%2d : ", i+1 );
+ pObj = If_DsdVecObj( p->vObjs, Vec_IntEntry(vStructs, pPerm[i]) );
If_DsdManPrintOne( pFile, p, pObj->Id, NULL, 1 );
}
- fprintf( pFile, "\n" );
+ ABC_FREE( pPerm );
+ Vec_IntFree( vStructs );
+ Vec_IntFree( vCounts );
if ( pFileName )
fclose( pFile );
}