summaryrefslogtreecommitdiffstats
path: root/src/aig/gia
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-02-24 09:27:25 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2013-02-24 09:27:25 -0800
commit69dd1337b03cb8817e54d41b18e96a7c01f64966 (patch)
treed2753ed2f2bf45a9e151f0395dbe11f8d1a62233 /src/aig/gia
parentfdba646b64d972bfb1830c6fc269bc8e0b9d93d0 (diff)
downloadabc-69dd1337b03cb8817e54d41b18e96a7c01f64966.tar.gz
abc-69dd1337b03cb8817e54d41b18e96a7c01f64966.tar.bz2
abc-69dd1337b03cb8817e54d41b18e96a7c01f64966.zip
Started PO partitioning command.
Diffstat (limited to 'src/aig/gia')
-rw-r--r--src/aig/gia/giaCone.c120
-rw-r--r--src/aig/gia/module.make1
2 files changed, 121 insertions, 0 deletions
diff --git a/src/aig/gia/giaCone.c b/src/aig/gia/giaCone.c
new file mode 100644
index 00000000..0b1b55f0
--- /dev/null
+++ b/src/aig/gia/giaCone.c
@@ -0,0 +1,120 @@
+/**CFile****************************************************************
+
+ FileName [giaCone.c]
+
+ SystemName [ABC: Logic synthesis and verification system.]
+
+ PackageName [Scalable AIG package.]
+
+ Synopsis []
+
+ Author [Alan Mishchenko]
+
+ Affiliation [UC Berkeley]
+
+ Date [Ver. 1.0. Started - June 20, 2005.]
+
+ Revision [$Id: giaCone.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
+
+***********************************************************************/
+
+#include "gia.h"
+
+ABC_NAMESPACE_IMPL_START
+
+
+////////////////////////////////////////////////////////////////////////
+/// DECLARATIONS ///
+////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////
+/// FUNCTION DEFINITIONS ///
+////////////////////////////////////////////////////////////////////////
+
+/**Function*************************************************************
+
+ Synopsis []
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+int Gia_ManConeMark_rec( Gia_Man_t * p, Gia_Obj_t * pObj, Vec_Int_t * vRoots, int nLimit )
+{
+ if ( Gia_ObjIsTravIdCurrent(p, pObj) )
+ return 0;
+ Gia_ObjSetTravIdCurrent(p, pObj);
+ if ( Gia_ObjIsAnd(pObj) )
+ {
+ if ( Gia_ManConeMark_rec( p, Gia_ObjFanin0(pObj), vRoots, nLimit ) )
+ return 1;
+ if ( Gia_ManConeMark_rec( p, Gia_ObjFanin1(pObj), vRoots, nLimit ) )
+ return 1;
+ }
+ else if ( Gia_ObjIsCo(pObj) )
+ {
+ if ( Gia_ManConeMark_rec( p, Gia_ObjFanin0(pObj), vRoots, nLimit ) )
+ return 1;
+ }
+ else if ( Gia_ObjIsRo(p, pObj) )
+ Vec_IntPush( vRoots, Gia_ObjId(p, Gia_ObjRoToRi(p, pObj)) );
+ else if ( Gia_ObjIsPi(p, pObj) )
+ {}
+ else assert( 0 );
+ return (int)(Vec_IntSize(vRoots) > nLimit);
+}
+int Gia_ManConeMark( Gia_Man_t * p, int iOut, int Limit )
+{
+ Vec_Int_t * vRoots;
+ Gia_Obj_t * pObj;
+ int i, RetValue;
+ // start the outputs
+ pObj = Gia_ManPo( p, iOut );
+ vRoots = Vec_IntAlloc( 100 );
+ Vec_IntPush( vRoots, Gia_ObjId(p, pObj) );
+ // mark internal nodes
+ Gia_ManIncrementTravId( p );
+ Gia_ObjSetTravIdCurrent( p, Gia_ManConst0(p) );
+ Gia_ManForEachObjVec( vRoots, p, pObj, i )
+ if ( Gia_ManConeMark_rec( p, pObj, vRoots, Limit ) )
+ break;
+ RetValue = Vec_IntSize( vRoots ) - 1;
+ Vec_IntFree( vRoots );
+ return RetValue;
+}
+
+/**Function*************************************************************
+
+ Synopsis []
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+Gia_Man_t * Gia_ManConeExtract( Gia_Man_t * p, int iOut, int nDelta, int nOutsMin, int nOutsMax )
+{
+ int i, Count = 0;
+ // mark nodes belonging to output 'iOut'
+ for ( i = 0; i < Gia_ManPoNum(p); i++ )
+ Count += (Gia_ManConeMark(p, i, 10000) < 10000);
+ // printf( "%d ", Gia_ManConeMark(p, i, 1000) );
+ printf( "%d out of %d\n", Count, Gia_ManPoNum(p) );
+
+ // add other outputs as long as they are nDelta away
+
+ return NULL;
+}
+
+////////////////////////////////////////////////////////////////////////
+/// END OF FILE ///
+////////////////////////////////////////////////////////////////////////
+
+
+ABC_NAMESPACE_IMPL_END
+
diff --git a/src/aig/gia/module.make b/src/aig/gia/module.make
index a8e3e9ee..3fbd5e40 100644
--- a/src/aig/gia/module.make
+++ b/src/aig/gia/module.make
@@ -7,6 +7,7 @@ SRC += src/aig/gia/gia.c \
src/aig/gia/giaCex.c \
src/aig/gia/giaChoice.c \
src/aig/gia/giaCof.c \
+ src/aig/gia/giaCone.c \
src/aig/gia/giaCSatOld.c \
src/aig/gia/giaCSat.c \
src/aig/gia/giaCTas.c \