ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
sfmInt.h
Go to the documentation of this file.
1
20
21#ifndef ABC__opt_sfmInt__h
22#define ABC__opt_sfmInt__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 "map/scl/sclLib.h"
38#include "map/scl/sclCon.h"
39#include "misc/st/st.h"
40#include "map/mio/mio.h"
41#include "base/abc/abc.h"
42#include "misc/util/utilTruth.h"
43#include "sfm.h"
44
48
50
51#define SFM_FANIN_MAX 12
52#define SFM_WORDS_MAX ((SFM_FANIN_MAX>6) ? (1<<(SFM_FANIN_MAX-6)) : 1)
53#define SFM_SAT_UNDEC 0x1234567812345678
54#define SFM_SAT_SAT 0x8765432187654321
55
56#define SFM_SUPP_MAX 8
57#define SFM_WORD_MAX ((SFM_SUPP_MAX>6) ? (1<<(SFM_SUPP_MAX-6)) : 1)
58#define SFM_WIN_MAX 1000
59#define SFM_DEC_MAX 4
60#define SFM_SIM_WORDS 8
61
65
66typedef struct Sfm_Fun_t_ Sfm_Fun_t;
67typedef struct Sfm_Lib_t_ Sfm_Lib_t;
68typedef struct Sfm_Tim_t_ Sfm_Tim_t;
69typedef struct Sfm_Mit_t_ Sfm_Mit_t;
70
72{
73 // parameters
74 Sfm_Par_t * pPars; // parameters
75 // objects
76 int nPis; // PI count (PIs should be first objects)
77 int nPos; // PO count (POs should be last objects)
78 int nNodes; // internal nodes
79 int nObjs; // total objects
80 int nLevelMax; // maximum level
81 // user data
82 Vec_Str_t * vFixed; // persistent objects
83 Vec_Str_t * vEmpty; // transparent objects
84 Vec_Wrd_t * vTruths; // truth tables
85 Vec_Wec_t vFanins; // fanins
86 Vec_Int_t * vStarts; // offsets
87 Vec_Wrd_t * vTruths2; // truth tables (large)
88 // attributes
89 Vec_Wec_t vFanouts; // fanouts
90 Vec_Int_t vLevels; // logic level
91 Vec_Int_t vLevelsR; // logic level
92 Vec_Int_t vCounts; // fanin counters
93 Vec_Int_t vId2Var; // ObjId -> SatVar
94 Vec_Int_t vVar2Id; // SatVar -> ObjId
95 Vec_Wec_t * vCnfs; // CNFs
96 Vec_Int_t * vCover; // temporary
97 // traversal IDs
98 Vec_Int_t vTravIds; // traversal IDs
99 Vec_Int_t vTravIds2; // traversal IDs
100 int nTravIds; // traversal IDs
101 int nTravIds2; // traversal IDs
102 // window
103 int iPivotNode; // window pivot
104 Vec_Int_t * vNodes; // internal
105 Vec_Int_t * vDivs; // divisors
106 Vec_Int_t * vRoots; // roots
107 Vec_Int_t * vTfo; // TFO (excluding iNode)
108 // SAT solving
109 sat_solver * pSat; // SAT solver
110 int nSatVars; // the number of variables
111 int nTryRemoves; // number of fanin removals
112 int nTryImproves;// number of node improvements
113 int nTryResubs; // number of resubstitutions
114 int nRemoves; // number of fanin removals
115 int nImproves; // number of node improvements
116 int nResubs; // number of resubstitutions
117 // counter-examples
118 int nCexes; // number of CEXes
119 Vec_Wrd_t * vDivCexes; // counter-examples
120 // intermediate data
121 Vec_Int_t * vOrder; // object order
122 Vec_Int_t * vDivVars; // divisor SAT variables
123 Vec_Int_t * vDivIds; // divisors indexes
124 Vec_Int_t * vLits; // literals
125 Vec_Int_t * vValues; // SAT variable values
126 Vec_Wec_t * vClauses; // CNF clauses for the node
127 Vec_Int_t * vFaninMap; // mapping fanins into their SAT vars
132 // nodes
142 // runtime
149// abctime time1;
150};
151
152static inline int Sfm_NtkPiNum( Sfm_Ntk_t * p ) { return p->nPis; }
153static inline int Sfm_NtkPoNum( Sfm_Ntk_t * p ) { return p->nPos; }
154static inline int Sfm_NtkNodeNum( Sfm_Ntk_t * p ) { return p->nObjs - p->nPis - p->nPos; }
155
156static inline int Sfm_ObjIsPi( Sfm_Ntk_t * p, int i ) { return i < p->nPis; }
157static inline int Sfm_ObjIsPo( Sfm_Ntk_t * p, int i ) { return i + p->nPos >= p->nObjs; }
158static inline int Sfm_ObjIsNode( Sfm_Ntk_t * p, int i ) { return i >= p->nPis && i + p->nPos < p->nObjs; }
159static inline int Sfm_ObjIsFixed( Sfm_Ntk_t * p, int i ) { return Vec_StrEntry(p->vFixed, i); }
160static inline int Sfm_ObjAddsLevelArray( Vec_Str_t * p, int i ) { return p == NULL || Vec_StrEntry(p, i) == 0; }
161static inline int Sfm_ObjAddsLevel( Sfm_Ntk_t * p, int i ) { return Sfm_ObjAddsLevelArray(p->vEmpty, i); }
162
163static inline Vec_Int_t * Sfm_ObjFiArray( Sfm_Ntk_t * p, int i ) { return Vec_WecEntry(&p->vFanins, i); }
164static inline Vec_Int_t * Sfm_ObjFoArray( Sfm_Ntk_t * p, int i ) { return Vec_WecEntry(&p->vFanouts, i); }
165
166static inline int Sfm_ObjFaninNum( Sfm_Ntk_t * p, int i ) { return Vec_IntSize(Sfm_ObjFiArray(p, i)); }
167static inline int Sfm_ObjFanoutNum( Sfm_Ntk_t * p, int i ) { return Vec_IntSize(Sfm_ObjFoArray(p, i)); }
168
169static inline int Sfm_ObjRefIncrement( Sfm_Ntk_t * p, int iObj ) { return ++Sfm_ObjFoArray(p, iObj)->nSize; }
170static inline int Sfm_ObjRefDecrement( Sfm_Ntk_t * p, int iObj ) { return --Sfm_ObjFoArray(p, iObj)->nSize; }
171
172static inline int Sfm_ObjFanin( Sfm_Ntk_t * p, int i, int k ) { return Vec_IntEntry(Sfm_ObjFiArray(p, i), k); }
173static inline int Sfm_ObjFanout( Sfm_Ntk_t * p, int i, int k ) { return Vec_IntEntry(Sfm_ObjFoArray(p, i), k); }
174
175static inline int Sfm_ObjSatVar( Sfm_Ntk_t * p, int iObj ) { assert(Vec_IntEntry(&p->vId2Var, iObj) > 0); return Vec_IntEntry(&p->vId2Var, iObj); }
176static inline void Sfm_ObjSetSatVar( Sfm_Ntk_t * p, int iObj, int Num ) { assert(Vec_IntEntry(&p->vId2Var, iObj) == -1); Vec_IntWriteEntry(&p->vId2Var, iObj, Num); Vec_IntWriteEntry(&p->vVar2Id, Num, iObj); }
177static inline void Sfm_ObjCleanSatVar( Sfm_Ntk_t * p, int Num ) { int iObj = Vec_IntEntry(&p->vVar2Id, Num); assert(Vec_IntEntry(&p->vId2Var, iObj) > 0); Vec_IntWriteEntry(&p->vId2Var, iObj, -1); Vec_IntWriteEntry(&p->vVar2Id, Num, -1); }
178static inline void Sfm_NtkCleanVars( Sfm_Ntk_t * p ) { int i; for ( i = 1; i < p->nSatVars; i++ ) if ( Vec_IntEntry(&p->vVar2Id, i) != -1 ) Sfm_ObjCleanSatVar( p, i ); }
179
180static inline int Sfm_ObjLevel( Sfm_Ntk_t * p, int iObj ) { return Vec_IntEntry( &p->vLevels, iObj ); }
181static inline void Sfm_ObjSetLevel( Sfm_Ntk_t * p, int iObj, int Lev ) { Vec_IntWriteEntry( &p->vLevels, iObj, Lev ); }
182
183static inline int Sfm_ObjLevelR( Sfm_Ntk_t * p, int iObj ) { return Vec_IntEntry( &p->vLevelsR, iObj ); }
184static inline void Sfm_ObjSetLevelR( Sfm_Ntk_t * p, int iObj, int Lev ) { Vec_IntWriteEntry( &p->vLevelsR, iObj, Lev ); }
185
186static inline int Sfm_ObjUpdateFaninCount( Sfm_Ntk_t * p, int iObj ) { return Vec_IntAddToEntry(&p->vCounts, iObj, -1); }
187static inline void Sfm_ObjResetFaninCount( Sfm_Ntk_t * p, int iObj ) { Vec_IntWriteEntry(&p->vCounts, iObj, Sfm_ObjFaninNum(p, iObj)-1); }
188
189extern void Kit_DsdPrintFromTruth( unsigned * pTruth, int nVars );
190
194
195#define Sfm_NtkForEachPi( p, i ) for ( i = 0; i < p->nPis; i++ )
196#define Sfm_NtkForEachPo( p, i ) for ( i = p->nObjs - p->nPos; i < p->nObjs; i++ )
197#define Sfm_NtkForEachNode( p, i ) for ( i = p->nPis; i + p->nPos < p->nObjs; i++ )
198#define Sfm_NtkForEachNodeReverse( p, i ) for ( i = p->nObjs - p->nPos - 1; i >= p->nPis; i-- )
199#define Sfm_ObjForEachFanin( p, Node, Fan, i ) for ( i = 0; i < Sfm_ObjFaninNum(p, Node) && ((Fan = Sfm_ObjFanin(p, Node, i)), 1); i++ )
200#define Sfm_ObjForEachFanout( p, Node, Fan, i ) for ( i = 0; i < Sfm_ObjFanoutNum(p, Node) && ((Fan = Sfm_ObjFanout(p, Node, i)), 1); i++ )
201
205
206/*=== sfmCnf.c ==========================================================*/
207extern void Sfm_PrintCnf( Vec_Str_t * vCnf );
208extern int Sfm_TruthToCnf( word Truth, word * pTruth, int nVars, Vec_Int_t * vCover, Vec_Str_t * vCnf );
209extern Vec_Wec_t * Sfm_CreateCnf( Sfm_Ntk_t * p );
210extern void Sfm_TranslateCnf( Vec_Wec_t * vRes, Vec_Str_t * vCnf, Vec_Int_t * vFaninMap, int iPivotVar );
211/*=== sfmCore.c ==========================================================*/
212/*=== sfmLib.c ==========================================================*/
213extern int Sfm_LibFindComplInputGate( Vec_Wrd_t * vFuncs, int iGate, int nFanins, int iFanin, int * piFaninNew );
214extern Sfm_Lib_t * Sfm_LibPrepare( int nVars, int fTwo, int fDelay, int fVerbose, int fLibVerbose );
215extern void Sfm_LibPrint( Sfm_Lib_t * p );
216extern void Sfm_LibStop( Sfm_Lib_t * p );
217extern int Sfm_LibFindAreaMatch( Sfm_Lib_t * p, word * pTruth, int nFanins, int * piObj );
218extern int Sfm_LibFindDelayMatches( Sfm_Lib_t * p, word * pTruth, int * pFanins, int nFanins, Vec_Ptr_t * vGates, Vec_Ptr_t * vFans );
219extern int Sfm_LibImplementSimple( Sfm_Lib_t * p, word * pTruth, int * pFanins, int nFanins, Vec_Int_t * vGates, Vec_Wec_t * vFanins );
220extern int Sfm_LibImplementGatesArea( Sfm_Lib_t * p, int * pFanins, int nFanins, int iObj, Vec_Int_t * vGates, Vec_Wec_t * vFanins );
221extern int Sfm_LibImplementGatesDelay( Sfm_Lib_t * p, int * pFanins, Mio_Gate_t * pGateB, Mio_Gate_t * pGateT, char * pFansB, char * pFansT, Vec_Int_t * vGates, Vec_Wec_t * vFanins );
222/*=== sfmNtk.c ==========================================================*/
223extern Sfm_Ntk_t * Sfm_ConstructNetwork( Vec_Wec_t * vFanins, int nPis, int nPos );
224extern void Sfm_NtkPrepare( Sfm_Ntk_t * p );
225extern void Sfm_NtkUpdate( Sfm_Ntk_t * p, int iNode, int f, int iFaninNew, word uTruth, word * pTruth );
226/*=== sfmSat.c ==========================================================*/
227extern int Sfm_NtkWindowToSolver( Sfm_Ntk_t * p );
230/*=== sfmTim.c ==========================================================*/
231extern Sfm_Tim_t * Sfm_TimStart( Mio_Library_t * pLib, Scl_Con_t * pExt, Abc_Ntk_t * pNtk, int DeltaCrit );
232extern void Sfm_TimStop( Sfm_Tim_t * p );
233extern int Sfm_TimReadNtkDelay( Sfm_Tim_t * p );
234extern int Sfm_TimReadObjDelay( Sfm_Tim_t * p, int iObj );
235extern void Sfm_TimUpdateTiming( Sfm_Tim_t * p, Vec_Int_t * vTimeNodes );
236extern int Sfm_TimSortArrayByArrival( Sfm_Tim_t * p, Vec_Int_t * vNodes, int iPivot );
237extern int Sfm_TimPriorityNodes( Sfm_Tim_t * p, Vec_Int_t * vCands, int Window );
238extern int Sfm_TimNodeIsNonCritical( Sfm_Tim_t * p, Abc_Obj_t * pPivot, Abc_Obj_t * pNode );
239extern int Sfm_TimEvalRemapping( Sfm_Tim_t * p, Vec_Int_t * vFanins, Vec_Int_t * vMap, Mio_Gate_t * pGate1, char * pFans1, Mio_Gate_t * pGate2, char * pFans2 );
240/*=== sfmMit.c ==========================================================*/
241extern Sfm_Mit_t * Sfm_MitStart( Mio_Library_t * pLib, SC_Lib * pScl, Scl_Con_t * pExt, Abc_Ntk_t * pNtk, int DeltaCrit );
242extern void Sfm_MitStop( Sfm_Mit_t * p );
243extern int Sfm_MitReadNtkDelay( Sfm_Mit_t * p );
244extern int Sfm_MitReadNtkMinSlack( Sfm_Mit_t * p );
245extern int Sfm_MitReadObjDelay( Sfm_Mit_t * p, int iObj );
246extern void Sfm_MitTransferLoad( Sfm_Mit_t * p, Abc_Obj_t * pNew, Abc_Obj_t * pOld );
247extern void Sfm_MitTimingGrow( Sfm_Mit_t * p );
248extern void Sfm_MitUpdateLoad( Sfm_Mit_t * p, Vec_Int_t * vTimeNodes, int fAdd );
249extern void Sfm_MitUpdateTiming( Sfm_Mit_t * p, Vec_Int_t * vTimeNodes );
250extern int Sfm_MitSortArrayByArrival( Sfm_Mit_t * p, Vec_Int_t * vNodes, int iPivot );
251extern int Sfm_MitPriorityNodes( Sfm_Mit_t * p, Vec_Int_t * vCands, int Window );
252extern int Sfm_MitNodeIsNonCritical( Sfm_Mit_t * p, Abc_Obj_t * pPivot, Abc_Obj_t * pNode );
253extern int Sfm_MitEvalRemapping( Sfm_Mit_t * p, Vec_Int_t * vMffc, Abc_Obj_t * pObj, Vec_Int_t * vFanins, Vec_Int_t * vMap, Mio_Gate_t * pGate1, char * pFans1, Mio_Gate_t * pGate2, char * pFans2 );
254/*=== sfmWin.c ==========================================================*/
255extern int Sfm_ObjMffcSize( Sfm_Ntk_t * p, int iObj );
256extern int Sfm_NtkCreateWindow( Sfm_Ntk_t * p, int iNode, int fVerbose );
257
259
260#endif
261
265
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
ABC_INT64_T abctime
Definition abc_global.h:332
#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
struct Vec_Str_t_ Vec_Str_t
Definition bblif.c:46
#define sat_solver
Definition cecSatG2.c:34
Cube * p
Definition exorList.c:222
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36
struct Mio_LibraryStruct_t_ Mio_Library_t
Definition mio.h:42
struct Mio_GateStruct_t_ Mio_Gate_t
Definition mio.h:43
typedefABC_NAMESPACE_HEADER_START struct Scl_Con_t_ Scl_Con_t
DECLARATIONS ///.
Definition sclCon.h:30
struct SC_Lib_ SC_Lib
Definition sclLib.h:128
int Sfm_TimSortArrayByArrival(Sfm_Tim_t *p, Vec_Int_t *vNodes, int iPivot)
Definition sfmTim.c:336
int Sfm_NtkCreateWindow(Sfm_Ntk_t *p, int iNode, int fVerbose)
Definition sfmWin.c:340
void Sfm_MitTimingGrow(Sfm_Mit_t *p)
Definition sfmMit.c:58
int Sfm_LibImplementGatesArea(Sfm_Lib_t *p, int *pFanins, int nFanins, int iObj, Vec_Int_t *vGates, Vec_Wec_t *vFanins)
Definition sfmLib.c:704
void Sfm_MitUpdateTiming(Sfm_Mit_t *p, Vec_Int_t *vTimeNodes)
Definition sfmMit.c:60
#define SFM_WORDS_MAX
Definition sfmInt.h:52
void Sfm_MitTransferLoad(Sfm_Mit_t *p, Abc_Obj_t *pNew, Abc_Obj_t *pOld)
Definition sfmMit.c:57
void Sfm_NtkUpdate(Sfm_Ntk_t *p, int iNode, int f, int iFaninNew, word uTruth, word *pTruth)
Definition sfmNtk.c:322
void Sfm_LibPrint(Sfm_Lib_t *p)
Definition sfmLib.c:567
void Sfm_MitStop(Sfm_Mit_t *p)
Definition sfmMit.c:53
Sfm_Ntk_t * Sfm_ConstructNetwork(Vec_Wec_t *vFanins, int nPis, int nPos)
struct Sfm_Tim_t_ Sfm_Tim_t
Definition sfmInt.h:68
Sfm_Tim_t * Sfm_TimStart(Mio_Library_t *pLib, Scl_Con_t *pExt, Abc_Ntk_t *pNtk, int DeltaCrit)
Definition sfmTim.c:229
struct Sfm_Mit_t_ Sfm_Mit_t
Definition sfmInt.h:69
int Sfm_MitReadNtkDelay(Sfm_Mit_t *p)
Definition sfmMit.c:54
int Sfm_TruthToCnf(word Truth, word *pTruth, int nVars, Vec_Int_t *vCover, Vec_Str_t *vCnf)
Definition sfmCnf.c:71
int Sfm_NtkWindowToSolver(Sfm_Ntk_t *p)
DECLARATIONS ///.
Definition sfmSat.c:46
int Sfm_TimReadObjDelay(Sfm_Tim_t *p, int iObj)
Definition sfmTim.c:255
struct Sfm_Fun_t_ Sfm_Fun_t
BASIC TYPES ///.
Definition sfmInt.h:66
int Sfm_TimNodeIsNonCritical(Sfm_Tim_t *p, Abc_Obj_t *pPivot, Abc_Obj_t *pNode)
Definition sfmTim.c:412
void Sfm_MitUpdateLoad(Sfm_Mit_t *p, Vec_Int_t *vTimeNodes, int fAdd)
Definition sfmMit.c:59
int Sfm_MitReadObjDelay(Sfm_Mit_t *p, int iObj)
Definition sfmMit.c:56
Sfm_Lib_t * Sfm_LibPrepare(int nVars, int fTwo, int fDelay, int fVerbose, int fLibVerbose)
Definition sfmLib.c:438
int Sfm_LibFindComplInputGate(Vec_Wrd_t *vFuncs, int iGate, int nFanins, int iFanin, int *piFaninNew)
Definition sfmLib.c:161
void Sfm_LibStop(Sfm_Lib_t *p)
Definition sfmLib.c:226
int Sfm_TimReadNtkDelay(Sfm_Tim_t *p)
Definition sfmTim.c:251
void Sfm_TimUpdateTiming(Sfm_Tim_t *p, Vec_Int_t *vTimeNodes)
Definition sfmTim.c:317
void Sfm_NtkPrepare(Sfm_Ntk_t *p)
Definition sfmNtk.c:201
int Sfm_MitPriorityNodes(Sfm_Mit_t *p, Vec_Int_t *vCands, int Window)
Definition sfmMit.c:62
void Sfm_TimStop(Sfm_Tim_t *p)
Definition sfmTim.c:242
int Sfm_LibImplementGatesDelay(Sfm_Lib_t *p, int *pFanins, Mio_Gate_t *pGateB, Mio_Gate_t *pGateT, char *pFansB, char *pFansT, Vec_Int_t *vGates, Vec_Wec_t *vFanins)
Definition sfmLib.c:736
word Sfm_ComputeInterpolant(Sfm_Ntk_t *p)
Definition sfmSat.c:154
void Sfm_PrintCnf(Vec_Str_t *vCnf)
FUNCTION DECLARATIONS ///.
Definition sfmCnf.c:46
int Sfm_LibFindDelayMatches(Sfm_Lib_t *p, word *pTruth, int *pFanins, int nFanins, Vec_Ptr_t *vGates, Vec_Ptr_t *vFans)
Definition sfmLib.c:625
void Kit_DsdPrintFromTruth(unsigned *pTruth, int nVars)
Definition kitDsd.c:491
word Sfm_ComputeInterpolant2(Sfm_Ntk_t *p)
Definition sfmSat.c:294
struct Sfm_Lib_t_ Sfm_Lib_t
Definition sfmInt.h:67
int Sfm_LibImplementSimple(Sfm_Lib_t *p, word *pTruth, int *pFanins, int nFanins, Vec_Int_t *vGates, Vec_Wec_t *vFanins)
Definition sfmLib.c:679
int Sfm_MitSortArrayByArrival(Sfm_Mit_t *p, Vec_Int_t *vNodes, int iPivot)
Definition sfmMit.c:61
int Sfm_MitNodeIsNonCritical(Sfm_Mit_t *p, Abc_Obj_t *pPivot, Abc_Obj_t *pNode)
Definition sfmMit.c:63
int Sfm_LibFindAreaMatch(Sfm_Lib_t *p, word *pTruth, int nFanins, int *piObj)
Definition sfmLib.c:613
int Sfm_MitReadNtkMinSlack(Sfm_Mit_t *p)
Definition sfmMit.c:55
void Sfm_TranslateCnf(Vec_Wec_t *vRes, Vec_Str_t *vCnf, Vec_Int_t *vFaninMap, int iPivotVar)
Definition sfmCnf.c:201
int Sfm_ObjMffcSize(Sfm_Ntk_t *p, int iObj)
Definition sfmWin.c:89
#define SFM_FANIN_MAX
INCLUDES ///.
Definition sfmInt.h:51
int Sfm_TimEvalRemapping(Sfm_Tim_t *p, Vec_Int_t *vFanins, Vec_Int_t *vMap, Mio_Gate_t *pGate1, char *pFans1, Mio_Gate_t *pGate2, char *pFans2)
Definition sfmTim.c:428
int Sfm_MitEvalRemapping(Sfm_Mit_t *p, Vec_Int_t *vMffc, Abc_Obj_t *pObj, Vec_Int_t *vFanins, Vec_Int_t *vMap, Mio_Gate_t *pGate1, char *pFans1, Mio_Gate_t *pGate2, char *pFans2)
Definition sfmMit.c:64
Vec_Wec_t * Sfm_CreateCnf(Sfm_Ntk_t *p)
Definition sfmCnf.c:168
int Sfm_TimPriorityNodes(Sfm_Tim_t *p, Vec_Int_t *vCands, int Window)
Definition sfmTim.c:374
Sfm_Mit_t * Sfm_MitStart(Mio_Library_t *pLib, SC_Lib *pScl, Scl_Con_t *pExt, Abc_Ntk_t *pNtk, int DeltaCrit)
FUNCTION DEFINITIONS ///.
Definition sfmMit.c:52
struct Sfm_Par_t_ Sfm_Par_t
Definition sfm.h:42
typedefABC_NAMESPACE_HEADER_START struct Sfm_Ntk_t_ Sfm_Ntk_t
INCLUDES ///.
Definition sfm.h:41
DECLARATIONS ///.
Definition sfmLib.c:39
DECLARATIONS ///.
Definition sfmMit.c:30
Vec_Int_t * vDivs
Definition sfmInt.h:105
abctime timeSat
Definition sfmInt.h:146
Vec_Int_t * vDivIds
Definition sfmInt.h:123
sat_solver * pSat
Definition sfmInt.h:109
Vec_Str_t * vFixed
Definition sfmInt.h:82
Vec_Int_t vVar2Id
Definition sfmInt.h:94
Vec_Wrd_t * vTruths
Definition sfmInt.h:84
int nTryImproves
Definition sfmInt.h:112
Sfm_Par_t * pPars
Definition sfmInt.h:74
word TtElems[SFM_FANIN_MAX][SFM_WORDS_MAX]
Definition sfmInt.h:128
Vec_Int_t * vNodes
Definition sfmInt.h:104
Vec_Str_t * vEmpty
Definition sfmInt.h:83
int nTotalNodesEnd
Definition sfmInt.h:135
Vec_Wrd_t * vTruths2
Definition sfmInt.h:87
Vec_Wec_t * vCnfs
Definition sfmInt.h:95
Vec_Int_t * vOrder
Definition sfmInt.h:121
Vec_Int_t vTravIds
Definition sfmInt.h:98
int nCexes
Definition sfmInt.h:118
int nPis
Definition sfmInt.h:76
abctime timeWin
Definition sfmInt.h:143
Vec_Int_t vId2Var
Definition sfmInt.h:93
abctime timeOther
Definition sfmInt.h:147
Vec_Int_t vLevelsR
Definition sfmInt.h:91
int nSatVars
Definition sfmInt.h:110
int nTravIds2
Definition sfmInt.h:101
Vec_Int_t vTravIds2
Definition sfmInt.h:99
word pCube[SFM_WORDS_MAX]
Definition sfmInt.h:131
int nTimeOuts
Definition sfmInt.h:140
Vec_Int_t * vLits
Definition sfmInt.h:124
int nNodesTried
Definition sfmInt.h:137
int iPivotNode
Definition sfmInt.h:103
int nMaxDivs
Definition sfmInt.h:141
int nTravIds
Definition sfmInt.h:100
Vec_Wec_t * vClauses
Definition sfmInt.h:126
int nPos
Definition sfmInt.h:77
int nObjs
Definition sfmInt.h:79
word pTruth[SFM_WORDS_MAX]
Definition sfmInt.h:130
abctime timeCnf
Definition sfmInt.h:145
int nImproves
Definition sfmInt.h:115
Vec_Int_t * vRoots
Definition sfmInt.h:106
int nLevelMax
Definition sfmInt.h:80
Vec_Int_t * vValues
Definition sfmInt.h:125
Vec_Wec_t vFanouts
Definition sfmInt.h:89
int nTotalEdgesBeg
Definition sfmInt.h:134
int nTryRemoves
Definition sfmInt.h:111
Vec_Wec_t vFanins
Definition sfmInt.h:85
int nSatCalls
Definition sfmInt.h:139
int nResubs
Definition sfmInt.h:116
Vec_Int_t * vCover
Definition sfmInt.h:96
int nRemoves
Definition sfmInt.h:114
abctime timeDiv
Definition sfmInt.h:144
Vec_Int_t vCounts
Definition sfmInt.h:92
int nNodes
Definition sfmInt.h:78
Vec_Int_t * vDivVars
Definition sfmInt.h:122
int nTryResubs
Definition sfmInt.h:113
Vec_Wrd_t * vDivCexes
Definition sfmInt.h:119
Vec_Int_t * vStarts
Definition sfmInt.h:86
int nTotalNodesBeg
Definition sfmInt.h:133
int nTotalEdgesEnd
Definition sfmInt.h:136
Vec_Int_t * vFaninMap
Definition sfmInt.h:127
abctime timeTotal
Definition sfmInt.h:148
Vec_Int_t * vTfo
Definition sfmInt.h:107
word * pTtElems[SFM_FANIN_MAX]
Definition sfmInt.h:129
int nTotalDivs
Definition sfmInt.h:138
Vec_Int_t vLevels
Definition sfmInt.h:90
DECLARATIONS ///.
Definition sfmTim.c:31
#define assert(ex)
Definition util_old.h:213
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
Definition vecWec.h:42
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.
Definition vecWrd.h:42