abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
bmc.h
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [bmc.h]
4 
5  SystemName [ABC: Logic synthesis and verification system.]
6 
7  PackageName [SAT-based bounded model checking.]
8 
9  Synopsis [External declarations.]
10 
11  Author [Alan Mishchenko]
12 
13  Affiliation [UC Berkeley]
14 
15  Date [Ver. 1.0. Started - June 20, 2005.]
16 
17  Revision [$Id: bmc.h,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #ifndef ABC___sat_bmc_BMC_h
22 #define ABC___sat_bmc_BMC_h
23 
24 
25 ////////////////////////////////////////////////////////////////////////
26 /// INCLUDES ///
27 ////////////////////////////////////////////////////////////////////////
28 
29 #include "aig/saig/saig.h"
30 #include "aig/gia/gia.h"
31 
32 ////////////////////////////////////////////////////////////////////////
33 /// PARAMETERS ///
34 ////////////////////////////////////////////////////////////////////////
35 
37 
38 ////////////////////////////////////////////////////////////////////////
39 /// BASIC TYPES ///
40 ////////////////////////////////////////////////////////////////////////
41 
42 // unrolling manager
43 typedef struct Unr_Man_t_ Unr_Man_t;
44 
47 {
48  int nStart; // starting timeframe
49  int nFramesMax; // maximum number of timeframes
50  int nConfLimit; // maximum number of conflicts at a node
51  int nConfLimitJump; // maximum number of conflicts after jumping
52  int nFramesJump; // the number of tiemframes to jump
53  int nTimeOut; // approximate timeout in seconds
54  int nTimeOutGap; // approximate timeout in seconds since the last change
55  int nTimeOutOne; // timeout per output in multi-output solving
56  int nPisAbstract; // the number of PIs to abstract
57  int fSolveAll; // does not stop at the first SAT output
58  int fStoreCex; // enable storing CEXes in the MO mode
59  int fUseBridge; // use bridge interface
60  int fDropSatOuts; // replace sat outputs by constant 0
61  int nFfToAddMax; // max number of flops to add during CBA
62  int fSkipRand; // skip random decisions
63  int nLearnedStart; // starting learned clause limit
64  int nLearnedDelta; // delta of learned clause limit
65  int nLearnedPerce; // ratio of learned clause limit
66  int fVerbose; // verbose
67  int fNotVerbose; // skip line-by-line print-out
68  char * pLogFileName; // log file name
69  int fSilent; // completely silent
70  int iFrame; // explored up to this frame
71  int nFailOuts; // the number of failed outputs
72  int nDropOuts; // the number of dropped outputs
73  abctime timeLastSolved; // the time when the last output was solved
74  int(*pFuncOnFail)(int,Abc_Cex_t*); // called for a failed output in MO mode
75 };
76 
77 
78 typedef struct Bmc_AndPar_t_ Bmc_AndPar_t;
80 {
81  int nStart; // starting timeframe
82  int nFramesMax; // maximum number of timeframes
83  int nFramesAdd; // the number of additional frames
84  int nConfLimit; // maximum number of conflicts at a node
85  int nTimeOut; // timeout in seconds
86  int fLoadCnf; // dynamic CNF loading
87  int fDumpFrames; // dump unrolled timeframes
88  int fUseSynth; // use synthesis
89  int fUseOldCnf; // use old CNF construction
90  int fVerbose; // verbose
91  int fVeryVerbose; // very verbose
92  int fNotVerbose; // skip line-by-line print-out
93  int iFrame; // explored up to this frame
94  int nFailOuts; // the number of failed outputs
95  int nDropOuts; // the number of dropped outputs
96 };
97 
100 {
101  int iFrame; // timeframe
102  int iOutput; // property output
103  int nTimeOut; // timeout in seconds
104  char * pFilePivots; // file name with AIG IDs of pivot objects
105  char * pFileProof; // file name to write the resulting proof
106  int fVerbose; // verbose output
107 };
108 
111 {
117  int fUseSyn;
119  int fVerbose;
121 };
122 
123 typedef struct Bmc_ParFf_t_ Bmc_ParFf_t;
125 {
126  char * pFileName;
127  char * pFormStr;
128  int Algo;
131  int nTimeOut;
133  int fBasic;
134  int fDump;
136  int fVerbose;
137 };
138 
139 ////////////////////////////////////////////////////////////////////////
140 /// MACRO DEFINITIONS ///
141 ////////////////////////////////////////////////////////////////////////
142 
143 ////////////////////////////////////////////////////////////////////////
144 /// FUNCTION DECLARATIONS ///
145 ////////////////////////////////////////////////////////////////////////
146 
147 /*=== bmcBCore.c ==========================================================*/
148 extern void Bmc_ManBCorePerform( Gia_Man_t * pGia, Bmc_BCorePar_t * pPars );
149 /*=== bmcBmc.c ==========================================================*/
150 extern int Saig_ManBmcSimple( Aig_Man_t * pAig, int nFrames, int nSizeMax, int nBTLimit, int fRewrite, int fVerbose, int * piFrame, int nCofFanLit );
151 /*=== bmcBmc2.c ==========================================================*/
152 extern int Saig_BmcPerform( Aig_Man_t * pAig, int nStart, int nFramesMax, int nNodesMax, int nTimeOut, int nConfMaxOne, int nConfMaxAll, int fVerbose, int fVerbOverwrite, int * piFrames, int fSilent );
153 /*=== bmcBmc3.c ==========================================================*/
155 extern int Saig_ManBmcScalable( Aig_Man_t * pAig, Saig_ParBmc_t * pPars );
156 /*=== bmcBmcAnd.c ==========================================================*/
157 extern int Gia_ManBmcPerform( Gia_Man_t * p, Bmc_AndPar_t * pPars );
158 /*=== bmcCexCare.c ==========================================================*/
159 extern Abc_Cex_t * Bmc_CexCareMinimize( Aig_Man_t * p, Abc_Cex_t * pCex, int fCheck, int fVerbose );
160 extern void Bmc_CexCareVerify( Aig_Man_t * p, Abc_Cex_t * pCex, Abc_Cex_t * pCexMin, int fVerbose );
161 /*=== bmcCexCut.c ==========================================================*/
162 extern Gia_Man_t * Bmc_GiaTargetStates( Gia_Man_t * p, Abc_Cex_t * pCex, int iFrBeg, int iFrEnd, int fCombOnly, int fGenAll, int fAllFrames, int fVerbose );
163 extern Aig_Man_t * Bmc_AigTargetStates( Aig_Man_t * p, Abc_Cex_t * pCex, int iFrBeg, int iFrEnd, int fCombOnly, int fGenAll, int fAllFrames, int fVerbose );
164 /*=== bmcCexMin.c ==========================================================*/
165 extern Abc_Cex_t * Saig_ManCexMinPerform( Aig_Man_t * pAig, Abc_Cex_t * pCex );
166 /*=== bmcCexTool.c ==========================================================*/
167 extern void Bmc_CexPrint( Abc_Cex_t * pCex, int nInputs, int fVerbose );
168 extern int Bmc_CexVerify( Gia_Man_t * p, Abc_Cex_t * pCex, Abc_Cex_t * pCexCare );
169 /*=== bmcICheck.c ==========================================================*/
170 extern void Bmc_PerformICheck( Gia_Man_t * p, int nFramesMax, int nTimeOut, int fEmpty, int fVerbose );
171 extern Vec_Int_t * Bmc_PerformISearch( Gia_Man_t * p, int nFramesMax, int nTimeOut, int fReverse, int fDump, int fVerbose );
172 /*=== bmcUnroll.c ==========================================================*/
173 extern Unr_Man_t * Unr_ManUnrollStart( Gia_Man_t * pGia, int fVerbose );
174 extern Gia_Man_t * Unr_ManUnrollFrame( Unr_Man_t * p, int f );
175 extern void Unr_ManFree( Unr_Man_t * p );
176 
177 
179 
180 
181 
182 #endif
183 
184 ////////////////////////////////////////////////////////////////////////
185 /// END OF FILE ///
186 ////////////////////////////////////////////////////////////////////////
187 
int fBasic
Definition: bmc.h:133
int Algo
Definition: bmc.h:128
int fVerbose
Definition: bmc.h:119
int nFramesMax
Definition: bmc.h:82
typedefABC_NAMESPACE_HEADER_START struct Unr_Man_t_ Unr_Man_t
INCLUDES ///.
Definition: bmc.h:43
int nTimeOut
Definition: bmc.h:103
int fVeryVerbose
Definition: bmc.h:120
int nConfLimitJump
Definition: bmc.h:51
void Saig_ParBmcSetDefaultParams(Saig_ParBmc_t *p)
Definition: bmcBmc3.c:1284
int nLearnedPerce
Definition: bmc.h:65
int TimeOutGap
Definition: bmc.h:115
int Saig_ManBmcScalable(Aig_Man_t *pAig, Saig_ParBmc_t *pPars)
Definition: bmcBmc3.c:1390
int nDropOuts
Definition: bmc.h:72
Aig_Man_t * Bmc_AigTargetStates(Aig_Man_t *p, Abc_Cex_t *pCex, int iFrBeg, int iFrEnd, int fCombOnly, int fGenAll, int fAllFrames, int fVerbose)
Definition: bmcCexCut.c:513
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
Definition: aig.h:50
static Llb_Mgr_t * p
Definition: llb3Image.c:950
char * pFileProof
Definition: bmc.h:105
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition: bblif.c:37
Gia_Man_t * Unr_ManUnrollFrame(Unr_Man_t *p, int f)
Definition: bmcUnroll.c:379
int nIterCheck
Definition: bmc.h:132
int nLearnedStart
Definition: bmc.h:63
int nFramesAdd
Definition: bmc.h:83
int nTimeOutOne
Definition: bmc.h:55
int Saig_ManBmcSimple(Aig_Man_t *pAig, int nFrames, int nSizeMax, int nBTLimit, int fRewrite, int fVerbose, int *piFrame, int nCofFanLit)
Definition: bmcBmc.c:186
int fUseBridge
Definition: bmc.h:59
int fVerbose
Definition: bmc.h:66
int fUseSyn
Definition: bmc.h:117
int nTimeOut
Definition: bmc.h:85
int Saig_BmcPerform(Aig_Man_t *pAig, int nStart, int nFramesMax, int nNodesMax, int nTimeOut, int nConfMaxOne, int nConfMaxAll, int fVerbose, int fVerbOverwrite, int *piFrames, int fSilent)
Definition: bmcBmc2.c:761
int nFailOuts
Definition: bmc.h:71
int nStart
Definition: bmc.h:48
int fDumpUntest
Definition: bmc.h:135
int fVerbose
Definition: bmc.h:106
int(* pFuncOnFail)(int, Abc_Cex_t *)
Definition: bmc.h:74
int nTimeOutGap
Definition: bmc.h:54
int iFrame
Definition: bmc.h:70
int nTimeOut
Definition: bmc.h:131
int nConfLimit
Definition: bmc.h:50
Unr_Man_t * Unr_ManUnrollStart(Gia_Man_t *pGia, int fVerbose)
Definition: bmcUnroll.c:368
int fDumpFrames
Definition: bmc.h:87
int nFailOuts
Definition: bmc.h:94
int fUseSynth
Definition: bmc.h:88
int fVerbose
Definition: bmc.h:90
int fNotVerbose
Definition: bmc.h:92
int nTimeOut
Definition: bmc.h:53
int Gia_ManBmcPerform(Gia_Man_t *p, Bmc_AndPar_t *pPars)
Definition: bmcBmcAnd.c:1066
int fVerbose
Definition: bmc.h:136
int fUseOldCnf
Definition: bmc.h:89
int nFramesMax
Definition: bmc.h:49
abctime timeLastSolved
Definition: bmc.h:73
int TimeOutGlo
Definition: bmc.h:112
int fDropSatOuts
Definition: bmc.h:60
int nFramesJump
Definition: bmc.h:52
int iOutput
Definition: bmc.h:102
int fStoreCex
Definition: bmc.h:58
int fNotVerbose
Definition: bmc.h:67
int fComplVars
Definition: bmc.h:129
void Unr_ManFree(Unr_Man_t *p)
Definition: bmcUnroll.c:340
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Definition: abc_global.h:105
int TimeOutInc
Definition: bmc.h:114
int fVeryVerbose
Definition: bmc.h:91
#define ABC_NAMESPACE_HEADER_END
Definition: abc_global.h:106
int iFrame
Definition: bmc.h:101
Vec_Int_t * Bmc_PerformISearch(Gia_Man_t *p, int nFramesMax, int nTimeOut, int fReverse, int fDump, int fVerbose)
Definition: bmcICheck.c:417
void Bmc_CexCareVerify(Aig_Man_t *p, Abc_Cex_t *pCex, Abc_Cex_t *pCexMin, int fVerbose)
Definition: bmcCexCare.c:274
int nPisAbstract
Definition: bmc.h:56
int fStartPats
Definition: bmc.h:130
int fDumpFinal
Definition: bmc.h:118
int fLoadCnf
Definition: bmc.h:86
int nStart
Definition: bmc.h:81
int fSkipRand
Definition: bmc.h:62
int fSilent
Definition: bmc.h:69
int nConfLimit
Definition: bmc.h:84
int Bmc_CexVerify(Gia_Man_t *p, Abc_Cex_t *pCex, Abc_Cex_t *pCexCare)
Definition: bmcCexTools.c:346
Definition: gia.h:95
int TimeOutLoc
Definition: bmc.h:113
int TimePerOut
Definition: bmc.h:116
char * pFileName
Definition: bmc.h:126
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
Definition: utilCex.h:39
Abc_Cex_t * Bmc_CexCareMinimize(Aig_Man_t *p, Abc_Cex_t *pCex, int fCheck, int fVerbose)
Definition: bmcCexCare.c:255
Gia_Man_t * Bmc_GiaTargetStates(Gia_Man_t *p, Abc_Cex_t *pCex, int iFrBeg, int iFrEnd, int fCombOnly, int fGenAll, int fAllFrames, int fVerbose)
Definition: bmcCexCut.c:461
char * pFormStr
Definition: bmc.h:127
char * pLogFileName
Definition: bmc.h:68
void Bmc_CexPrint(Abc_Cex_t *pCex, int nInputs, int fVerbose)
Definition: bmcCexTools.c:307
ABC_INT64_T abctime
Definition: abc_global.h:278
int nDropOuts
Definition: bmc.h:95
void Bmc_ManBCorePerform(Gia_Man_t *pGia, Bmc_BCorePar_t *pPars)
MACRO DEFINITIONS ///.
Definition: bmcBCore.c:196
int iFrame
Definition: bmc.h:93
int nFfToAddMax
Definition: bmc.h:61
int nLearnedDelta
Definition: bmc.h:64
char * pFilePivots
Definition: bmc.h:104
int fSolveAll
Definition: bmc.h:57
Abc_Cex_t * Saig_ManCexMinPerform(Aig_Man_t *pAig, Abc_Cex_t *pCex)
Definition: bmcCexMin1.c:547
void Bmc_PerformICheck(Gia_Man_t *p, int nFramesMax, int nTimeOut, int fEmpty, int fVerbose)
Definition: bmcICheck.c:196
int fDump
Definition: bmc.h:134