mirror of https://github.com/YosysHQ/abc.git
Added several helpful APIs to Satoko.
This commit is contained in:
parent
ca87c1a6a0
commit
7747f21fe6
|
|
@ -92,6 +92,7 @@ extern void satoko_assump_push(satoko_t *s, int);
|
|||
extern void satoko_assump_pop(satoko_t *s);
|
||||
extern int satoko_simplify(satoko_t *);
|
||||
extern int satoko_solve(satoko_t *);
|
||||
extern int satoko_solve_with_assumptions(satoko_t *s, int * plits, int nlits);
|
||||
extern void satoko_mark_cone(satoko_t *, int *, int);
|
||||
extern void satoko_unmark_cone(satoko_t *, int *, int);
|
||||
|
||||
|
|
|
|||
|
|
@ -222,6 +222,19 @@ static inline int solver_varnum(solver_t *s)
|
|||
{
|
||||
return vec_char_size(s->assigns);
|
||||
}
|
||||
static inline int solver_clausenum(solver_t *s)
|
||||
{
|
||||
return vec_uint_size(s->originals);
|
||||
}
|
||||
static inline int solver_learntnum(solver_t *s)
|
||||
{
|
||||
return vec_uint_size(s->learnts);
|
||||
}
|
||||
static inline int solver_conflictnum(solver_t *s)
|
||||
{
|
||||
return satoko_stats(s).n_conflicts;
|
||||
}
|
||||
|
||||
static inline int solver_has_marks(solver_t *s)
|
||||
{
|
||||
return (int)(s->marks != NULL);
|
||||
|
|
@ -234,6 +247,10 @@ static inline void solver_set_stop(solver_t *s, int * pstop)
|
|||
{
|
||||
s->pstop = pstop;
|
||||
}
|
||||
static inline int solver_read_cex_varvalue(solver_t *s, int ivar)
|
||||
{
|
||||
return var_polarity(s, ivar) == LIT_TRUE;
|
||||
}
|
||||
|
||||
//===------------------------------------------------------------------------===
|
||||
// Inline clause functions
|
||||
|
|
|
|||
|
|
@ -313,6 +313,21 @@ int satoko_solve(solver_t *s)
|
|||
return status;
|
||||
}
|
||||
|
||||
int satoko_solve_with_assumptions(solver_t *s, int * plits, int nlits)
|
||||
{
|
||||
int i, status;
|
||||
for ( i = 0; i < nlits; i++ )
|
||||
satoko_assump_push( s, plits[i] );
|
||||
status = satoko_solve( s );
|
||||
for ( i = 0; i < nlits; i++ )
|
||||
satoko_assump_pop( s );
|
||||
if ( status == SATOKO_UNSAT )
|
||||
return 1;
|
||||
if ( status == SATOKO_SAT )
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int satoko_final_conflict(solver_t *s, unsigned *out)
|
||||
{
|
||||
if (vec_uint_size(s->final_conflict) == 0)
|
||||
|
|
|
|||
Loading…
Reference in New Issue