diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2008-01-26 08:01:00 -0800 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2008-01-26 08:01:00 -0800 |
commit | 6537f941887b06e588d3acfc97b5fdf48875cc4e (patch) | |
tree | 61e11fbdd1bbcb781cf05f91f5095f559a58ab25 /src/aig/dar/darCore.c | |
parent | 6c68b76bff33daa7cd94b78c51bdd4cdaf65059c (diff) | |
download | abc-6537f941887b06e588d3acfc97b5fdf48875cc4e.tar.gz abc-6537f941887b06e588d3acfc97b5fdf48875cc4e.tar.bz2 abc-6537f941887b06e588d3acfc97b5fdf48875cc4e.zip |
Version abc80126
Diffstat (limited to 'src/aig/dar/darCore.c')
-rw-r--r-- | src/aig/dar/darCore.c | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/src/aig/dar/darCore.c b/src/aig/dar/darCore.c index f4041dd1..141d9b79 100644 --- a/src/aig/dar/darCore.c +++ b/src/aig/dar/darCore.c @@ -195,6 +195,34 @@ p->timeOther = p->timeTotal - p->timeCuts - p->timeEval; /**Function************************************************************* + Synopsis [Computes the total number of cuts.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +int Dar_ManCutCount( Aig_Man_t * pAig, int * pnCutsK ) +{ + Dar_Cut_t * pCut; + Aig_Obj_t * pObj; + int i, k, nCuts = 0, nCutsK = 0; + Aig_ManForEachNode( pAig, pObj, i ) + Dar_ObjForEachCut( pObj, pCut, k ) + { + nCuts++; + if ( pCut->nLeaves == 4 ) + nCutsK++; + } + if ( pnCutsK ) + *pnCutsK = nCutsK; + return nCuts; +} + +/**Function************************************************************* + Synopsis [] Description [] @@ -204,13 +232,13 @@ p->timeOther = p->timeTotal - p->timeCuts - p->timeEval; SeeAlso [] ***********************************************************************/ -Aig_MmFixed_t * Dar_ManComputeCuts( Aig_Man_t * pAig, int nCutsMax ) +Aig_MmFixed_t * Dar_ManComputeCuts( Aig_Man_t * pAig, int nCutsMax, int fVerbose ) { Dar_Man_t * p; Dar_RwrPar_t Pars, * pPars = &Pars; Aig_Obj_t * pObj; Aig_MmFixed_t * pMemCuts; - int i, nNodes; + int i, nNodes, clk = clock(); // remove dangling nodes if ( (nNodes = Aig_ManCleanup( pAig )) ) { @@ -226,6 +254,23 @@ Aig_MmFixed_t * Dar_ManComputeCuts( Aig_Man_t * pAig, int nCutsMax ) // compute cuts for each nodes in the topological order Aig_ManForEachNode( pAig, pObj, i ) Dar_ObjComputeCuts( p, pObj ); + // print verbose stats + if ( fVerbose ) + { +// Aig_Obj_t * pObj; + int nCuts, nCutsK;//, i; + nCuts = Dar_ManCutCount( pAig, &nCutsK ); + printf( "Nodes = %6d. Total cuts = %6d. 4-input cuts = %6d.\n", + Aig_ManObjNum(pAig), nCuts, nCutsK ); + printf( "Cut size = %2d. Truth size = %2d. Total mem = %5.2f Mb ", + sizeof(Dar_Cut_t), 4, 1.0*Aig_MmFixedReadMemUsage(p->pMemCuts)/(1<<20) ); + PRT( "Runtime", clock() - clk ); +/* + Aig_ManForEachNode( pAig, pObj, i ) + if ( i % 300 == 0 ) + Dar_ObjCutPrint( pAig, pObj ); +*/ + } // free the cuts pMemCuts = p->pMemCuts; p->pMemCuts = NULL; |