abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
fra.h
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [fra.h]
4 
5  SystemName [ABC: Logic synthesis and verification system.]
6 
7  PackageName [[New FRAIG package.]
8 
9  Synopsis [External declarations.]
10 
11  Author [Alan Mishchenko]
12 
13  Affiliation [UC Berkeley]
14 
15  Date [Ver. 1.0. Started - June 30, 2007.]
16 
17  Revision [$Id: fra.h,v 1.00 2007/06/30 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #ifndef ABC__aig__fra__fra_h
22 #define ABC__aig__fra__fra_h
23 
24 
25 ////////////////////////////////////////////////////////////////////////
26 /// INCLUDES ///
27 ////////////////////////////////////////////////////////////////////////
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 "aig/aig/aig.h"
36 #include "opt/dar/dar.h"
37 #include "sat/bsat/satSolver.h"
38 #include "aig/ioa/ioa.h"
39 
40 ////////////////////////////////////////////////////////////////////////
41 /// PARAMETERS ///
42 ////////////////////////////////////////////////////////////////////////
43 
44 
45 
47 
48 
49 ////////////////////////////////////////////////////////////////////////
50 /// BASIC TYPES ///
51 ////////////////////////////////////////////////////////////////////////
52 
53 typedef struct Fra_Par_t_ Fra_Par_t;
54 typedef struct Fra_Ssw_t_ Fra_Ssw_t;
55 typedef struct Fra_Sec_t_ Fra_Sec_t;
56 typedef struct Fra_Man_t_ Fra_Man_t;
57 typedef struct Fra_Cla_t_ Fra_Cla_t;
58 typedef struct Fra_Sml_t_ Fra_Sml_t;
59 typedef struct Fra_Bmc_t_ Fra_Bmc_t;
60 
61 // FRAIG parameters
62 struct Fra_Par_t_
63 {
64  int nSimWords; // the number of words in the simulation info
65  double dSimSatur; // the ratio of refined classes when saturation is reached
66  int fPatScores; // enables simulation pattern scoring
67  int MaxScore; // max score after which resimulation is used
68  double dActConeRatio; // the ratio of cone to be bumped
69  double dActConeBumpMax; // the largest bump in activity
70  int fChoicing; // enables choicing
71  int fSpeculate; // use speculative reduction
72  int fProve; // prove the miter outputs
73  int fVerbose; // verbose output
74  int fDoSparse; // skip sparse functions
75  int fConeBias; // bias variables in the cone (good for unsat runs)
76  int nBTLimitNode; // conflict limit at a node
77  int nBTLimitMiter; // conflict limit at an output
78  int nLevelMax; // the max level to consider seriously
79  int nFramesP; // the number of timeframes to in the prefix
80  int nFramesK; // the number of timeframes to unroll
81  int nMaxImps; // the maximum number of implications to consider
82  int nMaxLevs; // the maximum number of levels to consider
83  int fRewrite; // use rewriting for constraint reduction
84  int fLatchCorr; // computes latch correspondence only
85  int fUseImps; // use implications
86  int fUse1Hot; // use one-hotness conditions
87  int fWriteImps; // record implications
88  int fDontShowBar; // does not show progressbar during fraiging
89 };
90 
91 // seq SAT sweeping parameters
92 struct Fra_Ssw_t_
93 {
94  int nPartSize; // size of the partition
95  int nOverSize; // size of the overlap between partitions
96  int nFramesP; // number of frames in the prefix
97  int nFramesK; // number of frames for induction (1=simple)
98  int nMaxImps; // max implications to consider
99  int nMaxLevs; // max levels to consider
100  int nMinDomSize; // min clock domain considered for optimization
101  int fUseImps; // use implications
102  int fRewrite; // enable rewriting of the specualatively reduced model
103  int fFraiging; // enable comb SAT sweeping as preprocessing
104  int fLatchCorr; // perform register correspondence
105  int fWriteImps; // write implications into a file
106  int fUse1Hot; // use one-hotness constraints
107  int fVerbose; // enable verbose output
108  int fSilent; // disable any output
109  int nIters; // the number of iterations performed
110  float TimeLimit; // the runtime budget for this call
111 };
112 
113 // SEC parametesr
115 {
116  int fTryComb; // try CEC call as a preprocessing step
117  int fTryBmc; // try BMC call as a preprocessing step
118  int nFramesMax; // the max number of frames used for induction
119  int nBTLimit; // the conflict limit at a node
120  int nBTLimitGlobal; // the global conflict limit
121  int nBTLimitInter; // the conflict limit for interpolation
122  int nBddVarsMax; // the state space limit for BDD reachability
123  int nBddMax; // the max number of BDD nodes
124  int nBddIterMax; // the limit on the number of BDD iterations
125  int nPdrTimeout; // the timeout for PDR in the end
126  int fPhaseAbstract; // enables phase abstraction
127  int fRetimeFirst; // enables most-forward retiming at the beginning
128  int fRetimeRegs; // enables min-register retiming at the beginning
129  int fFraiging; // enables fraiging at the beginning
130  int fInduction; // enable the use of induction
131  int fInterpolation; // enables interpolation
132  int fInterSeparate; // enables interpolation for each outputs separately
133  int fReachability; // enables BDD based reachability
134  int fReorderImage; // enables BDD reordering during image computation
135  int fStopOnFirstFail; // enables stopping after first output of a miter has failed to prove
136  int fUseNewProver; // the new prover
137  int fUsePdr; // the PDR
138  int fSilent; // disables all output
139  int fVerbose; // enables verbose reporting of statistics
140  int fVeryVerbose; // enables very verbose reporting
141  int TimeLimit; // enables the timeout
142  int fReadUnsolved; // inserts the unsolved model back
143  int nSMnumber; // the number of model written
144  // internal parameters
145  int fRecursive; // set to 1 when SEC is called recursively
146  int fReportSolution; // enables report solution in a special form
147 };
148 
149 // FRAIG equivalence classes
151 {
152  Aig_Man_t * pAig; // the original AIG manager
153  Aig_Obj_t ** pMemRepr; // pointers to representatives of each node
154  Vec_Ptr_t * vClasses; // equivalence classes
155  Vec_Ptr_t * vClasses1; // equivalence class of Const1 node
156  Vec_Ptr_t * vClassesTemp; // temporary storage for new classes
157  Aig_Obj_t ** pMemClasses; // memory allocated for equivalence classes
158  Aig_Obj_t ** pMemClassesFree; // memory allocated for equivalence classes to be used
159  Vec_Ptr_t * vClassOld; // old equivalence class after splitting
160  Vec_Ptr_t * vClassNew; // new equivalence class(es) after splitting
161  int nPairs; // the number of pairs of nodes
162  int fRefinement; // set to 1 when refinement has happened
163  Vec_Int_t * vImps; // implications
164  // procedures used for class refinement
165  int (*pFuncNodeHash) (Aig_Obj_t *, int); // returns has key of the node
166  int (*pFuncNodeIsConst) (Aig_Obj_t *); // returns 1 if the node is a constant
167  int (*pFuncNodesAreEqual)(Aig_Obj_t *, Aig_Obj_t *); // returns 1 if nodes are equal up to a complement
168 };
169 
170 // simulation manager
172 {
173  Aig_Man_t * pAig; // the original AIG manager
174  int nPref; // the number of times frames in the prefix
175  int nFrames; // the number of times frames
176  int nWordsFrame; // the number of words in each time frame
177  int nWordsTotal; // the total number of words at a node
178  int nWordsPref; // the number of word in the prefix
179  int fNonConstOut; // have seen a non-const-0 output during simulation
180  int nSimRounds; // statistics
181  int timeSim; // statistics
182  unsigned pData[0]; // simulation data for the nodes
183 };
184 
185 // FRAIG manager
187 {
188  // high-level data
189  Fra_Par_t * pPars; // parameters governing fraiging
190  // AIG managers
191  Aig_Man_t * pManAig; // the starting AIG manager
192  Aig_Man_t * pManFraig; // the final AIG manager
193  // mapping AIG into FRAIG
194  int nFramesAll; // the number of timeframes used
195  Aig_Obj_t ** pMemFraig; // memory allocated for points to the fraig nodes
196  int nSizeAlloc; // allocated size of the arrays for timeframe nodes
197  // equivalence classes
198  Fra_Cla_t * pCla; // representation of (candidate) equivalent nodes
199  // simulation info
200  Fra_Sml_t * pSml; // simulation manager
201  // bounded model checking manager
203  // counter example storage
204  int nPatWords; // the number of words in the counter example
205  unsigned * pPatWords; // the counter example
207  // one-hotness conditions
209  // satisfiability solving
210  sat_solver * pSat; // SAT solver
211  int nSatVars; // the number of variables currently used
212  Vec_Ptr_t * vPiVars; // the PIs of the cone used
213  ABC_INT64_T nBTLimitGlobal; // resource limit
214  ABC_INT64_T nInsLimitGlobal; // resource limit
215  Vec_Ptr_t ** pMemFanins; // the arrays of fanins for some FRAIG nodes
216  int * pMemSatNums; // the array of SAT numbers for some FRAIG nodes
217  int nMemAlloc; // allocated size of the arrays for FRAIG varnums and fanins
218  Vec_Ptr_t * vTimeouts; // the nodes, for which equivalence checking timed out
219  // statistics
222  int nLitsBeg;
223  int nLitsEnd;
226  int nRegsBeg;
227  int nRegsEnd;
234  int nSpeculs;
235  int nChoices;
239  // runtime
251 };
252 
253 ////////////////////////////////////////////////////////////////////////
254 /// MACRO DEFINITIONS ///
255 ////////////////////////////////////////////////////////////////////////
256 
257 static inline unsigned * Fra_ObjSim( Fra_Sml_t * p, int Id ) { return p->pData + p->nWordsTotal * Id; }
258 static inline unsigned Fra_ObjRandomSim() { return Aig_ManRandom(0); }
259 
260 static inline Aig_Obj_t * Fra_ObjFraig( Aig_Obj_t * pObj, int i ) { return ((Fra_Man_t *)pObj->pData)->pMemFraig[((Fra_Man_t *)pObj->pData)->nFramesAll*pObj->Id + i]; }
261 static inline void Fra_ObjSetFraig( Aig_Obj_t * pObj, int i, Aig_Obj_t * pNode ) { ((Fra_Man_t *)pObj->pData)->pMemFraig[((Fra_Man_t *)pObj->pData)->nFramesAll*pObj->Id + i] = pNode; }
262 
263 static inline Vec_Ptr_t * Fra_ObjFaninVec( Aig_Obj_t * pObj ) { return ((Fra_Man_t *)pObj->pData)->pMemFanins[pObj->Id]; }
264 static inline void Fra_ObjSetFaninVec( Aig_Obj_t * pObj, Vec_Ptr_t * vFanins ) { ((Fra_Man_t *)pObj->pData)->pMemFanins[pObj->Id] = vFanins; }
265 
266 static inline int Fra_ObjSatNum( Aig_Obj_t * pObj ) { return ((Fra_Man_t *)pObj->pData)->pMemSatNums[pObj->Id]; }
267 static inline void Fra_ObjSetSatNum( Aig_Obj_t * pObj, int Num ) { ((Fra_Man_t *)pObj->pData)->pMemSatNums[pObj->Id] = Num; }
268 
269 static inline Aig_Obj_t * Fra_ClassObjRepr( Aig_Obj_t * pObj ) { return ((Fra_Man_t *)pObj->pData)->pCla->pMemRepr[pObj->Id]; }
270 static inline void Fra_ClassObjSetRepr( Aig_Obj_t * pObj, Aig_Obj_t * pNode ) { ((Fra_Man_t *)pObj->pData)->pCla->pMemRepr[pObj->Id] = pNode; }
271 
272 static inline Aig_Obj_t * Fra_ObjChild0Fra( Aig_Obj_t * pObj, int i ) { assert( !Aig_IsComplement(pObj) ); return Aig_ObjFanin0(pObj)? Aig_NotCond(Fra_ObjFraig(Aig_ObjFanin0(pObj),i), Aig_ObjFaninC0(pObj)) : NULL; }
273 static inline Aig_Obj_t * Fra_ObjChild1Fra( Aig_Obj_t * pObj, int i ) { assert( !Aig_IsComplement(pObj) ); return Aig_ObjFanin1(pObj)? Aig_NotCond(Fra_ObjFraig(Aig_ObjFanin1(pObj),i), Aig_ObjFaninC1(pObj)) : NULL; }
274 
275 static inline int Fra_ImpLeft( int Imp ) { return Imp & 0xFFFF; }
276 static inline int Fra_ImpRight( int Imp ) { return Imp >> 16; }
277 static inline int Fra_ImpCreate( int Left, int Right ) { return (Right << 16) | Left; }
278 
279 ////////////////////////////////////////////////////////////////////////
280 /// ITERATORS ///
281 ////////////////////////////////////////////////////////////////////////
282 
283 ////////////////////////////////////////////////////////////////////////
284 /// FUNCTION DECLARATIONS ///
285 ////////////////////////////////////////////////////////////////////////
286 
287 /*=== fraCec.c ========================================================*/
288 extern int Fra_FraigSat( Aig_Man_t * pMan, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, int nLearnedStart, int nLearnedDelta, int nLearnedPerce, int fFlipBits, int fAndOuts, int fNewSolver, int fVerbose );
289 extern int Fra_FraigCec( Aig_Man_t ** ppAig, int nConfLimit, int fVerbose );
290 extern int Fra_FraigCecPartitioned( Aig_Man_t * pMan1, Aig_Man_t * pMan2, int nConfLimit, int nPartSize, int fSmart, int fVerbose );
291 /*=== fraClass.c ========================================================*/
292 extern int Fra_BmcNodeIsConst( Aig_Obj_t * pObj );
293 extern int Fra_BmcNodesAreEqual( Aig_Obj_t * pObj0, Aig_Obj_t * pObj1 );
294 extern void Fra_BmcStop( Fra_Bmc_t * p );
295 extern void Fra_BmcPerform( Fra_Man_t * p, int nPref, int nDepth );
296 extern void Fra_BmcPerformSimple( Aig_Man_t * pAig, int nFrames, int nBTLimit, int fRewrite, int fVerbose );
297 /*=== fraClass.c ========================================================*/
298 extern Fra_Cla_t * Fra_ClassesStart( Aig_Man_t * pAig );
299 extern void Fra_ClassesStop( Fra_Cla_t * p );
300 extern void Fra_ClassesCopyReprs( Fra_Cla_t * p, Vec_Ptr_t * vFailed );
301 extern void Fra_ClassesPrint( Fra_Cla_t * p, int fVeryVerbose );
302 extern void Fra_ClassesPrepare( Fra_Cla_t * p, int fLatchCorr, int nMaxLevs );
303 extern int Fra_ClassesRefine( Fra_Cla_t * p );
304 extern int Fra_ClassesRefine1( Fra_Cla_t * p, int fRefineNewClass, int * pSkipped );
305 extern int Fra_ClassesCountLits( Fra_Cla_t * p );
306 extern int Fra_ClassesCountPairs( Fra_Cla_t * p );
307 extern void Fra_ClassesTest( Fra_Cla_t * p, int Id1, int Id2 );
308 extern void Fra_ClassesLatchCorr( Fra_Man_t * p );
309 extern void Fra_ClassesPostprocess( Fra_Cla_t * p );
310 extern void Fra_ClassesSelectRepr( Fra_Cla_t * p );
311 extern Aig_Man_t * Fra_ClassesDeriveAig( Fra_Cla_t * p, int nFramesK );
312 /*=== fraCnf.c ========================================================*/
313 extern void Fra_CnfNodeAddToSolver( Fra_Man_t * p, Aig_Obj_t * pOld, Aig_Obj_t * pNew );
314 /*=== fraCore.c ========================================================*/
315 extern void Fra_FraigSweep( Fra_Man_t * pManAig );
316 extern int Fra_FraigMiterStatus( Aig_Man_t * p );
318 extern Aig_Man_t * Fra_FraigPerform( Aig_Man_t * pManAig, Fra_Par_t * pPars );
319 extern Aig_Man_t * Fra_FraigChoice( Aig_Man_t * pManAig, int nConfMax, int nLevelMax );
320 extern Aig_Man_t * Fra_FraigEquivence( Aig_Man_t * pManAig, int nConfMax, int fProve );
321 /*=== fraHot.c ========================================================*/
322 extern Vec_Int_t * Fra_OneHotCompute( Fra_Man_t * p, Fra_Sml_t * pSim );
323 extern void Fra_OneHotAssume( Fra_Man_t * p, Vec_Int_t * vOneHots );
324 extern void Fra_OneHotCheck( Fra_Man_t * p, Vec_Int_t * vOneHots );
325 extern int Fra_OneHotRefineUsingCex( Fra_Man_t * p, Vec_Int_t * vOneHots );
326 extern int Fra_OneHotCount( Fra_Man_t * p, Vec_Int_t * vOneHots );
327 extern void Fra_OneHotEstimateCoverage( Fra_Man_t * p, Vec_Int_t * vOneHots );
328 extern Aig_Man_t * Fra_OneHotCreateExdc( Fra_Man_t * p, Vec_Int_t * vOneHots );
329 extern void Fra_OneHotAddKnownConstraint( Fra_Man_t * p, Vec_Ptr_t * vOnehots );
330 /*=== fraImp.c ========================================================*/
331 extern Vec_Int_t * Fra_ImpDerive( Fra_Man_t * p, int nImpMaxLimit, int nImpUseLimit, int fLatchCorr );
332 extern void Fra_ImpAddToSolver( Fra_Man_t * p, Vec_Int_t * vImps, int * pSatVarNums );
333 extern int Fra_ImpCheckForNode( Fra_Man_t * p, Vec_Int_t * vImps, Aig_Obj_t * pNode, int Pos );
334 extern int Fra_ImpRefineUsingCex( Fra_Man_t * p, Vec_Int_t * vImps );
335 extern void Fra_ImpCompactArray( Vec_Int_t * vImps );
336 extern double Fra_ImpComputeStateSpaceRatio( Fra_Man_t * p );
338 extern void Fra_ImpRecordInManager( Fra_Man_t * p, Aig_Man_t * pNew );
339 /*=== fraInd.c ========================================================*/
340 extern Aig_Man_t * Fra_FraigInduction( Aig_Man_t * p, Fra_Ssw_t * pPars );
341 /*=== fraIndVer.c =====================================================*/
342 extern int Fra_InvariantVerify( Aig_Man_t * p, int nFrames, Vec_Int_t * vClauses, Vec_Int_t * vLits );
343 /*=== fraLcr.c ========================================================*/
344 extern Aig_Man_t * Fra_FraigLatchCorrespondence( Aig_Man_t * pAig, int nFramesP, int nConfMax, int fProve, int fVerbose, int * pnIter, float TimeLimit );
345 /*=== fraMan.c ========================================================*/
346 extern void Fra_ParamsDefault( Fra_Par_t * pParams );
347 extern void Fra_ParamsDefaultSeq( Fra_Par_t * pParams );
348 extern Fra_Man_t * Fra_ManStart( Aig_Man_t * pManAig, Fra_Par_t * pParams );
349 extern void Fra_ManClean( Fra_Man_t * p, int nNodesMax );
351 extern void Fra_ManFinalizeComb( Fra_Man_t * p );
352 extern void Fra_ManStop( Fra_Man_t * p );
353 extern void Fra_ManPrint( Fra_Man_t * p );
354 /*=== fraSat.c ========================================================*/
355 extern int Fra_NodesAreEquiv( Fra_Man_t * p, Aig_Obj_t * pOld, Aig_Obj_t * pNew );
356 extern int Fra_NodesAreImp( Fra_Man_t * p, Aig_Obj_t * pOld, Aig_Obj_t * pNew, int fComplL, int fComplR );
357 extern int Fra_NodesAreClause( Fra_Man_t * p, Aig_Obj_t * pOld, Aig_Obj_t * pNew, int fComplL, int fComplR );
358 extern int Fra_NodeIsConst( Fra_Man_t * p, Aig_Obj_t * pNew );
359 /*=== fraSec.c ========================================================*/
360 extern void Fra_SecSetDefaultParams( Fra_Sec_t * p );
361 extern int Fra_FraigSec( Aig_Man_t * p, Fra_Sec_t * pParSec, Aig_Man_t ** ppResult );
362 /*=== fraSim.c ========================================================*/
363 extern int Fra_SmlNodeHash( Aig_Obj_t * pObj, int nTableSize );
364 extern int Fra_SmlNodeIsConst( Aig_Obj_t * pObj );
365 extern int Fra_SmlNodesAreEqual( Aig_Obj_t * pObj0, Aig_Obj_t * pObj1 );
366 extern int Fra_SmlNodeNotEquWeight( Fra_Sml_t * p, int Left, int Right );
367 extern int Fra_SmlNodeCountOnes( Fra_Sml_t * p, Aig_Obj_t * pObj );
368 extern int Fra_SmlCheckOutput( Fra_Man_t * p );
369 extern void Fra_SmlSavePattern( Fra_Man_t * p );
370 extern void Fra_SmlSimulate( Fra_Man_t * p, int fInit );
371 extern void Fra_SmlResimulate( Fra_Man_t * p );
372 extern Fra_Sml_t * Fra_SmlStart( Aig_Man_t * pAig, int nPref, int nFrames, int nWordsFrame );
373 extern void Fra_SmlStop( Fra_Sml_t * p );
374 extern Fra_Sml_t * Fra_SmlSimulateComb( Aig_Man_t * pAig, int nWords, int fCheckMiter );
375 extern Fra_Sml_t * Fra_SmlSimulateCombGiven( Aig_Man_t * pAig, char * pFileName, int fCheckMiter, int fVerbose );
376 extern Fra_Sml_t * Fra_SmlSimulateSeq( Aig_Man_t * pAig, int nPref, int nFrames, int nWords, int fCheckMiter );
378 extern Abc_Cex_t * Fra_SmlCopyCounterExample( Aig_Man_t * pAig, Aig_Man_t * pFrames, int * pModel );
379 
381 
382 
383 
384 #endif
385 
386 ////////////////////////////////////////////////////////////////////////
387 /// END OF FILE ///
388 ////////////////////////////////////////////////////////////////////////
389 
int nBTLimitNode
Definition: fra.h:76
int nMaxLevs
Definition: fra.h:82
int fSilent
Definition: fra.h:108
int fNonConstOut
Definition: fra.h:179
int Fra_ImpRefineUsingCex(Fra_Man_t *p, Vec_Int_t *vImps)
Definition: fraImp.c:575
int fProve
Definition: fra.h:72
int fFraiging
Definition: fra.h:129
int fFraiging
Definition: fra.h:103
int fRewrite
Definition: fra.h:102
int Fra_ClassesRefine1(Fra_Cla_t *p, int fRefineNewClass, int *pSkipped)
Definition: fraClass.c:527
int fUse1Hot
Definition: fra.h:106
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition: vecPtr.h:42
int * pMemSatNums
Definition: fra.h:216
int Fra_ClassesCountPairs(Fra_Cla_t *p)
Definition: fraClass.c:189
int nSatProof
Definition: fra.h:231
int nFrames
Definition: fra.h:175
Aig_Obj_t ** pMemClassesFree
Definition: fra.h:158
Aig_Man_t * pManAig
Definition: fra.h:191
Aig_Man_t * Fra_ClassesDeriveAig(Fra_Cla_t *p, int nFramesK)
Definition: fraClass.c:796
int fRefinement
Definition: fra.h:162
int TimeLimit
Definition: fra.h:141
int Fra_SmlNodeIsConst(Aig_Obj_t *pObj)
Definition: fraSim.c:86
int fInterSeparate
Definition: fra.h:132
ABC_INT64_T nInsLimitGlobal
Definition: fra.h:214
int fInduction
Definition: fra.h:130
int nBddMax
Definition: fra.h:123
int nSatCallsUnsat
Definition: fra.h:230
void Fra_ManFinalizeComb(Fra_Man_t *p)
Definition: fraMan.c:217
int fUse1Hot
Definition: fra.h:86
void Fra_ImpCompactArray(Vec_Int_t *vImps)
Definition: fraImp.c:607
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
Definition: aig.h:50
abctime timeSatSat
Definition: fra.h:245
static Llb_Mgr_t * p
Definition: llb3Image.c:950
void Fra_OneHotEstimateCoverage(Fra_Man_t *p, Vec_Int_t *vOneHots)
Definition: fraHot.c:328
Aig_Man_t * pAig
Definition: fra.h:173
int nChoices
Definition: fra.h:235
Fra_Man_t * Fra_ManStart(Aig_Man_t *pManAig, Fra_Par_t *pParams)
Definition: fraMan.c:104
int fChoicing
Definition: fra.h:70
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition: bblif.c:37
double dActConeBumpMax
Definition: fra.h:69
int timeSim
Definition: fra.h:181
Fra_Sml_t * Fra_SmlSimulateSeq(Aig_Man_t *pAig, int nPref, int nFrames, int nWords, int fCheckMiter)
Definition: fraSim.c:1021
Fra_Cla_t * Fra_ClassesStart(Aig_Man_t *pAig)
FUNCTION DEFINITIONS ///.
Definition: fraClass.c:60
int nFramesP
Definition: fra.h:79
Fra_Cla_t * pCla
Definition: fra.h:198
int nRegsBeg
Definition: fra.h:226
Aig_Man_t * Fra_FraigEquivence(Aig_Man_t *pManAig, int nConfMax, int fProve)
Definition: fraCore.c:468
Vec_Ptr_t * vClasses
Definition: fra.h:154
int Fra_ImpVerifyUsingSimulation(Fra_Man_t *p)
Definition: fraImp.c:665
Fra_Par_t * pPars
Definition: fra.h:189
ush Pos
Definition: deflate.h:88
int Fra_ClassesCountLits(Fra_Cla_t *p)
Definition: fraClass.c:164
void * pData
Definition: aig.h:87
int fUseNewProver
Definition: fra.h:136
sat_solver * pSat
Definition: fra.h:210
abctime time1
Definition: fra.h:249
int nSimWords
Definition: fra.h:64
Fra_Sml_t * pSml
Definition: fra.h:200
Aig_Man_t * Fra_FraigLatchCorrespondence(Aig_Man_t *pAig, int nFramesP, int nConfMax, int fProve, int fVerbose, int *pnIter, float TimeLimit)
Definition: fraLcr.c:531
int fReachability
Definition: fra.h:133
int nSimRounds
Definition: fra.h:220
Aig_Obj_t ** pMemRepr
Definition: fra.h:153
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
Definition: aig.h:308
Vec_Int_t * vOneHots
Definition: fra.h:208
int nBddIterMax
Definition: fra.h:124
abctime timeRwr
Definition: fra.h:242
float TimeLimit
Definition: fra.h:110
static int Aig_IsComplement(Aig_Obj_t *p)
Definition: aig.h:249
int nFramesMax
Definition: fra.h:118
Vec_Ptr_t ** pMemFanins
Definition: fra.h:215
abctime timeTrav
Definition: fra.h:241
static void Fra_ObjSetFaninVec(Aig_Obj_t *pObj, Vec_Ptr_t *vFanins)
Definition: fra.h:264
int nLitsEnd
Definition: fra.h:223
ABC_INT64_T nBTLimitGlobal
Definition: fra.h:213
static Aig_Obj_t * Fra_ObjChild0Fra(Aig_Obj_t *pObj, int i)
Definition: fra.h:272
int fDontShowBar
Definition: fra.h:88
int fDoSparse
Definition: fra.h:74
abctime timeSat
Definition: fra.h:243
void Fra_SecSetDefaultParams(Fra_Sec_t *p)
DECLARATIONS ///.
Definition: fraSec.c:51
int nFramesK
Definition: fra.h:80
int nRegsEnd
Definition: fra.h:227
void Fra_BmcPerformSimple(Aig_Man_t *pAig, int nFrames, int nBTLimit, int fRewrite, int fVerbose)
Definition: fraBmc.c:383
int nSpeculs
Definition: fra.h:234
unsigned Aig_ManRandom(int fReset)
Definition: aigUtil.c:1157
abctime time2
Definition: fra.h:250
Abc_Cex_t * Fra_SmlCopyCounterExample(Aig_Man_t *pAig, Aig_Man_t *pFrames, int *pModel)
Definition: fraSim.c:1117
int nNodesBeg
Definition: fra.h:224
int nSatVars
Definition: fra.h:211
Vec_Int_t * Fra_ImpDerive(Fra_Man_t *p, int nImpMaxLimit, int nImpUseLimit, int fLatchCorr)
Definition: fraImp.c:321
int nWordsTotal
Definition: fra.h:177
double dActConeRatio
Definition: fra.h:68
int fRecursive
Definition: fra.h:145
static Aig_Obj_t * Aig_ObjFanin1(Aig_Obj_t *pObj)
Definition: aig.h:309
void Fra_ManClean(Fra_Man_t *p, int nNodesMax)
Definition: fraMan.c:145
DECLARATIONS ///.
Definition: fraBmc.c:31
int nWords
Definition: abcNpn.c:127
int fReadUnsolved
Definition: fra.h:142
static void Fra_ObjSetFraig(Aig_Obj_t *pObj, int i, Aig_Obj_t *pNode)
Definition: fra.h:261
abctime timeTotal
Definition: fra.h:248
void Fra_ParamsDefaultSeq(Fra_Par_t *pParams)
Definition: fraMan.c:75
void Fra_ClassesLatchCorr(Fra_Man_t *p)
Definition: fraClass.c:615
int fReorderImage
Definition: fra.h:134
int nChoicesFake
Definition: fra.h:236
Vec_Int_t * Fra_OneHotCompute(Fra_Man_t *p, Fra_Sml_t *pSim)
Definition: fraHot.c:134
int nBTLimitMiter
Definition: fra.h:77
int Fra_NodeIsConst(Fra_Man_t *p, Aig_Obj_t *pNew)
Definition: fraSat.c:425
Fra_Sml_t * Fra_SmlStart(Aig_Man_t *pAig, int nPref, int nFrames, int nWordsFrame)
Definition: fraSim.c:813
int Fra_BmcNodesAreEqual(Aig_Obj_t *pObj0, Aig_Obj_t *pObj1)
FUNCTION DEFINITIONS ///.
Definition: fraBmc.c:72
int fWriteImps
Definition: fra.h:87
int nFramesAll
Definition: fra.h:194
int nMinDomSize
Definition: fra.h:100
Fra_Bmc_t * pBmc
Definition: fra.h:202
int Fra_SmlNodeCountOnes(Fra_Sml_t *p, Aig_Obj_t *pObj)
Definition: fraSim.c:177
Vec_Ptr_t * vClassesTemp
Definition: fra.h:156
void Fra_CnfNodeAddToSolver(Fra_Man_t *p, Aig_Obj_t *pOld, Aig_Obj_t *pNew)
Definition: fraCnf.c:238
static unsigned * Fra_ObjSim(Fra_Sml_t *p, int Id)
MACRO DEFINITIONS ///.
Definition: fra.h:257
unsigned * pPatWords
Definition: fra.h:205
int nPairs
Definition: fra.h:161
int fUseImps
Definition: fra.h:85
Aig_Man_t * Fra_FraigChoice(Aig_Man_t *pManAig, int nConfMax, int nLevelMax)
Definition: fraCore.c:442
int fVerbose
Definition: fra.h:139
int(* pFuncNodesAreEqual)(Aig_Obj_t *, Aig_Obj_t *)
Definition: fra.h:167
void Fra_ClassesPostprocess(Fra_Cla_t *p)
Definition: fraClass.c:641
void Fra_ClassesPrepare(Fra_Cla_t *p, int fLatchCorr, int nMaxLevs)
Definition: fraClass.c:276
int fRetimeRegs
Definition: fra.h:128
int fVeryVerbose
Definition: fra.h:140
Abc_Cex_t * Fra_SmlGetCounterExample(Fra_Sml_t *p)
Definition: fraSim.c:1043
Aig_Man_t * pManFraig
Definition: fra.h:192
int nFramesP
Definition: fra.h:96
void Fra_ParamsDefault(Fra_Par_t *pParams)
DECLARATIONS ///.
Definition: fraMan.c:45
Vec_Ptr_t * vTimeouts
Definition: fra.h:218
void Fra_FraigSweep(Fra_Man_t *pManAig)
Definition: fraCore.c:310
int MaxScore
Definition: fra.h:67
int nSatCalls
Definition: fra.h:228
static unsigned Fra_ObjRandomSim()
Definition: fra.h:258
int nLevelMax
Definition: fra.h:78
Aig_Man_t * Fra_ManPrepareComb(Fra_Man_t *p)
Definition: fraMan.c:176
int fWriteImps
Definition: fra.h:105
int fLatchCorr
Definition: fra.h:84
int Fra_NodesAreClause(Fra_Man_t *p, Aig_Obj_t *pOld, Aig_Obj_t *pNew, int fComplL, int fComplR)
Definition: fraSat.c:317
static Aig_Obj_t * Fra_ObjFraig(Aig_Obj_t *pObj, int i)
Definition: fra.h:260
int Fra_FraigCecPartitioned(Aig_Man_t *pMan1, Aig_Man_t *pMan2, int nConfLimit, int nPartSize, int fSmart, int fVerbose)
Definition: fraCec.c:451
void Fra_ClassesPrint(Fra_Cla_t *p, int fVeryVerbose)
Definition: fraClass.c:236
Vec_Ptr_t * vClassOld
Definition: fra.h:159
int fUsePdr
Definition: fra.h:137
int fRewrite
Definition: fra.h:83
Fra_Sml_t * Fra_SmlSimulateComb(Aig_Man_t *pAig, int nWords, int fCheckMiter)
Definition: fraSim.c:856
static void Fra_ObjSetSatNum(Aig_Obj_t *pObj, int Num)
Definition: fra.h:267
int nMaxImps
Definition: fra.h:81
abctime timeSatFail
Definition: fra.h:246
int Fra_ImpCheckForNode(Fra_Man_t *p, Vec_Int_t *vImps, Aig_Obj_t *pNode, int Pos)
Definition: fraImp.c:503
Vec_Int_t * vCex
Definition: fra.h:206
double dSimSatur
Definition: fra.h:65
void Fra_BmcPerform(Fra_Man_t *p, int nPref, int nDepth)
Definition: fraBmc.c:311
int Fra_OneHotRefineUsingCex(Fra_Man_t *p, Vec_Int_t *vOneHots)
Definition: fraHot.c:266
void Fra_ImpAddToSolver(Fra_Man_t *p, Vec_Int_t *vImps, int *pSatVarNums)
Definition: fraImp.c:428
Definition: fra.h:92
int nSatFails
Definition: fra.h:232
int Fra_BmcNodeIsConst(Aig_Obj_t *pObj)
Definition: fraBmc.c:103
Definition: aig.h:69
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Definition: abc_global.h:105
int nWordsFrame
Definition: fra.h:176
int nFramesK
Definition: fra.h:97
int nBTLimitGlobal
Definition: fra.h:120
void Fra_ClassesStop(Fra_Cla_t *p)
Definition: fraClass.c:90
int(* pFuncNodeIsConst)(Aig_Obj_t *)
Definition: fra.h:166
abctime timeSatUnsat
Definition: fra.h:244
int nSatFailsReal
Definition: fra.h:233
int Fra_FraigMiterAssertedOutput(Aig_Man_t *p)
Definition: fraCore.c:125
double Fra_ImpComputeStateSpaceRatio(Fra_Man_t *p)
Definition: fraImp.c:628
Fra_Sml_t * Fra_SmlSimulateCombGiven(Aig_Man_t *pAig, char *pFileName, int fCheckMiter, int fVerbose)
Definition: fraSim.c:981
int nMaxImps
Definition: fra.h:98
int nOverSize
Definition: fra.h:95
Aig_Obj_t ** pMemClasses
Definition: fra.h:157
abctime timeRef
Definition: fra.h:247
#define ABC_NAMESPACE_HEADER_END
Definition: abc_global.h:106
int fVerbose
Definition: fra.h:73
int nSatCallsRecent
Definition: fra.h:237
static int Aig_ObjFaninC0(Aig_Obj_t *pObj)
Definition: aig.h:306
void Fra_ManPrint(Fra_Man_t *p)
Definition: fraMan.c:278
int fPhaseAbstract
Definition: fra.h:126
Vec_Int_t * vImps
Definition: fra.h:163
int nSMnumber
Definition: fra.h:143
static void Fra_ClassObjSetRepr(Aig_Obj_t *pObj, Aig_Obj_t *pNode)
Definition: fra.h:270
int nNodesEnd
Definition: fra.h:225
int fTryBmc
Definition: fra.h:117
Definition: fra.h:62
int Fra_FraigSec(Aig_Man_t *p, Fra_Sec_t *pParSec, Aig_Man_t **ppResult)
Definition: fraSec.c:95
unsigned pData[0]
Definition: fra.h:182
int nBddVarsMax
Definition: fra.h:122
Vec_Ptr_t * vClasses1
Definition: fra.h:155
int nSimRounds
Definition: fra.h:180
int nBTLimit
Definition: fra.h:119
int Fra_SmlNodeHash(Aig_Obj_t *pObj, int nTableSize)
DECLARATIONS ///.
Definition: fraSim.c:46
int nPartSize
Definition: fra.h:94
abctime timeSim
Definition: fra.h:240
int nSizeAlloc
Definition: fra.h:196
Aig_Man_t * pAig
Definition: fra.h:152
void Fra_SmlSimulate(Fra_Man_t *p, int fInit)
Definition: fraSim.c:738
void Fra_ClassesSelectRepr(Fra_Cla_t *p)
Definition: fraClass.c:706
void Fra_SmlResimulate(Fra_Man_t *p)
Definition: fraSim.c:703
Aig_Man_t * Fra_FraigInduction(Aig_Man_t *p, Fra_Ssw_t *pPars)
Definition: fraInd.c:344
Vec_Ptr_t * vClassNew
Definition: fra.h:160
int nSatCallsSkipped
Definition: fra.h:238
int fTryComb
Definition: fra.h:116
typedefABC_NAMESPACE_HEADER_START struct Fra_Par_t_ Fra_Par_t
INCLUDES ///.
Definition: fra.h:53
int nNodesMiter
Definition: fra.h:221
int fInterpolation
Definition: fra.h:131
static int Fra_ImpRight(int Imp)
Definition: fra.h:276
static Aig_Obj_t * Fra_ClassObjRepr(Aig_Obj_t *pObj)
Definition: fra.h:269
void Fra_ManStop(Fra_Man_t *p)
Definition: fraMan.c:240
Aig_Obj_t ** pMemFraig
Definition: fra.h:195
int Fra_ClassesRefine(Fra_Cla_t *p)
Definition: fraClass.c:493
int Fra_OneHotCount(Fra_Man_t *p, Vec_Int_t *vOneHots)
Definition: fraHot.c:303
int nPatWords
Definition: fra.h:204
void Fra_ClassesCopyReprs(Fra_Cla_t *p, Vec_Ptr_t *vFailed)
Definition: fraClass.c:114
int nBTLimitInter
Definition: fra.h:121
int fReportSolution
Definition: fra.h:146
static int Fra_ImpCreate(int Left, int Right)
Definition: fra.h:277
int fUseImps
Definition: fra.h:101
int Fra_SmlNodeNotEquWeight(Fra_Sml_t *p, int Left, int Right)
Definition: fraSim.c:133
int Fra_SmlNodesAreEqual(Aig_Obj_t *pObj0, Aig_Obj_t *pObj1)
Definition: fraSim.c:109
static int Fra_ImpLeft(int Imp)
Definition: fra.h:275
int fLatchCorr
Definition: fra.h:104
int Fra_NodesAreEquiv(Fra_Man_t *p, Aig_Obj_t *pOld, Aig_Obj_t *pNew)
FUNCTION DEFINITIONS ///.
Definition: fraSat.c:48
void Fra_ImpRecordInManager(Fra_Man_t *p, Aig_Man_t *pNew)
Definition: fraImp.c:705
Aig_Man_t * Fra_FraigPerform(Aig_Man_t *pManAig, Fra_Par_t *pPars)
Definition: fraCore.c:375
int fStopOnFirstFail
Definition: fra.h:135
int Fra_NodesAreImp(Fra_Man_t *p, Aig_Obj_t *pOld, Aig_Obj_t *pNew, int fComplL, int fComplR)
Definition: fraSat.c:209
static int Aig_ObjFaninC1(Aig_Obj_t *pObj)
Definition: aig.h:307
int Fra_FraigCec(Aig_Man_t **ppAig, int nConfLimit, int fVerbose)
Definition: fraCec.c:320
static int Fra_ObjSatNum(Aig_Obj_t *pObj)
Definition: fra.h:266
int nIters
Definition: fra.h:109
void Fra_OneHotCheck(Fra_Man_t *p, Vec_Int_t *vOneHots)
Definition: fraHot.c:229
#define assert(ex)
Definition: util_old.h:213
int nPdrTimeout
Definition: fra.h:125
static Aig_Obj_t * Fra_ObjChild1Fra(Aig_Obj_t *pObj, int i)
Definition: fra.h:273
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
Definition: utilCex.h:39
int Fra_FraigMiterStatus(Aig_Man_t *p)
DECLARATIONS ///.
Definition: fraCore.c:62
static Aig_Obj_t * Aig_NotCond(Aig_Obj_t *p, int c)
Definition: aig.h:248
Aig_Man_t * Fra_OneHotCreateExdc(Fra_Man_t *p, Vec_Int_t *vOneHots)
Definition: fraHot.c:398
int nWordsPref
Definition: fra.h:178
int Fra_SmlCheckOutput(Fra_Man_t *p)
Definition: fraSim.c:326
int fVerbose
Definition: fra.h:107
ABC_INT64_T abctime
Definition: abc_global.h:278
int fPatScores
Definition: fra.h:66
int fRetimeFirst
Definition: fra.h:127
int nSatCallsSat
Definition: fra.h:229
Vec_Ptr_t * vPiVars
Definition: fra.h:212
int(* pFuncNodeHash)(Aig_Obj_t *, int)
Definition: fra.h:165
int fConeBias
Definition: fra.h:75
int Id
Definition: aig.h:85
void Fra_OneHotAddKnownConstraint(Fra_Man_t *p, Vec_Ptr_t *vOnehots)
Definition: fraHot.c:439
void Fra_BmcStop(Fra_Bmc_t *p)
Definition: fraBmc.c:216
int nMemAlloc
Definition: fra.h:217
static Vec_Ptr_t * Fra_ObjFaninVec(Aig_Obj_t *pObj)
Definition: fra.h:263
int Fra_InvariantVerify(Aig_Man_t *p, int nFrames, Vec_Int_t *vClauses, Vec_Int_t *vLits)
DECLARATIONS ///.
Definition: fraIndVer.c:46
void Fra_SmlSavePattern(Fra_Man_t *p)
Definition: fraSim.c:241
int nMaxLevs
Definition: fra.h:99
int fSpeculate
Definition: fra.h:71
int Fra_FraigSat(Aig_Man_t *pMan, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, int nLearnedStart, int nLearnedDelta, int nLearnedPerce, int fFlipBits, int fAndOuts, int fNewSolver, int fVerbose)
ITERATORS ///.
Definition: fraCec.c:47
int fSilent
Definition: fra.h:138
void Fra_SmlStop(Fra_Sml_t *p)
Definition: fraSim.c:839
int nLitsBeg
Definition: fra.h:222
void Fra_ClassesTest(Fra_Cla_t *p, int Id1, int Id2)
Definition: fraClass.c:590
void Fra_OneHotAssume(Fra_Man_t *p, Vec_Int_t *vOneHots)
Definition: fraHot.c:191
int nPref
Definition: fra.h:174