abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
cec.h
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [cec.h]
4 
5  SystemName [ABC: Logic synthesis and verification system.]
6 
7  PackageName [Combinational equivalence 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: cec.h,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #ifndef ABC__aig__cec__cec_h
22 #define ABC__aig__cec__cec_h
23 
24 
25 ////////////////////////////////////////////////////////////////////////
26 /// INCLUDES ///
27 ////////////////////////////////////////////////////////////////////////
28 
29 ////////////////////////////////////////////////////////////////////////
30 /// PARAMETERS ///
31 ////////////////////////////////////////////////////////////////////////
32 
33 
34 
36 
37 
38 ////////////////////////////////////////////////////////////////////////
39 /// BASIC TYPES ///
40 ////////////////////////////////////////////////////////////////////////
41 
42 // dynamic SAT parameters
43 typedef struct Cec_ParSat_t_ Cec_ParSat_t;
45 {
46  int nBTLimit; // conflict limit at a node
47  int nSatVarMax; // the max number of SAT variables
48  int nCallsRecycle; // calls to perform before recycling SAT solver
49  int fNonChrono; // use non-chronological backtracling (for circuit SAT only)
50  int fPolarFlip; // flops polarity of variables
51  int fCheckMiter; // the circuit is the miter
52 // int fFirstStop; // stop on the first sat output
53  int fLearnCls; // perform clause learning
54  int fVerbose; // verbose stats
55 };
56 
57 // simulation parameters
58 typedef struct Cec_ParSim_t_ Cec_ParSim_t;
60 {
61  int nWords; // the number of simulation words
62  int nFrames; // the number of simulation frames
63  int nRounds; // the number of simulation rounds
64  int nNonRefines; // the max number of rounds without refinement
65  int TimeLimit; // the runtime limit in seconds
66  int fDualOut; // miter with separate outputs
67  int fCheckMiter; // the circuit is the miter
68 // int fFirstStop; // stop on the first sat output
69  int fSeqSimulate; // performs sequential simulation
70  int fLatchCorr; // consider only latch outputs
71  int fConstCorr; // consider only constants
72  int fVeryVerbose; // verbose stats
73  int fVerbose; // verbose stats
74 };
75 
76 // semiformal parameters
77 typedef struct Cec_ParSmf_t_ Cec_ParSmf_t;
79 {
80  int nWords; // the number of simulation words
81  int nRounds; // the number of simulation rounds
82  int nFrames; // the max number of time frames
83  int nNonRefines; // the max number of rounds without refinement
84  int nMinOutputs; // the min outputs to accumulate
85  int nBTLimit; // conflict limit at a node
86  int TimeLimit; // the runtime limit in seconds
87  int fDualOut; // miter with separate outputs
88  int fCheckMiter; // the circuit is the miter
89 // int fFirstStop; // stop on the first sat output
90  int fVerbose; // verbose stats
91 };
92 
93 // combinational SAT sweeping parameters
94 typedef struct Cec_ParFra_t_ Cec_ParFra_t;
96 {
97  int nWords; // the number of simulation words
98  int nRounds; // the number of simulation rounds
99  int nItersMax; // the maximum number of iterations of SAT sweeping
100  int nBTLimit; // conflict limit at a node
101  int TimeLimit; // the runtime limit in seconds
102  int nLevelMax; // restriction on the level nodes to be swept
103  int nDepthMax; // the depth in terms of steps of speculative reduction
104  int fRewriting; // enables AIG rewriting
105  int fCheckMiter; // the circuit is the miter
106 // int fFirstStop; // stop on the first sat output
107  int fDualOut; // miter with separate outputs
108  int fColorDiff; // miter with separate outputs
109  int fSatSweeping; // enable SAT sweeping
110  int fRunCSat; // enable another solver
111  int fVeryVerbose; // verbose stats
112  int fVerbose; // verbose stats
113  int iOutFail; // the failed output
114 };
115 
116 // combinational equivalence checking parameters
119 {
120  int nBTLimit; // conflict limit at a node
121  int TimeLimit; // the runtime limit in seconds
122 // int fFirstStop; // stop on the first sat output
123  int fUseSmartCnf; // use smart CNF computation
124  int fRewriting; // enables AIG rewriting
125  int fNaive; // performs naive SAT-based checking
126  int fVeryVerbose; // verbose stats
127  int fVerbose; // verbose stats
128  int iOutFail; // the number of failed output
129 };
130 
131 // sequential register correspodence parameters
134 {
135  int nWords; // the number of simulation words
136  int nRounds; // the number of simulation rounds
137  int nFrames; // the number of time frames
138  int nPrefix; // the number of time frames in the prefix
139  int nBTLimit; // conflict limit at a node
140  int nLevelMax; // (scorr only) the max number of levels
141  int nStepsMax; // (scorr only) the max number of induction steps
142  int fLatchCorr; // consider only latch outputs
143  int fConstCorr; // consider only constants
144  int fUseRings; // use rings
145  int fMakeChoices; // use equilvaences as choices
146  int fUseCSat; // use circuit-based solver
147 // int fFirstStop; // stop on the first sat output
148  int fUseSmartCnf; // use smart CNF computation
149  int fStopWhenGone; // quit when PO is not a candidate constant
150  int fVerboseFlops; // verbose stats
151  int fVeryVerbose; // verbose stats
152  int fVerbose; // verbose stats
153  // callback
154  void * pData;
155  void * pFunc;
156 };
157 
158 // sequential register correspodence parameters
161 {
162  int nWords; // the number of simulation words
163  int nRounds; // the number of simulation rounds
164  int nBTLimit; // conflict limit at a node
165  int fUseRings; // use rings
166  int fUseCSat; // use circuit-based solver
167  int fVeryVerbose; // verbose stats
168  int fVerbose; // verbose stats
169 };
170 
171 // sequential synthesis parameters
174 {
175  int fUseLcorr; // enables latch correspondence
176  int fUseScorr; // enables signal correspondence
177  int nBTLimit; // (scorr/lcorr) conflict limit at a node
178  int nFrames; // (scorr/lcorr) the number of timeframes
179  int nLevelMax; // (scorr only) the max number of levels
180  int fConsts; // (scl only) merging constants
181  int fEquivs; // (scl only) merging equivalences
182  int fUseMiniSat; // enables MiniSat in lcorr/scorr
183  int nMinDomSize; // the size of minimum clock domain
184  int fVeryVerbose; // verbose stats
185  int fVerbose; // verbose stats
186 };
187 
188 ////////////////////////////////////////////////////////////////////////
189 /// MACRO DEFINITIONS ///
190 ////////////////////////////////////////////////////////////////////////
191 
192 ////////////////////////////////////////////////////////////////////////
193 /// FUNCTION DECLARATIONS ///
194 ////////////////////////////////////////////////////////////////////////
195 
196 /*=== cecCec.c ==========================================================*/
197 extern int Cec_ManVerify( Gia_Man_t * p, Cec_ParCec_t * pPars );
198 extern int Cec_ManVerifyTwo( Gia_Man_t * p0, Gia_Man_t * p1, int fVerbose );
199 /*=== cecChoice.c ==========================================================*/
200 extern Gia_Man_t * Cec_ManChoiceComputation( Gia_Man_t * pAig, Cec_ParChc_t * pPars );
201 /*=== cecCorr.c ==========================================================*/
202 extern int Cec_ManLSCorrespondenceClasses( Gia_Man_t * pAig, Cec_ParCor_t * pPars );
203 extern Gia_Man_t * Cec_ManLSCorrespondence( Gia_Man_t * pAig, Cec_ParCor_t * pPars );
204 /*=== cecCore.c ==========================================================*/
205 extern void Cec_ManSatSetDefaultParams( Cec_ParSat_t * p );
206 extern void Cec_ManSimSetDefaultParams( Cec_ParSim_t * p );
207 extern void Cec_ManSmfSetDefaultParams( Cec_ParSmf_t * p );
208 extern void Cec_ManFraSetDefaultParams( Cec_ParFra_t * p );
209 extern void Cec_ManCecSetDefaultParams( Cec_ParCec_t * p );
210 extern void Cec_ManCorSetDefaultParams( Cec_ParCor_t * p );
211 extern void Cec_ManChcSetDefaultParams( Cec_ParChc_t * p );
212 extern Gia_Man_t * Cec_ManSatSweeping( Gia_Man_t * pAig, Cec_ParFra_t * pPars );
213 extern Gia_Man_t * Cec_ManSatSolving( Gia_Man_t * pAig, Cec_ParSat_t * pPars );
214 extern void Cec_ManSimulation( Gia_Man_t * pAig, Cec_ParSim_t * pPars );
215 /*=== cecSeq.c ==========================================================*/
216 extern int Cec_ManSeqResimulateCounter( Gia_Man_t * pAig, Cec_ParSim_t * pPars, Abc_Cex_t * pCex );
217 extern int Cec_ManSeqSemiformal( Gia_Man_t * pAig, Cec_ParSmf_t * pPars );
218 extern int Cec_ManCheckNonTrivialCands( Gia_Man_t * pAig );
219 /*=== cecSynth.c ==========================================================*/
220 extern int Cec_SeqReadMinDomSize( Cec_ParSeq_t * p );
221 extern int Cec_SeqReadVerbose( Cec_ParSeq_t * p );
222 extern void Cec_SeqSynthesisSetDefaultParams( Cec_ParSeq_t * pPars );
223 extern int Cec_SequentialSynthesisPart( Gia_Man_t * p, Cec_ParSeq_t * pPars );
224 
225 
226 
228 
229 
230 
231 #endif
232 
233 ////////////////////////////////////////////////////////////////////////
234 /// END OF FILE ///
235 ////////////////////////////////////////////////////////////////////////
236 
int Cec_ManVerifyTwo(Gia_Man_t *p0, Gia_Man_t *p1, int fVerbose)
Definition: cecCec.c:405
Gia_Man_t * Cec_ManSatSweeping(Gia_Man_t *pAig, Cec_ParFra_t *pPars)
Definition: cecCore.c:337
void Cec_ManCorSetDefaultParams(Cec_ParCor_t *p)
Definition: cecCore.c:181
int nRounds
Definition: cec.h:136
int fVerbose
Definition: cec.h:73
int nFrames
Definition: cec.h:82
int fUseCSat
Definition: cec.h:166
int TimeLimit
Definition: cec.h:65
int fVeryVerbose
Definition: cec.h:72
int fNonChrono
Definition: cec.h:49
int Cec_SeqReadMinDomSize(Cec_ParSeq_t *p)
Definition: cecSynth.c:73
int fLearnCls
Definition: cec.h:53
void Cec_ManChcSetDefaultParams(Cec_ParChc_t *p)
Definition: cecCore.c:211
int fLatchCorr
Definition: cec.h:70
int fUseLcorr
Definition: cec.h:175
int fUseCSat
Definition: cec.h:146
int fSeqSimulate
Definition: cec.h:69
static Llb_Mgr_t * p
Definition: llb3Image.c:950
int nCallsRecycle
Definition: cec.h:48
int nBTLimit
Definition: cec.h:120
int fVeryVerbose
Definition: cec.h:151
int fVerbose
Definition: cec.h:185
int nPrefix
Definition: cec.h:138
int fUseSmartCnf
Definition: cec.h:123
int nRounds
Definition: cec.h:81
void * pData
Definition: cec.h:154
int fUseRings
Definition: cec.h:144
int nFrames
Definition: cec.h:178
int TimeLimit
Definition: cec.h:101
int fConstCorr
Definition: cec.h:143
int fVeryVerbose
Definition: cec.h:126
int Cec_SequentialSynthesisPart(Gia_Man_t *p, Cec_ParSeq_t *pPars)
Definition: cecSynth.c:291
int fUseRings
Definition: cec.h:165
int fUseScorr
Definition: cec.h:176
int fRunCSat
Definition: cec.h:110
int fCheckMiter
Definition: cec.h:67
int fVerboseFlops
Definition: cec.h:150
int fLatchCorr
Definition: cec.h:142
int nBTLimit
Definition: cec.h:177
int fVerbose
Definition: cec.h:152
int fVerbose
Definition: cec.h:112
Gia_Man_t * Cec_ManChoiceComputation(Gia_Man_t *pAig, Cec_ParChc_t *pPars)
Definition: cecChoice.c:348
void Cec_SeqSynthesisSetDefaultParams(Cec_ParSeq_t *pPars)
DECLARATIONS ///.
Definition: cecSynth.c:46
void Cec_ManSmfSetDefaultParams(Cec_ParSmf_t *p)
Definition: cecCore.c:98
void Cec_ManSimSetDefaultParams(Cec_ParSim_t *p)
Definition: cecCore.c:70
int nRounds
Definition: cec.h:163
int nWords
Definition: cec.h:162
void Cec_ManSimulation(Gia_Man_t *pAig, Cec_ParSim_t *pPars)
Definition: cecCore.c:284
int nBTLimit
Definition: cec.h:164
int fDualOut
Definition: cec.h:107
int fVerbose
Definition: cec.h:54
Gia_Man_t * Cec_ManSatSolving(Gia_Man_t *pAig, Cec_ParSat_t *pPars)
Definition: cecCore.c:234
int fConstCorr
Definition: cec.h:71
int Cec_ManSeqResimulateCounter(Gia_Man_t *pAig, Cec_ParSim_t *pPars, Abc_Cex_t *pCex)
Definition: cecSeq.c:215
int fRewriting
Definition: cec.h:124
int fVeryVerbose
Definition: cec.h:184
int fColorDiff
Definition: cec.h:108
int nFrames
Definition: cec.h:137
int nBTLimit
Definition: cec.h:85
int nLevelMax
Definition: cec.h:140
void Cec_ManCecSetDefaultParams(Cec_ParCec_t *p)
Definition: cecCore.c:157
Gia_Man_t * Cec_ManLSCorrespondence(Gia_Man_t *pAig, Cec_ParCor_t *pPars)
Definition: cecCorr.c:1147
int fMakeChoices
Definition: cec.h:145
int fStopWhenGone
Definition: cec.h:149
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Definition: abc_global.h:105
int TimeLimit
Definition: cec.h:121
int Cec_ManLSCorrespondenceClasses(Gia_Man_t *pAig, Cec_ParCor_t *pPars)
Definition: cecCorr.c:909
int nBTLimit
Definition: cec.h:46
int Cec_ManSeqSemiformal(Gia_Man_t *pAig, Cec_ParSmf_t *pPars)
Definition: cecSeq.c:328
#define ABC_NAMESPACE_HEADER_END
Definition: abc_global.h:106
int nWords
Definition: cec.h:97
int fEquivs
Definition: cec.h:181
int fVerbose
Definition: cec.h:90
int nLevelMax
Definition: cec.h:179
int nWords
Definition: cec.h:135
int iOutFail
Definition: cec.h:128
int fUseMiniSat
Definition: cec.h:182
void * pFunc
Definition: cec.h:155
int fCheckMiter
Definition: cec.h:88
int nRounds
Definition: cec.h:98
int TimeLimit
Definition: cec.h:86
int fUseSmartCnf
Definition: cec.h:148
int Cec_SeqReadVerbose(Cec_ParSeq_t *p)
Definition: cecSynth.c:89
int nWords
Definition: cec.h:80
int Cec_ManCheckNonTrivialCands(Gia_Man_t *pAig)
Definition: cecSeq.c:295
int nFrames
Definition: cec.h:62
int nBTLimit
Definition: cec.h:100
int nItersMax
Definition: cec.h:99
int nBTLimit
Definition: cec.h:139
Definition: gia.h:95
int fCheckMiter
Definition: cec.h:105
int fDualOut
Definition: cec.h:87
int nDepthMax
Definition: cec.h:103
int nLevelMax
Definition: cec.h:102
int Cec_ManVerify(Gia_Man_t *p, Cec_ParCec_t *pPars)
MACRO DEFINITIONS ///.
Definition: cecCec.c:308
int fVerbose
Definition: cec.h:127
void Cec_ManFraSetDefaultParams(Cec_ParFra_t *p)
Definition: cecCore.c:125
int nNonRefines
Definition: cec.h:64
int fDualOut
Definition: cec.h:66
typedefABC_NAMESPACE_HEADER_START struct Cec_ParSat_t_ Cec_ParSat_t
INCLUDES ///.
Definition: cec.h:43
int nMinDomSize
Definition: cec.h:183
int nMinOutputs
Definition: cec.h:84
int nRounds
Definition: cec.h:63
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
Definition: utilCex.h:39
int nNonRefines
Definition: cec.h:83
int fCheckMiter
Definition: cec.h:51
int nWords
Definition: cec.h:61
int nStepsMax
Definition: cec.h:141
int fSatSweeping
Definition: cec.h:109
int fNaive
Definition: cec.h:125
int fVeryVerbose
Definition: cec.h:167
void Cec_ManSatSetDefaultParams(Cec_ParSat_t *p)
DECLARATIONS ///.
Definition: cecCore.c:45
int fConsts
Definition: cec.h:180
int fPolarFlip
Definition: cec.h:50
int fVerbose
Definition: cec.h:168
int fRewriting
Definition: cec.h:104
int fVeryVerbose
Definition: cec.h:111
int nSatVarMax
Definition: cec.h:47
int iOutFail
Definition: cec.h:113