From 9c409addca12e478cff38cb60a37a7ce03b34e61 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Sat, 14 Jan 2012 18:04:47 -0800 Subject: Support computation experiments with different network data-structures. --- src/aig/aig/aigDfs.c | 23 ++++++++++++++++++ src/aig/gia/giaDfs.c | 40 ++++++++++++++++++++++++++++++++ src/base/abc/abcDfs.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+) (limited to 'src') diff --git a/src/aig/aig/aigDfs.c b/src/aig/aig/aigDfs.c index 5a11c9a5..0c2989d8 100644 --- a/src/aig/aig/aigDfs.c +++ b/src/aig/aig/aigDfs.c @@ -753,6 +753,29 @@ int Aig_SupportSize( Aig_Man_t * p, Aig_Obj_t * pObj ) return Counter; } +/**Function************************************************************* + + Synopsis [Counts the support size of the node.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +int Aig_SupportSizeTest( Aig_Man_t * p ) +{ + Aig_Obj_t * pObj; + int i, Counter = 0, clk = clock(); + Aig_ManForEachObj( p, pObj, i ) + if ( Aig_ObjIsNode(pObj) ) + Counter += (Aig_SupportSize(p, pObj) <= 16); + printf( "Nodes with small support %d (out of %d)\n", Counter, Aig_ManNodeNum(p) ); + Abc_PrintTime( 1, "Time", clock() - clk ); + return Counter; +} + /**Function************************************************************* Synopsis [Counts the support size of the node.] diff --git a/src/aig/gia/giaDfs.c b/src/aig/gia/giaDfs.c index 3b591aee..1ec18767 100644 --- a/src/aig/gia/giaDfs.c +++ b/src/aig/gia/giaDfs.c @@ -244,6 +244,46 @@ int Gia_ManSuppSize_rec( Gia_Man_t * p, Gia_Obj_t * pObj ) Gia_ManSuppSize_rec( p, Gia_ObjFanin1(pObj) ); } +/**Function************************************************************* + + Synopsis [Computes support size of the node.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +int Gia_ManSuppSizeOne( Gia_Man_t * p, Gia_Obj_t * pObj ) +{ + Gia_ManIncrementTravId( p ); + return Gia_ManSuppSize_rec( p, pObj ); +} + +/**Function************************************************************* + + Synopsis [Computes support size of the node.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +int Gia_ManSuppSizeTest( Gia_Man_t * p ) +{ + Gia_Obj_t * pObj; + int i, Counter = 0, clk = clock(); + Gia_ManForEachObj( p, pObj, i ) + if ( Gia_ObjIsAnd(pObj) ) + Counter += (Gia_ManSuppSizeOne(p, pObj) <= 16); + printf( "Nodes with small support %d (out of %d)\n", Counter, Gia_ManAndNum(p) ); + Abc_PrintTime( 1, "Time", clock() - clk ); + return Counter; +} + /**Function************************************************************* Synopsis [Collects support nodes.] diff --git a/src/base/abc/abcDfs.c b/src/base/abc/abcDfs.c index 20b361fb..cc001ab6 100644 --- a/src/base/abc/abcDfs.c +++ b/src/base/abc/abcDfs.c @@ -780,6 +780,70 @@ Vec_Ptr_t * Abc_NtkNodeSupport( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNod return vNodes; } +/**Function************************************************************* + + Synopsis [Computes support size of the node.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +int Abc_ObjSuppSize_rec( Abc_Obj_t * pObj ) +{ + Abc_Obj_t * pFanin; + int i, Counter = 0; + if ( Abc_NodeIsTravIdCurrent(pObj) ) + return 0; + Abc_NodeSetTravIdCurrent(pObj); + if ( Abc_ObjIsPi(pObj) ) + return 1; + assert( Abc_ObjIsNode(pObj) || Abc_ObjIsBox(pObj) ); + Abc_ObjForEachFanin( pObj, pFanin, i ) + Counter += Abc_ObjSuppSize_rec( pFanin ); + return Counter; +} +/**Function************************************************************* + + Synopsis [Computes support size of the node.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +int Abc_ObjSuppSize( Abc_Obj_t * pObj ) +{ + Abc_NtkIncrementTravId( Abc_ObjNtk(pObj) ); + return Abc_ObjSuppSize_rec( pObj ); +} +/**Function************************************************************* + + Synopsis [Computes support size of the node.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +int Abc_NtkSuppSizeTest( Abc_Ntk_t * p ) +{ + Abc_Obj_t * pObj; + int i, Counter = 0, clk = clock(); + Abc_NtkForEachObj( p, pObj, i ) + if ( Abc_ObjIsNode(pObj) ) + Counter += (Abc_ObjSuppSize(pObj) <= 16); + printf( "Nodes with small support %d (out of %d)\n", Counter, Abc_NtkNodeNum(p) ); + Abc_PrintTime( 1, "Time", clock() - clk ); + return Counter; +} + /**Function************************************************************* Synopsis [Computes the sum total of supports of all outputs.] -- cgit v1.2.3