diff options
Diffstat (limited to 'src/base')
-rw-r--r-- | src/base/abc/abc.h | 753 | ||||
-rw-r--r-- | src/base/abci/abc.c | 302 | ||||
-rw-r--r-- | src/base/abci/abcDar.c | 65 | ||||
-rw-r--r-- | src/base/abci/abcMiter.c | 2 | ||||
-rw-r--r-- | src/base/abci/abcVerify.c | 6 | ||||
-rw-r--r-- | src/base/main/main.h | 86 | ||||
-rw-r--r-- | src/base/main/mainInt.h | 34 |
7 files changed, 818 insertions, 430 deletions
diff --git a/src/base/abc/abc.h b/src/base/abc/abc.h index 15043266..0cafa314 100644 --- a/src/base/abc/abc.h +++ b/src/base/abc/abc.h @@ -14,7 +14,7 @@ Date [Ver. 1.0. Started - June 20, 2005.] - Revision [$Id: abc.h,v 1.00 2005/06/20 00:00:00 alanmi Exp $] + Revision [$Id: abc.h,v 1.1 2008/05/14 22:13:11 wudenni Exp $] ***********************************************************************/ @@ -29,6 +29,8 @@ extern "C" { /// INCLUDES /// //////////////////////////////////////////////////////////////////////// +#pragma warning( disable : 4273 ) + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -224,6 +226,17 @@ struct Abc_Lib_t_ /// MACRO DEFINITIONS /// //////////////////////////////////////////////////////////////////////// +#ifdef WIN32 +#define DLLEXPORT __declspec(dllexport) +#define DLLIMPORT __declspec(dllimport) +#else /* defined(WIN32) */ +#define DLLIMPORT +#endif /* defined(WIN32) */ + +#ifndef ABC_DLL +#define ABC_DLL DLLIMPORT +#endif + // maximum/minimum operators #define ABC_MIN(a,b) (((a) < (b))? (a) : (b)) #define ABC_MAX(a,b) (((a) > (b))? (a) : (b)) @@ -307,7 +320,7 @@ static inline bool Abc_NtkIsComb( Abc_Ntk_t * pNtk ) { return Ab static inline bool Abc_NtkHasOnlyLatchBoxes(Abc_Ntk_t * pNtk ){ return Abc_NtkLatchNum(pNtk) == Abc_NtkBoxNum(pNtk); } // creating simple objects -extern Abc_Obj_t * Abc_NtkCreateObj( Abc_Ntk_t * pNtk, Abc_ObjType_t Type ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCreateObj( Abc_Ntk_t * pNtk, Abc_ObjType_t Type ); static inline Abc_Obj_t * Abc_NtkCreatePi( Abc_Ntk_t * pNtk ) { return Abc_NtkCreateObj( pNtk, ABC_OBJ_PI ); } static inline Abc_Obj_t * Abc_NtkCreatePo( Abc_Ntk_t * pNtk ) { return Abc_NtkCreateObj( pNtk, ABC_OBJ_PO ); } static inline Abc_Obj_t * Abc_NtkCreateBi( Abc_Ntk_t * pNtk ) { return Abc_NtkCreateObj( pNtk, ABC_OBJ_BI ); } @@ -508,410 +521,410 @@ static inline void Abc_ObjSetMvVar( Abc_Obj_t * pObj, void * pV) { Vec_At //////////////////////////////////////////////////////////////////////// /*=== abcAig.c ==========================================================*/ -extern Abc_Aig_t * Abc_AigAlloc( Abc_Ntk_t * pNtk ); -extern void Abc_AigFree( Abc_Aig_t * pMan ); -extern int Abc_AigCleanup( Abc_Aig_t * pMan ); -extern bool Abc_AigCheck( Abc_Aig_t * pMan ); -extern int Abc_AigLevel( Abc_Ntk_t * pNtk ); -extern Abc_Obj_t * Abc_AigConst1( Abc_Ntk_t * pNtk ); -extern Abc_Obj_t * Abc_AigAnd( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 ); -extern Abc_Obj_t * Abc_AigAndLookup( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 ); -extern Abc_Obj_t * Abc_AigXorLookup( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1, int * pType ); -extern Abc_Obj_t * Abc_AigMuxLookup( Abc_Aig_t * pMan, Abc_Obj_t * pC, Abc_Obj_t * pT, Abc_Obj_t * pE, int * pType ); -extern Abc_Obj_t * Abc_AigOr( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 ); -extern Abc_Obj_t * Abc_AigXor( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 ); -extern Abc_Obj_t * Abc_AigMux( Abc_Aig_t * pMan, Abc_Obj_t * pC, Abc_Obj_t * p1, Abc_Obj_t * p0 ); -extern Abc_Obj_t * Abc_AigMiter( Abc_Aig_t * pMan, Vec_Ptr_t * vPairs, int fImplic ); -extern void Abc_AigReplace( Abc_Aig_t * pMan, Abc_Obj_t * pOld, Abc_Obj_t * pNew, bool fUpdateLevel ); -extern void Abc_AigDeleteNode( Abc_Aig_t * pMan, Abc_Obj_t * pOld ); -extern void Abc_AigRehash( Abc_Aig_t * pMan ); -extern bool Abc_AigNodeHasComplFanoutEdge( Abc_Obj_t * pNode ); -extern bool Abc_AigNodeHasComplFanoutEdgeTrav( Abc_Obj_t * pNode ); -extern void Abc_AigPrintNode( Abc_Obj_t * pNode ); -extern bool Abc_AigNodeIsAcyclic( Abc_Obj_t * pNode, Abc_Obj_t * pRoot ); -extern void Abc_AigCheckFaninOrder( Abc_Aig_t * pMan ); -extern void Abc_AigSetNodePhases( Abc_Ntk_t * pNtk ); -extern Vec_Ptr_t * Abc_AigUpdateStart( Abc_Aig_t * pMan, Vec_Ptr_t ** pvUpdatedNets ); -extern void Abc_AigUpdateStop( Abc_Aig_t * pMan ); -extern void Abc_AigUpdateReset( Abc_Aig_t * pMan ); +extern ABC_DLL Abc_Aig_t * Abc_AigAlloc( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_AigFree( Abc_Aig_t * pMan ); +extern ABC_DLL int Abc_AigCleanup( Abc_Aig_t * pMan ); +extern ABC_DLL bool Abc_AigCheck( Abc_Aig_t * pMan ); +extern ABC_DLL int Abc_AigLevel( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Obj_t * Abc_AigConst1( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Obj_t * Abc_AigAnd( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 ); +extern ABC_DLL Abc_Obj_t * Abc_AigAndLookup( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 ); +extern ABC_DLL Abc_Obj_t * Abc_AigXorLookup( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1, int * pType ); +extern ABC_DLL Abc_Obj_t * Abc_AigMuxLookup( Abc_Aig_t * pMan, Abc_Obj_t * pC, Abc_Obj_t * pT, Abc_Obj_t * pE, int * pType ); +extern ABC_DLL Abc_Obj_t * Abc_AigOr( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 ); +extern ABC_DLL Abc_Obj_t * Abc_AigXor( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 ); +extern ABC_DLL Abc_Obj_t * Abc_AigMux( Abc_Aig_t * pMan, Abc_Obj_t * pC, Abc_Obj_t * p1, Abc_Obj_t * p0 ); +extern ABC_DLL Abc_Obj_t * Abc_AigMiter( Abc_Aig_t * pMan, Vec_Ptr_t * vPairs, int fImplic ); +extern ABC_DLL void Abc_AigReplace( Abc_Aig_t * pMan, Abc_Obj_t * pOld, Abc_Obj_t * pNew, bool fUpdateLevel ); +extern ABC_DLL void Abc_AigDeleteNode( Abc_Aig_t * pMan, Abc_Obj_t * pOld ); +extern ABC_DLL void Abc_AigRehash( Abc_Aig_t * pMan ); +extern ABC_DLL bool Abc_AigNodeHasComplFanoutEdge( Abc_Obj_t * pNode ); +extern ABC_DLL bool Abc_AigNodeHasComplFanoutEdgeTrav( Abc_Obj_t * pNode ); +extern ABC_DLL void Abc_AigPrintNode( Abc_Obj_t * pNode ); +extern ABC_DLL bool Abc_AigNodeIsAcyclic( Abc_Obj_t * pNode, Abc_Obj_t * pRoot ); +extern ABC_DLL void Abc_AigCheckFaninOrder( Abc_Aig_t * pMan ); +extern ABC_DLL void Abc_AigSetNodePhases( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Ptr_t * Abc_AigUpdateStart( Abc_Aig_t * pMan, Vec_Ptr_t ** pvUpdatedNets ); +extern ABC_DLL void Abc_AigUpdateStop( Abc_Aig_t * pMan ); +extern ABC_DLL void Abc_AigUpdateReset( Abc_Aig_t * pMan ); /*=== abcAttach.c ==========================================================*/ -extern int Abc_NtkAttach( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkAttach( Abc_Ntk_t * pNtk ); /*=== abcBlifMv.c ==========================================================*/ -extern void Abc_NtkStartMvVars( Abc_Ntk_t * pNtk ); -extern void Abc_NtkFreeMvVars( Abc_Ntk_t * pNtk ); -extern void Abc_NtkSetMvVarValues( Abc_Obj_t * pObj, int nValues ); -extern Abc_Ntk_t * Abc_NtkStrashBlifMv( Abc_Ntk_t * pNtk ); -extern Abc_Ntk_t * Abc_NtkInsertBlifMv( Abc_Ntk_t * pNtkBase, Abc_Ntk_t * pNtkLogic ); -extern int Abc_NtkConvertToBlifMv( Abc_Ntk_t * pNtk ); -extern char * Abc_NodeConvertSopToMvSop( int nVars, Vec_Int_t * vSop0, Vec_Int_t * vSop1 ); -extern int Abc_NodeEvalMvCost( int nVars, Vec_Int_t * vSop0, Vec_Int_t * vSop1 ); +extern ABC_DLL void Abc_NtkStartMvVars( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkFreeMvVars( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkSetMvVarValues( Abc_Obj_t * pObj, int nValues ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkStrashBlifMv( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkInsertBlifMv( Abc_Ntk_t * pNtkBase, Abc_Ntk_t * pNtkLogic ); +extern ABC_DLL int Abc_NtkConvertToBlifMv( Abc_Ntk_t * pNtk ); +extern ABC_DLL char * Abc_NodeConvertSopToMvSop( int nVars, Vec_Int_t * vSop0, Vec_Int_t * vSop1 ); +extern ABC_DLL int Abc_NodeEvalMvCost( int nVars, Vec_Int_t * vSop0, Vec_Int_t * vSop1 ); /*=== abcBalance.c ==========================================================*/ -extern Abc_Ntk_t * Abc_NtkBalance( Abc_Ntk_t * pNtk, bool fDuplicate, bool fSelective, bool fUpdateLevel ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkBalance( Abc_Ntk_t * pNtk, bool fDuplicate, bool fSelective, bool fUpdateLevel ); /*=== abcCheck.c ==========================================================*/ -extern bool Abc_NtkCheck( Abc_Ntk_t * pNtk ); -extern bool Abc_NtkCheckRead( Abc_Ntk_t * pNtk ); -extern bool Abc_NtkDoCheck( Abc_Ntk_t * pNtk ); -extern bool Abc_NtkCheckObj( Abc_Ntk_t * pNtk, Abc_Obj_t * pObj ); -extern bool Abc_NtkCompareSignals( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fOnlyPis, int fComb ); -extern int Abc_NtkIsAcyclicHierarchy( Abc_Ntk_t * pNtk ); -extern int Abc_NtkCheckUniqueCiNames( Abc_Ntk_t * pNtk ); -extern int Abc_NtkCheckUniqueCoNames( Abc_Ntk_t * pNtk ); -extern int Abc_NtkCheckUniqueCioNames( Abc_Ntk_t * pNtk ); +extern ABC_DLL bool Abc_NtkCheck( Abc_Ntk_t * pNtk ); +extern ABC_DLL bool Abc_NtkCheckRead( Abc_Ntk_t * pNtk ); +extern ABC_DLL bool Abc_NtkDoCheck( Abc_Ntk_t * pNtk ); +extern ABC_DLL bool Abc_NtkCheckObj( Abc_Ntk_t * pNtk, Abc_Obj_t * pObj ); +extern ABC_DLL bool Abc_NtkCompareSignals( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fOnlyPis, int fComb ); +extern ABC_DLL int Abc_NtkIsAcyclicHierarchy( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkCheckUniqueCiNames( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkCheckUniqueCoNames( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkCheckUniqueCioNames( Abc_Ntk_t * pNtk ); /*=== abcCollapse.c ==========================================================*/ -extern Abc_Ntk_t * Abc_NtkCollapse( Abc_Ntk_t * pNtk, int fBddSizeMax, int fDualRail, int fReorder, int fVerbose ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkCollapse( Abc_Ntk_t * pNtk, int fBddSizeMax, int fDualRail, int fReorder, int fVerbose ); /*=== abcCut.c ==========================================================*/ -extern void * Abc_NodeGetCutsRecursive( void * p, Abc_Obj_t * pObj, int fDag, int fTree ); -extern void * Abc_NodeGetCuts( void * p, Abc_Obj_t * pObj, int fDag, int fTree ); -extern void Abc_NodeGetCutsSeq( void * p, Abc_Obj_t * pObj, int fFirst ); -extern void * Abc_NodeReadCuts( void * p, Abc_Obj_t * pObj ); -extern void Abc_NodeFreeCuts( void * p, Abc_Obj_t * pObj ); +extern ABC_DLL void * Abc_NodeGetCutsRecursive( void * p, Abc_Obj_t * pObj, int fDag, int fTree ); +extern ABC_DLL void * Abc_NodeGetCuts( void * p, Abc_Obj_t * pObj, int fDag, int fTree ); +extern ABC_DLL void Abc_NodeGetCutsSeq( void * p, Abc_Obj_t * pObj, int fFirst ); +extern ABC_DLL void * Abc_NodeReadCuts( void * p, Abc_Obj_t * pObj ); +extern ABC_DLL void Abc_NodeFreeCuts( void * p, Abc_Obj_t * pObj ); /*=== abcDelay.c ==========================================================*/ -extern float Abc_NtkDelayTraceLut( Abc_Ntk_t * pNtk, int fUseLutLib ); +extern ABC_DLL float Abc_NtkDelayTraceLut( Abc_Ntk_t * pNtk, int fUseLutLib ); /*=== abcDfs.c ==========================================================*/ -extern Vec_Ptr_t * Abc_NtkDfs( Abc_Ntk_t * pNtk, int fCollectAll ); -extern Vec_Ptr_t * Abc_NtkDfsNodes( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes ); -extern Vec_Ptr_t * Abc_NtkDfsReverse( Abc_Ntk_t * pNtk ); -extern Vec_Ptr_t * Abc_NtkDfsReverseNodes( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes ); -extern Vec_Ptr_t * Abc_NtkDfsReverseNodesContained( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes ); -extern Vec_Ptr_t * Abc_NtkDfsSeq( Abc_Ntk_t * pNtk ); -extern Vec_Ptr_t * Abc_NtkDfsSeqReverse( Abc_Ntk_t * pNtk ); -extern Vec_Ptr_t * Abc_NtkDfsIter( Abc_Ntk_t * pNtk, int fCollectAll ); -extern Vec_Ptr_t * Abc_NtkDfsHie( Abc_Ntk_t * pNtk, int fCollectAll ); -extern bool Abc_NtkIsDfsOrdered( Abc_Ntk_t * pNtk ); -extern Vec_Ptr_t * Abc_NtkSupport( Abc_Ntk_t * pNtk ); -extern Vec_Ptr_t * Abc_NtkNodeSupport( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes ); -extern Vec_Ptr_t * Abc_AigDfs( Abc_Ntk_t * pNtk, int fCollectAll, int fCollectCos ); -extern Vec_Vec_t * Abc_DfsLevelized( Abc_Obj_t * pNode, bool fTfi ); -extern Vec_Vec_t * Abc_NtkLevelize( Abc_Ntk_t * pNtk ); -extern int Abc_NtkLevel( Abc_Ntk_t * pNtk ); -extern int Abc_NtkLevelReverse( Abc_Ntk_t * pNtk ); -extern bool Abc_NtkIsAcyclic( Abc_Ntk_t * pNtk ); -extern Vec_Ptr_t * Abc_AigGetLevelizedOrder( Abc_Ntk_t * pNtk, int fCollectCis ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkDfs( Abc_Ntk_t * pNtk, int fCollectAll ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkDfsNodes( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkDfsReverse( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkDfsReverseNodes( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkDfsReverseNodesContained( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkDfsSeq( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkDfsSeqReverse( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkDfsIter( Abc_Ntk_t * pNtk, int fCollectAll ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkDfsHie( Abc_Ntk_t * pNtk, int fCollectAll ); +extern ABC_DLL bool Abc_NtkIsDfsOrdered( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkSupport( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkNodeSupport( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes ); +extern ABC_DLL Vec_Ptr_t * Abc_AigDfs( Abc_Ntk_t * pNtk, int fCollectAll, int fCollectCos ); +extern ABC_DLL Vec_Vec_t * Abc_DfsLevelized( Abc_Obj_t * pNode, bool fTfi ); +extern ABC_DLL Vec_Vec_t * Abc_NtkLevelize( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkLevel( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkLevelReverse( Abc_Ntk_t * pNtk ); +extern ABC_DLL bool Abc_NtkIsAcyclic( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Ptr_t * Abc_AigGetLevelizedOrder( Abc_Ntk_t * pNtk, int fCollectCis ); /*=== abcFanio.c ==========================================================*/ -extern void Abc_ObjAddFanin( Abc_Obj_t * pObj, Abc_Obj_t * pFanin ); -extern void Abc_ObjDeleteFanin( Abc_Obj_t * pObj, Abc_Obj_t * pFanin ); -extern void Abc_ObjRemoveFanins( Abc_Obj_t * pObj ); -extern void Abc_ObjPatchFanin( Abc_Obj_t * pObj, Abc_Obj_t * pFaninOld, Abc_Obj_t * pFaninNew ); -extern Abc_Obj_t * Abc_ObjInsertBetween( Abc_Obj_t * pNodeIn, Abc_Obj_t * pNodeOut, Abc_ObjType_t Type ); -extern void Abc_ObjTransferFanout( Abc_Obj_t * pObjOld, Abc_Obj_t * pObjNew ); -extern void Abc_ObjReplace( Abc_Obj_t * pObjOld, Abc_Obj_t * pObjNew ); -extern int Abc_ObjFanoutFaninNum( Abc_Obj_t * pFanout, Abc_Obj_t * pFanin ); +extern ABC_DLL void Abc_ObjAddFanin( Abc_Obj_t * pObj, Abc_Obj_t * pFanin ); +extern ABC_DLL void Abc_ObjDeleteFanin( Abc_Obj_t * pObj, Abc_Obj_t * pFanin ); +extern ABC_DLL void Abc_ObjRemoveFanins( Abc_Obj_t * pObj ); +extern ABC_DLL void Abc_ObjPatchFanin( Abc_Obj_t * pObj, Abc_Obj_t * pFaninOld, Abc_Obj_t * pFaninNew ); +extern ABC_DLL Abc_Obj_t * Abc_ObjInsertBetween( Abc_Obj_t * pNodeIn, Abc_Obj_t * pNodeOut, Abc_ObjType_t Type ); +extern ABC_DLL void Abc_ObjTransferFanout( Abc_Obj_t * pObjOld, Abc_Obj_t * pObjNew ); +extern ABC_DLL void Abc_ObjReplace( Abc_Obj_t * pObjOld, Abc_Obj_t * pObjNew ); +extern ABC_DLL int Abc_ObjFanoutFaninNum( Abc_Obj_t * pFanout, Abc_Obj_t * pFanin ); /*=== abcFraig.c ==========================================================*/ -extern Abc_Ntk_t * Abc_NtkFraig( Abc_Ntk_t * pNtk, void * pParams, int fAllNodes, int fExdc ); -extern void * Abc_NtkToFraig( Abc_Ntk_t * pNtk, void * pParams, int fAllNodes, int fExdc ); -extern Abc_Ntk_t * Abc_NtkFraigTrust( Abc_Ntk_t * pNtk ); -extern int Abc_NtkFraigStore( Abc_Ntk_t * pNtk ); -extern Abc_Ntk_t * Abc_NtkFraigRestore(); -extern void Abc_NtkFraigStoreClean(); +extern ABC_DLL Abc_Ntk_t * Abc_NtkFraig( Abc_Ntk_t * pNtk, void * pParams, int fAllNodes, int fExdc ); +extern ABC_DLL void * Abc_NtkToFraig( Abc_Ntk_t * pNtk, void * pParams, int fAllNodes, int fExdc ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkFraigTrust( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkFraigStore( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkFraigRestore(); +extern ABC_DLL void Abc_NtkFraigStoreClean(); /*=== abcFunc.c ==========================================================*/ -extern int Abc_NtkSopToBdd( Abc_Ntk_t * pNtk ); -extern DdNode * Abc_ConvertSopToBdd( DdManager * dd, char * pSop ); -extern char * Abc_ConvertBddToSop( Extra_MmFlex_t * pMan, DdManager * dd, DdNode * bFuncOn, DdNode * bFuncOnDc, int nFanins, int fAllPrimes, Vec_Str_t * vCube, int fMode ); -extern int Abc_NtkBddToSop( Abc_Ntk_t * pNtk, int fDirect ); -extern void Abc_NodeBddToCnf( Abc_Obj_t * pNode, Extra_MmFlex_t * pMmMan, Vec_Str_t * vCube, int fAllPrimes, char ** ppSop0, char ** ppSop1 ); -extern int Abc_CountZddCubes( DdManager * dd, DdNode * zCover ); -extern void Abc_NtkLogicMakeDirectSops( Abc_Ntk_t * pNtk ); -extern int Abc_NtkSopToAig( Abc_Ntk_t * pNtk ); -extern int Abc_NtkAigToBdd( Abc_Ntk_t * pNtk ); -extern int Abc_NtkMapToSop( Abc_Ntk_t * pNtk ); -extern int Abc_NtkToSop( Abc_Ntk_t * pNtk, int fDirect ); -extern int Abc_NtkToBdd( Abc_Ntk_t * pNtk ); -extern int Abc_NtkToAig( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkSopToBdd( Abc_Ntk_t * pNtk ); +extern ABC_DLL DdNode * Abc_ConvertSopToBdd( DdManager * dd, char * pSop ); +extern ABC_DLL char * Abc_ConvertBddToSop( Extra_MmFlex_t * pMan, DdManager * dd, DdNode * bFuncOn, DdNode * bFuncOnDc, int nFanins, int fAllPrimes, Vec_Str_t * vCube, int fMode ); +extern ABC_DLL int Abc_NtkBddToSop( Abc_Ntk_t * pNtk, int fDirect ); +extern ABC_DLL void Abc_NodeBddToCnf( Abc_Obj_t * pNode, Extra_MmFlex_t * pMmMan, Vec_Str_t * vCube, int fAllPrimes, char ** ppSop0, char ** ppSop1 ); +extern ABC_DLL int Abc_CountZddCubes( DdManager * dd, DdNode * zCover ); +extern ABC_DLL void Abc_NtkLogicMakeDirectSops( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkSopToAig( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkAigToBdd( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkMapToSop( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkToSop( Abc_Ntk_t * pNtk, int fDirect ); +extern ABC_DLL int Abc_NtkToBdd( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkToAig( Abc_Ntk_t * pNtk ); /*=== abcHaig.c ==========================================================*/ -extern int Abc_NtkHaigStart( Abc_Ntk_t * pNtk ); -extern int Abc_NtkHaigStop( Abc_Ntk_t * pNtk ); -extern Abc_Ntk_t * Abc_NtkHaigUse( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkHaigStart( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkHaigStop( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkHaigUse( Abc_Ntk_t * pNtk ); /*=== abcHie.c ==========================================================*/ -extern Abc_Ntk_t * Abc_NtkFlattenLogicHierarchy( Abc_Ntk_t * pNtk ); -extern Abc_Ntk_t * Abc_NtkConvertBlackboxes( Abc_Ntk_t * pNtk ); -extern Abc_Ntk_t * Abc_NtkInsertNewLogic( Abc_Ntk_t * pNtkH, Abc_Ntk_t * pNtkL ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkFlattenLogicHierarchy( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkConvertBlackboxes( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkInsertNewLogic( Abc_Ntk_t * pNtkH, Abc_Ntk_t * pNtkL ); /*=== abcLatch.c ==========================================================*/ -extern bool Abc_NtkLatchIsSelfFeed( Abc_Obj_t * pLatch ); -extern int Abc_NtkCountSelfFeedLatches( Abc_Ntk_t * pNtk ); -extern int Abc_NtkRemoveSelfFeedLatches( Abc_Ntk_t * pNtk ); -extern Vec_Int_t * Abc_NtkCollectLatchValues( Abc_Ntk_t * pNtk ); -extern void Abc_NtkInsertLatchValues( Abc_Ntk_t * pNtk, Vec_Int_t * vValues ); -extern Abc_Obj_t * Abc_NtkAddLatch( Abc_Ntk_t * pNtk, Abc_Obj_t * pDriver, Abc_InitType_t Init ); -extern void Abc_NtkConvertDcLatches( Abc_Ntk_t * pNtk ); -extern Vec_Ptr_t * Abc_NtkConverLatchNamesIntoNumbers( Abc_Ntk_t * pNtk ); +extern ABC_DLL bool Abc_NtkLatchIsSelfFeed( Abc_Obj_t * pLatch ); +extern ABC_DLL int Abc_NtkCountSelfFeedLatches( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkRemoveSelfFeedLatches( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Int_t * Abc_NtkCollectLatchValues( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkInsertLatchValues( Abc_Ntk_t * pNtk, Vec_Int_t * vValues ); +extern ABC_DLL Abc_Obj_t * Abc_NtkAddLatch( Abc_Ntk_t * pNtk, Abc_Obj_t * pDriver, Abc_InitType_t Init ); +extern ABC_DLL void Abc_NtkConvertDcLatches( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkConverLatchNamesIntoNumbers( Abc_Ntk_t * pNtk ); /*=== abcLib.c ==========================================================*/ -extern Abc_Lib_t * Abc_LibCreate( char * pName ); -extern void Abc_LibFree( Abc_Lib_t * pLib, Abc_Ntk_t * pNtk ); -extern void Abc_LibPrint( Abc_Lib_t * pLib ); -extern int Abc_LibAddModel( Abc_Lib_t * pLib, Abc_Ntk_t * pNtk ); -extern Abc_Ntk_t * Abc_LibFindModelByName( Abc_Lib_t * pLib, char * pName ); -extern int Abc_LibFindTopLevelModels( Abc_Lib_t * pLib ); -extern Abc_Ntk_t * Abc_LibDeriveRoot( Abc_Lib_t * pLib ); +extern ABC_DLL Abc_Lib_t * Abc_LibCreate( char * pName ); +extern ABC_DLL void Abc_LibFree( Abc_Lib_t * pLib, Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_LibPrint( Abc_Lib_t * pLib ); +extern ABC_DLL int Abc_LibAddModel( Abc_Lib_t * pLib, Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_LibFindModelByName( Abc_Lib_t * pLib, char * pName ); +extern ABC_DLL int Abc_LibFindTopLevelModels( Abc_Lib_t * pLib ); +extern ABC_DLL Abc_Ntk_t * Abc_LibDeriveRoot( Abc_Lib_t * pLib ); /*=== abcMiter.c ==========================================================*/ -extern int Abc_NtkMinimumBase( Abc_Ntk_t * pNtk ); -extern int Abc_NodeMinimumBase( Abc_Obj_t * pNode ); -extern int Abc_NtkRemoveDupFanins( Abc_Ntk_t * pNtk ); -extern int Abc_NodeRemoveDupFanins( Abc_Obj_t * pNode ); +extern ABC_DLL int Abc_NtkMinimumBase( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NodeMinimumBase( Abc_Obj_t * pNode ); +extern ABC_DLL int Abc_NtkRemoveDupFanins( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NodeRemoveDupFanins( Abc_Obj_t * pNode ); /*=== abcMiter.c ==========================================================*/ -extern Abc_Ntk_t * Abc_NtkMiter( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fComb, int nPartSize, int fImplic, int fMulti ); -extern void Abc_NtkMiterAddCone( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkMiter, Abc_Obj_t * pNode ); -extern Abc_Ntk_t * Abc_NtkMiterAnd( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fOr, int fCompl2 ); -extern Abc_Ntk_t * Abc_NtkMiterCofactor( Abc_Ntk_t * pNtk, Vec_Int_t * vPiValues ); -extern Abc_Ntk_t * Abc_NtkMiterForCofactors( Abc_Ntk_t * pNtk, int Out, int In1, int In2 ); -extern Abc_Ntk_t * Abc_NtkMiterQuantify( Abc_Ntk_t * pNtk, int In, int fExist ); -extern Abc_Ntk_t * Abc_NtkMiterQuantifyPis( Abc_Ntk_t * pNtk ); -extern int Abc_NtkMiterIsConstant( Abc_Ntk_t * pMiter ); -extern void Abc_NtkMiterReport( Abc_Ntk_t * pMiter ); -extern Abc_Ntk_t * Abc_NtkFrames( Abc_Ntk_t * pNtk, int nFrames, int fInitial ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkMiter( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fComb, int nPartSize, int fImplic, int fMulti ); +extern ABC_DLL void Abc_NtkMiterAddCone( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkMiter, Abc_Obj_t * pNode ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkMiterAnd( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fOr, int fCompl2 ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkMiterCofactor( Abc_Ntk_t * pNtk, Vec_Int_t * vPiValues ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkMiterForCofactors( Abc_Ntk_t * pNtk, int Out, int In1, int In2 ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkMiterQuantify( Abc_Ntk_t * pNtk, int In, int fExist ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkMiterQuantifyPis( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkMiterIsConstant( Abc_Ntk_t * pMiter ); +extern ABC_DLL void Abc_NtkMiterReport( Abc_Ntk_t * pMiter ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkFrames( Abc_Ntk_t * pNtk, int nFrames, int fInitial, int fVerbose ); /*=== abcNames.c ====================================================*/ -extern char * Abc_ObjName( Abc_Obj_t * pNode ); -extern char * Abc_ObjAssignName( Abc_Obj_t * pObj, char * pName, char * pSuffix ); -extern char * Abc_ObjNameSuffix( Abc_Obj_t * pObj, char * pSuffix ); -extern char * Abc_ObjNameDummy( char * pPrefix, int Num, int nDigits ); -extern void Abc_NtkTrasferNames( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkNew ); -extern void Abc_NtkTrasferNamesNoLatches( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkNew ); -extern Vec_Ptr_t * Abc_NodeGetFaninNames( Abc_Obj_t * pNode ); -extern Vec_Ptr_t * Abc_NodeGetFakeNames( int nNames ); -extern void Abc_NodeFreeNames( Vec_Ptr_t * vNames ); -extern char ** Abc_NtkCollectCioNames( Abc_Ntk_t * pNtk, int fCollectCos ); -extern int Abc_NodeCompareNames( Abc_Obj_t ** pp1, Abc_Obj_t ** pp2 ); -extern void Abc_NtkOrderObjsByName( Abc_Ntk_t * pNtk, int fComb ); -extern void Abc_NtkAddDummyPiNames( Abc_Ntk_t * pNtk ); -extern void Abc_NtkAddDummyPoNames( Abc_Ntk_t * pNtk ); -extern void Abc_NtkAddDummyAssertNames( Abc_Ntk_t * pNtk ); -extern void Abc_NtkAddDummyBoxNames( Abc_Ntk_t * pNtk ); -extern void Abc_NtkShortNames( Abc_Ntk_t * pNtk ); +extern ABC_DLL char * Abc_ObjName( Abc_Obj_t * pNode ); +extern ABC_DLL char * Abc_ObjAssignName( Abc_Obj_t * pObj, char * pName, char * pSuffix ); +extern ABC_DLL char * Abc_ObjNameSuffix( Abc_Obj_t * pObj, char * pSuffix ); +extern ABC_DLL char * Abc_ObjNameDummy( char * pPrefix, int Num, int nDigits ); +extern ABC_DLL void Abc_NtkTrasferNames( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkNew ); +extern ABC_DLL void Abc_NtkTrasferNamesNoLatches( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkNew ); +extern ABC_DLL Vec_Ptr_t * Abc_NodeGetFaninNames( Abc_Obj_t * pNode ); +extern ABC_DLL Vec_Ptr_t * Abc_NodeGetFakeNames( int nNames ); +extern ABC_DLL void Abc_NodeFreeNames( Vec_Ptr_t * vNames ); +extern ABC_DLL char ** Abc_NtkCollectCioNames( Abc_Ntk_t * pNtk, int fCollectCos ); +extern ABC_DLL int Abc_NodeCompareNames( Abc_Obj_t ** pp1, Abc_Obj_t ** pp2 ); +extern ABC_DLL void Abc_NtkOrderObjsByName( Abc_Ntk_t * pNtk, int fComb ); +extern ABC_DLL void Abc_NtkAddDummyPiNames( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkAddDummyPoNames( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkAddDummyAssertNames( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkAddDummyBoxNames( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkShortNames( Abc_Ntk_t * pNtk ); /*=== abcNetlist.c ==========================================================*/ -extern Abc_Ntk_t * Abc_NtkToLogic( Abc_Ntk_t * pNtk ); -extern Abc_Ntk_t * Abc_NtkToNetlist( Abc_Ntk_t * pNtk ); -extern Abc_Ntk_t * Abc_NtkToNetlistBench( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkToLogic( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkToNetlist( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkToNetlistBench( Abc_Ntk_t * pNtk ); /*=== abcNtbdd.c ==========================================================*/ -extern Abc_Ntk_t * Abc_NtkDeriveFromBdd( DdManager * dd, DdNode * bFunc, char * pNamePo, Vec_Ptr_t * vNamesPi ); -extern Abc_Ntk_t * Abc_NtkBddToMuxes( Abc_Ntk_t * pNtk ); -extern DdManager * Abc_NtkBuildGlobalBdds( Abc_Ntk_t * pNtk, int fBddSizeMax, int fDropInternal, int fReorder, int fVerbose ); -extern DdManager * Abc_NtkFreeGlobalBdds( Abc_Ntk_t * pNtk, int fFreeMan ); -extern int Abc_NtkSizeOfGlobalBdds( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkDeriveFromBdd( DdManager * dd, DdNode * bFunc, char * pNamePo, Vec_Ptr_t * vNamesPi ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkBddToMuxes( Abc_Ntk_t * pNtk ); +extern ABC_DLL DdManager * Abc_NtkBuildGlobalBdds( Abc_Ntk_t * pNtk, int fBddSizeMax, int fDropInternal, int fReorder, int fVerbose ); +extern ABC_DLL DdManager * Abc_NtkFreeGlobalBdds( Abc_Ntk_t * pNtk, int fFreeMan ); +extern ABC_DLL int Abc_NtkSizeOfGlobalBdds( Abc_Ntk_t * pNtk ); /*=== abcNtk.c ==========================================================*/ -extern Abc_Ntk_t * Abc_NtkAlloc( Abc_NtkType_t Type, Abc_NtkFunc_t Func, int fUseMemMan ); -extern Abc_Ntk_t * Abc_NtkStartFrom( Abc_Ntk_t * pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func ); -extern Abc_Ntk_t * Abc_NtkStartFromNoLatches( Abc_Ntk_t * pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func ); -extern void Abc_NtkFinalize( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkNew ); -extern Abc_Ntk_t * Abc_NtkStartRead( char * pName ); -extern void Abc_NtkFinalizeRead( Abc_Ntk_t * pNtk ); -extern Abc_Ntk_t * Abc_NtkDup( Abc_Ntk_t * pNtk ); -extern Abc_Ntk_t * Abc_NtkCreateCone( Abc_Ntk_t * pNtk, Abc_Obj_t * pNode, char * pNodeName, int fUseAllCis ); -extern Abc_Ntk_t * Abc_NtkCreateConeArray( Abc_Ntk_t * pNtk, Vec_Ptr_t * vRoots, int fUseAllCis ); -extern void Abc_NtkAppendToCone( Abc_Ntk_t * pNtkNew, Abc_Ntk_t * pNtk, Vec_Ptr_t * vRoots ); -extern Abc_Ntk_t * Abc_NtkCreateMffc( Abc_Ntk_t * pNtk, Abc_Obj_t * pNode, char * pNodeName ); -extern Abc_Ntk_t * Abc_NtkCreateTarget( Abc_Ntk_t * pNtk, Vec_Ptr_t * vRoots, Vec_Int_t * vValues ); -extern Abc_Ntk_t * Abc_NtkCreateFromNode( Abc_Ntk_t * pNtk, Abc_Obj_t * pNode ); -extern Abc_Ntk_t * Abc_NtkCreateWithNode( char * pSop ); -extern void Abc_NtkDelete( Abc_Ntk_t * pNtk ); -extern void Abc_NtkFixNonDrivenNets( Abc_Ntk_t * pNtk ); -extern void Abc_NtkMakeComb( Abc_Ntk_t * pNtk, int fRemoveLatches ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkAlloc( Abc_NtkType_t Type, Abc_NtkFunc_t Func, int fUseMemMan ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom( Abc_Ntk_t * pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkStartFromNoLatches( Abc_Ntk_t * pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func ); +extern ABC_DLL void Abc_NtkFinalize( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkNew ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkStartRead( char * pName ); +extern ABC_DLL void Abc_NtkFinalizeRead( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkDup( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkCreateCone( Abc_Ntk_t * pNtk, Abc_Obj_t * pNode, char * pNodeName, int fUseAllCis ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkCreateConeArray( Abc_Ntk_t * pNtk, Vec_Ptr_t * vRoots, int fUseAllCis ); +extern ABC_DLL void Abc_NtkAppendToCone( Abc_Ntk_t * pNtkNew, Abc_Ntk_t * pNtk, Vec_Ptr_t * vRoots ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkCreateMffc( Abc_Ntk_t * pNtk, Abc_Obj_t * pNode, char * pNodeName ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkCreateTarget( Abc_Ntk_t * pNtk, Vec_Ptr_t * vRoots, Vec_Int_t * vValues ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkCreateFromNode( Abc_Ntk_t * pNtk, Abc_Obj_t * pNode ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkCreateWithNode( char * pSop ); +extern ABC_DLL void Abc_NtkDelete( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkFixNonDrivenNets( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkMakeComb( Abc_Ntk_t * pNtk, int fRemoveLatches ); /*=== abcObj.c ==========================================================*/ -extern Abc_Obj_t * Abc_ObjAlloc( Abc_Ntk_t * pNtk, Abc_ObjType_t Type ); -extern void Abc_ObjRecycle( Abc_Obj_t * pObj ); -extern Abc_Obj_t * Abc_NtkCreateObj( Abc_Ntk_t * pNtk, Abc_ObjType_t Type ); -extern void Abc_NtkDeleteObj( Abc_Obj_t * pObj ); -extern void Abc_NtkDeleteObj_rec( Abc_Obj_t * pObj, int fOnlyNodes ); -extern void Abc_NtkDeleteAll_rec( Abc_Obj_t * pObj ); -extern Abc_Obj_t * Abc_NtkDupObj( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pObj, int fCopyName ); -extern Abc_Obj_t * Abc_NtkDupBox( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pBox, int fCopyName ); -extern Abc_Obj_t * Abc_NtkCloneObj( Abc_Obj_t * pNode ); -extern Abc_Obj_t * Abc_NtkFindNode( Abc_Ntk_t * pNtk, char * pName ); -extern Abc_Obj_t * Abc_NtkFindNet( Abc_Ntk_t * pNtk, char * pName ); -extern Abc_Obj_t * Abc_NtkFindCi( Abc_Ntk_t * pNtk, char * pName ); -extern Abc_Obj_t * Abc_NtkFindCo( Abc_Ntk_t * pNtk, char * pName ); -extern Abc_Obj_t * Abc_NtkFindOrCreateNet( Abc_Ntk_t * pNtk, char * pName ); -extern Abc_Obj_t * Abc_NtkCreateNodeConst0( Abc_Ntk_t * pNtk ); -extern Abc_Obj_t * Abc_NtkCreateNodeConst1( Abc_Ntk_t * pNtk ); -extern Abc_Obj_t * Abc_NtkCreateNodeInv( Abc_Ntk_t * pNtk, Abc_Obj_t * pFanin ); -extern Abc_Obj_t * Abc_NtkCreateNodeBuf( Abc_Ntk_t * pNtk, Abc_Obj_t * pFanin ); -extern Abc_Obj_t * Abc_NtkCreateNodeAnd( Abc_Ntk_t * pNtk, Vec_Ptr_t * vFanins ); -extern Abc_Obj_t * Abc_NtkCreateNodeOr( Abc_Ntk_t * pNtk, Vec_Ptr_t * vFanins ); -extern Abc_Obj_t * Abc_NtkCreateNodeExor( Abc_Ntk_t * pNtk, Vec_Ptr_t * vFanins ); -extern Abc_Obj_t * Abc_NtkCreateNodeMux( Abc_Ntk_t * pNtk, Abc_Obj_t * pNodeC, Abc_Obj_t * pNode1, Abc_Obj_t * pNode0 ); -extern bool Abc_NodeIsConst( Abc_Obj_t * pNode ); -extern bool Abc_NodeIsConst0( Abc_Obj_t * pNode ); -extern bool Abc_NodeIsConst1( Abc_Obj_t * pNode ); -extern bool Abc_NodeIsBuf( Abc_Obj_t * pNode ); -extern bool Abc_NodeIsInv( Abc_Obj_t * pNode ); -extern void Abc_NodeComplement( Abc_Obj_t * pNode ); +extern ABC_DLL Abc_Obj_t * Abc_ObjAlloc( Abc_Ntk_t * pNtk, Abc_ObjType_t Type ); +extern ABC_DLL void Abc_ObjRecycle( Abc_Obj_t * pObj ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCreateObj( Abc_Ntk_t * pNtk, Abc_ObjType_t Type ); +extern ABC_DLL void Abc_NtkDeleteObj( Abc_Obj_t * pObj ); +extern ABC_DLL void Abc_NtkDeleteObj_rec( Abc_Obj_t * pObj, int fOnlyNodes ); +extern ABC_DLL void Abc_NtkDeleteAll_rec( Abc_Obj_t * pObj ); +extern ABC_DLL Abc_Obj_t * Abc_NtkDupObj( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pObj, int fCopyName ); +extern ABC_DLL Abc_Obj_t * Abc_NtkDupBox( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pBox, int fCopyName ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCloneObj( Abc_Obj_t * pNode ); +extern ABC_DLL Abc_Obj_t * Abc_NtkFindNode( Abc_Ntk_t * pNtk, char * pName ); +extern ABC_DLL Abc_Obj_t * Abc_NtkFindNet( Abc_Ntk_t * pNtk, char * pName ); +extern ABC_DLL Abc_Obj_t * Abc_NtkFindCi( Abc_Ntk_t * pNtk, char * pName ); +extern ABC_DLL Abc_Obj_t * Abc_NtkFindCo( Abc_Ntk_t * pNtk, char * pName ); +extern ABC_DLL Abc_Obj_t * Abc_NtkFindOrCreateNet( Abc_Ntk_t * pNtk, char * pName ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst0( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst1( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeInv( Abc_Ntk_t * pNtk, Abc_Obj_t * pFanin ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeBuf( Abc_Ntk_t * pNtk, Abc_Obj_t * pFanin ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeAnd( Abc_Ntk_t * pNtk, Vec_Ptr_t * vFanins ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeOr( Abc_Ntk_t * pNtk, Vec_Ptr_t * vFanins ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeExor( Abc_Ntk_t * pNtk, Vec_Ptr_t * vFanins ); +extern ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeMux( Abc_Ntk_t * pNtk, Abc_Obj_t * pNodeC, Abc_Obj_t * pNode1, Abc_Obj_t * pNode0 ); +extern ABC_DLL bool Abc_NodeIsConst( Abc_Obj_t * pNode ); +extern ABC_DLL bool Abc_NodeIsConst0( Abc_Obj_t * pNode ); +extern ABC_DLL bool Abc_NodeIsConst1( Abc_Obj_t * pNode ); +extern ABC_DLL bool Abc_NodeIsBuf( Abc_Obj_t * pNode ); +extern ABC_DLL bool Abc_NodeIsInv( Abc_Obj_t * pNode ); +extern ABC_DLL void Abc_NodeComplement( Abc_Obj_t * pNode ); /*=== abcPrint.c ==========================================================*/ -extern void Abc_NtkPrintStats( FILE * pFile, Abc_Ntk_t * pNtk, int fFactored, int fSaveBest, int fDumpResult, int fUseLutLib ); -extern void Abc_NtkPrintIo( FILE * pFile, Abc_Ntk_t * pNtk ); -extern void Abc_NtkPrintLatch( FILE * pFile, Abc_Ntk_t * pNtk ); -extern void Abc_NtkPrintFanio( FILE * pFile, Abc_Ntk_t * pNtk ); -extern void Abc_NtkPrintFanioNew( FILE * pFile, Abc_Ntk_t * pNtk ); -extern void Abc_NodePrintFanio( FILE * pFile, Abc_Obj_t * pNode ); -extern void Abc_NtkPrintFactor( FILE * pFile, Abc_Ntk_t * pNtk, int fUseRealNames ); -extern void Abc_NodePrintFactor( FILE * pFile, Abc_Obj_t * pNode, int fUseRealNames ); -extern void Abc_NtkPrintLevel( FILE * pFile, Abc_Ntk_t * pNtk, int fProfile, int fListNodes ); -extern void Abc_NodePrintLevel( FILE * pFile, Abc_Obj_t * pNode ); -extern void Abc_NtkPrintSkews( FILE * pFile, Abc_Ntk_t * pNtk, int fPrintAll ); -extern void Abc_ObjPrint( FILE * pFile, Abc_Obj_t * pObj ); +extern ABC_DLL void Abc_NtkPrintStats( FILE * pFile, Abc_Ntk_t * pNtk, int fFactored, int fSaveBest, int fDumpResult, int fUseLutLib ); +extern ABC_DLL void Abc_NtkPrintIo( FILE * pFile, Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkPrintLatch( FILE * pFile, Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkPrintFanio( FILE * pFile, Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkPrintFanioNew( FILE * pFile, Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NodePrintFanio( FILE * pFile, Abc_Obj_t * pNode ); +extern ABC_DLL void Abc_NtkPrintFactor( FILE * pFile, Abc_Ntk_t * pNtk, int fUseRealNames ); +extern ABC_DLL void Abc_NodePrintFactor( FILE * pFile, Abc_Obj_t * pNode, int fUseRealNames ); +extern ABC_DLL void Abc_NtkPrintLevel( FILE * pFile, Abc_Ntk_t * pNtk, int fProfile, int fListNodes ); +extern ABC_DLL void Abc_NodePrintLevel( FILE * pFile, Abc_Obj_t * pNode ); +extern ABC_DLL void Abc_NtkPrintSkews( FILE * pFile, Abc_Ntk_t * pNtk, int fPrintAll ); +extern ABC_DLL void Abc_ObjPrint( FILE * pFile, Abc_Obj_t * pObj ); /*=== abcProve.c ==========================================================*/ -extern int Abc_NtkMiterProve( Abc_Ntk_t ** ppNtk, void * pParams ); -extern int Abc_NtkIvyProve( Abc_Ntk_t ** ppNtk, void * pPars ); +extern ABC_DLL int Abc_NtkMiterProve( Abc_Ntk_t ** ppNtk, void * pParams ); +extern ABC_DLL int Abc_NtkIvyProve( Abc_Ntk_t ** ppNtk, void * pPars ); /*=== abcRec.c ==========================================================*/ -extern void Abc_NtkRecStart( Abc_Ntk_t * pNtk, int nVars, int nCuts ); -extern void Abc_NtkRecStop(); -extern void Abc_NtkRecAdd( Abc_Ntk_t * pNtk ); -extern void Abc_NtkRecPs(); -extern void Abc_NtkRecFilter( int iVar, int iPlus ); -extern Abc_Ntk_t * Abc_NtkRecUse(); -extern int Abc_NtkRecIsRunning(); -extern int Abc_NtkRecVarNum(); -extern Vec_Int_t * Abc_NtkRecMemory(); -extern int Abc_NtkRecStrashNode( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pObj, unsigned * pTruth, int nVars ); +extern ABC_DLL void Abc_NtkRecStart( Abc_Ntk_t * pNtk, int nVars, int nCuts ); +extern ABC_DLL void Abc_NtkRecStop(); +extern ABC_DLL void Abc_NtkRecAdd( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkRecPs(); +extern ABC_DLL void Abc_NtkRecFilter( int iVar, int iPlus ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkRecUse(); +extern ABC_DLL int Abc_NtkRecIsRunning(); +extern ABC_DLL int Abc_NtkRecVarNum(); +extern ABC_DLL Vec_Int_t * Abc_NtkRecMemory(); +extern ABC_DLL int Abc_NtkRecStrashNode( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pObj, unsigned * pTruth, int nVars ); /*=== abcReconv.c ==========================================================*/ -extern Abc_ManCut_t * Abc_NtkManCutStart( int nNodeSizeMax, int nConeSizeMax, int nNodeFanStop, int nConeFanStop ); -extern void Abc_NtkManCutStop( Abc_ManCut_t * p ); -extern Vec_Ptr_t * Abc_NtkManCutReadCutLarge( Abc_ManCut_t * p ); -extern Vec_Ptr_t * Abc_NtkManCutReadCutSmall( Abc_ManCut_t * p ); -extern Vec_Ptr_t * Abc_NtkManCutReadVisited( Abc_ManCut_t * p ); -extern Vec_Ptr_t * Abc_NodeFindCut( Abc_ManCut_t * p, Abc_Obj_t * pRoot, bool fContain ); -extern void Abc_NodeConeCollect( Abc_Obj_t ** ppRoots, int nRoots, Vec_Ptr_t * vFanins, Vec_Ptr_t * vVisited, int fIncludeFanins ); -extern DdNode * Abc_NodeConeBdd( DdManager * dd, DdNode ** pbVars, Abc_Obj_t * pNode, Vec_Ptr_t * vFanins, Vec_Ptr_t * vVisited ); -extern DdNode * Abc_NodeConeDcs( DdManager * dd, DdNode ** pbVarsX, DdNode ** pbVarsY, Vec_Ptr_t * vLeaves, Vec_Ptr_t * vRoots, Vec_Ptr_t * vVisited ); -extern Vec_Ptr_t * Abc_NodeCollectTfoCands( Abc_ManCut_t * p, Abc_Obj_t * pRoot, Vec_Ptr_t * vFanins, int LevelMax ); +extern ABC_DLL Abc_ManCut_t * Abc_NtkManCutStart( int nNodeSizeMax, int nConeSizeMax, int nNodeFanStop, int nConeFanStop ); +extern ABC_DLL void Abc_NtkManCutStop( Abc_ManCut_t * p ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkManCutReadCutLarge( Abc_ManCut_t * p ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkManCutReadCutSmall( Abc_ManCut_t * p ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkManCutReadVisited( Abc_ManCut_t * p ); +extern ABC_DLL Vec_Ptr_t * Abc_NodeFindCut( Abc_ManCut_t * p, Abc_Obj_t * pRoot, bool fContain ); +extern ABC_DLL void Abc_NodeConeCollect( Abc_Obj_t ** ppRoots, int nRoots, Vec_Ptr_t * vFanins, Vec_Ptr_t * vVisited, int fIncludeFanins ); +extern ABC_DLL DdNode * Abc_NodeConeBdd( DdManager * dd, DdNode ** pbVars, Abc_Obj_t * pNode, Vec_Ptr_t * vFanins, Vec_Ptr_t * vVisited ); +extern ABC_DLL DdNode * Abc_NodeConeDcs( DdManager * dd, DdNode ** pbVarsX, DdNode ** pbVarsY, Vec_Ptr_t * vLeaves, Vec_Ptr_t * vRoots, Vec_Ptr_t * vVisited ); +extern ABC_DLL Vec_Ptr_t * Abc_NodeCollectTfoCands( Abc_ManCut_t * p, Abc_Obj_t * pRoot, Vec_Ptr_t * vFanins, int LevelMax ); /*=== abcRefs.c ==========================================================*/ -extern int Abc_NodeMffcSize( Abc_Obj_t * pNode ); -extern int Abc_NodeMffcSizeSupp( Abc_Obj_t * pNode ); -extern int Abc_NodeMffcSizeStop( Abc_Obj_t * pNode ); -extern int Abc_NodeMffcLabelAig( Abc_Obj_t * pNode ); -extern int Abc_NodeMffcLabel( Abc_Obj_t * pNode ); -extern void Abc_NodeMffsConeSupp( Abc_Obj_t * pNode, Vec_Ptr_t * vCone, Vec_Ptr_t * vSupp ); -extern int Abc_NodeDeref_rec( Abc_Obj_t * pNode ); -extern int Abc_NodeRef_rec( Abc_Obj_t * pNode ); +extern ABC_DLL int Abc_NodeMffcSize( Abc_Obj_t * pNode ); +extern ABC_DLL int Abc_NodeMffcSizeSupp( Abc_Obj_t * pNode ); +extern ABC_DLL int Abc_NodeMffcSizeStop( Abc_Obj_t * pNode ); +extern ABC_DLL int Abc_NodeMffcLabelAig( Abc_Obj_t * pNode ); +extern ABC_DLL int Abc_NodeMffcLabel( Abc_Obj_t * pNode ); +extern ABC_DLL void Abc_NodeMffsConeSupp( Abc_Obj_t * pNode, Vec_Ptr_t * vCone, Vec_Ptr_t * vSupp ); +extern ABC_DLL int Abc_NodeDeref_rec( Abc_Obj_t * pNode ); +extern ABC_DLL int Abc_NodeRef_rec( Abc_Obj_t * pNode ); /*=== abcRefactor.c ==========================================================*/ -extern int Abc_NtkRefactor( Abc_Ntk_t * pNtk, int nNodeSizeMax, int nConeSizeMax, bool fUpdateLevel, bool fUseZeros, bool fUseDcs, bool fVerbose ); +extern ABC_DLL int Abc_NtkRefactor( Abc_Ntk_t * pNtk, int nNodeSizeMax, int nConeSizeMax, bool fUpdateLevel, bool fUseZeros, bool fUseDcs, bool fVerbose ); /*=== abcRewrite.c ==========================================================*/ -extern int Abc_NtkRewrite( Abc_Ntk_t * pNtk, int fUpdateLevel, int fUseZeros, int fVerbose, int fVeryVerbose, int fPlaceEnable ); +extern ABC_DLL int Abc_NtkRewrite( Abc_Ntk_t * pNtk, int fUpdateLevel, int fUseZeros, int fVerbose, int fVeryVerbose, int fPlaceEnable ); /*=== abcSat.c ==========================================================*/ -extern int Abc_NtkMiterSat( Abc_Ntk_t * pNtk, sint64 nConfLimit, sint64 nInsLimit, int fVerbose, sint64 * pNumConfs, sint64 * pNumInspects ); -extern void * Abc_NtkMiterSatCreate( Abc_Ntk_t * pNtk, int fAllPrimes ); +extern ABC_DLL int Abc_NtkMiterSat( Abc_Ntk_t * pNtk, sint64 nConfLimit, sint64 nInsLimit, int fVerbose, sint64 * pNumConfs, sint64 * pNumInspects ); +extern ABC_DLL void * Abc_NtkMiterSatCreate( Abc_Ntk_t * pNtk, int fAllPrimes ); /*=== abcSop.c ==========================================================*/ -extern char * Abc_SopRegister( Extra_MmFlex_t * pMan, char * pName ); -extern char * Abc_SopStart( Extra_MmFlex_t * pMan, int nCubes, int nVars ); -extern char * Abc_SopCreateConst0( Extra_MmFlex_t * pMan ); -extern char * Abc_SopCreateConst1( Extra_MmFlex_t * pMan ); -extern char * Abc_SopCreateAnd2( Extra_MmFlex_t * pMan, int fCompl0, int fCompl1 ); -extern char * Abc_SopCreateAnd( Extra_MmFlex_t * pMan, int nVars, int * pfCompl ); -extern char * Abc_SopCreateNand( Extra_MmFlex_t * pMan, int nVars ); -extern char * Abc_SopCreateOr( Extra_MmFlex_t * pMan, int nVars, int * pfCompl ); -extern char * Abc_SopCreateOrMultiCube( Extra_MmFlex_t * pMan, int nVars, int * pfCompl ); -extern char * Abc_SopCreateNor( Extra_MmFlex_t * pMan, int nVars ); -extern char * Abc_SopCreateXor( Extra_MmFlex_t * pMan, int nVars ); -extern char * Abc_SopCreateXorSpecial( Extra_MmFlex_t * pMan, int nVars ); -extern char * Abc_SopCreateNxor( Extra_MmFlex_t * pMan, int nVars ); -extern char * Abc_SopCreateMux( Extra_MmFlex_t * pMan ); -extern char * Abc_SopCreateInv( Extra_MmFlex_t * pMan ); -extern char * Abc_SopCreateBuf( Extra_MmFlex_t * pMan ); -extern char * Abc_SopCreateFromTruth( Extra_MmFlex_t * pMan, int nVars, unsigned * pTruth ); -extern char * Abc_SopCreateFromIsop( Extra_MmFlex_t * pMan, int nVars, Vec_Int_t * vCover ); -extern int Abc_SopGetCubeNum( char * pSop ); -extern int Abc_SopGetLitNum( char * pSop ); -extern int Abc_SopGetVarNum( char * pSop ); -extern int Abc_SopGetPhase( char * pSop ); -extern int Abc_SopGetIthCareLit( char * pSop, int i ); -extern void Abc_SopComplement( char * pSop ); -extern bool Abc_SopIsComplement( char * pSop ); -extern bool Abc_SopIsConst0( char * pSop ); -extern bool Abc_SopIsConst1( char * pSop ); -extern bool Abc_SopIsBuf( char * pSop ); -extern bool Abc_SopIsInv( char * pSop ); -extern bool Abc_SopIsAndType( char * pSop ); -extern bool Abc_SopIsOrType( char * pSop ); -extern int Abc_SopIsExorType( char * pSop ); -extern bool Abc_SopCheck( char * pSop, int nFanins ); -extern char * Abc_SopFromTruthBin( char * pTruth ); -extern char * Abc_SopFromTruthHex( char * pTruth ); -extern char * Abc_SopEncoderPos( Extra_MmFlex_t * pMan, int iValue, int nValues ); -extern char * Abc_SopEncoderLog( Extra_MmFlex_t * pMan, int iBit, int nValues ); -extern char * Abc_SopDecoderPos( Extra_MmFlex_t * pMan, int nValues ); -extern char * Abc_SopDecoderLog( Extra_MmFlex_t * pMan, int nValues ); +extern ABC_DLL char * Abc_SopRegister( Extra_MmFlex_t * pMan, char * pName ); +extern ABC_DLL char * Abc_SopStart( Extra_MmFlex_t * pMan, int nCubes, int nVars ); +extern ABC_DLL char * Abc_SopCreateConst0( Extra_MmFlex_t * pMan ); +extern ABC_DLL char * Abc_SopCreateConst1( Extra_MmFlex_t * pMan ); +extern ABC_DLL char * Abc_SopCreateAnd2( Extra_MmFlex_t * pMan, int fCompl0, int fCompl1 ); +extern ABC_DLL char * Abc_SopCreateAnd( Extra_MmFlex_t * pMan, int nVars, int * pfCompl ); +extern ABC_DLL char * Abc_SopCreateNand( Extra_MmFlex_t * pMan, int nVars ); +extern ABC_DLL char * Abc_SopCreateOr( Extra_MmFlex_t * pMan, int nVars, int * pfCompl ); +extern ABC_DLL char * Abc_SopCreateOrMultiCube( Extra_MmFlex_t * pMan, int nVars, int * pfCompl ); +extern ABC_DLL char * Abc_SopCreateNor( Extra_MmFlex_t * pMan, int nVars ); +extern ABC_DLL char * Abc_SopCreateXor( Extra_MmFlex_t * pMan, int nVars ); +extern ABC_DLL char * Abc_SopCreateXorSpecial( Extra_MmFlex_t * pMan, int nVars ); +extern ABC_DLL char * Abc_SopCreateNxor( Extra_MmFlex_t * pMan, int nVars ); +extern ABC_DLL char * Abc_SopCreateMux( Extra_MmFlex_t * pMan ); +extern ABC_DLL char * Abc_SopCreateInv( Extra_MmFlex_t * pMan ); +extern ABC_DLL char * Abc_SopCreateBuf( Extra_MmFlex_t * pMan ); +extern ABC_DLL char * Abc_SopCreateFromTruth( Extra_MmFlex_t * pMan, int nVars, unsigned * pTruth ); +extern ABC_DLL char * Abc_SopCreateFromIsop( Extra_MmFlex_t * pMan, int nVars, Vec_Int_t * vCover ); +extern ABC_DLL int Abc_SopGetCubeNum( char * pSop ); +extern ABC_DLL int Abc_SopGetLitNum( char * pSop ); +extern ABC_DLL int Abc_SopGetVarNum( char * pSop ); +extern ABC_DLL int Abc_SopGetPhase( char * pSop ); +extern ABC_DLL int Abc_SopGetIthCareLit( char * pSop, int i ); +extern ABC_DLL void Abc_SopComplement( char * pSop ); +extern ABC_DLL bool Abc_SopIsComplement( char * pSop ); +extern ABC_DLL bool Abc_SopIsConst0( char * pSop ); +extern ABC_DLL bool Abc_SopIsConst1( char * pSop ); +extern ABC_DLL bool Abc_SopIsBuf( char * pSop ); +extern ABC_DLL bool Abc_SopIsInv( char * pSop ); +extern ABC_DLL bool Abc_SopIsAndType( char * pSop ); +extern ABC_DLL bool Abc_SopIsOrType( char * pSop ); +extern ABC_DLL int Abc_SopIsExorType( char * pSop ); +extern ABC_DLL bool Abc_SopCheck( char * pSop, int nFanins ); +extern ABC_DLL char * Abc_SopFromTruthBin( char * pTruth ); +extern ABC_DLL char * Abc_SopFromTruthHex( char * pTruth ); +extern ABC_DLL char * Abc_SopEncoderPos( Extra_MmFlex_t * pMan, int iValue, int nValues ); +extern ABC_DLL char * Abc_SopEncoderLog( Extra_MmFlex_t * pMan, int iBit, int nValues ); +extern ABC_DLL char * Abc_SopDecoderPos( Extra_MmFlex_t * pMan, int nValues ); +extern ABC_DLL char * Abc_SopDecoderLog( Extra_MmFlex_t * pMan, int nValues ); /*=== abcStrash.c ==========================================================*/ -extern Abc_Ntk_t * Abc_NtkStrash( Abc_Ntk_t * pNtk, int fAllNodes, int fCleanup, int fRecord ); -extern Abc_Obj_t * Abc_NodeStrash( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNode, int fRecord ); -extern int Abc_NtkAppend( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fAddPos ); -extern Abc_Ntk_t * Abc_NtkTopmost( Abc_Ntk_t * pNtk, int nLevels ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkStrash( Abc_Ntk_t * pNtk, int fAllNodes, int fCleanup, int fRecord ); +extern ABC_DLL Abc_Obj_t * Abc_NodeStrash( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNode, int fRecord ); +extern ABC_DLL int Abc_NtkAppend( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fAddPos ); +extern ABC_DLL Abc_Ntk_t * Abc_NtkTopmost( Abc_Ntk_t * pNtk, int nLevels ); /*=== abcSweep.c ==========================================================*/ -extern int Abc_NtkSweep( Abc_Ntk_t * pNtk, int fVerbose ); -extern int Abc_NtkCleanup( Abc_Ntk_t * pNtk, int fVerbose ); -extern int Abc_NtkCleanupSeq( Abc_Ntk_t * pNtk, int fLatchSweep, int fAutoSweep, int fVerbose ); +extern ABC_DLL int Abc_NtkSweep( Abc_Ntk_t * pNtk, int fVerbose ); +extern ABC_DLL int Abc_NtkCleanup( Abc_Ntk_t * pNtk, int fVerbose ); +extern ABC_DLL int Abc_NtkCleanupSeq( Abc_Ntk_t * pNtk, int fLatchSweep, int fAutoSweep, int fVerbose ); /*=== abcTiming.c ==========================================================*/ -extern Abc_Time_t * Abc_NodeReadArrival( Abc_Obj_t * pNode ); -extern Abc_Time_t * Abc_NodeReadRequired( Abc_Obj_t * pNode ); -extern Abc_Time_t * Abc_NtkReadDefaultArrival( Abc_Ntk_t * pNtk ); -extern Abc_Time_t * Abc_NtkReadDefaultRequired( Abc_Ntk_t * pNtk ); -extern void Abc_NtkTimeSetDefaultArrival( Abc_Ntk_t * pNtk, float Rise, float Fall ); -extern void Abc_NtkTimeSetDefaultRequired( Abc_Ntk_t * pNtk, float Rise, float Fall ); -extern void Abc_NtkTimeSetArrival( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall ); -extern void Abc_NtkTimeSetRequired( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall ); -extern void Abc_NtkTimeInitialize( Abc_Ntk_t * pNtk ); -extern void Abc_ManTimeStop( Abc_ManTime_t * p ); -extern void Abc_ManTimeDup( Abc_Ntk_t * pNtkOld, Abc_Ntk_t * pNtkNew ); -extern void Abc_NtkSetNodeLevelsArrival( Abc_Ntk_t * pNtk ); -extern float * Abc_NtkGetCiArrivalFloats( Abc_Ntk_t * pNtk ); -extern Abc_Time_t * Abc_NtkGetCiArrivalTimes( Abc_Ntk_t * pNtk ); -extern float Abc_NtkDelayTrace( Abc_Ntk_t * pNtk ); -extern int Abc_ObjLevelNew( Abc_Obj_t * pObj ); -extern int Abc_ObjReverseLevelNew( Abc_Obj_t * pObj ); -extern int Abc_ObjRequiredLevel( Abc_Obj_t * pObj ); -extern int Abc_ObjReverseLevel( Abc_Obj_t * pObj ); -extern void Abc_ObjSetReverseLevel( Abc_Obj_t * pObj, int LevelR ); -extern void Abc_NtkStartReverseLevels( Abc_Ntk_t * pNtk, int nMaxLevelIncrease ); -extern void Abc_NtkStopReverseLevels( Abc_Ntk_t * pNtk ); -extern void Abc_NtkUpdateLevel( Abc_Obj_t * pObjNew, Vec_Vec_t * vLevels ); -extern void Abc_NtkUpdateReverseLevel( Abc_Obj_t * pObjNew, Vec_Vec_t * vLevels ); -extern void Abc_NtkUpdate( Abc_Obj_t * pObj, Abc_Obj_t * pObjNew, Vec_Vec_t * vLevels ); +extern ABC_DLL Abc_Time_t * Abc_NodeReadArrival( Abc_Obj_t * pNode ); +extern ABC_DLL Abc_Time_t * Abc_NodeReadRequired( Abc_Obj_t * pNode ); +extern ABC_DLL Abc_Time_t * Abc_NtkReadDefaultArrival( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Time_t * Abc_NtkReadDefaultRequired( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkTimeSetDefaultArrival( Abc_Ntk_t * pNtk, float Rise, float Fall ); +extern ABC_DLL void Abc_NtkTimeSetDefaultRequired( Abc_Ntk_t * pNtk, float Rise, float Fall ); +extern ABC_DLL void Abc_NtkTimeSetArrival( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall ); +extern ABC_DLL void Abc_NtkTimeSetRequired( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall ); +extern ABC_DLL void Abc_NtkTimeInitialize( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_ManTimeStop( Abc_ManTime_t * p ); +extern ABC_DLL void Abc_ManTimeDup( Abc_Ntk_t * pNtkOld, Abc_Ntk_t * pNtkNew ); +extern ABC_DLL void Abc_NtkSetNodeLevelsArrival( Abc_Ntk_t * pNtk ); +extern ABC_DLL float * Abc_NtkGetCiArrivalFloats( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Time_t * Abc_NtkGetCiArrivalTimes( Abc_Ntk_t * pNtk ); +extern ABC_DLL float Abc_NtkDelayTrace( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_ObjLevelNew( Abc_Obj_t * pObj ); +extern ABC_DLL int Abc_ObjReverseLevelNew( Abc_Obj_t * pObj ); +extern ABC_DLL int Abc_ObjRequiredLevel( Abc_Obj_t * pObj ); +extern ABC_DLL int Abc_ObjReverseLevel( Abc_Obj_t * pObj ); +extern ABC_DLL void Abc_ObjSetReverseLevel( Abc_Obj_t * pObj, int LevelR ); +extern ABC_DLL void Abc_NtkStartReverseLevels( Abc_Ntk_t * pNtk, int nMaxLevelIncrease ); +extern ABC_DLL void Abc_NtkStopReverseLevels( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkUpdateLevel( Abc_Obj_t * pObjNew, Vec_Vec_t * vLevels ); +extern ABC_DLL void Abc_NtkUpdateReverseLevel( Abc_Obj_t * pObjNew, Vec_Vec_t * vLevels ); +extern ABC_DLL void Abc_NtkUpdate( Abc_Obj_t * pObj, Abc_Obj_t * pObjNew, Vec_Vec_t * vLevels ); /*=== abcUtil.c ==========================================================*/ -extern void * Abc_NtkAttrFree( Abc_Ntk_t * pNtk, int Attr, int fFreeMan ); -extern void Abc_NtkIncrementTravId( Abc_Ntk_t * pNtk ); -extern void Abc_NtkOrderCisCos( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetCubeNum( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetCubePairNum( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetLitNum( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetLitFactNum( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetBddNodeNum( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetAigNodeNum( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetClauseNum( Abc_Ntk_t * pNtk ); -extern double Abc_NtkGetMappedArea( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetExorNum( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetMuxNum( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetChoiceNum( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetFaninMax( Abc_Ntk_t * pNtk ); -extern int Abc_NtkGetTotalFanins( Abc_Ntk_t * pNtk ); -extern void Abc_NtkCleanCopy( Abc_Ntk_t * pNtk ); -extern void Abc_NtkCleanData( Abc_Ntk_t * pNtk ); -extern void Abc_NtkCleanEquiv( Abc_Ntk_t * pNtk ); -extern int Abc_NtkCountCopy( Abc_Ntk_t * pNtk ); -extern Vec_Ptr_t * Abc_NtkSaveCopy( Abc_Ntk_t * pNtk ); -extern void Abc_NtkLoadCopy( Abc_Ntk_t * pNtk, Vec_Ptr_t * vCopies ); -extern void Abc_NtkCleanNext( Abc_Ntk_t * pNtk ); -extern void Abc_NtkCleanMarkA( Abc_Ntk_t * pNtk ); -extern Abc_Obj_t * Abc_NodeFindCoFanout( Abc_Obj_t * pNode ); -extern Abc_Obj_t * Abc_NodeFindNonCoFanout( Abc_Obj_t * pNode ); -extern Abc_Obj_t * Abc_NodeHasUniqueCoFanout( Abc_Obj_t * pNode ); -extern bool Abc_NtkLogicHasSimpleCos( Abc_Ntk_t * pNtk ); -extern int Abc_NtkLogicMakeSimpleCos( Abc_Ntk_t * pNtk, bool fDuplicate ); -extern void Abc_VecObjPushUniqueOrderByLevel( Vec_Ptr_t * p, Abc_Obj_t * pNode ); -extern bool Abc_NodeIsExorType( Abc_Obj_t * pNode ); -extern bool Abc_NodeIsMuxType( Abc_Obj_t * pNode ); -extern bool Abc_NodeIsMuxControlType( Abc_Obj_t * pNode ); -extern Abc_Obj_t * Abc_NodeRecognizeMux( Abc_Obj_t * pNode, Abc_Obj_t ** ppNodeT, Abc_Obj_t ** ppNodeE ); -extern int Abc_NtkPrepareTwoNtks( FILE * pErr, Abc_Ntk_t * pNtk, char ** argv, int argc, Abc_Ntk_t ** ppNtk1, Abc_Ntk_t ** ppNtk2, int * pfDelete1, int * pfDelete2 ); -extern void Abc_NodeCollectFanins( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes ); -extern void Abc_NodeCollectFanouts( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes ); -extern Vec_Ptr_t * Abc_NtkCollectLatches( Abc_Ntk_t * pNtk ); -extern int Abc_NodeCompareLevelsIncrease( Abc_Obj_t ** pp1, Abc_Obj_t ** pp2 ); -extern int Abc_NodeCompareLevelsDecrease( Abc_Obj_t ** pp1, Abc_Obj_t ** pp2 ); -extern Vec_Int_t * Abc_NtkFanoutCounts( Abc_Ntk_t * pNtk ); -extern Vec_Ptr_t * Abc_NtkCollectObjects( Abc_Ntk_t * pNtk ); -extern Vec_Int_t * Abc_NtkGetCiIds( Abc_Ntk_t * pNtk ); -extern void Abc_NtkReassignIds( Abc_Ntk_t * pNtk ); -extern int Abc_ObjPointerCompare( void ** pp1, void ** pp2 ); -extern void Abc_NtkTransferCopy( Abc_Ntk_t * pNtk ); +extern ABC_DLL void * Abc_NtkAttrFree( Abc_Ntk_t * pNtk, int Attr, int fFreeMan ); +extern ABC_DLL void Abc_NtkIncrementTravId( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkOrderCisCos( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetCubeNum( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetCubePairNum( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetLitNum( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetLitFactNum( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetBddNodeNum( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetAigNodeNum( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetClauseNum( Abc_Ntk_t * pNtk ); +extern ABC_DLL double Abc_NtkGetMappedArea( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetExorNum( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetMuxNum( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetChoiceNum( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetFaninMax( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkGetTotalFanins( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkCleanCopy( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkCleanData( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkCleanEquiv( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkCountCopy( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkSaveCopy( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkLoadCopy( Abc_Ntk_t * pNtk, Vec_Ptr_t * vCopies ); +extern ABC_DLL void Abc_NtkCleanNext( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkCleanMarkA( Abc_Ntk_t * pNtk ); +extern ABC_DLL Abc_Obj_t * Abc_NodeFindCoFanout( Abc_Obj_t * pNode ); +extern ABC_DLL Abc_Obj_t * Abc_NodeFindNonCoFanout( Abc_Obj_t * pNode ); +extern ABC_DLL Abc_Obj_t * Abc_NodeHasUniqueCoFanout( Abc_Obj_t * pNode ); +extern ABC_DLL bool Abc_NtkLogicHasSimpleCos( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NtkLogicMakeSimpleCos( Abc_Ntk_t * pNtk, bool fDuplicate ); +extern ABC_DLL void Abc_VecObjPushUniqueOrderByLevel( Vec_Ptr_t * p, Abc_Obj_t * pNode ); +extern ABC_DLL bool Abc_NodeIsExorType( Abc_Obj_t * pNode ); +extern ABC_DLL bool Abc_NodeIsMuxType( Abc_Obj_t * pNode ); +extern ABC_DLL bool Abc_NodeIsMuxControlType( Abc_Obj_t * pNode ); +extern ABC_DLL Abc_Obj_t * Abc_NodeRecognizeMux( Abc_Obj_t * pNode, Abc_Obj_t ** ppNodeT, Abc_Obj_t ** ppNodeE ); +extern ABC_DLL int Abc_NtkPrepareTwoNtks( FILE * pErr, Abc_Ntk_t * pNtk, char ** argv, int argc, Abc_Ntk_t ** ppNtk1, Abc_Ntk_t ** ppNtk2, int * pfDelete1, int * pfDelete2 ); +extern ABC_DLL void Abc_NodeCollectFanins( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes ); +extern ABC_DLL void Abc_NodeCollectFanouts( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkCollectLatches( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_NodeCompareLevelsIncrease( Abc_Obj_t ** pp1, Abc_Obj_t ** pp2 ); +extern ABC_DLL int Abc_NodeCompareLevelsDecrease( Abc_Obj_t ** pp1, Abc_Obj_t ** pp2 ); +extern ABC_DLL Vec_Int_t * Abc_NtkFanoutCounts( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Ptr_t * Abc_NtkCollectObjects( Abc_Ntk_t * pNtk ); +extern ABC_DLL Vec_Int_t * Abc_NtkGetCiIds( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_NtkReassignIds( Abc_Ntk_t * pNtk ); +extern ABC_DLL int Abc_ObjPointerCompare( void ** pp1, void ** pp2 ); +extern ABC_DLL void Abc_NtkTransferCopy( Abc_Ntk_t * pNtk ); /*=== abcVerify.c ==========================================================*/ -extern int * Abc_NtkVerifyGetCleanModel( Abc_Ntk_t * pNtk, int nFrames ); -extern int * Abc_NtkVerifySimulatePattern( Abc_Ntk_t * pNtk, int * pModel ); +extern ABC_DLL int * Abc_NtkVerifyGetCleanModel( Abc_Ntk_t * pNtk, int nFrames ); +extern ABC_DLL int * Abc_NtkVerifySimulatePattern( Abc_Ntk_t * pNtk, int * pModel ); #ifdef __cplusplus } diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 0437f8a9..9b5ebddb 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -91,6 +91,7 @@ static int Abc_CommandOrPos ( Abc_Frame_t * pAbc, int argc, char ** arg static int Abc_CommandAndPos ( Abc_Frame_t * pAbc, int argc, char ** argv ); static int Abc_CommandAppend ( Abc_Frame_t * pAbc, int argc, char ** argv ); static int Abc_CommandFrames ( Abc_Frame_t * pAbc, int argc, char ** argv ); +static int Abc_CommandDFrames ( Abc_Frame_t * pAbc, int argc, char ** argv ); static int Abc_CommandSop ( Abc_Frame_t * pAbc, int argc, char ** argv ); static int Abc_CommandBdd ( Abc_Frame_t * pAbc, int argc, char ** argv ); static int Abc_CommandAig ( Abc_Frame_t * pAbc, int argc, char ** argv ); @@ -181,6 +182,7 @@ static int Abc_CommandFlowRetime ( Abc_Frame_t * pAbc, int argc, char ** arg static int Abc_CommandSeqFpga ( Abc_Frame_t * pAbc, int argc, char ** argv ); static int Abc_CommandSeqMap ( Abc_Frame_t * pAbc, int argc, char ** argv ); static int Abc_CommandSeqSweep ( Abc_Frame_t * pAbc, int argc, char ** argv ); +static int Abc_CommandSeqSweepTest ( Abc_Frame_t * pAbc, int argc, char ** argv ); static int Abc_CommandLcorr ( Abc_Frame_t * pAbc, int argc, char ** argv ); static int Abc_CommandSeqCleanup ( Abc_Frame_t * pAbc, int argc, char ** argv ); static int Abc_CommandCycle ( Abc_Frame_t * pAbc, int argc, char ** argv ); @@ -345,6 +347,7 @@ void Abc_Init( Abc_Frame_t * pAbc ) Cmd_CommandAdd( pAbc, "Various", "andpos", Abc_CommandAndPos, 1 ); Cmd_CommandAdd( pAbc, "Various", "append", Abc_CommandAppend, 1 ); Cmd_CommandAdd( pAbc, "Various", "frames", Abc_CommandFrames, 1 ); + Cmd_CommandAdd( pAbc, "Various", "dframes", Abc_CommandDFrames, 1 ); Cmd_CommandAdd( pAbc, "Various", "sop", Abc_CommandSop, 0 ); Cmd_CommandAdd( pAbc, "Various", "bdd", Abc_CommandBdd, 0 ); Cmd_CommandAdd( pAbc, "Various", "aig", Abc_CommandAig, 0 ); @@ -432,6 +435,7 @@ void Abc_Init( Abc_Frame_t * pAbc ) // Cmd_CommandAdd( pAbc, "Sequential", "sfpga", Abc_CommandSeqFpga, 1 ); // Cmd_CommandAdd( pAbc, "Sequential", "smap", Abc_CommandSeqMap, 1 ); Cmd_CommandAdd( pAbc, "Sequential", "ssweep", Abc_CommandSeqSweep, 1 ); + Cmd_CommandAdd( pAbc, "Sequential", "testssw", Abc_CommandSeqSweepTest, 0 ); Cmd_CommandAdd( pAbc, "Sequential", "lcorr", Abc_CommandLcorr, 1 ); Cmd_CommandAdd( pAbc, "Sequential", "scleanup", Abc_CommandSeqCleanup, 1 ); Cmd_CommandAdd( pAbc, "Sequential", "cycle", Abc_CommandCycle, 1 ); @@ -5071,8 +5075,9 @@ int Abc_CommandFrames( Abc_Frame_t * pAbc, int argc, char ** argv ) { FILE * pOut, * pErr; Abc_Ntk_t * pNtk, * pNtkTemp, * pNtkRes; - int fInitial; int nFrames; + int fInitial; + int fVerbose; int c; pNtk = Abc_FrameReadNtk(pAbc); @@ -5080,10 +5085,11 @@ int Abc_CommandFrames( Abc_Frame_t * pAbc, int argc, char ** argv ) pErr = Abc_FrameReadErr(pAbc); // set defaults - fInitial = 0; nFrames = 5; + fInitial = 0; + fVerbose = 0; Extra_UtilGetoptReset(); - while ( ( c = Extra_UtilGetopt( argc, argv, "Fih" ) ) != EOF ) + while ( ( c = Extra_UtilGetopt( argc, argv, "Fivh" ) ) != EOF ) { switch ( c ) { @@ -5101,6 +5107,9 @@ int Abc_CommandFrames( Abc_Frame_t * pAbc, int argc, char ** argv ) case 'i': fInitial ^= 1; break; + case 'v': + fVerbose ^= 1; + break; case 'h': goto usage; default: @@ -5118,11 +5127,11 @@ int Abc_CommandFrames( Abc_Frame_t * pAbc, int argc, char ** argv ) if ( !Abc_NtkIsStrash(pNtk) ) { pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 ); - pNtkRes = Abc_NtkFrames( pNtkTemp, nFrames, fInitial ); + pNtkRes = Abc_NtkFrames( pNtkTemp, nFrames, fInitial, fVerbose ); Abc_NtkDelete( pNtkTemp ); } else - pNtkRes = Abc_NtkFrames( pNtk, nFrames, fInitial ); + pNtkRes = Abc_NtkFrames( pNtk, nFrames, fInitial, fVerbose ); if ( pNtkRes == NULL ) { fprintf( pErr, "Unrolling the network has failed.\n" ); @@ -5133,15 +5142,129 @@ int Abc_CommandFrames( Abc_Frame_t * pAbc, int argc, char ** argv ) return 0; usage: - fprintf( pErr, "usage: frames [-F num] [-ih]\n" ); + fprintf( pErr, "usage: frames [-F num] [-ivh]\n" ); fprintf( pErr, "\t unrolls the network for a number of time frames\n" ); fprintf( pErr, "\t-F num : the number of frames to unroll [default = %d]\n", nFrames ); fprintf( pErr, "\t-i : toggles initializing the first frame [default = %s]\n", fInitial? "yes": "no" ); + fprintf( pErr, "\t-v : toggles outputting verbose information [default = %s]\n", fVerbose? "yes": "no" ); + fprintf( pErr, "\t-h : print the command usage\n"); + return 1; +} + +/**Function************************************************************* + + Synopsis [] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +int Abc_CommandDFrames( Abc_Frame_t * pAbc, int argc, char ** argv ) +{ + FILE * pOut, * pErr; + Abc_Ntk_t * pNtk, * pNtkTemp, * pNtkRes; + int nPrefix; + int nFrames; + int fInitial; + int fVerbose; + int c; + + extern Abc_Ntk_t * Abc_NtkDarFrames( Abc_Ntk_t * pNtk, int nPrefix, int nFrames, int fInitial, int fVerbose ); + + pNtk = Abc_FrameReadNtk(pAbc); + pOut = Abc_FrameReadOut(pAbc); + pErr = Abc_FrameReadErr(pAbc); + + // set defaults + nPrefix = 5; + nFrames = 5; + fInitial = 0; + fVerbose = 0; + Extra_UtilGetoptReset(); + while ( ( c = Extra_UtilGetopt( argc, argv, "NFivh" ) ) != EOF ) + { + switch ( c ) + { + case 'N': + if ( globalUtilOptind >= argc ) + { + fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); + goto usage; + } + nPrefix = atoi(argv[globalUtilOptind]); + globalUtilOptind++; + if ( nPrefix <= 0 ) + goto usage; + break; + case 'F': + if ( globalUtilOptind >= argc ) + { + fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); + goto usage; + } + nFrames = atoi(argv[globalUtilOptind]); + globalUtilOptind++; + if ( nFrames <= 0 ) + goto usage; + break; + case 'i': + fInitial ^= 1; + break; + case 'v': + fVerbose ^= 1; + break; + case 'h': + goto usage; + default: + goto usage; + } + } + + if ( pNtk == NULL ) + { + fprintf( pErr, "Empty network.\n" ); + return 1; + } + if ( nPrefix > nFrames ) + { + fprintf( pErr, "Prefix (%d) cannot be more than the number of frames (%d).\n", nPrefix, nFrames ); + return 1; + } + + // get the new network + if ( !Abc_NtkIsStrash(pNtk) ) + { + pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 ); + pNtkRes = Abc_NtkDarFrames( pNtkTemp, nPrefix, nFrames, fInitial, fVerbose ); + Abc_NtkDelete( pNtkTemp ); + } + else + pNtkRes = Abc_NtkDarFrames( pNtk, nPrefix, nFrames, fInitial, fVerbose ); + if ( pNtkRes == NULL ) + { + fprintf( pErr, "Unrolling the network has failed.\n" ); + return 1; + } + // replace the current network + Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); + return 0; + +usage: + fprintf( pErr, "usage: dframes [-NF num] [-ivh]\n" ); + fprintf( pErr, "\t unrolls the network with simplification\n" ); + fprintf( pErr, "\t-N num : the number of frames to use as prefix [default = %d]\n", nPrefix ); + fprintf( pErr, "\t-F num : the number of frames to unroll [default = %d]\n", nFrames ); + fprintf( pErr, "\t-i : toggles initializing the first frame [default = %s]\n", fInitial? "yes": "no" ); + fprintf( pErr, "\t-v : toggles outputting verbose information [default = %s]\n", fVerbose? "yes": "no" ); fprintf( pErr, "\t-h : print the command usage\n"); return 1; } + /**Function************************************************************* Synopsis [] @@ -7352,6 +7475,7 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv ) // extern Abc_Ntk_t * Abc_NtkTestExor( Abc_Ntk_t * pNtk, int fVerbose ); // extern Abc_Ntk_t * Abc_NtkNtkTest( Abc_Ntk_t * pNtk, If_Lib_t * pLutLib ); extern Abc_Ntk_t * Abc_NtkDarRetimeStep( Abc_Ntk_t * pNtk, int fVerbose ); + extern void Abc_NtkDarTest( Abc_Ntk_t * pNtk ); @@ -7537,6 +7661,8 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv ) */ // Abc_NtkDarPartition( pNtk ); +Abc_NtkDarTest( pNtk ); +return 0; pNtkRes = Abc_NtkDarRetimeStep( pNtk, 0 ); if ( pNtkRes == NULL ) @@ -12891,6 +13017,170 @@ usage: SeeAlso [] ***********************************************************************/ +int Abc_CommandSeqSweepTest( Abc_Frame_t * pAbc, int argc, char ** argv ) +{ + char * pFileName; + Fra_Ssw_t Pars, * pPars = &Pars; + int c; +// extern Abc_Ntk_t * Abc_NtkDarSeqSweep( Abc_Ntk_t * pNtk, Fra_Ssw_t * pPars ); + extern int Fra_FraigInductionTest( char * pFileName, Fra_Ssw_t * pParams ); + + // set defaults + pPars->nPartSize = 0; + pPars->nOverSize = 0; + pPars->nFramesP = 0; + pPars->nFramesK = 1; + pPars->nMaxImps = 5000; + pPars->nMaxLevs = 0; + pPars->fUseImps = 0; + pPars->fRewrite = 0; + pPars->fFraiging = 0; + pPars->fLatchCorr = 0; + pPars->fWriteImps = 0; + pPars->fUse1Hot = 0; + pPars->fVerbose = 0; + pPars->TimeLimit = 0; + Extra_UtilGetoptReset(); + while ( ( c = Extra_UtilGetopt( argc, argv, "PQNFILirfletvh" ) ) != EOF ) + { + switch ( c ) + { + case 'P': + if ( globalUtilOptind >= argc ) + { + fprintf( stdout, "Command line switch \"-P\" should be followed by an integer.\n" ); + goto usage; + } + pPars->nPartSize = atoi(argv[globalUtilOptind]); + globalUtilOptind++; + if ( pPars->nPartSize < 2 ) + goto usage; + break; + case 'Q': + if ( globalUtilOptind >= argc ) + { + fprintf( stdout, "Command line switch \"-Q\" should be followed by an integer.\n" ); + goto usage; + } + pPars->nOverSize = atoi(argv[globalUtilOptind]); + globalUtilOptind++; + if ( pPars->nOverSize < 0 ) + goto usage; + break; + case 'N': + if ( globalUtilOptind >= argc ) + { + fprintf( stdout, "Command line switch \"-N\" should be followed by an integer.\n" ); + goto usage; + } + pPars->nFramesP = atoi(argv[globalUtilOptind]); + globalUtilOptind++; + if ( pPars->nFramesP < 0 ) + goto usage; + break; + case 'F': + if ( globalUtilOptind >= argc ) + { + fprintf( stdout, "Command line switch \"-F\" should be followed by an integer.\n" ); + goto usage; + } + pPars->nFramesK = atoi(argv[globalUtilOptind]); + globalUtilOptind++; + if ( pPars->nFramesK <= 0 ) + goto usage; + break; + case 'I': + if ( globalUtilOptind >= argc ) + { + fprintf( stdout, "Command line switch \"-I\" should be followed by an integer.\n" ); + goto usage; + } + pPars->nMaxImps = atoi(argv[globalUtilOptind]); + globalUtilOptind++; + if ( pPars->nMaxImps <= 0 ) + goto usage; + break; + case 'L': + if ( globalUtilOptind >= argc ) + { + fprintf( stdout, "Command line switch \"-L\" should be followed by an integer.\n" ); + goto usage; + } + pPars->nMaxLevs = atoi(argv[globalUtilOptind]); + globalUtilOptind++; + if ( pPars->nMaxLevs <= 0 ) + goto usage; + break; + case 'i': + pPars->fUseImps ^= 1; + break; + case 'r': + pPars->fRewrite ^= 1; + break; + case 'f': + pPars->fFraiging ^= 1; + break; + case 'l': + pPars->fLatchCorr ^= 1; + break; + case 'e': + pPars->fWriteImps ^= 1; + break; + case 't': + pPars->fUse1Hot ^= 1; + break; + case 'v': + pPars->fVerbose ^= 1; + break; + case 'h': + goto usage; + default: + goto usage; + } + } + // get the input file name + if ( argc == globalUtilOptind + 1 ) + pFileName = argv[globalUtilOptind]; + else + { + printf( "File name should be given on the command line.\n" ); + return 1; + } + Fra_FraigInductionTest( pFileName, pPars ); + return 0; + +usage: + fprintf( stdout, "usage: testssw [-PQNFL num] [-lrfetvh] <file>\n" ); + fprintf( stdout, "\t performs sequential sweep using K-step induction\n" ); + fprintf( stdout, "\t (outputs a file with a set of pairs of equivalent nodes)\n" ); + fprintf( stdout, "\t-P num : max partition size (0 = no partitioning) [default = %d]\n", pPars->nPartSize ); + fprintf( stdout, "\t-Q num : partition overlap (0 = no overlap) [default = %d]\n", pPars->nOverSize ); + fprintf( stdout, "\t-N num : number of time frames to use as the prefix [default = %d]\n", pPars->nFramesP ); + fprintf( stdout, "\t-F num : number of time frames for induction (1=simple) [default = %d]\n", pPars->nFramesK ); + fprintf( stdout, "\t-L num : max number of levels to consider (0=all) [default = %d]\n", pPars->nMaxLevs ); +// fprintf( stdout, "\t-I num : max number of implications to consider [default = %d]\n", pPars->nMaxImps ); +// fprintf( stdout, "\t-i : toggle using implications [default = %s]\n", pPars->fUseImps? "yes": "no" ); + fprintf( stdout, "\t-l : toggle latch correspondence only [default = %s]\n", pPars->fLatchCorr? "yes": "no" ); + fprintf( stdout, "\t-r : toggle AIG rewriting [default = %s]\n", pPars->fRewrite? "yes": "no" ); + fprintf( stdout, "\t-f : toggle fraiging (combinational SAT sweeping) [default = %s]\n", pPars->fFraiging? "yes": "no" ); + fprintf( stdout, "\t-e : toggle writing implications as assertions [default = %s]\n", pPars->fWriteImps? "yes": "no" ); + fprintf( stdout, "\t-t : toggle using one-hotness conditions [default = %s]\n", pPars->fUse1Hot? "yes": "no" ); + fprintf( stdout, "\t-v : toggle verbose output [default = %s]\n", pPars->fVerbose? "yes": "no" ); + fprintf( stdout, "\t-h : print the command usage\n"); + return 1; +} + +/**Function************************************************************* + + Synopsis [] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ int Abc_CommandLcorr( Abc_Frame_t * pAbc, int argc, char ** argv ) { FILE * pOut, * pErr; diff --git a/src/base/abci/abcDar.c b/src/base/abci/abcDar.c index 7b7617e6..ca54e4e1 100644 --- a/src/base/abci/abcDar.c +++ b/src/base/abci/abcDar.c @@ -1491,6 +1491,7 @@ Abc_Ntk_t * Abc_NtkDarLatchSweep( Abc_Ntk_t * pNtk, int fLatchConst, int fLatchE if ( pMan->vFlopNums ) Vec_IntFree( pMan->vFlopNums ); pMan->vFlopNums = NULL; + pMan = Aig_ManScl( pTemp = pMan, fLatchConst, fLatchEqual, fVerbose ); Aig_ManStop( pTemp ); pNtkAig = Abc_NtkFromDarSeqSweep( pNtk, pMan ); @@ -2083,6 +2084,38 @@ Abc_Ntk_t * Abc_NtkPhaseAbstract( Abc_Ntk_t * pNtk, int nFrames, int fIgnore, in /**Function************************************************************* + Synopsis [Performs phase abstraction.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +Abc_Ntk_t * Abc_NtkDarFrames( Abc_Ntk_t * pNtk, int nPrefix, int nFrames, int fInit, int fVerbose ) +{ + Abc_Ntk_t * pNtkAig; + Aig_Man_t * pMan, * pTemp; + pMan = Abc_NtkToDar( pNtk, 0, 0 ); + pMan->nRegs = Abc_NtkLatchNum(pNtk); + pMan->nTruePis = Aig_ManPiNum(pMan) - Aig_ManRegNum(pMan); + pMan->nTruePos = Aig_ManPoNum(pMan) - Aig_ManRegNum(pMan); + if ( pMan == NULL ) + return NULL; + pMan = Saig_ManTimeframeSimplify( pTemp = pMan, nPrefix, nFrames, fInit, fVerbose ); + Aig_ManStop( pTemp ); + if ( pMan == NULL ) + return NULL; + pNtkAig = Abc_NtkFromAigPhase( pMan ); + pNtkAig->pName = Extra_UtilStrsav(pNtk->pName); + pNtkAig->pSpec = Extra_UtilStrsav(pNtk->pSpec); + Aig_ManStop( pMan ); + return pNtkAig; +} + +/**Function************************************************************* + Synopsis [Performs BDD-based reachability analysis.] Description [] @@ -2107,6 +2140,38 @@ void Abc_NtkDarReach( Abc_Ntk_t * pNtk, int nBddMax, int nIterMax, int fPartitio } +/**Function************************************************************* + + Synopsis [Performs BDD-based reachability analysis.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +void Abc_NtkDarTest( Abc_Ntk_t * pNtk ) +{ + Aig_Man_t * pMan; + assert( Abc_NtkIsStrash(pNtk) ); + pMan = Abc_NtkToDar( pNtk, 0, 1 ); + pMan->nRegs = Abc_NtkLatchNum(pNtk); + pMan->nTruePis = Aig_ManPiNum(pMan) - Aig_ManRegNum(pMan); + pMan->nTruePos = Aig_ManPoNum(pMan) - Aig_ManRegNum(pMan); + if ( pMan == NULL ) + return; + +Aig_ManSetRegNum( pMan, pMan->nRegs ); +Aig_ManPrintStats( pMan ); +Saig_ManDumpBlif( pMan, "_temp_.blif" ); +Aig_ManStop( pMan ); +pMan = Saig_ManReadBlif( "_temp_.blif" ); +Aig_ManPrintStats( pMan ); + + Aig_ManStop( pMan ); +} + //////////////////////////////////////////////////////////////////////// /// END OF FILE /// //////////////////////////////////////////////////////////////////////// diff --git a/src/base/abci/abcMiter.c b/src/base/abci/abcMiter.c index 9bab238b..4e1022b8 100644 --- a/src/base/abci/abcMiter.c +++ b/src/base/abci/abcMiter.c @@ -766,7 +766,7 @@ void Abc_NtkMiterReport( Abc_Ntk_t * pMiter ) SeeAlso [] ***********************************************************************/ -Abc_Ntk_t * Abc_NtkFrames( Abc_Ntk_t * pNtk, int nFrames, int fInitial ) +Abc_Ntk_t * Abc_NtkFrames( Abc_Ntk_t * pNtk, int nFrames, int fInitial, int fVerbose ) { char Buffer[1000]; ProgressBar * pProgress; diff --git a/src/base/abci/abcVerify.c b/src/base/abci/abcVerify.c index 328d2907..96a4566d 100644 --- a/src/base/abci/abcVerify.c +++ b/src/base/abci/abcVerify.c @@ -478,7 +478,7 @@ void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nConfLimit, int nI } // create the timeframes - pFrames = Abc_NtkFrames( pMiter, nFrames, 1 ); + pFrames = Abc_NtkFrames( pMiter, nFrames, 1, 0 ); Abc_NtkDelete( pMiter ); if ( pFrames == NULL ) { @@ -564,7 +564,7 @@ int Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int nFr } // create the timeframes - pFrames = Abc_NtkFrames( pMiter, nFrames, 1 ); + pFrames = Abc_NtkFrames( pMiter, nFrames, 1, 0 ); Abc_NtkDelete( pMiter ); if ( pFrames == NULL ) { @@ -777,7 +777,7 @@ void Abc_NtkGetSeqPoSupp( Abc_Ntk_t * pNtk, int iFrame, int iNumPo ) Vec_Ptr_t * vSupp; int i, k; // get the timeframes of the network - pFrames = Abc_NtkFrames( pNtk, iFrame + 1, 0 ); + pFrames = Abc_NtkFrames( pNtk, iFrame + 1, 0, 0 ); //Abc_NtkShowAig( pFrames ); // get the PO of the timeframes diff --git a/src/base/main/main.h b/src/base/main/main.h index b5cc0dfe..852b8f25 100644 --- a/src/base/main/main.h +++ b/src/base/main/main.h @@ -14,7 +14,7 @@ Date [Ver. 1.0. Started - June 20, 2005.] - Revision [$Id: main.h,v 1.00 2005/06/20 00:00:00 alanmi Exp $] + Revision [$Id: main.h,v 1.1 2008/05/14 22:13:13 wudenni Exp $] ***********************************************************************/ @@ -69,47 +69,57 @@ typedef struct Abc_Frame_t_ Abc_Frame_t; //////////////////////////////////////////////////////////////////////// /// FUNCTION DEFINITIONS /// //////////////////////////////////////////////////////////////////////// +#ifdef WIN32 +#define DLLEXPORT __declspec(dllexport) +#define DLLIMPORT __declspec(dllimport) +#else /* defined(WIN32) */ +#define DLLIMPORT +#endif /* defined(WIN32) */ + +#ifndef ABC_DLL +#define ABC_DLL DLLIMPORT +#endif /*=== main.c ===========================================================*/ -extern void Abc_Start(); -extern void Abc_Stop(); +extern ABC_DLL void Abc_Start(); +extern ABC_DLL void Abc_Stop(); /*=== mainFrame.c ===========================================================*/ -extern Abc_Ntk_t * Abc_FrameReadNtk( Abc_Frame_t * p ); -extern FILE * Abc_FrameReadOut( Abc_Frame_t * p ); -extern FILE * Abc_FrameReadErr( Abc_Frame_t * p ); -extern bool Abc_FrameReadMode( Abc_Frame_t * p ); -extern bool Abc_FrameSetMode( Abc_Frame_t * p, bool fNameMode ); -extern void Abc_FrameRestart( Abc_Frame_t * p ); -extern bool Abc_FrameShowProgress( Abc_Frame_t * p ); - -extern void Abc_FrameSetCurrentNetwork( Abc_Frame_t * p, Abc_Ntk_t * pNet ); -extern void Abc_FrameSwapCurrentAndBackup( Abc_Frame_t * p ); -extern void Abc_FrameReplaceCurrentNetwork( Abc_Frame_t * p, Abc_Ntk_t * pNet ); -extern void Abc_FrameUnmapAllNetworks( Abc_Frame_t * p ); -extern void Abc_FrameDeleteAllNetworks( Abc_Frame_t * p ); - -extern void Abc_FrameSetGlobalFrame( Abc_Frame_t * p ); -extern Abc_Frame_t * Abc_FrameGetGlobalFrame(); - -extern Vec_Ptr_t * Abc_FrameReadStore(); -extern int Abc_FrameReadStoreSize(); -extern void * Abc_FrameReadLibLut(); -extern void * Abc_FrameReadLibGen(); -extern void * Abc_FrameReadLibSuper(); -extern void * Abc_FrameReadLibVer(); -extern void * Abc_FrameReadManDd(); -extern void * Abc_FrameReadManDec(); -extern char * Abc_FrameReadFlag( char * pFlag ); -extern bool Abc_FrameIsFlagEnabled( char * pFlag ); - -extern void Abc_FrameSetNtkStore( Abc_Ntk_t * pNtk ); -extern void Abc_FrameSetNtkStoreSize( int nStored ); -extern void Abc_FrameSetLibLut( void * pLib ); -extern void Abc_FrameSetLibGen( void * pLib ); -extern void Abc_FrameSetLibSuper( void * pLib ); -extern void Abc_FrameSetLibVer( void * pLib ); -extern void Abc_FrameSetFlag( char * pFlag, char * pValue ); +extern ABC_DLL Abc_Ntk_t * Abc_FrameReadNtk( Abc_Frame_t * p ); +extern ABC_DLL FILE * Abc_FrameReadOut( Abc_Frame_t * p ); +extern ABC_DLL FILE * Abc_FrameReadErr( Abc_Frame_t * p ); +extern ABC_DLL bool Abc_FrameReadMode( Abc_Frame_t * p ); +extern ABC_DLL bool Abc_FrameSetMode( Abc_Frame_t * p, bool fNameMode ); +extern ABC_DLL void Abc_FrameRestart( Abc_Frame_t * p ); +extern ABC_DLL bool Abc_FrameShowProgress( Abc_Frame_t * p ); + +extern ABC_DLL void Abc_FrameSetCurrentNetwork( Abc_Frame_t * p, Abc_Ntk_t * pNet ); +extern ABC_DLL void Abc_FrameSwapCurrentAndBackup( Abc_Frame_t * p ); +extern ABC_DLL void Abc_FrameReplaceCurrentNetwork( Abc_Frame_t * p, Abc_Ntk_t * pNet ); +extern ABC_DLL void Abc_FrameUnmapAllNetworks( Abc_Frame_t * p ); +extern ABC_DLL void Abc_FrameDeleteAllNetworks( Abc_Frame_t * p ); + +extern ABC_DLL void Abc_FrameSetGlobalFrame( Abc_Frame_t * p ); +extern ABC_DLL Abc_Frame_t * Abc_FrameGetGlobalFrame(); + +extern ABC_DLL Vec_Ptr_t * Abc_FrameReadStore(); +extern ABC_DLL int Abc_FrameReadStoreSize(); +extern ABC_DLL void * Abc_FrameReadLibLut(); +extern ABC_DLL void * Abc_FrameReadLibGen(); +extern ABC_DLL void * Abc_FrameReadLibSuper(); +extern ABC_DLL void * Abc_FrameReadLibVer(); +extern ABC_DLL void * Abc_FrameReadManDd(); +extern ABC_DLL void * Abc_FrameReadManDec(); +extern ABC_DLL char * Abc_FrameReadFlag( char * pFlag ); +extern ABC_DLL bool Abc_FrameIsFlagEnabled( char * pFlag ); + +extern ABC_DLL void Abc_FrameSetNtkStore( Abc_Ntk_t * pNtk ); +extern ABC_DLL void Abc_FrameSetNtkStoreSize( int nStored ); +extern ABC_DLL void Abc_FrameSetLibLut( void * pLib ); +extern ABC_DLL void Abc_FrameSetLibGen( void * pLib ); +extern ABC_DLL void Abc_FrameSetLibSuper( void * pLib ); +extern ABC_DLL void Abc_FrameSetLibVer( void * pLib ); +extern ABC_DLL void Abc_FrameSetFlag( char * pFlag, char * pValue ); #ifdef __cplusplus } diff --git a/src/base/main/mainInt.h b/src/base/main/mainInt.h index f79f9126..b03a00fa 100644 --- a/src/base/main/mainInt.h +++ b/src/base/main/mainInt.h @@ -14,13 +14,13 @@ Date [Ver. 1.0. Started - June 20, 2005.] - Revision [$Id: mainInt.h,v 1.00 2005/06/20 00:00:00 alanmi Exp $] + Revision [$Id: mainInt.h,v 1.1 2008/05/14 22:13:13 wudenni Exp $] ***********************************************************************/ #ifndef __MAIN_INT_H__ #define __MAIN_INT_H__ - + //////////////////////////////////////////////////////////////////////// /// INCLUDES /// //////////////////////////////////////////////////////////////////////// @@ -93,21 +93,31 @@ struct Abc_Frame_t_ //////////////////////////////////////////////////////////////////////// /// FUNCTION DEFINITIONS /// //////////////////////////////////////////////////////////////////////// +#ifdef WIN32 +#define DLLEXPORT __declspec(dllexport) +#define DLLIMPORT __declspec(dllimport) +#else /* defined(WIN32) */ +#define DLLIMPORT +#endif /* defined(WIN32) */ + +#ifndef ABC_DLL +#define ABC_DLL DLLIMPORT +#endif /*=== mvMain.c ===========================================================*/ -extern int main( int argc, char * argv[] ); +extern ABC_DLL int main( int argc, char * argv[] ); /*=== mvInit.c ===================================================*/ -extern void Abc_FrameInit( Abc_Frame_t * pAbc ); -extern void Abc_FrameEnd( Abc_Frame_t * pAbc ); +extern ABC_DLL void Abc_FrameInit( Abc_Frame_t * pAbc ); +extern ABC_DLL void Abc_FrameEnd( Abc_Frame_t * pAbc ); /*=== mvFrame.c =====================================================*/ -extern Abc_Frame_t * Abc_FrameAllocate(); -extern void Abc_FrameDeallocate( Abc_Frame_t * p ); +extern ABC_DLL Abc_Frame_t * Abc_FrameAllocate(); +extern ABC_DLL void Abc_FrameDeallocate( Abc_Frame_t * p ); /*=== mvUtils.c =====================================================*/ -extern char * Abc_UtilsGetVersion( Abc_Frame_t * pAbc ); -extern char * Abc_UtilsGetUsersInput( Abc_Frame_t * pAbc ); -extern void Abc_UtilsPrintHello( Abc_Frame_t * pAbc ); -extern void Abc_UtilsPrintUsage( Abc_Frame_t * pAbc, char * ProgName ); -extern void Abc_UtilsSource( Abc_Frame_t * pAbc ); +extern ABC_DLL char * Abc_UtilsGetVersion( Abc_Frame_t * pAbc ); +extern ABC_DLL char * Abc_UtilsGetUsersInput( Abc_Frame_t * pAbc ); +extern ABC_DLL void Abc_UtilsPrintHello( Abc_Frame_t * pAbc ); +extern ABC_DLL void Abc_UtilsPrintUsage( Abc_Frame_t * pAbc, char * ProgName ); +extern ABC_DLL void Abc_UtilsSource( Abc_Frame_t * pAbc ); #endif |