00001
00019 #ifndef __ABC_APIS_H__
00020 #define __ABC_APIS_H__
00021
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025
00029
00033
00037
00038
00039 typedef struct ABC_ManagerStruct_t ABC_Manager_t;
00040 typedef struct ABC_ManagerStruct_t * ABC_Manager;
00041
00042
00043
00044
00045 #ifndef _ABC_GATE_TYPE_
00046 #define _ABC_GATE_TYPE_
00047 enum GateType
00048 {
00049 CSAT_CONST = 0,
00050 CSAT_BPI,
00051 CSAT_BPPI,
00052 CSAT_BAND,
00053 CSAT_BNAND,
00054 CSAT_BOR,
00055 CSAT_BNOR,
00056 CSAT_BXOR,
00057 CSAT_BXNOR,
00058 CSAT_BINV,
00059 CSAT_BBUF,
00060 CSAT_BMUX,
00061 CSAT_BDFF,
00062 CSAT_BSDFF,
00063 CSAT_BTRIH,
00064 CSAT_BTRIL,
00065 CSAT_BBUS,
00066 CSAT_BPPO,
00067 CSAT_BPO,
00068 CSAT_BCNF,
00069 CSAT_BDC,
00070 };
00071 #endif
00072
00073
00074
00075 #ifndef _ABC_STATUS_
00076 #define _ABC_STATUS_
00077 enum CSAT_StatusT
00078 {
00079 UNDETERMINED = 0,
00080 UNSATISFIABLE,
00081 SATISFIABLE,
00082 TIME_OUT,
00083 FRAME_OUT,
00084 NO_TARGET,
00085 ABORTED,
00086 SEQ_SATISFIABLE
00087 };
00088 #endif
00089
00090
00091
00092 #ifndef _ABC_CALLER_
00093 #define _ABC_CALLER_
00094 enum CSAT_CallerT
00095 {
00096 BLS = 0,
00097 SATORI,
00098 NONE
00099 };
00100 #endif
00101
00102
00103
00104
00105 #ifndef _ABC_OPTION_
00106 #define _ABC_OPTION_
00107 enum CSAT_OptionT
00108 {
00109 BASE_LINE = 0,
00110 IMPLICT_LEARNING,
00111 EXPLICT_LEARNING
00112 };
00113 #endif
00114
00115
00116 #ifndef _ABC_Target_Result
00117 #define _ABC_Target_Result
00118 typedef struct _CSAT_Target_ResultT CSAT_Target_ResultT;
00119 struct _CSAT_Target_ResultT
00120 {
00121 enum CSAT_StatusT status;
00122 int num_dec;
00123 int num_imp;
00124 int num_cftg;
00125 int num_cfts;
00126 double time;
00127 int no_sig;
00128
00129
00130 char** names;
00131
00132
00133
00134
00135
00136 int* values;
00137 };
00138 #endif
00139
00143
00144
00145 extern ABC_Manager ABC_InitManager(void);
00146
00147
00148 extern void ABC_ReleaseManager(ABC_Manager mng);
00149
00150
00151 extern void ABC_SetSolveOption(ABC_Manager mng, enum CSAT_OptionT option);
00152
00153
00154 extern void ABC_UseOnlyCoreSatSolver(ABC_Manager mng);
00155
00156
00157
00158
00159
00160
00161
00162
00163 extern int ABC_AddGate(ABC_Manager mng,
00164 enum GateType type,
00165 char* name,
00166 int nofi,
00167 char** fanins,
00168 int dc_attr);
00169
00170
00171
00172 extern int ABC_Check_Integrity(ABC_Manager mng);
00173
00174
00175 extern void ABC_Network_Finalize( ABC_Manager mng );
00176
00177
00178
00179 extern void ABC_SetTimeLimit(ABC_Manager mng, int runtime);
00180 extern void ABC_SetLearnLimit(ABC_Manager mng, int num);
00181 extern void ABC_SetSolveBacktrackLimit(ABC_Manager mng, int num);
00182 extern void ABC_SetLearnBacktrackLimit(ABC_Manager mng, int num);
00183 extern void ABC_EnableDump(ABC_Manager mng, char* dump_file);
00184
00185 extern void ABC_SetTotalBacktrackLimit( ABC_Manager mng, uint64 num );
00186 extern void ABC_SetTotalInspectLimit( ABC_Manager mng, uint64 num );
00187 extern uint64 ABC_GetTotalBacktracksMade( ABC_Manager mng );
00188 extern uint64 ABC_GetTotalInspectsMade( ABC_Manager mng );
00189
00190
00191
00192
00193
00194
00195 extern int ABC_AddTarget(ABC_Manager mng, int nog, char**names, int* values);
00196
00197
00198 extern void ABC_SolveInit(ABC_Manager mng);
00199 extern void ABC_AnalyzeTargets(ABC_Manager mng);
00200
00201
00202 extern enum CSAT_StatusT ABC_Solve(ABC_Manager mng);
00203
00204
00205
00206 extern CSAT_Target_ResultT * ABC_Get_Target_Result(ABC_Manager mng, int TargetID);
00207 extern void ABC_Dump_Bench_File(ABC_Manager mng);
00208
00209
00210 extern void ABC_TargetResFree( CSAT_Target_ResultT * p );
00211
00212 extern void CSAT_SetCaller(ABC_Manager mng, enum CSAT_CallerT caller);
00213
00214 #ifdef __cplusplus
00215 }
00216 #endif
00217
00218 #endif
00219