abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
sswInt.h
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [sswInt.h]
4 
5  SystemName [ABC: Logic synthesis and verification system.]
6 
7  PackageName [Inductive prover with constraints.]
8 
9  Synopsis [External declarations.]
10 
11  Author [Alan Mishchenko]
12 
13  Affiliation [UC Berkeley]
14 
15  Date [Ver. 1.0. Started - September 1, 2008.]
16 
17  Revision [$Id: sswInt.h,v 1.00 2008/09/01 00:00:00 alanmi Exp $]
18 
19 ***********************************************************************/
20 
21 #ifndef ABC__aig__ssw__sswInt_h
22 #define ABC__aig__ssw__sswInt_h
23 
24 
25 ////////////////////////////////////////////////////////////////////////
26 /// INCLUDES ///
27 ////////////////////////////////////////////////////////////////////////
28 
29 #include "aig/saig/saig.h"
30 #include "sat/bsat/satSolver.h"
31 #include "ssw.h"
32 #include "aig/ioa/ioa.h"
33 
34 ////////////////////////////////////////////////////////////////////////
35 /// PARAMETERS ///
36 ////////////////////////////////////////////////////////////////////////
37 
38 
39 
41 
42 
43 ////////////////////////////////////////////////////////////////////////
44 /// BASIC TYPES ///
45 ////////////////////////////////////////////////////////////////////////
46 
47 typedef struct Ssw_Man_t_ Ssw_Man_t; // signal correspondence manager
48 typedef struct Ssw_Frm_t_ Ssw_Frm_t; // unrolled frames manager
49 typedef struct Ssw_Sat_t_ Ssw_Sat_t; // SAT solver manager
50 typedef struct Ssw_Cla_t_ Ssw_Cla_t; // equivalence classe manager
51 
52 struct Ssw_Man_t_
53 {
54  // parameters
55  Ssw_Pars_t * pPars; // parameters
56  int nFrames; // for quick lookup
57  // AIGs used in the package
58  Aig_Man_t * pAig; // user-given AIG
59  Aig_Man_t * pFrames; // final AIG
60  Aig_Obj_t ** pNodeToFrames; // mapping of AIG nodes into FRAIG nodes
61  // equivalence classes
62  Ssw_Cla_t * ppClasses; // equivalence classes of nodes
63  int fRefined; // is set to 1 when refinement happens
64  // SAT solving
65  Ssw_Sat_t * pMSatBmc; // SAT manager for base case
66  Ssw_Sat_t * pMSat; // SAT manager for inductive case
67  // SAT solving (latch corr only)
68  Vec_Ptr_t * vSimInfo; // simulation information for the framed PIs
69  int nPatterns; // the number of patterns saved
70  int nSimRounds; // the number of simulation rounds performed
71  int nCallsCount; // the number of calls in this round
72  int nCallsDelta; // the number of calls to skip
73  int nCallsSat; // the number of SAT calls in this round
74  int nCallsUnsat; // the number of UNSAT calls in this round
75  int nRecycleCalls; // the number of calls since last recycling
76  int nRecycles; // the number of time SAT solver was recycled
77  int nRecyclesTotal; // the number of time SAT solver was recycled
78  int nVarsMax; // the maximum variables in the solver
79  int nCallsMax; // the maximum number of SAT calls
80  // uniqueness
81  Vec_Ptr_t * vCommon; // the set of common variables in the logic cones
82  int iOutputLit; // the output literal of the uniqueness constraint
83  Vec_Int_t * vDiffPairs; // is set to 1 if reg pair can be diff
84  int nUniques; // the number of uniqueness constraints used
85  int nUniquesAdded; // useful uniqueness constraints
86  int nUniquesUseful; // useful uniqueness constraints
87  // dynamic constraint addition
88  int nSRMiterMaxId; // max ID after which the last frame begins
89  Vec_Ptr_t * vNewLos; // new time frame LOs of to constrain
90  Vec_Int_t * vNewPos; // new time frame POs of to add constraints
91  int * pVisited; // flags to label visited nodes in each frame
92  int nVisCounter; // the traversal ID
93  // sequential simulation
94  Ssw_Sml_t * pSml; // the simulator
95  int iNodeStart; // the first node considered
96  int iNodeLast; // the last node considered
97  Vec_Ptr_t * vResimConsts; // resimulation constants
98  Vec_Ptr_t * vResimClasses; // resimulation classes
99  Vec_Int_t * vInits; // the init values of primary inputs under constraints
100  // counter example storage
101  int nPatWords; // the number of words in the counter example
102  unsigned * pPatWords; // the counter example
103  // constraints
104  int nConstrTotal; // the number of total constraints
105  int nConstrReduced; // the number of reduced constraints
106  int nStrangers; // the number of strange situations
107  // SAT calls statistics
108  int nSatCalls; // the number of SAT calls
109  int nSatProof; // the number of proofs
110  int nSatFailsReal; // the number of timeouts
111  int nSatCallsUnsat; // the number of unsat SAT calls
112  int nSatCallsSat; // the number of sat SAT calls
113  // node/register/lit statistics
114  int nLitsBeg;
115  int nLitsEnd;
118  int nRegsBeg;
119  int nRegsEnd;
120  // equiv statistis
129  // runtime stats
130  abctime timeBmc; // bounded model checking
131  abctime timeReduce; // speculative reduction
132  abctime timeMarkCones; // marking the cones not to be refined
133  abctime timeSimSat; // simulation of the counter-examples
134  abctime timeSat; // solving SAT
137  abctime timeSatUndec; // undecided
138  abctime timeOther; // other runtime
139  abctime timeTotal; // total runtime
140 };
141 
142 // internal SAT manager
144 {
145  Aig_Man_t * pAig; // the AIG manager
146  int fPolarFlip; // flips polarity
147  sat_solver * pSat; // recyclable SAT solver
148  int nSatVars; // the counter of SAT variables
149  Vec_Int_t * vSatVars; // mapping of each node into its SAT var
150  Vec_Ptr_t * vFanins; // fanins of the CNF node
151  Vec_Ptr_t * vUsedPis; // the PIs with SAT variables
152  int nSolverCalls; // the total number of SAT calls
153 };
154 
155 // internal frames manager
157 {
158  Aig_Man_t * pAig; // user-given AIG
159  int nObjs; // offset in terms of AIG nodes
160  int nFrames; // the number of frames in current unrolling
161  Aig_Man_t * pFrames; // unrolled AIG
162  Vec_Ptr_t * vAig2Frm; // mapping of AIG nodes into frame nodes
163 };
164 
165 ////////////////////////////////////////////////////////////////////////
166 /// MACRO DEFINITIONS ///
167 ////////////////////////////////////////////////////////////////////////
168 
169 static inline int Ssw_ObjSatNum( Ssw_Sat_t * p, Aig_Obj_t * pObj ) { return Vec_IntGetEntry( p->vSatVars, pObj->Id ); }
170 static inline void Ssw_ObjSetSatNum( Ssw_Sat_t * p, Aig_Obj_t * pObj, int Num ) { Vec_IntSetEntry(p->vSatVars, pObj->Id, Num); }
171 
172 static inline int Ssw_ObjIsConst1Cand( Aig_Man_t * pAig, Aig_Obj_t * pObj )
173 {
174  return Aig_ObjRepr(pAig, pObj) == Aig_ManConst1(pAig);
175 }
176 static inline void Ssw_ObjSetConst1Cand( Aig_Man_t * pAig, Aig_Obj_t * pObj )
177 {
178  assert( !Ssw_ObjIsConst1Cand( pAig, pObj ) );
179  Aig_ObjSetRepr( pAig, pObj, Aig_ManConst1(pAig) );
180 }
181 
182 static inline Aig_Obj_t * Ssw_ObjFrame( Ssw_Man_t * p, Aig_Obj_t * pObj, int i ) { return p->pNodeToFrames[p->nFrames*pObj->Id + i]; }
183 static inline void Ssw_ObjSetFrame( Ssw_Man_t * p, Aig_Obj_t * pObj, int i, Aig_Obj_t * pNode ) { p->pNodeToFrames[p->nFrames*pObj->Id + i] = pNode; }
184 
185 static inline Aig_Obj_t * Ssw_ObjChild0Fra( Ssw_Man_t * p, Aig_Obj_t * pObj, int i ) { assert( !Aig_IsComplement(pObj) ); return Aig_ObjFanin0(pObj)? Aig_NotCond(Ssw_ObjFrame(p, Aig_ObjFanin0(pObj), i), Aig_ObjFaninC0(pObj)) : NULL; }
186 static inline Aig_Obj_t * Ssw_ObjChild1Fra( Ssw_Man_t * p, Aig_Obj_t * pObj, int i ) { assert( !Aig_IsComplement(pObj) ); return Aig_ObjFanin1(pObj)? Aig_NotCond(Ssw_ObjFrame(p, Aig_ObjFanin1(pObj), i), Aig_ObjFaninC1(pObj)) : NULL; }
187 
188 static inline Aig_Obj_t * Ssw_ObjFrame_( Ssw_Frm_t * p, Aig_Obj_t * pObj, int i ) { return (Aig_Obj_t *)Vec_PtrGetEntry( p->vAig2Frm, p->nObjs*i+pObj->Id ); }
189 static inline void Ssw_ObjSetFrame_( Ssw_Frm_t * p, Aig_Obj_t * pObj, int i, Aig_Obj_t * pNode ) { Vec_PtrSetEntry( p->vAig2Frm, p->nObjs*i+pObj->Id, pNode ); }
190 
191 static inline Aig_Obj_t * Ssw_ObjChild0Fra_( Ssw_Frm_t * p, Aig_Obj_t * pObj, int i ) { assert( !Aig_IsComplement(pObj) ); return Aig_ObjFanin0(pObj)? Aig_NotCond(Ssw_ObjFrame_(p, Aig_ObjFanin0(pObj), i), Aig_ObjFaninC0(pObj)) : NULL; }
192 static inline Aig_Obj_t * Ssw_ObjChild1Fra_( Ssw_Frm_t * p, Aig_Obj_t * pObj, int i ) { assert( !Aig_IsComplement(pObj) ); return Aig_ObjFanin1(pObj)? Aig_NotCond(Ssw_ObjFrame_(p, Aig_ObjFanin1(pObj), i), Aig_ObjFaninC1(pObj)) : NULL; }
193 
194 ////////////////////////////////////////////////////////////////////////
195 /// FUNCTION DECLARATIONS ///
196 ////////////////////////////////////////////////////////////////////////
197 
198 /*=== sswAig.c ===================================================*/
199 extern Ssw_Frm_t * Ssw_FrmStart( Aig_Man_t * pAig );
200 extern void Ssw_FrmStop( Ssw_Frm_t * p );
203 /*=== sswBmc.c ===================================================*/
204 /*=== sswClass.c =================================================*/
205 extern Ssw_Cla_t * Ssw_ClassesStart( Aig_Man_t * pAig );
206 extern void Ssw_ClassesSetData( Ssw_Cla_t * p, void * pManData,
207  unsigned (*pFuncNodeHash)(void *,Aig_Obj_t *),
208  int (*pFuncNodeIsConst)(void *,Aig_Obj_t *),
209  int (*pFuncNodesAreEqual)(void *,Aig_Obj_t *, Aig_Obj_t *) );
210 extern void Ssw_ClassesStop( Ssw_Cla_t * p );
211 extern Aig_Man_t * Ssw_ClassesReadAig( Ssw_Cla_t * p );
213 extern void Ssw_ClassesClearRefined( Ssw_Cla_t * p );
214 extern int Ssw_ClassesCand1Num( Ssw_Cla_t * p );
215 extern int Ssw_ClassesClassNum( Ssw_Cla_t * p );
216 extern int Ssw_ClassesLitNum( Ssw_Cla_t * p );
217 extern Aig_Obj_t ** Ssw_ClassesReadClass( Ssw_Cla_t * p, Aig_Obj_t * pRepr, int * pnSize );
218 extern void Ssw_ClassesCollectClass( Ssw_Cla_t * p, Aig_Obj_t * pRepr, Vec_Ptr_t * vClass );
219 extern void Ssw_ClassesCheck( Ssw_Cla_t * p );
220 extern void Ssw_ClassesPrint( Ssw_Cla_t * p, int fVeryVerbose );
221 extern void Ssw_ClassesRemoveNode( Ssw_Cla_t * p, Aig_Obj_t * pObj );
222 extern Ssw_Cla_t * Ssw_ClassesPrepare( Aig_Man_t * pAig, int nFramesK, int fLatchCorr, int fConstCorr, int fOutputCorr, int nMaxLevs, int fVerbose );
223 extern Ssw_Cla_t * Ssw_ClassesPrepareSimple( Aig_Man_t * pAig, int fLatchCorr, int nMaxLevs );
226 extern Ssw_Cla_t * Ssw_ClassesPreparePairs( Aig_Man_t * pAig, Vec_Int_t ** pvClasses );
227 extern Ssw_Cla_t * Ssw_ClassesPreparePairsSimple( Aig_Man_t * pMiter, Vec_Int_t * vPairs );
228 extern int Ssw_ClassesRefine( Ssw_Cla_t * p, int fRecursive );
229 extern int Ssw_ClassesRefineGroup( Ssw_Cla_t * p, Vec_Ptr_t * vReprs, int fRecursive );
230 extern int Ssw_ClassesRefineOneClass( Ssw_Cla_t * p, Aig_Obj_t * pRepr, int fRecursive );
231 extern int Ssw_ClassesRefineConst1Group( Ssw_Cla_t * p, Vec_Ptr_t * vRoots, int fRecursive );
232 extern int Ssw_ClassesRefineConst1( Ssw_Cla_t * p, int fRecursive );
233 extern int Ssw_ClassesPrepareRehash( Ssw_Cla_t * p, Vec_Ptr_t * vCands, int fConstCorr );
234 /*=== sswCnf.c ===================================================*/
235 extern Ssw_Sat_t * Ssw_SatStart( int fPolarFlip );
236 extern void Ssw_SatStop( Ssw_Sat_t * p );
237 extern void Ssw_CnfNodeAddToSolver( Ssw_Sat_t * p, Aig_Obj_t * pObj );
238 extern int Ssw_CnfGetNodeValue( Ssw_Sat_t * p, Aig_Obj_t * pObjFraig );
239 /*=== sswConstr.c ===================================================*/
240 extern int Ssw_ManSweepBmcConstr( Ssw_Man_t * p );
241 extern int Ssw_ManSweepConstr( Ssw_Man_t * p );
242 extern void Ssw_ManRefineByConstrSim( Ssw_Man_t * p );
243 /*=== sswCore.c ===================================================*/
245 /*=== sswDyn.c ===================================================*/
246 extern void Ssw_ManLoadSolver( Ssw_Man_t * p, Aig_Obj_t * pRepr, Aig_Obj_t * pObj );
247 extern int Ssw_ManSweepDyn( Ssw_Man_t * p );
248 /*=== sswLcorr.c ==========================================================*/
249 extern int Ssw_ManSweepLatch( Ssw_Man_t * p );
250 /*=== sswMan.c ===================================================*/
251 extern Ssw_Man_t * Ssw_ManCreate( Aig_Man_t * pAig, Ssw_Pars_t * pPars );
252 extern void Ssw_ManCleanup( Ssw_Man_t * p );
253 extern void Ssw_ManStop( Ssw_Man_t * p );
254 /*=== sswSat.c ===================================================*/
255 extern int Ssw_NodesAreEquiv( Ssw_Man_t * p, Aig_Obj_t * pOld, Aig_Obj_t * pNew );
256 extern int Ssw_NodesAreConstrained( Ssw_Man_t * p, Aig_Obj_t * pOld, Aig_Obj_t * pNew );
257 extern int Ssw_NodeIsConstrained( Ssw_Man_t * p, Aig_Obj_t * pPoObj );
258 /*=== sswSemi.c ===================================================*/
259 extern int Ssw_FilterUsingSemi( Ssw_Man_t * pMan, int fCheckTargets, int nConfMax, int fVerbose );
260 /*=== sswSim.c ===================================================*/
261 extern unsigned Ssw_SmlObjHashWord( Ssw_Sml_t * p, Aig_Obj_t * pObj );
262 extern int Ssw_SmlObjIsConstWord( Ssw_Sml_t * p, Aig_Obj_t * pObj );
263 extern int Ssw_SmlObjsAreEqualWord( Ssw_Sml_t * p, Aig_Obj_t * pObj0, Aig_Obj_t * pObj1 );
264 extern int Ssw_SmlObjIsConstBit( void * p, Aig_Obj_t * pObj );
265 extern int Ssw_SmlObjsAreEqualBit( void * p, Aig_Obj_t * pObj0, Aig_Obj_t * pObj1 );
266 extern void Ssw_SmlAssignRandomFrame( Ssw_Sml_t * p, Aig_Obj_t * pObj, int iFrame );
267 extern Ssw_Sml_t * Ssw_SmlStart( Aig_Man_t * pAig, int nPref, int nFrames, int nWordsFrame );
268 extern void Ssw_SmlClean( Ssw_Sml_t * p );
269 extern void Ssw_SmlStop( Ssw_Sml_t * p );
270 extern void Ssw_SmlObjAssignConst( Ssw_Sml_t * p, Aig_Obj_t * pObj, int fConst1, int iFrame );
271 extern void Ssw_SmlObjSetWord( Ssw_Sml_t * p, Aig_Obj_t * pObj, unsigned Word, int iWord, int iFrame );
272 extern void Ssw_SmlAssignDist1Plus( Ssw_Sml_t * p, unsigned * pPat );
273 extern void Ssw_SmlSimulateOne( Ssw_Sml_t * p );
274 extern void Ssw_SmlSimulateOneFrame( Ssw_Sml_t * p );
275 extern void Ssw_SmlSimulateOneDyn_rec( Ssw_Sml_t * p, Aig_Obj_t * pObj, int f, int * pVisited, int nVisCounter );
276 extern void Ssw_SmlResimulateSeq( Ssw_Sml_t * p );
277 /*=== sswSimSat.c ===================================================*/
278 extern void Ssw_ManResimulateBit( Ssw_Man_t * p, Aig_Obj_t * pObj, Aig_Obj_t * pRepr );
279 extern void Ssw_ManResimulateWord( Ssw_Man_t * p, Aig_Obj_t * pCand, Aig_Obj_t * pRepr, int f );
280 /*=== sswSweep.c ===================================================*/
281 extern int Ssw_ManGetSatVarValue( Ssw_Man_t * p, Aig_Obj_t * pObj, int f );
282 extern void Ssw_SmlSavePatternAig( Ssw_Man_t * p, int f );
283 extern int Ssw_ManSweepNode( Ssw_Man_t * p, Aig_Obj_t * pObj, int f, int fBmc, Vec_Int_t * vPairs );
284 extern int Ssw_ManSweepBmc( Ssw_Man_t * p );
285 extern int Ssw_ManSweep( Ssw_Man_t * p );
286 /*=== sswUnique.c ===================================================*/
287 extern void Ssw_UniqueRegisterPairInfo( Ssw_Man_t * p );
288 extern int Ssw_ManUniqueOne( Ssw_Man_t * p, Aig_Obj_t * pRepr, Aig_Obj_t * pObj, int fVerbose );
289 extern int Ssw_ManUniqueAddConstraint( Ssw_Man_t * p, Vec_Ptr_t * vCommon, int f1, int f2 );
290 
291 
292 
294 
295 
296 
297 #endif
298 
299 ////////////////////////////////////////////////////////////////////////
300 /// END OF FILE ///
301 ////////////////////////////////////////////////////////////////////////
302 
int nConesConstr
Definition: sswInt.h:122
void Ssw_SmlClean(Ssw_Sml_t *p)
Definition: sswSim.c:1173
Ssw_Pars_t * pPars
Definition: sswInt.h:55
int nSatProof
Definition: sswInt.h:109
void Ssw_ManStop(Ssw_Man_t *p)
Definition: sswMan.c:189
Vec_Ptr_t * vUsedPis
Definition: sswInt.h:151
int nSatCallsSat
Definition: sswInt.h:112
int nLitsEnd
Definition: sswInt.h:115
int nStrangers
Definition: sswInt.h:106
unsigned Ssw_SmlObjHashWord(Ssw_Sml_t *p, Aig_Obj_t *pObj)
FUNCTION DEFINITIONS ///.
Definition: sswSim.c:63
int nConesTotal
Definition: sswInt.h:121
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition: vecPtr.h:42
static Aig_Obj_t * Aig_ObjRepr(Aig_Man_t *p, Aig_Obj_t *pObj)
Definition: aig.h:330
int nFrames
Definition: sswInt.h:160
static void Vec_PtrSetEntry(Vec_Ptr_t *p, int i, void *Entry)
Definition: vecPtr.h:511
Vec_Ptr_t * Ssw_ClassesGetRefined(Ssw_Cla_t *p)
Definition: sswClass.c:227
void Ssw_SmlStop(Ssw_Sml_t *p)
Definition: sswSim.c:1211
void Ssw_ManCleanup(Ssw_Man_t *p)
Definition: sswMan.c:158
Ssw_Cla_t * Ssw_ClassesPrepareFromReprs(Aig_Man_t *pAig)
Definition: sswClass.c:768
static Aig_Obj_t * Ssw_ObjChild0Fra(Ssw_Man_t *p, Aig_Obj_t *pObj, int i)
Definition: sswInt.h:185
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
Definition: aig.h:50
int Ssw_ClassesPrepareRehash(Ssw_Cla_t *p, Vec_Ptr_t *vCands, int fConstCorr)
Definition: sswClass.c:500
static Llb_Mgr_t * p
Definition: llb3Image.c:950
void Ssw_ClassesClearRefined(Ssw_Cla_t *p)
Definition: sswClass.c:243
void Ssw_ManResimulateWord(Ssw_Man_t *p, Aig_Obj_t *pCand, Aig_Obj_t *pRepr, int f)
Definition: sswSimSat.c:92
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition: bblif.c:37
int iOutputLit
Definition: sswInt.h:82
void Ssw_ClassesCollectClass(Ssw_Cla_t *p, Aig_Obj_t *pRepr, Vec_Ptr_t *vClass)
Definition: sswClass.c:328
Ssw_Cla_t * Ssw_ClassesPreparePairsSimple(Aig_Man_t *pMiter, Vec_Int_t *vPairs)
Definition: sswClass.c:928
Vec_Ptr_t * vResimClasses
Definition: sswInt.h:98
int nRecyclesTotal
Definition: sswInt.h:77
int Ssw_NodesAreConstrained(Ssw_Man_t *p, Aig_Obj_t *pOld, Aig_Obj_t *pNew)
Definition: sswSat.c:196
abctime timeReduce
Definition: sswInt.h:131
int nUniques
Definition: sswInt.h:84
void Ssw_SatStop(Ssw_Sat_t *p)
Definition: sswCnf.c:81
int Ssw_ManSweepLatch(Ssw_Man_t *p)
Definition: sswLcorr.c:238
typedefABC_NAMESPACE_HEADER_START struct Ssw_Pars_t_ Ssw_Pars_t
INCLUDES ///.
Definition: ssw.h:40
int nNodesEnd
Definition: sswInt.h:117
int Ssw_FilterUsingSemi(Ssw_Man_t *pMan, int fCheckTargets, int nConfMax, int fVerbose)
Definition: sswSemi.c:261
void Ssw_UniqueRegisterPairInfo(Ssw_Man_t *p)
DECLARATIONS ///.
Definition: sswUnique.c:45
abctime timeSat
Definition: sswInt.h:134
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
Definition: aig.h:308
Vec_Ptr_t * vNewLos
Definition: sswInt.h:89
static void Ssw_ObjSetConst1Cand(Aig_Man_t *pAig, Aig_Obj_t *pObj)
Definition: sswInt.h:176
static int Aig_IsComplement(Aig_Obj_t *p)
Definition: aig.h:249
static void * Vec_PtrGetEntry(Vec_Ptr_t *p, int i)
Definition: vecPtr.h:494
int nRegsEnd
Definition: sswInt.h:119
static void Vec_IntSetEntry(Vec_Int_t *p, int i, int Entry)
Definition: bblif.c:418
Aig_Man_t * Ssw_SignalCorrespondenceRefine(Ssw_Man_t *p)
Definition: sswCore.c:234
int Ssw_ManUniqueOne(Ssw_Man_t *p, Aig_Obj_t *pRepr, Aig_Obj_t *pObj, int fVerbose)
Definition: sswUnique.c:90
int Ssw_ClassesCand1Num(Ssw_Cla_t *p)
Definition: sswClass.c:259
int nVisCounter
Definition: sswInt.h:92
void Ssw_SmlObjSetWord(Ssw_Sml_t *p, Aig_Obj_t *pObj, unsigned Word, int iWord, int iFrame)
Definition: sswSim.c:603
static int Vec_IntGetEntry(Vec_Int_t *p, int i)
Definition: bblif.c:401
abctime timeSatSat
Definition: sswInt.h:135
typedefABC_NAMESPACE_HEADER_START struct Ssw_Man_t_ Ssw_Man_t
INCLUDES ///.
Definition: sswInt.h:47
void Ssw_SmlAssignDist1Plus(Ssw_Sml_t *p, unsigned *pPat)
Definition: sswSim.c:674
int nRegsEndC
Definition: sswInt.h:128
abctime timeOther
Definition: sswInt.h:138
static void Ssw_ObjSetFrame_(Ssw_Frm_t *p, Aig_Obj_t *pObj, int i, Aig_Obj_t *pNode)
Definition: sswInt.h:189
static Aig_Obj_t * Aig_ObjFanin1(Aig_Obj_t *pObj)
Definition: aig.h:309
int Ssw_ManGetSatVarValue(Ssw_Man_t *p, Aig_Obj_t *pObj, int f)
DECLARATIONS ///.
Definition: sswSweep.c:46
Vec_Int_t * vSatVars
Definition: sswInt.h:149
int Ssw_ClassesRefine(Ssw_Cla_t *p, int fRecursive)
Definition: sswClass.c:1034
Ssw_Cla_t * Ssw_ClassesPrepareTargets(Aig_Man_t *pAig)
Definition: sswClass.c:831
int Ssw_SmlObjIsConstWord(Ssw_Sml_t *p, Aig_Obj_t *pObj)
Definition: sswSim.c:102
Ssw_Sml_t * pSml
Definition: sswInt.h:94
Aig_Obj_t ** Ssw_ClassesReadClass(Ssw_Cla_t *p, Aig_Obj_t *pRepr, int *pnSize)
Definition: sswClass.c:307
static Aig_Obj_t * Ssw_ObjChild1Fra(Ssw_Man_t *p, Aig_Obj_t *pObj, int i)
Definition: sswInt.h:186
Aig_Man_t * Ssw_SpeculativeReduction(Ssw_Man_t *p)
Definition: sswAig.c:212
Aig_Obj_t ** pNodeToFrames
Definition: sswInt.h:60
int Ssw_SmlObjsAreEqualBit(void *p, Aig_Obj_t *pObj0, Aig_Obj_t *pObj1)
Definition: sswSim.c:163
int nConstrTotal
Definition: sswInt.h:104
void Ssw_ClassesStop(Ssw_Cla_t *p)
Definition: sswClass.c:189
abctime timeSatUnsat
Definition: sswInt.h:136
Ssw_Cla_t * Ssw_ClassesPreparePairs(Aig_Man_t *pAig, Vec_Int_t **pvClasses)
Definition: sswClass.c:862
void Ssw_CnfNodeAddToSolver(Ssw_Sat_t *p, Aig_Obj_t *pObj)
Definition: sswCnf.c:351
sat_solver * pSat
Definition: sswInt.h:147
Vec_Int_t * vDiffPairs
Definition: sswInt.h:83
int nNodesBeg
Definition: sswInt.h:116
Ssw_Man_t * Ssw_ManCreate(Aig_Man_t *pAig, Ssw_Pars_t *pPars)
DECLARATIONS ///.
Definition: sswMan.c:45
Ssw_Cla_t * Ssw_ClassesStart(Aig_Man_t *pAig)
Definition: sswClass.c:140
static void Aig_ObjSetRepr(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pRepr)
Definition: aig.h:331
int nLitsBeg
Definition: sswInt.h:114
int nRecycleCalls
Definition: sswInt.h:75
Aig_Man_t * pAig
Definition: sswInt.h:58
Vec_Ptr_t * vFanins
Definition: sswInt.h:150
int Ssw_ManSweep(Ssw_Man_t *p)
Definition: sswSweep.c:365
void Ssw_SmlAssignRandomFrame(Ssw_Sml_t *p, Aig_Obj_t *pObj, int iFrame)
Definition: sswSim.c:538
Aig_Man_t * Ssw_ClassesReadAig(Ssw_Cla_t *p)
Definition: sswClass.c:211
Aig_Man_t * pAig
Definition: sswInt.h:158
Vec_Ptr_t * vCommon
Definition: sswInt.h:81
int nVarsMax
Definition: sswInt.h:78
int Ssw_CnfGetNodeValue(Ssw_Sat_t *p, Aig_Obj_t *pObjFraig)
Definition: sswCnf.c:402
int nRegsBegC
Definition: sswInt.h:127
Aig_Man_t * pAig
Definition: sswInt.h:145
int iNodeLast
Definition: sswInt.h:96
int nRegsBeg
Definition: sswInt.h:118
Ssw_Cla_t * Ssw_ClassesPrepare(Aig_Man_t *pAig, int nFramesK, int fLatchCorr, int fConstCorr, int fOutputCorr, int nMaxLevs, int fVerbose)
Definition: sswClass.c:596
int nEquivsConstr
Definition: sswInt.h:124
Aig_Man_t * pFrames
Definition: sswInt.h:161
Ssw_Cla_t * Ssw_ClassesPrepareSimple(Aig_Man_t *pAig, int fLatchCorr, int nMaxLevs)
Definition: sswClass.c:724
int Ssw_SmlObjsAreEqualWord(Ssw_Sml_t *p, Aig_Obj_t *pObj0, Aig_Obj_t *pObj1)
Definition: sswSim.c:124
int Ssw_ClassesRefineOneClass(Ssw_Cla_t *p, Aig_Obj_t *pRepr, int fRecursive)
Definition: sswClass.c:970
int Ssw_ManSweepNode(Ssw_Man_t *p, Aig_Obj_t *pObj, int f, int fBmc, Vec_Int_t *vPairs)
Definition: sswSweep.c:187
int Ssw_ManSweepDyn(Ssw_Man_t *p)
Definition: sswDyn.c:373
Definition: aig.h:69
int Ssw_ManSweepBmc(Ssw_Man_t *p)
Definition: sswSweep.c:267
int fPolarFlip
Definition: sswInt.h:146
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Definition: abc_global.h:105
int nNodesBegC
Definition: sswInt.h:125
void Ssw_ClassesSetData(Ssw_Cla_t *p, void *pManData, unsigned(*pFuncNodeHash)(void *, Aig_Obj_t *), int(*pFuncNodeIsConst)(void *, Aig_Obj_t *), int(*pFuncNodesAreEqual)(void *, Aig_Obj_t *, Aig_Obj_t *))
Definition: sswClass.c:167
int nSimRounds
Definition: sswInt.h:70
Vec_Ptr_t * vAig2Frm
Definition: sswInt.h:162
abctime timeSatUndec
Definition: sswInt.h:137
int iNodeStart
Definition: sswInt.h:95
int nCallsMax
Definition: sswInt.h:79
#define ABC_NAMESPACE_HEADER_END
Definition: abc_global.h:106
static Aig_Obj_t * Ssw_ObjFrame_(Ssw_Frm_t *p, Aig_Obj_t *pObj, int i)
Definition: sswInt.h:188
static int Aig_ObjFaninC0(Aig_Obj_t *pObj)
Definition: aig.h:306
int nPatterns
Definition: sswInt.h:69
abctime timeMarkCones
Definition: sswInt.h:132
int nCallsUnsat
Definition: sswInt.h:74
static void Ssw_ObjSetSatNum(Ssw_Sat_t *p, Aig_Obj_t *pObj, int Num)
Definition: sswInt.h:170
static Aig_Obj_t * Aig_ManConst1(Aig_Man_t *p)
Definition: aig.h:264
abctime timeSimSat
Definition: sswInt.h:133
int Ssw_ClassesRefineConst1Group(Ssw_Cla_t *p, Vec_Ptr_t *vRoots, int fRecursive)
Definition: sswClass.c:1074
void Ssw_ClassesCheck(Ssw_Cla_t *p)
Definition: sswClass.c:350
int nCallsDelta
Definition: sswInt.h:72
int nFrames
Definition: sswInt.h:56
int nRecycles
Definition: sswInt.h:76
int Ssw_SmlObjIsConstBit(void *p, Aig_Obj_t *pObj)
Definition: sswSim.c:147
Vec_Int_t * vInits
Definition: sswInt.h:99
void Ssw_SmlSimulateOne(Ssw_Sml_t *p)
Definition: sswSim.c:1005
int Ssw_ManSweepBmcConstr(Ssw_Man_t *p)
Definition: sswConstr.c:498
Aig_Man_t * Ssw_FramesWithClasses(Ssw_Man_t *p)
Definition: sswAig.c:144
Vec_Ptr_t * vResimConsts
Definition: sswInt.h:97
Ssw_Sat_t * pMSatBmc
Definition: sswInt.h:65
int Ssw_NodeIsConstrained(Ssw_Man_t *p, Aig_Obj_t *pPoObj)
Definition: sswSat.c:286
static void Ssw_ObjSetFrame(Ssw_Man_t *p, Aig_Obj_t *pObj, int i, Aig_Obj_t *pNode)
Definition: sswInt.h:183
Ssw_Frm_t * Ssw_FrmStart(Aig_Man_t *pAig)
FUNCTION DECLARATIONS ///.
Definition: sswAig.c:45
int Ssw_ManUniqueAddConstraint(Ssw_Man_t *p, Vec_Ptr_t *vCommon, int f1, int f2)
Definition: sswUnique.c:151
void Ssw_ClassesPrint(Ssw_Cla_t *p, int fVeryVerbose)
Definition: sswClass.c:414
int Ssw_ManSweepConstr(Ssw_Man_t *p)
Definition: sswConstr.c:619
Aig_Man_t * pFrames
Definition: sswInt.h:59
int Ssw_ClassesRefineGroup(Ssw_Cla_t *p, Vec_Ptr_t *vReprs, int fRecursive)
Definition: sswClass.c:1054
int nSatCalls
Definition: sswInt.h:108
int Ssw_ClassesClassNum(Ssw_Cla_t *p)
Definition: sswClass.c:275
abctime timeTotal
Definition: sswInt.h:139
static int Ssw_ObjIsConst1Cand(Aig_Man_t *pAig, Aig_Obj_t *pObj)
Definition: sswInt.h:172
int nNodesEndC
Definition: sswInt.h:126
Ssw_Cla_t * ppClasses
Definition: sswInt.h:62
int Ssw_ClassesRefineConst1(Ssw_Cla_t *p, int fRecursive)
Definition: sswClass.c:1119
int nCallsCount
Definition: sswInt.h:71
int nObjs
Definition: sswInt.h:159
static int Aig_ObjFaninC1(Aig_Obj_t *pObj)
Definition: aig.h:307
int nSRMiterMaxId
Definition: sswInt.h:88
unsigned * pPatWords
Definition: sswInt.h:102
int nConstrReduced
Definition: sswInt.h:105
static int Ssw_ObjSatNum(Ssw_Sat_t *p, Aig_Obj_t *pObj)
MACRO DEFINITIONS ///.
Definition: sswInt.h:169
Vec_Int_t * vNewPos
Definition: sswInt.h:90
Ssw_Sat_t * Ssw_SatStart(int fPolarFlip)
DECLARATIONS ///.
Definition: sswCnf.c:45
#define assert(ex)
Definition: util_old.h:213
void Ssw_SmlResimulateSeq(Ssw_Sml_t *p)
Definition: sswSim.c:1269
static Aig_Obj_t * Ssw_ObjChild1Fra_(Ssw_Frm_t *p, Aig_Obj_t *pObj, int i)
Definition: sswInt.h:192
abctime timeBmc
Definition: sswInt.h:130
Vec_Ptr_t * vSimInfo
Definition: sswInt.h:68
static Aig_Obj_t * Ssw_ObjChild0Fra_(Ssw_Frm_t *p, Aig_Obj_t *pObj, int i)
Definition: sswInt.h:191
void Ssw_ManLoadSolver(Ssw_Man_t *p, Aig_Obj_t *pRepr, Aig_Obj_t *pObj)
Definition: sswDyn.c:142
void Ssw_SmlSimulateOneDyn_rec(Ssw_Sml_t *p, Aig_Obj_t *pObj, int f, int *pVisited, int nVisCounter)
Definition: sswSim.c:1076
int Ssw_NodesAreEquiv(Ssw_Man_t *p, Aig_Obj_t *pOld, Aig_Obj_t *pNew)
DECLARATIONS ///.
Definition: sswSat.c:45
static Aig_Obj_t * Aig_NotCond(Aig_Obj_t *p, int c)
Definition: aig.h:248
int nEquivsTotal
Definition: sswInt.h:123
int nSolverCalls
Definition: sswInt.h:152
void Ssw_ClassesRemoveNode(Ssw_Cla_t *p, Aig_Obj_t *pObj)
Definition: sswClass.c:448
void Ssw_ManRefineByConstrSim(Ssw_Man_t *p)
Definition: sswConstr.c:247
void Ssw_SmlSimulateOneFrame(Ssw_Sml_t *p)
Definition: sswSim.c:1117
ABC_INT64_T abctime
Definition: abc_global.h:278
int Ssw_ClassesLitNum(Ssw_Cla_t *p)
Definition: sswClass.c:291
int nPatWords
Definition: sswInt.h:101
int Id
Definition: aig.h:85
void Ssw_ManResimulateBit(Ssw_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pRepr)
DECLARATIONS ///.
Definition: sswSimSat.c:45
int nSatFailsReal
Definition: sswInt.h:110
int nUniquesUseful
Definition: sswInt.h:86
int nSatVars
Definition: sswInt.h:148
int fRefined
Definition: sswInt.h:63
Ssw_Sat_t * pMSat
Definition: sswInt.h:66
void Ssw_FrmStop(Ssw_Frm_t *p)
Definition: sswAig.c:70
DECLARATIONS ///.
Definition: sswSim.c:31
Ssw_Sml_t * Ssw_SmlStart(Aig_Man_t *pAig, int nPref, int nFrames, int nWordsFrame)
Definition: sswSim.c:1148
int nUniquesAdded
Definition: sswInt.h:85
int * pVisited
Definition: sswInt.h:91
void Ssw_SmlObjAssignConst(Ssw_Sml_t *p, Aig_Obj_t *pObj, int fConst1, int iFrame)
Definition: sswSim.c:560
int nCallsSat
Definition: sswInt.h:73
int nSatCallsUnsat
Definition: sswInt.h:111
void Ssw_SmlSavePatternAig(Ssw_Man_t *p, int f)
Definition: sswSweep.c:136
static Aig_Obj_t * Ssw_ObjFrame(Ssw_Man_t *p, Aig_Obj_t *pObj, int i)
Definition: sswInt.h:182