| /**CFile**************************************************************** | |
| FileName [rsbInt.h] | |
| SystemName [ABC: Logic synthesis and verification system.] | |
| PackageName [SAT-based optimization using internal don't-cares.] | |
| Synopsis [Internal declarations.] | |
| Author [Alan Mishchenko] | |
| Affiliation [UC Berkeley] | |
| Date [Ver. 1.0. Started - June 20, 2005.] | |
| Revision [$Id: rsbInt.h,v 1.00 2005/06/20 00:00:00 alanmi Exp $] | |
| ***********************************************************************/ | |
| #ifndef ABC__opt_sbdInt__h | |
| #define ABC__opt_sbdInt__h | |
| //////////////////////////////////////////////////////////////////////// | |
| /// INCLUDES /// | |
| //////////////////////////////////////////////////////////////////////// | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <string.h> | |
| #include <assert.h> | |
| #include "misc/vec/vec.h" | |
| #include "sat/bsat/satSolver.h" | |
| #include "misc/util/utilNam.h" | |
| #include "misc/util/utilTruth.h" | |
| #include "map/scl/sclLib.h" | |
| #include "map/scl/sclCon.h" | |
| #include "bool/kit/kit.h" | |
| #include "misc/st/st.h" | |
| #include "map/mio/mio.h" | |
| #include "base/abc/abc.h" | |
| #include "sbd.h" | |
| //////////////////////////////////////////////////////////////////////// | |
| /// PARAMETERS /// | |
| //////////////////////////////////////////////////////////////////////// | |
| ABC_NAMESPACE_HEADER_START | |
| #define SBD_SAT_UNDEC 0x1234567812345678 | |
| #define SBD_SAT_SAT 0x8765432187654321 | |
| #define SBD_LUTS_MAX 2 | |
| #define SBD_SIZE_MAX 4 | |
| #define SBD_DIV_MAX 10 | |
| #define SBD_FVAR_MAX 100 | |
| //////////////////////////////////////////////////////////////////////// | |
| /// BASIC TYPES /// | |
| //////////////////////////////////////////////////////////////////////// | |
| typedef struct Sbd_Sto_t_ Sbd_Sto_t; | |
| typedef struct Sbd_Srv_t_ Sbd_Srv_t; | |
| typedef struct Sbd_Str_t_ Sbd_Str_t; | |
| struct Sbd_Str_t_ | |
| { | |
| int fLut; // LUT or SEL | |
| int nVarIns; // input count | |
| int VarIns[SBD_DIV_MAX]; // input vars | |
| word Res; // result of solving | |
| }; | |
| //////////////////////////////////////////////////////////////////////// | |
| /// MACRO DEFINITIONS /// | |
| //////////////////////////////////////////////////////////////////////// | |
| //////////////////////////////////////////////////////////////////////// | |
| /// FUNCTION DECLARATIONS /// | |
| //////////////////////////////////////////////////////////////////////// | |
| /*=== sbdCut.c ==========================================================*/ | |
| extern Sbd_Sto_t * Sbd_StoAlloc( Gia_Man_t * pGia, Vec_Int_t * vMirrors, int nLutSize, int nCutSize, int nCutNum, int fCutMin, int fVerbose ); | |
| extern void Sbd_StoFree( Sbd_Sto_t * p ); | |
| extern int Sbd_StoObjRefs( Sbd_Sto_t * p, int iObj ); | |
| extern void Sbd_StoRefObj( Sbd_Sto_t * p, int iObj, int iMirror ); | |
| extern void Sbd_StoDerefObj( Sbd_Sto_t * p, int iObj ); | |
| extern void Sbd_StoComputeCutsConst0( Sbd_Sto_t * p, int iObj ); | |
| extern void Sbd_StoComputeCutsObj( Sbd_Sto_t * p, int iObj, int Delay, int Level ); | |
| extern void Sbd_StoComputeCutsCi( Sbd_Sto_t * p, int iObj, int Delay, int Level ); | |
| extern int Sbd_StoComputeCutsNode( Sbd_Sto_t * p, int iObj ); | |
| extern void Sbd_StoSaveBestDelayCut( Sbd_Sto_t * p, int iObj, int * pCut ); | |
| extern int Sbd_StoObjBestCut( Sbd_Sto_t * p, int iObj, int nSize, int * pLeaves ); | |
| /*=== sbdCut2.c ==========================================================*/ | |
| extern Sbd_Srv_t * Sbd_ManCutServerStart( Gia_Man_t * pGia, Vec_Int_t * vMirrors, | |
| Vec_Int_t * vLutLevs, Vec_Int_t * vLevs, Vec_Int_t * vRefs, | |
| int nLutSize, int nCutSize, int nCutNum, int fVerbose ); | |
| extern void Sbd_ManCutServerStop( Sbd_Srv_t * p ); | |
| extern int Sbd_ManCutServerFirst( Sbd_Srv_t * p, int iObj, int * pLeaves ); | |
| /*=== sbdWin.c ==========================================================*/ | |
| extern word Sbd_ManSolve( sat_solver * pSat, int PivotVar, int FreeVar, Vec_Int_t * vDivSet, Vec_Int_t * vDivVars, Vec_Int_t * vDivValues, Vec_Int_t * vTemp ); | |
| extern sat_solver * Sbd_ManSatSolver( sat_solver * pSat, Gia_Man_t * p, Vec_Int_t * vMirrors, int Pivot, Vec_Int_t * vWinObjs, Vec_Int_t * vObj2Var, Vec_Int_t * vTfo, Vec_Int_t * vRoots, int fQbf ); | |
| extern int Sbd_ManCollectConstants( sat_solver * pSat, int nCareMints[2], int PivotVar, word * pVarSims[], Vec_Int_t * vInds ); | |
| extern int Sbd_ManCollectConstantsNew( sat_solver * pSat, Vec_Int_t * vDivVars, int nConsts, int PivotVar, word * pOnset, word * pOffset ); | |
| /*=== sbdPath.c ==========================================================*/ | |
| extern Vec_Bit_t * Sbc_ManCriticalPath( Gia_Man_t * p ); | |
| /*=== sbdQbf.c ==========================================================*/ | |
| extern int Sbd_ProblemSolve( | |
| Gia_Man_t * p, Vec_Int_t * vMirrors, | |
| int Pivot, Vec_Int_t * vWinObjs, Vec_Int_t * vObj2Var, | |
| Vec_Int_t * vTfo, Vec_Int_t * vRoots, | |
| Vec_Int_t * vDivSet, int nStrs, Sbd_Str_t * pStr0 | |
| ); | |
| ABC_NAMESPACE_HEADER_END | |
| #endif | |
| //////////////////////////////////////////////////////////////////////// | |
| /// END OF FILE /// | |
| //////////////////////////////////////////////////////////////////////// | |