ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
csat_apis.c
Go to the documentation of this file.
1
18
19#include "base/abc/abc.h"
20#include "proof/fraig/fraig.h"
21#include "csat_apis.h"
22#include "misc/st/stmm.h"
23#include "base/main/main.h"
24
26
27
31
32#define ABC_DEFAULT_CONF_LIMIT 0 // limit on conflicts
33#define ABC_DEFAULT_IMP_LIMIT 0 // limit on implications
34
35
37{
38 // information about the problem
39 stmm_table * tName2Node; // the hash table mapping names to nodes
40 stmm_table * tNode2Name; // the hash table mapping nodes to names
41 Abc_Ntk_t * pNtk; // the starting ABC network
42 Abc_Ntk_t * pTarget; // the AIG representing the target
43 char * pDumpFileName; // the name of the file to dump the target network
44 Mem_Flex_t * pMmNames; // memory manager for signal names
45 // solving parameters
46 int mode; // 0 = resource-aware integration; 1 = brute-force SAT
47 Prove_Params_t Params; // integrated CEC parameters
48 // information about the target
49 int nog; // the numbers of gates in the target
50 Vec_Ptr_t * vNodes; // the gates in the target
51 Vec_Int_t * vValues; // the values of gate's outputs in the target
52 // solution
53 CSAT_Target_ResultT * pResult; // the result of solving the target
54};
55
56static CSAT_Target_ResultT * ABC_TargetResAlloc( int nVars );
57static char * ABC_GetNodeName( ABC_Manager mng, Abc_Obj_t * pNode );
58
59// procedures to start and stop the ABC framework
60extern void Abc_Start();
61extern void Abc_Stop();
62
63// some external procedures
64extern int Io_WriteBench( Abc_Ntk_t * pNtk, const char * FileName );
65
69
82{
83 ABC_Manager_t * mng;
84 Abc_Start();
85 mng = ABC_ALLOC( ABC_Manager_t, 1 );
86 memset( mng, 0, sizeof(ABC_Manager_t) );
87 mng->pNtk = Abc_NtkAlloc( ABC_NTK_LOGIC, ABC_FUNC_SOP, 1 );
88 mng->pNtk->pName = Extra_UtilStrsav("csat_network");
89 mng->tName2Node = stmm_init_table(strcmp, stmm_strhash);
90 mng->tNode2Name = stmm_init_table(stmm_ptrcmp, stmm_ptrhash);
91 mng->pMmNames = Mem_FlexStart();
92 mng->vNodes = Vec_PtrAlloc( 100 );
93 mng->vValues = Vec_IntAlloc( 100 );
94 mng->mode = 0; // set "resource-aware integration" as the default mode
95 // set default parameters for CEC
96 Prove_ParamsSetDefault( &mng->Params );
97 // set infinite resource limit for the final mitering
98// mng->Params.nMiteringLimitLast = ABC_INFINITY;
99 return mng;
100}
101
114{
116 ABC_TargetResFree(p_res);
117 if ( mng->tNode2Name ) stmm_free_table( mng->tNode2Name );
118 if ( mng->tName2Node ) stmm_free_table( mng->tName2Node );
119 if ( mng->pMmNames ) Mem_FlexStop( mng->pMmNames, 0 );
120 if ( mng->pNtk ) Abc_NtkDelete( mng->pNtk );
121 if ( mng->pTarget ) Abc_NtkDelete( mng->pTarget );
122 if ( mng->vNodes ) Vec_PtrFree( mng->vNodes );
123 if ( mng->vValues ) Vec_IntFree( mng->vValues );
124 ABC_FREE( mng->pDumpFileName );
125 ABC_FREE( mng );
126 Abc_Stop();
127}
128
141{
142}
143
156{
157 mng->mode = 1; // switch to "brute-force SAT" as the solving option
158}
159
175int ABC_AddGate( ABC_Manager mng, enum GateType type, char * name, int nofi, char ** fanins, int dc_attr )
176{
177 Abc_Obj_t * pObj = NULL; // Suppress "might be used uninitialized"
178 Abc_Obj_t * pFanin;
179 char * pSop = NULL; // Suppress "might be used uninitialized"
180 char * pNewName;
181 int i;
182
183 // save the name in the local memory manager
184 pNewName = Mem_FlexEntryFetch( mng->pMmNames, strlen(name) + 1 );
185 strcpy( pNewName, name );
186 name = pNewName;
187
188 // consider different cases, create the node, and map the node into the name
189 switch( type )
190 {
191 case CSAT_BPI:
192 case CSAT_BPPI:
193 if ( nofi != 0 )
194 { printf( "ABC_AddGate: The PI/PPI gate \"%s\" has fanins.\n", name ); return 0; }
195 // create the PI
196 pObj = Abc_NtkCreatePi( mng->pNtk );
197 stmm_insert( mng->tNode2Name, (char *)pObj, name );
198 break;
199 case CSAT_CONST:
200 case CSAT_BAND:
201 case CSAT_BNAND:
202 case CSAT_BOR:
203 case CSAT_BNOR:
204 case CSAT_BXOR:
205 case CSAT_BXNOR:
206 case CSAT_BINV:
207 case CSAT_BBUF:
208 // create the node
209 pObj = Abc_NtkCreateNode( mng->pNtk );
210 // create the fanins
211 for ( i = 0; i < nofi; i++ )
212 {
213 if ( !stmm_lookup( mng->tName2Node, fanins[i], (char **)&pFanin ) )
214 { printf( "ABC_AddGate: The fanin gate \"%s\" is not in the network.\n", fanins[i] ); return 0; }
215 Abc_ObjAddFanin( pObj, pFanin );
216 }
217 // create the node function
218 switch( type )
219 {
220 case CSAT_CONST:
221 if ( nofi != 0 )
222 { printf( "ABC_AddGate: The constant gate \"%s\" has fanins.\n", name ); return 0; }
223 pSop = Abc_SopCreateConst1( (Mem_Flex_t *)mng->pNtk->pManFunc );
224 break;
225 case CSAT_BAND:
226 if ( nofi < 1 )
227 { printf( "ABC_AddGate: The AND gate \"%s\" no fanins.\n", name ); return 0; }
228 pSop = Abc_SopCreateAnd( (Mem_Flex_t *)mng->pNtk->pManFunc, nofi, NULL );
229 break;
230 case CSAT_BNAND:
231 if ( nofi < 1 )
232 { printf( "ABC_AddGate: The NAND gate \"%s\" no fanins.\n", name ); return 0; }
233 pSop = Abc_SopCreateNand( (Mem_Flex_t *)mng->pNtk->pManFunc, nofi );
234 break;
235 case CSAT_BOR:
236 if ( nofi < 1 )
237 { printf( "ABC_AddGate: The OR gate \"%s\" no fanins.\n", name ); return 0; }
238 pSop = Abc_SopCreateOr( (Mem_Flex_t *)mng->pNtk->pManFunc, nofi, NULL );
239 break;
240 case CSAT_BNOR:
241 if ( nofi < 1 )
242 { printf( "ABC_AddGate: The NOR gate \"%s\" no fanins.\n", name ); return 0; }
243 pSop = Abc_SopCreateNor( (Mem_Flex_t *)mng->pNtk->pManFunc, nofi );
244 break;
245 case CSAT_BXOR:
246 if ( nofi < 1 )
247 { printf( "ABC_AddGate: The XOR gate \"%s\" no fanins.\n", name ); return 0; }
248 if ( nofi > 2 )
249 { printf( "ABC_AddGate: The XOR gate \"%s\" has more than two fanins.\n", name ); return 0; }
250 pSop = Abc_SopCreateXor( (Mem_Flex_t *)mng->pNtk->pManFunc, nofi );
251 break;
252 case CSAT_BXNOR:
253 if ( nofi < 1 )
254 { printf( "ABC_AddGate: The XNOR gate \"%s\" no fanins.\n", name ); return 0; }
255 if ( nofi > 2 )
256 { printf( "ABC_AddGate: The XNOR gate \"%s\" has more than two fanins.\n", name ); return 0; }
257 pSop = Abc_SopCreateNxor( (Mem_Flex_t *)mng->pNtk->pManFunc, nofi );
258 break;
259 case CSAT_BINV:
260 if ( nofi != 1 )
261 { printf( "ABC_AddGate: The inverter gate \"%s\" does not have exactly one fanin.\n", name ); return 0; }
262 pSop = Abc_SopCreateInv( (Mem_Flex_t *)mng->pNtk->pManFunc );
263 break;
264 case CSAT_BBUF:
265 if ( nofi != 1 )
266 { printf( "ABC_AddGate: The buffer gate \"%s\" does not have exactly one fanin.\n", name ); return 0; }
267 pSop = Abc_SopCreateBuf( (Mem_Flex_t *)mng->pNtk->pManFunc );
268 break;
269 default :
270 break;
271 }
272 Abc_ObjSetData( pObj, pSop );
273 break;
274 case CSAT_BPPO:
275 case CSAT_BPO:
276 if ( nofi != 1 )
277 { printf( "ABC_AddGate: The PO/PPO gate \"%s\" does not have exactly one fanin.\n", name ); return 0; }
278 // create the PO
279 pObj = Abc_NtkCreatePo( mng->pNtk );
280 stmm_insert( mng->tNode2Name, (char *)pObj, name );
281 // connect to the PO fanin
282 if ( !stmm_lookup( mng->tName2Node, fanins[0], (char **)&pFanin ) )
283 { printf( "ABC_AddGate: The fanin gate \"%s\" is not in the network.\n", fanins[0] ); return 0; }
284 Abc_ObjAddFanin( pObj, pFanin );
285 break;
286 default:
287 printf( "ABC_AddGate: Unknown gate type.\n" );
288 break;
289 }
290
291 // map the name into the node
292 if ( stmm_insert( mng->tName2Node, name, (char *)pObj ) )
293 { printf( "ABC_AddGate: The same gate \"%s\" is added twice.\n", name ); return 0; }
294 return 1;
295}
296
309{
310 Abc_Ntk_t * pNtk = mng->pNtk;
311 Abc_Obj_t * pObj;
312 int i;
313 Abc_NtkForEachPi( pNtk, pObj, i )
314 Abc_ObjAssignName( pObj, ABC_GetNodeName(mng, pObj), NULL );
315 Abc_NtkForEachPo( pNtk, pObj, i )
316 Abc_ObjAssignName( pObj, ABC_GetNodeName(mng, pObj), NULL );
317 assert( Abc_NtkLatchNum(pNtk) == 0 );
318}
319
333{
334 Abc_Ntk_t * pNtk = mng->pNtk;
335 Abc_Obj_t * pObj;
336 int i;
337
338 // check that there are no dangling nodes
339 Abc_NtkForEachNode( pNtk, pObj, i )
340 {
341 if ( i == 0 )
342 continue;
343 if ( Abc_ObjFanoutNum(pObj) == 0 )
344 {
345// printf( "ABC_Check_Integrity: The network has dangling nodes.\n" );
346 return 0;
347 }
348 }
349
350 // make sure everything is okay with the network structure
351 if ( !Abc_NtkDoCheck( pNtk ) )
352 {
353 printf( "ABC_Check_Integrity: The internal network check has failed.\n" );
354 return 0;
355 }
356 return 1;
357}
358
371{
372// printf( "ABC_SetTimeLimit: The resource limit is not implemented (warning).\n" );
373}
374
386void ABC_SetLearnLimit( ABC_Manager mng, int num )
387{
388// printf( "ABC_SetLearnLimit: The resource limit is not implemented (warning).\n" );
389}
390
403{
404// printf( "ABC_SetLearnBacktrackLimit: The resource limit is not implemented (warning).\n" );
405}
406
419{
420 mng->Params.nMiteringLimitLast = num;
421}
422
435{
436// printf( "ABC_SetSolveImplicationLimit: The resource limit is not implemented (warning).\n" );
437}
438
450void ABC_SetTotalBacktrackLimit( ABC_Manager mng, ABC_UINT64_T num )
451{
452 mng->Params.nTotalBacktrackLimit = num;
453}
454
466void ABC_SetTotalInspectLimit( ABC_Manager mng, ABC_UINT64_T num )
467{
468 mng->Params.nTotalInspectLimit = num;
469}
470
482{
483 return mng->Params.nTotalBacktracksMade;
484}
485
498{
499 return mng->Params.nTotalInspectsMade;
500}
501
513void ABC_EnableDump( ABC_Manager mng, char * dump_file )
514{
515 ABC_FREE( mng->pDumpFileName );
516 mng->pDumpFileName = Extra_UtilStrsav( dump_file );
517}
518
534int ABC_AddTarget( ABC_Manager mng, int nog, char ** names, int * values )
535{
536 Abc_Obj_t * pObj;
537 int i;
538 if ( nog < 1 )
539 { printf( "ABC_AddTarget: The target has no gates.\n" ); return 0; }
540 // clear storage for the target
541 mng->nog = 0;
542 Vec_PtrClear( mng->vNodes );
543 Vec_IntClear( mng->vValues );
544 // save the target
545 for ( i = 0; i < nog; i++ )
546 {
547 if ( !stmm_lookup( mng->tName2Node, names[i], (char **)&pObj ) )
548 { printf( "ABC_AddTarget: The target gate \"%s\" is not in the network.\n", names[i] ); return 0; }
549 Vec_PtrPush( mng->vNodes, pObj );
550 if ( values[i] < 0 || values[i] > 1 )
551 { printf( "ABC_AddTarget: The value of gate \"%s\" is not 0 or 1.\n", names[i] ); return 0; }
552 Vec_IntPush( mng->vValues, values[i] );
553 }
554 mng->nog = nog;
555 return 1;
556}
557
571{
572 // check if the target is available
573 assert( mng->nog == Vec_PtrSize(mng->vNodes) );
574 if ( mng->nog == 0 )
575 { printf( "ABC_SolveInit: Target is not specified by ABC_AddTarget().\n" ); return; }
576
577 // free the previous target network if present
578 if ( mng->pTarget ) Abc_NtkDelete( mng->pTarget );
579
580 // set the new target network
581// mng->pTarget = Abc_NtkCreateTarget( mng->pNtk, mng->vNodes, mng->vValues );
582 mng->pTarget = Abc_NtkStrash( mng->pNtk, 0, 1, 0 );
583}
584
597{
598}
599
612{
613 Prove_Params_t * pParams = &mng->Params;
614 int RetValue, i;
615
616 // check if the target network is available
617 if ( mng->pTarget == NULL )
618 { printf( "ABC_Solve: Target network is not derived by ABC_SolveInit().\n" ); return UNDETERMINED; }
619
620 // try to prove the miter using a number of techniques
621 if ( mng->mode )
622 RetValue = Abc_NtkMiterSat( mng->pTarget, (ABC_INT64_T)pParams->nMiteringLimitLast, (ABC_INT64_T)0, 0, NULL, NULL );
623 else
624// RetValue = Abc_NtkMiterProve( &mng->pTarget, pParams ); // old CEC engine
625 RetValue = Abc_NtkIvyProve( &mng->pTarget, pParams ); // new CEC engine
626
627 // analyze the result
628 mng->pResult = ABC_TargetResAlloc( Abc_NtkCiNum(mng->pTarget) );
629 if ( RetValue == -1 )
631 else if ( RetValue == 1 )
633 else if ( RetValue == 0 )
634 {
635 mng->pResult->status = SATISFIABLE;
636 // create the array of PI names and values
637 for ( i = 0; i < mng->pResult->no_sig; i++ )
638 {
639 mng->pResult->names[i] = Extra_UtilStrsav( ABC_GetNodeName(mng, Abc_NtkCi(mng->pNtk, i)) );
640 mng->pResult->values[i] = mng->pTarget->pModel[i];
641 }
642 ABC_FREE( mng->pTarget->pModel );
643 }
644 else assert( 0 );
645
646 // delete the target
647 Abc_NtkDelete( mng->pTarget );
648 mng->pTarget = NULL;
649 // return the status
650 return mng->pResult->status;
651}
652
665{
666 return mng->pResult;
667}
668
681{
682 Abc_Ntk_t * pNtkTemp, * pNtkAig;
683 const char * pFileName;
684
685 // derive the netlist
686 pNtkAig = Abc_NtkStrash( mng->pNtk, 0, 0, 0 );
687 pNtkTemp = Abc_NtkToNetlistBench( pNtkAig );
688 Abc_NtkDelete( pNtkAig );
689 if ( pNtkTemp == NULL )
690 { printf( "ABC_Dump_Bench_File: Dumping BENCH has failed.\n" ); return; }
691 pFileName = mng->pDumpFileName? mng->pDumpFileName: "abc_test.bench";
692 Io_WriteBench( pNtkTemp, pFileName );
693 Abc_NtkDelete( pNtkTemp );
694}
695
696
697
709CSAT_Target_ResultT * ABC_TargetResAlloc( int nVars )
710{
713 memset( p, 0, sizeof(CSAT_Target_ResultT) );
714 p->no_sig = nVars;
715 p->names = ABC_ALLOC( char *, nVars );
716 p->values = ABC_ALLOC( int, nVars );
717 memset( p->names, 0, sizeof(char *) * nVars );
718 memset( p->values, 0, sizeof(int) * nVars );
719 return p;
720}
721
734{
735 if ( p == NULL )
736 return;
737 if( p->names )
738 {
739 int i = 0;
740 for ( i = 0; i < p->no_sig; i++ )
741 {
742 ABC_FREE(p->names[i]);
743 }
744 }
745 ABC_FREE( p->names );
746 ABC_FREE( p->values );
747 ABC_FREE( p );
748}
749
761char * ABC_GetNodeName( ABC_Manager mng, Abc_Obj_t * pNode )
762{
763 char * pName = NULL;
764 if ( !stmm_lookup( mng->tNode2Name, (char *)pNode, (char **)&pName ) )
765 {
766 assert( 0 );
767 }
768 return pName;
769}
770
771
775
776
778
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
ABC_DLL int Abc_NtkIvyProve(Abc_Ntk_t **ppNtk, void *pPars)
Definition abcIvy.c:503
ABC_DLL Abc_Ntk_t * Abc_NtkAlloc(Abc_NtkType_t Type, Abc_NtkFunc_t Func, int fUseMemMan)
DECLARATIONS ///.
Definition abcNtk.c:53
ABC_DLL Abc_Ntk_t * Abc_NtkToNetlistBench(Abc_Ntk_t *pNtk)
Definition abcNetlist.c:125
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
Definition abcFanio.c:84
#define Abc_NtkForEachPo(pNtk, pPo, i)
Definition abc.h:520
ABC_DLL char * Abc_SopCreateNxor(Mem_Flex_t *pMan, int nVars)
Definition abcSop.c:317
ABC_DLL char * Abc_SopCreateInv(Mem_Flex_t *pMan)
Definition abcSop.c:351
ABC_DLL char * Abc_SopCreateOr(Mem_Flex_t *pMan, int nVars, int *pfCompl)
Definition abcSop.c:212
ABC_DLL char * Abc_SopCreateConst1(Mem_Flex_t *pMan)
Definition abcSop.c:113
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
ABC_DLL char * Abc_ObjAssignName(Abc_Obj_t *pObj, char *pName, char *pSuffix)
Definition abcNames.c:69
ABC_DLL char * Abc_SopCreateNand(Mem_Flex_t *pMan, int nVars)
Definition abcSop.c:190
ABC_DLL int Abc_NtkMiterSat(Abc_Ntk_t *pNtk, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, int fVerbose, ABC_INT64_T *pNumConfs, ABC_INT64_T *pNumInspects)
FUNCTION DEFINITIONS ///.
Definition abcSat.c:58
@ ABC_NTK_LOGIC
Definition abc.h:57
ABC_DLL char * Abc_SopCreateAnd(Mem_Flex_t *pMan, int nVars, int *pfCompl)
Definition abcSop.c:168
#define Abc_NtkForEachPi(pNtk, pPi, i)
Definition abc.h:516
ABC_DLL int Abc_NtkDoCheck(Abc_Ntk_t *pNtk)
Definition abcCheck.c:96
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
Definition abcStrash.c:265
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
Definition abcNtk.c:1421
ABC_DLL char * Abc_SopCreateXor(Mem_Flex_t *pMan, int nVars)
Definition abcSop.c:280
@ ABC_FUNC_SOP
Definition abc.h:65
ABC_DLL char * Abc_SopCreateNor(Mem_Flex_t *pMan, int nVars)
Definition abcSop.c:259
ABC_DLL char * Abc_SopCreateBuf(Mem_Flex_t *pMan)
Definition abcSop.c:367
#define Abc_NtkForEachNode(pNtk, pNode, i)
Definition abc.h:464
#define ABC_ALLOC(type, num)
Definition abc_global.h:264
#define ABC_FREE(obj)
Definition abc_global.h:267
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
void ABC_ReleaseManager(ABC_Manager mng)
Definition csat_apis.c:113
void ABC_Dump_Bench_File(ABC_Manager mng)
Definition csat_apis.c:680
void ABC_SolveInit(ABC_Manager mng)
Definition csat_apis.c:570
void ABC_TargetResFree(CSAT_Target_ResultT *p)
Definition csat_apis.c:733
void ABC_SetTotalInspectLimit(ABC_Manager mng, ABC_UINT64_T num)
Definition csat_apis.c:466
void ABC_SetSolveOption(ABC_Manager mng, enum CSAT_OptionT option)
Definition csat_apis.c:140
int Io_WriteBench(Abc_Ntk_t *pNtk, const char *FileName)
FUNCTION DEFINITIONS ///.
ABC_Manager ABC_InitManager()
FUNCTION DEFINITIONS ///.
Definition csat_apis.c:81
void ABC_SetSolveBacktrackLimit(ABC_Manager mng, int num)
Definition csat_apis.c:418
void ABC_SetLearnBacktrackLimit(ABC_Manager mng, int num)
Definition csat_apis.c:402
void ABC_EnableDump(ABC_Manager mng, char *dump_file)
Definition csat_apis.c:513
enum CSAT_StatusT ABC_Solve(ABC_Manager mng)
Definition csat_apis.c:611
void ABC_UseOnlyCoreSatSolver(ABC_Manager mng)
Definition csat_apis.c:155
void ABC_SetSolveImplicationLimit(ABC_Manager mng, int num)
Definition csat_apis.c:434
int ABC_Check_Integrity(ABC_Manager mng)
Definition csat_apis.c:332
int ABC_AddTarget(ABC_Manager mng, int nog, char **names, int *values)
Definition csat_apis.c:534
ABC_UINT64_T ABC_GetTotalBacktracksMade(ABC_Manager mng)
Definition csat_apis.c:481
void Abc_Start()
DECLARATIONS ///.
Definition mainLib.c:52
ABC_UINT64_T ABC_GetTotalInspectsMade(ABC_Manager mng)
Definition csat_apis.c:497
void ABC_SetTimeLimit(ABC_Manager mng, int runtime)
Definition csat_apis.c:370
CSAT_Target_ResultT * ABC_Get_Target_Result(ABC_Manager mng, int TargetID)
Definition csat_apis.c:664
void ABC_AnalyzeTargets(ABC_Manager mng)
Definition csat_apis.c:596
void ABC_SetLearnLimit(ABC_Manager mng, int num)
Definition csat_apis.c:386
void ABC_SetTotalBacktrackLimit(ABC_Manager mng, ABC_UINT64_T num)
Definition csat_apis.c:450
void ABC_Network_Finalize(ABC_Manager mng)
Definition csat_apis.c:308
int ABC_AddGate(ABC_Manager mng, enum GateType type, char *name, int nofi, char **fanins, int dc_attr)
Definition csat_apis.c:175
void Abc_Stop()
Definition mainLib.c:76
struct _CSAT_Target_ResultT CSAT_Target_ResultT
Definition csat_apis.h:120
CSAT_StatusT
Definition csat_apis.h:80
@ UNSATISFIABLE
Definition csat_apis.h:82
@ SATISFIABLE
Definition csat_apis.h:83
@ UNDETERMINED
Definition csat_apis.h:81
GateType
Definition csat_apis.h:50
@ CSAT_BPPI
Definition csat_apis.h:53
@ CSAT_CONST
Definition csat_apis.h:51
@ CSAT_BNAND
Definition csat_apis.h:55
@ CSAT_BINV
Definition csat_apis.h:60
@ CSAT_BAND
Definition csat_apis.h:54
@ CSAT_BXNOR
Definition csat_apis.h:59
@ CSAT_BOR
Definition csat_apis.h:56
@ CSAT_BBUF
Definition csat_apis.h:61
@ CSAT_BPPO
Definition csat_apis.h:68
@ CSAT_BPI
Definition csat_apis.h:52
@ CSAT_BXOR
Definition csat_apis.h:58
@ CSAT_BNOR
Definition csat_apis.h:57
@ CSAT_BPO
Definition csat_apis.h:69
typedefABC_NAMESPACE_HEADER_START struct ABC_ManagerStruct_t ABC_Manager_t
INCLUDES ///.
Definition csat_apis.h:41
struct ABC_ManagerStruct_t * ABC_Manager
Definition csat_apis.h:42
CSAT_OptionT
Definition csat_apis.h:110
Cube * p
Definition exorList.c:222
type
CUBE COVER and CUBE typedefs ///.
Definition exor.h:90
char * Extra_UtilStrsav(const char *s)
void Prove_ParamsSetDefault(Prove_Params_t *pParams)
FUNCTION DEFINITIONS ///.
Definition fraigMan.c:46
struct Prove_ParamsStruct_t_ Prove_Params_t
Definition ivyFraig.c:108
Mem_Flex_t * Mem_FlexStart()
Definition mem.c:327
char * Mem_FlexEntryFetch(Mem_Flex_t *p, int nBytes)
Definition mem.c:388
void Mem_FlexStop(Mem_Flex_t *p, int fVerbose)
Definition mem.c:359
runtime()
Definition main.c:568
char * name
Definition main.h:24
struct Mem_Flex_t_ Mem_Flex_t
Definition mem.h:34
int stmm_ptrhash(const char *x, int size)
Definition stmm.c:533
int stmm_insert(stmm_table *table, char *key, char *value)
Definition stmm.c:200
int stmm_strhash(const char *string, int modulus)
Definition stmm.c:514
int stmm_ptrcmp(const char *x, const char *y)
Definition stmm.c:545
void stmm_free_table(stmm_table *table)
Definition stmm.c:79
stmm_table * stmm_init_table(stmm_compare_func_type compare, stmm_hash_func_type hash)
Definition stmm.c:69
int stmm_lookup(stmm_table *table, char *key, char **value)
Definition stmm.c:134
Mem_Flex_t * pMmNames
Definition csat_apis.c:44
Abc_Ntk_t * pNtk
Definition csat_apis.c:41
Vec_Int_t * vValues
Definition csat_apis.c:51
Vec_Ptr_t * vNodes
Definition csat_apis.c:50
stmm_table * tNode2Name
Definition csat_apis.c:40
stmm_table * tName2Node
Definition csat_apis.c:39
Prove_Params_t Params
Definition csat_apis.c:47
Abc_Ntk_t * pTarget
Definition csat_apis.c:42
CSAT_Target_ResultT * pResult
Definition csat_apis.c:53
void * pManFunc
Definition abc.h:191
int * pModel
Definition abc.h:198
ABC_INT64_T nTotalBacktracksMade
Definition ivyFraig.c:136
ABC_INT64_T nTotalInspectsMade
Definition ivyFraig.c:137
ABC_INT64_T nTotalBacktrackLimit
Definition ivyFraig.c:133
ABC_INT64_T nTotalInspectLimit
Definition ivyFraig.c:134
enum CSAT_StatusT status
Definition csat_apis.h:123
#define assert(ex)
Definition util_old.h:213
char * memset()
int strlen()
int strcmp()
char * strcpy()
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42