ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
sbdInt.h
Go to the documentation of this file.
1
20
21#ifndef ABC__opt_sbdInt__h
22#define ABC__opt_sbdInt__h
23
24
28
29#include <stdio.h>
30#include <stdlib.h>
31#include <string.h>
32#include <assert.h>
33
34#include "misc/vec/vec.h"
35#include "sat/bsat/satSolver.h"
36#include "misc/util/utilNam.h"
37#include "misc/util/utilTruth.h"
38#include "map/scl/sclLib.h"
39#include "map/scl/sclCon.h"
40#include "bool/kit/kit.h"
41#include "misc/st/st.h"
42#include "map/mio/mio.h"
43#include "base/abc/abc.h"
44#include "sbd.h"
45
49
51
52#define SBD_SAT_UNDEC 0x1234567812345678
53#define SBD_SAT_SAT 0x8765432187654321
54
55#define SBD_LUTS_MAX 2
56#define SBD_SIZE_MAX 4
57#define SBD_DIV_MAX 10
58#define SBD_FVAR_MAX 100
59
63
64typedef struct Sbd_Sto_t_ Sbd_Sto_t;
65typedef struct Sbd_Srv_t_ Sbd_Srv_t;
66
67typedef struct Sbd_Str_t_ Sbd_Str_t;
69{
70 int fLut; // LUT or SEL
71 int nVarIns; // input count
72 int VarIns[SBD_DIV_MAX]; // input vars
73 word Res; // result of solving
74};
75
79
80
84
85/*=== sbdCut.c ==========================================================*/
86extern Sbd_Sto_t * Sbd_StoAlloc( Gia_Man_t * pGia, Vec_Int_t * vMirrors, int nLutSize, int nCutSize, int nCutNum, int fCutMin, int fVerbose );
87extern void Sbd_StoFree( Sbd_Sto_t * p );
88extern int Sbd_StoObjRefs( Sbd_Sto_t * p, int iObj );
89extern void Sbd_StoRefObj( Sbd_Sto_t * p, int iObj, int iMirror );
90extern void Sbd_StoDerefObj( Sbd_Sto_t * p, int iObj );
91extern void Sbd_StoComputeCutsConst0( Sbd_Sto_t * p, int iObj );
92extern void Sbd_StoComputeCutsObj( Sbd_Sto_t * p, int iObj, int Delay, int Level );
93extern void Sbd_StoComputeCutsCi( Sbd_Sto_t * p, int iObj, int Delay, int Level );
94extern int Sbd_StoComputeCutsNode( Sbd_Sto_t * p, int iObj );
95extern void Sbd_StoSaveBestDelayCut( Sbd_Sto_t * p, int iObj, int * pCut );
96extern int Sbd_StoObjBestCut( Sbd_Sto_t * p, int iObj, int nSize, int * pLeaves );
97/*=== sbdCut2.c ==========================================================*/
98extern Sbd_Srv_t * Sbd_ManCutServerStart( Gia_Man_t * pGia, Vec_Int_t * vMirrors,
99 Vec_Int_t * vLutLevs, Vec_Int_t * vLevs, Vec_Int_t * vRefs,
100 int nLutSize, int nCutSize, int nCutNum, int fVerbose );
101extern void Sbd_ManCutServerStop( Sbd_Srv_t * p );
102extern int Sbd_ManCutServerFirst( Sbd_Srv_t * p, int iObj, int * pLeaves );
103/*=== sbdWin.c ==========================================================*/
104extern 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 );
105extern 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 );
106extern int Sbd_ManCollectConstants( sat_solver * pSat, int nCareMints[2], int PivotVar, word * pVarSims[], Vec_Int_t * vInds );
107extern int Sbd_ManCollectConstantsNew( sat_solver * pSat, Vec_Int_t * vDivVars, int nConsts, int PivotVar, word * pOnset, word * pOffset );
108/*=== sbdPath.c ==========================================================*/
110/*=== sbdQbf.c ==========================================================*/
111extern int Sbd_ProblemSolve(
112 Gia_Man_t * p, Vec_Int_t * vMirrors,
113 int Pivot, Vec_Int_t * vWinObjs, Vec_Int_t * vObj2Var,
114 Vec_Int_t * vTfo, Vec_Int_t * vRoots,
115 Vec_Int_t * vDivSet, int nStrs, Sbd_Str_t * pStr0
116 );
117
119
120#endif
121
125
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
#define sat_solver
Definition cecSatG2.c:34
Cube * p
Definition exorList.c:222
struct Gia_Man_t_ Gia_Man_t
Definition gia.h:96
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36
Sbd_Sto_t * Sbd_StoAlloc(Gia_Man_t *pGia, Vec_Int_t *vMirrors, int nLutSize, int nCutSize, int nCutNum, int fCutMin, int fVerbose)
MACRO DEFINITIONS ///.
Definition sbdCut.c:667
void Sbd_ManCutServerStop(Sbd_Srv_t *p)
Definition sbdCut2.c:110
int Sbd_StoObjRefs(Sbd_Sto_t *p, int iObj)
Definition sbdCut.c:746
void Sbd_StoFree(Sbd_Sto_t *p)
Definition sbdCut.c:690
struct Sbd_Sto_t_ Sbd_Sto_t
BASIC TYPES ///.
Definition sbdInt.h:64
struct Sbd_Srv_t_ Sbd_Srv_t
Definition sbdInt.h:65
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)
Definition sbdWin.c:178
int Sbd_StoComputeCutsNode(Sbd_Sto_t *p, int iObj)
Definition sbdCut.c:729
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)
DECLARATIONS ///.
Definition sbdWin.c:52
void Sbd_StoSaveBestDelayCut(Sbd_Sto_t *p, int iObj, int *pCut)
Definition sbdCut.c:738
#define SBD_DIV_MAX
Definition sbdInt.h:57
void Sbd_StoComputeCutsConst0(Sbd_Sto_t *p, int iObj)
Definition sbdCut.c:719
int Sbd_ManCollectConstants(sat_solver *pSat, int nCareMints[2], int PivotVar, word *pVarSims[], Vec_Int_t *vInds)
Definition sbdWin.c:411
int Sbd_ManCollectConstantsNew(sat_solver *pSat, Vec_Int_t *vDivVars, int nConsts, int PivotVar, word *pOnset, word *pOffset)
Definition sbdWin.c:433
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)
Definition sbdLut.c:187
int Sbd_ManCutServerFirst(Sbd_Srv_t *p, int iObj, int *pLeaves)
Definition sbdCut2.c:308
void Sbd_StoComputeCutsObj(Sbd_Sto_t *p, int iObj, int Delay, int Level)
Definition sbdCut.c:702
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)
FUNCTION DEFINITIONS ///.
Definition sbdCut2.c:84
void Sbd_StoRefObj(Sbd_Sto_t *p, int iObj, int iMirror)
Definition sbdCut.c:750
void Sbd_StoDerefObj(Sbd_Sto_t *p, int iObj)
Definition sbdCut.c:778
Vec_Bit_t * Sbc_ManCriticalPath(Gia_Man_t *p)
Definition sbdPath.c:119
struct Sbd_Str_t_ Sbd_Str_t
Definition sbdInt.h:67
int Sbd_StoObjBestCut(Sbd_Sto_t *p, int iObj, int nSize, int *pLeaves)
Definition sbdCut.c:802
void Sbd_StoComputeCutsCi(Sbd_Sto_t *p, int iObj, int Delay, int Level)
Definition sbdCut.c:724
word Res
Definition sbdInt.h:73
int nVarIns
Definition sbdInt.h:71
int fLut
Definition sbdInt.h:70
int VarIns[SBD_DIV_MAX]
Definition sbdInt.h:72
typedefABC_NAMESPACE_HEADER_START struct Vec_Bit_t_ Vec_Bit_t
INCLUDES ///.
Definition vecBit.h:42