ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
mainInt.h
Go to the documentation of this file.
1
20
21#ifndef ABC__base__main__mainInt_h
22#define ABC__base__main__mainInt_h
23
24
28
29#include "main.h"
30#include "misc/tim/tim.h"
31#include "map/if/if.h"
32#include "aig/aig/aig.h"
33#include "aig/gia/gia.h"
34#include "proof/ssw/ssw.h"
35#include "proof/fra/fra.h"
36#include "misc/vec/vecHsh.h"
37
38#ifdef ABC_USE_CUDD
39#include "bdd/extrab/extraBdd.h"
40#endif
41
43
47
48// the current version
49#define ABC_VERSION "UC Berkeley, ABC 1.01"
50
51// the maximum length of an input line
52#define ABC_MAX_STR (1<<15)
53
57
58typedef void (*Abc_Frame_Callback_BmcFrameDone_Func)(int frame, int po, int status);
59
61{
62 // general info
63 char * sVersion; // the name of the current version
64 char * sBinary; // the name of the binary running
65 // commands, aliases, etc
66 st__table * tCommands; // the command table
67 st__table * tAliases; // the alias table
68 st__table * tFlags; // the flag table
69 Vec_Ptr_t * aHistory; // the command history
70 // the functionality
71 Abc_Ntk_t * pNtkCur; // the current network
72 Abc_Ntk_t * pNtkBestDelay; // the current network
73 Abc_Ntk_t * pNtkBestArea; // the current network
74 Abc_Ntk_t * pNtkBackup; // the current network
75 int nSteps; // the counter of different network processed
76 int fSource; // marks the source mode
77 int fAutoexac; // marks the autoexec mode
78 int fBatchMode; // batch mode flag
79 int fBridgeMode; // bridge mode flag
80 // save/load
81 Abc_Ntk_t * pNtkBest; // the current network
82 float nBestNtkArea; // best area
83 float nBestNtkDelay; // best delay
84 int nBestNtkNodes; // best nodes
85 int nBestNtkLevels; // best levels
86
87 // output streams
88 FILE * Out;
89 FILE * Err;
90 FILE * Hst;
91 // used for runtime measurement
92 double TimeCommand; // the runtime of the last command
93 double TimeTotal; // the total runtime of all commands
94 // temporary storage for structural choices
95 Vec_Ptr_t * vStore; // networks to be used by choice
96 // decomposition package
97 void * pManDec; // decomposition manager
98 void * pManDsd; // decomposition manager
99 void * pManDsd2; // decomposition manager
100 // libraries for mapping
101 void * pLibLut; // the current LUT library
102 void * pLibBox; // the current box library
103 void * pLibGen; // the current genlib
104 void * pLibGen2; // the current genlib
105 void * pLibSuper; // the current supergate library
106 void * pLibScl; // the current Liberty library
107 void * pAbcCon; // constraint manager
108 // timing constraints
109 char * pDrivingCell; // name of the driving cell
110 float MaxLoad; // maximum output load
111 // inductive don't-cares
114
115 // new code
116 Gia_Man_t * pGia; // alternative current network as a light-weight AIG
117 Gia_Man_t * pGia2; // copy of the above
118 Gia_Man_t * pGiaBest; // copy of the above
119 Gia_Man_t * pGiaBest2; // copy of the above
120 Gia_Man_t * pGiaSaved; // copy of the above
121 int nBestLuts; // best LUT count
122 int nBestEdges; // best edge count
123 int nBestLevels; // best level count
124 int nBestLuts2; // best LUT count
125 int nBestEdges2; // best edge count
126 int nBestLevels2; // best level count
127 Abc_Cex_t * pCex; // a counter-example to fail the current network
128 Abc_Cex_t * pCex2; // copy of the above
129 Vec_Ptr_t * vCexVec; // a vector of counter-examples if more than one PO fails
130 Vec_Ptr_t * vPoEquivs; // equivalence classes of isomorphic primary outputs
131 Vec_Int_t * vStatuses; // problem status for each output
132 Vec_Int_t * vAbcObjIds; // object IDs
133 int Status; // the status of verification problem (proved=1, disproved=0, undecided=-1)
134 int nFrames; // the number of time frames completed by BMC
135 Vec_Ptr_t * vPlugInComBinPairs; // pairs of command and its binary name
136 Vec_Ptr_t * vLTLProperties_global; // related to LTL
137 Vec_Ptr_t * vSignalNames; // temporary storage for signal names
138 char * pSpecName;
139 void * pSave1;
140 void * pSave2;
141 void * pSave3;
142 void * pSave4;
143 void * pAbc85Ntl;
147 void * pAbcWlc;
149 void * pAbcRtl;
150 void * pAbcBac;
151 void * pAbcCba;
152 void * pAbcPla;
156#ifdef ABC_USE_CUDD
157 DdManager * dd; // temporary BDD package
158#endif
165 int * pArray;
166 int * pBoxes;
167 void * pNdr;
169
171};
172
174
177
186
190
194
195
199
200/*=== mvMain.c ===========================================================*/
201extern ABC_DLL int main( int argc, char * argv[] );
202/*=== mvInit.c ===================================================*/
203extern ABC_DLL void Abc_FrameInit( Abc_Frame_t * pAbc );
204extern ABC_DLL void Abc_FrameEnd( Abc_Frame_t * pAbc );
206/*=== mvFrame.c =====================================================*/
209/*=== mvUtils.c =====================================================*/
210extern ABC_DLL char * Abc_UtilsGetVersion( Abc_Frame_t * pAbc );
211extern ABC_DLL char * Abc_UtilsGetUsersInput( Abc_Frame_t * pAbc );
212extern ABC_DLL void Abc_UtilsPrintHello( Abc_Frame_t * pAbc );
213extern ABC_DLL void Abc_UtilsPrintUsage( Abc_Frame_t * pAbc, char * ProgName );
214extern ABC_DLL void Abc_UtilsSource( Abc_Frame_t * pAbc );
215extern ABC_DLL void Abc_FrameStoreStart( Abc_Frame_t * pAbc );
216extern ABC_DLL void Abc_FrameStoreStop( Abc_Frame_t * pAbc );
217extern ABC_DLL void Abc_FrameStoreAdd( Abc_Frame_t * pAbc, Gia_Man_t * p );
218extern ABC_DLL void Abc_FrameStorePrint( Abc_Frame_t * pAbc );
219
220
222
223#endif
224
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
typedefABC_NAMESPACE_HEADER_START struct Abc_Frame_t_ Abc_Frame_t
INCLUDES ///.
Definition abcapis.h:38
#define ABC_DLL
Definition abcapis.h:57
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
Cube * p
Definition exorList.c:222
struct Gia_Man_t_ Gia_Man_t
Definition gia.h:96
ABC_DLL void Abc_FrameEnd(Abc_Frame_t *pAbc)
Definition mainInit.c:145
ABC_DLL void Abc_UtilsPrintUsage(Abc_Frame_t *pAbc, char *ProgName)
Definition mainUtils.c:127
ABC_DLL void Abc_UtilsPrintHello(Abc_Frame_t *pAbc)
Definition mainUtils.c:111
ABC_DLL void Abc_FrameStoreStart(Abc_Frame_t *pAbc)
Definition mainUtils.c:309
ABC_DLL void Abc_UtilsSource(Abc_Frame_t *pAbc)
Definition mainUtils.c:160
ABC_DLL void Abc_FrameStoreAdd(Abc_Frame_t *pAbc, Gia_Man_t *p)
Definition mainUtils.c:316
ABC_DLL void Abc_FrameAddInitializer(Abc_FrameInitializer_t *p)
Definition mainInit.c:76
ABC_DLL void Abc_FrameInit(Abc_Frame_t *pAbc)
FUNCTION DEFINITIONS ///.
Definition mainInit.c:106
ABC_DLL void Abc_FrameStorePrint(Abc_Frame_t *pAbc)
Definition mainUtils.c:336
void(* Abc_Frame_Callback_BmcFrameDone_Func)(int frame, int po, int status)
STRUCTURE DEFINITIONS ///.
Definition mainInt.h:58
ABC_DLL int main(int argc, char *argv[])
GLOBAL VARIABLES ///.
Definition main.c:9
ABC_DLL char * Abc_UtilsGetUsersInput(Abc_Frame_t *pAbc)
Definition mainUtils.c:77
ABC_DLL Abc_Frame_t * Abc_FrameAllocate()
Definition mainFrame.c:162
ABC_DLL char * Abc_UtilsGetVersion(Abc_Frame_t *pAbc)
FUNCTION DEFINITIONS ///.
Definition mainUtils.c:52
ABC_DLL void Abc_FrameDeallocate(Abc_Frame_t *p)
Definition mainFrame.c:204
struct Abc_FrameInitializer_t_ Abc_FrameInitializer_t
Definition mainInt.h:176
ABC_DLL void Abc_FrameStoreStop(Abc_Frame_t *pAbc)
Definition mainUtils.c:303
void(* Abc_Frame_Initialization_Func)(Abc_Frame_t *pAbc)
Definition mainInt.h:173
Abc_FrameInitializer_t * prev
Definition mainInt.h:184
Abc_FrameInitializer_t * next
Definition mainInt.h:183
Abc_Frame_Initialization_Func destroy
Definition mainInt.h:181
Abc_Frame_Initialization_Func init
Definition mainInt.h:180
Hsh_VecMan_t * pHash
Definition mainInt.h:155
Vec_Int_t * vCopyMiniLut
Definition mainInt.h:162
void * pSave3
Definition mainInt.h:141
FILE * Err
Definition mainInt.h:89
void * pAbc85Delay
Definition mainInt.h:146
int fSource
Definition mainInt.h:76
void * pSave1
Definition mainInt.h:139
Abc_Nam_t * pJsonStrs
Definition mainInt.h:153
void * pLibLut
Definition mainInt.h:101
Gia_Man_t * pGia2
Definition mainInt.h:117
st__table * tCommands
Definition mainInt.h:66
Vec_Int_t * pAbcWlcInv
Definition mainInt.h:148
Vec_Ptr_t * vLTLProperties_global
Definition mainInt.h:136
int fBatchMode
Definition mainInt.h:78
FILE * Out
Definition mainInt.h:88
float nBestNtkDelay
Definition mainInt.h:83
double TimeTotal
Definition mainInt.h:93
void * pAbcRtl
Definition mainInt.h:149
int nBestLuts2
Definition mainInt.h:124
void * pAbc85Best
Definition mainInt.h:145
Abc_Ntk_t * pNtkBestArea
Definition mainInt.h:73
st__table * tFlags
Definition mainInt.h:68
void * pAbcCon
Definition mainInt.h:107
Vec_Int_t * vMiniLutObjs
Definition mainInt.h:163
int nBestEdges
Definition mainInt.h:122
Vec_Int_t * vIndFlops
Definition mainInt.h:112
Vec_Int_t * vObjDelays
Definition mainInt.h:164
FILE * Hst
Definition mainInt.h:90
Vec_Ptr_t * aHistory
Definition mainInt.h:69
int fAutoexac
Definition mainInt.h:77
char * sVersion
Definition mainInt.h:63
Vec_Int_t * vCopyMiniAig
Definition mainInt.h:161
int nBestEdges2
Definition mainInt.h:125
int nIndFrames
Definition mainInt.h:113
int nBestLevels2
Definition mainInt.h:126
Gia_Man_t * pGiaBest2
Definition mainInt.h:119
Gia_Man_t * pGiaMiniAig
Definition mainInt.h:159
int fBridgeMode
Definition mainInt.h:79
Vec_Ptr_t * vStore
Definition mainInt.h:95
Vec_Ptr_t * vCexVec
Definition mainInt.h:129
Vec_Int_t * vStatuses
Definition mainInt.h:131
Vec_Int_t * vAbcObjIds
Definition mainInt.h:132
void * pManDsd2
Definition mainInt.h:99
Abc_Cex_t * pCex
Definition mainInt.h:127
Vec_Ptr_t * vSignalNames
Definition mainInt.h:137
void * pSave4
Definition mainInt.h:142
Gia_Man_t * pGiaBest
Definition mainInt.h:118
void * pNdr
Definition mainInt.h:167
void * pAbcCba
Definition mainInt.h:151
int nBestLuts
Definition mainInt.h:121
void * pLibGen2
Definition mainInt.h:104
st__table * tAliases
Definition mainInt.h:67
void * pLibBox
Definition mainInt.h:102
void * pAbcWlc
Definition mainInt.h:147
double TimeCommand
Definition mainInt.h:92
Abc_Frame_Callback_BmcFrameDone_Func pFuncOnFrameDone
Definition mainInt.h:170
Abc_Ntk_t * pNtkBest
Definition mainInt.h:81
Gia_Man_t * pGia
Definition mainInt.h:116
void * pManDec
Definition mainInt.h:97
float MaxLoad
Definition mainInt.h:110
int nBestNtkLevels
Definition mainInt.h:85
int * pNdrArray
Definition mainInt.h:168
Abc_Ntk_t * pNtkBackup
Definition mainInt.h:74
Abc_Ntk_t * pNtkCur
Definition mainInt.h:71
Vec_Ptr_t * vPoEquivs
Definition mainInt.h:130
void * pLibGen
Definition mainInt.h:103
Vec_Ptr_t * vPlugInComBinPairs
Definition mainInt.h:135
int * pBoxes
Definition mainInt.h:166
Gia_Man_t * pGiaSaved
Definition mainInt.h:120
void * pAbcPla
Definition mainInt.h:152
void * pAbc85Ntl2
Definition mainInt.h:144
void * pManDsd
Definition mainInt.h:98
void * pSave2
Definition mainInt.h:140
Gia_Man_t * pGiaMiniLut
Definition mainInt.h:160
void * pLibScl
Definition mainInt.h:106
int * pArray
Definition mainInt.h:165
char * sBinary
Definition mainInt.h:64
Vec_Wec_t * vJsonObjs
Definition mainInt.h:154
int nBestLevels
Definition mainInt.h:123
void * pLibSuper
Definition mainInt.h:105
char * pDrivingCell
Definition mainInt.h:109
float nBestNtkArea
Definition mainInt.h:82
void * pAbc85Ntl
Definition mainInt.h:143
Abc_Cex_t * pCex2
Definition mainInt.h:128
char * pSpecName
Definition mainInt.h:138
int nBestNtkNodes
Definition mainInt.h:84
Abc_Ntk_t * pNtkBestDelay
Definition mainInt.h:72
void * pAbcBac
Definition mainInt.h:150
Definition frames.h:15
Definition st.h:52
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
Definition utilCex.h:39
typedefABC_NAMESPACE_HEADER_START struct Abc_Nam_t_ Abc_Nam_t
INCLUDES ///.
Definition utilNam.h:39
struct Hsh_VecMan_t_ Hsh_VecMan_t
Definition vecHsh.h:85
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