| /**CFile**************************************************************** |
| |
| FileName [bdc.h] |
| |
| SystemName [ABC: Logic synthesis and verification system.] |
| |
| PackageName [Truth-table-based bi-decomposition engine.] |
| |
| Synopsis [External declarations.] |
| |
| Author [Alan Mishchenko] |
| |
| Affiliation [UC Berkeley] |
| |
| Date [Ver. 1.0. Started - January 30, 2007.] |
| |
| Revision [$Id: bdc.h,v 1.00 2007/01/30 00:00:00 alanmi Exp $] |
| |
| ***********************************************************************/ |
| |
| #ifndef ABC__aig__bdc__bdc_h |
| #define ABC__aig__bdc__bdc_h |
| |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// INCLUDES /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// PARAMETERS /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| |
| |
| ABC_NAMESPACE_HEADER_START |
| |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// BASIC TYPES /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| typedef struct Bdc_Fun_t_ Bdc_Fun_t; |
| typedef struct Bdc_Man_t_ Bdc_Man_t; |
| typedef struct Bdc_Par_t_ Bdc_Par_t; |
| struct Bdc_Par_t_ |
| { |
| // general parameters |
| int nVarsMax; // the maximum support |
| int fVerbose; // enable basic stats |
| int fVeryVerbose; // enable detailed stats |
| }; |
| |
| // working with complemented attributes of objects |
| static inline int Bdc_IsComplement( Bdc_Fun_t * p ) { return (int)((ABC_PTRUINT_T)p & (ABC_PTRUINT_T)01); } |
| static inline Bdc_Fun_t * Bdc_Regular( Bdc_Fun_t * p ) { return (Bdc_Fun_t *)((ABC_PTRUINT_T)p & ~(ABC_PTRUINT_T)01); } |
| static inline Bdc_Fun_t * Bdc_Not( Bdc_Fun_t * p ) { return (Bdc_Fun_t *)((ABC_PTRUINT_T)p ^ (ABC_PTRUINT_T)01); } |
| static inline Bdc_Fun_t * Bdc_NotCond( Bdc_Fun_t * p, int c ) { return (Bdc_Fun_t *)((ABC_PTRUINT_T)p ^ (ABC_PTRUINT_T)(c!=0)); } |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// MACRO DEFINITIONS /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// FUNCTION DECLARATIONS /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| /*=== bdcCore.c ==========================================================*/ |
| extern Bdc_Man_t * Bdc_ManAlloc( Bdc_Par_t * pPars ); |
| extern void Bdc_ManFree( Bdc_Man_t * p ); |
| extern void Bdc_ManDecPrint( Bdc_Man_t * p ); |
| extern int Bdc_ManDecompose( Bdc_Man_t * p, unsigned * puFunc, unsigned * puCare, int nVars, Vec_Ptr_t * vDivs, int nNodesMax ); |
| extern Bdc_Fun_t * Bdc_ManFunc( Bdc_Man_t * p, int i ); |
| extern Bdc_Fun_t * Bdc_ManRoot( Bdc_Man_t * p ); |
| extern int Bdc_ManNodeNum( Bdc_Man_t * p ); |
| extern int Bdc_ManAndNum( Bdc_Man_t * p ); |
| extern Bdc_Fun_t * Bdc_FuncFanin0( Bdc_Fun_t * p ); |
| extern Bdc_Fun_t * Bdc_FuncFanin1( Bdc_Fun_t * p ); |
| extern void * Bdc_FuncCopy( Bdc_Fun_t * p ); |
| extern int Bdc_FuncCopyInt( Bdc_Fun_t * p ); |
| extern void Bdc_FuncSetCopy( Bdc_Fun_t * p, void * pCopy ); |
| extern void Bdc_FuncSetCopyInt( Bdc_Fun_t * p, int iCopy ); |
| |
| /*=== working with saved copies ==========================================*/ |
| static inline int Bdc_FunObjCopy( Bdc_Fun_t * pObj ) { return Abc_LitNotCond( Bdc_FuncCopyInt(Bdc_Regular(pObj)), Bdc_IsComplement(pObj) ); } |
| static inline int Bdc_FunFanin0Copy( Bdc_Fun_t * pObj ) { return Bdc_FunObjCopy( Bdc_FuncFanin0(pObj) ); } |
| static inline int Bdc_FunFanin1Copy( Bdc_Fun_t * pObj ) { return Bdc_FunObjCopy( Bdc_FuncFanin1(pObj) ); } |
| |
| |
| ABC_NAMESPACE_HEADER_END |
| |
| |
| |
| #endif |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// END OF FILE /// |
| //////////////////////////////////////////////////////////////////////// |
| |