diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2011-09-22 09:37:44 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2011-09-22 09:37:44 -0700 |
commit | 8f74276edbe2cf8d62485ab6bd08c68198a1f0e8 (patch) | |
tree | 1418f220748141519e92556fdff6d5d684903f75 /src/aig/gia/giaMan.c | |
parent | 81b040e61c80e7a2d977b5fcf6266ec3460e395c (diff) | |
download | abc-8f74276edbe2cf8d62485ab6bd08c68198a1f0e8.tar.gz abc-8f74276edbe2cf8d62485ab6bd08c68198a1f0e8.tar.bz2 abc-8f74276edbe2cf8d62485ab6bd08c68198a1f0e8.zip |
Initial changes to enable gate-level abstraction.
Diffstat (limited to 'src/aig/gia/giaMan.c')
-rw-r--r-- | src/aig/gia/giaMan.c | 56 |
1 files changed, 39 insertions, 17 deletions
diff --git a/src/aig/gia/giaMan.c b/src/aig/gia/giaMan.c index dc0f926c..ab0c9bc1 100644 --- a/src/aig/gia/giaMan.c +++ b/src/aig/gia/giaMan.c @@ -81,6 +81,7 @@ void Gia_ManStop( Gia_Man_t * p ) Vec_IntFreeP( &p->vUserPoIds ); Vec_IntFreeP( &p->vUserFfIds ); Vec_IntFreeP( &p->vFlopClasses ); + Vec_IntFreeP( &p->vGateClasses ); Vec_IntFreeP( &p->vLevels ); Vec_IntFreeP( &p->vTruths ); Vec_IntFree( p->vCis ); @@ -166,30 +167,21 @@ void Gia_ManPrintClasses_old( Gia_Man_t * p ) SeeAlso [] ***********************************************************************/ -void Gia_ManPrintClasses( Gia_Man_t * p ) +void Gia_ManPrintFlopClasses( Gia_Man_t * p ) { - int i, Class, Counter0, Counter1; + int Counter0, Counter1; if ( p->vFlopClasses == NULL ) return; if ( Vec_IntSize(p->vFlopClasses) != Gia_ManRegNum(p) ) { - printf( "Gia_ManPrintClasses(): The number of flop map entries differs from the number of flops.\n" ); + printf( "Gia_ManPrintFlopClasses(): The number of flop map entries differs from the number of flops.\n" ); return; } - printf( "Register classes: " ); - // count zero entries - Counter0 = 0; - Vec_IntForEachEntry( p->vFlopClasses, Class, i ) - Counter0 += (Class == 0); - printf( "0=%d ", Counter0 ); - // count one entries - Counter1 = 0; - Vec_IntForEachEntry( p->vFlopClasses, Class, i ) - Counter1 += (Class == 1); - printf( "1=%d ", Counter1 ); - // add comment + Counter0 = Vec_IntCountEntry( p->vFlopClasses, 0 ); + Counter1 = Vec_IntCountEntry( p->vFlopClasses, 1 ); + printf( "Flop-level abstraction: Excluded FFs = %d Included FFs = %d ", Counter0, Counter1 ); if ( Counter0 + Counter1 < Gia_ManRegNum(p) ) - printf( "there are other classes..." ); + printf( "and there are other FF classes..." ); printf( "\n" ); } @@ -204,6 +196,35 @@ void Gia_ManPrintClasses( Gia_Man_t * p ) SeeAlso [] ***********************************************************************/ +void Gia_ManPrintGateClasses( Gia_Man_t * p ) +{ + int i, Counter[5]; + if ( p->vGateClasses == NULL ) + return; + if ( Vec_IntSize(p->vGateClasses) != Gia_ManObjNum(p) ) + { + printf( "Gia_ManPrintGateClasses(): The number of flop map entries differs from the number of flops.\n" ); + return; + } + for ( i = 0; i < 5; i++ ) + Counter[i] = Vec_IntCountEntry( p->vGateClasses, i ); + printf( "Gate-level abstraction: PI = %d PPI = %d FF = %d AND = %d Unused = %d\n", + Counter[1], Counter[2], Counter[3], Counter[4], Counter[0] ); + if ( Counter[0] + Counter[1] + Counter[2] + Counter[3] + Counter[4] != Gia_ManObjNum(p) ) + printf( "Gia_ManPrintGateClasses(): Mismatch in the object count.\n" ); +} + +/**Function************************************************************* + + Synopsis [Prints stats for the AIG.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ void Gia_ManPrintPlacement( Gia_Man_t * p ) { int i, nFixed = 0, nUndef = 0; @@ -261,7 +282,8 @@ void Gia_ManPrintStats( Gia_Man_t * p, int fSwitch ) if ( p->pPlacement ) Gia_ManPrintPlacement( p ); // print register classes - Gia_ManPrintClasses( p ); + Gia_ManPrintFlopClasses( p ); + Gia_ManPrintGateClasses( p ); } /**Function************************************************************* |