Added sat -verify and -falsify support for non-prove cases

This commit is contained in:
Clifford Wolf 2014-02-06 00:59:41 +01:00
parent cd06055e77
commit e915043144
1 changed files with 26 additions and 14 deletions

View File

@ -972,15 +972,9 @@ struct SatPass : public Pass {
if (module == NULL)
log_cmd_error("Can't perform SAT on an empty selection!\n");
if (!prove.size() && !prove_x.size() && !prove_asserts && (verify || falsify))
log_cmd_error("Got -verify or -falsify but nothing to prove!\n");
if (!prove.size() && !prove_x.size() && !prove_asserts && tempinduct)
log_cmd_error("Got -tempinduct but nothing to prove!\n");
if (seq_len == 0 && tempinduct)
log_cmd_error("Got -tempinduct but no -seq argument!\n");
if (set_def_inputs) {
for (auto &it : module->wires)
if (it.second->port_input)
@ -1192,9 +1186,16 @@ struct SatPass : public Pass {
goto rerun_solver;
}
if (verify) {
log("\n");
log_error("Called with -verify and proof did fail!\n");
if (!prove.size() && !prove_x.size() && !prove_asserts) {
if (falsify) {
log("\n");
log_error("Called with -falsify and found a model!\n");
}
} else {
if (verify) {
log("\n");
log_error("Called with -verify and proof did fail!\n");
}
}
}
else
@ -1203,9 +1204,13 @@ struct SatPass : public Pass {
goto timeout;
if (rerun_counter)
log("SAT solving finished - no more models found (after %d distinct solutions).\n", rerun_counter);
else if (!prove.size() && !prove_x.size() && !prove_asserts)
else if (!prove.size() && !prove_x.size() && !prove_asserts) {
log("SAT solving finished - no model found.\n");
else {
if (verify) {
log("\n");
log_error("Called with -verify and found no model!\n");
}
} else {
log("SAT proof finished - no model found: SUCCESS!\n");
print_qed();
if (falsify) {
@ -1215,9 +1220,16 @@ struct SatPass : public Pass {
}
}
if (verify && rerun_counter) {
log("\n");
log_error("Called with -verify and proof did fail!\n");
if (!prove.size() && !prove_x.size() && !prove_asserts) {
if (falsify && rerun_counter) {
log("\n");
log_error("Called with -falsify and found a model!\n");
}
} else {
if (verify && rerun_counter) {
log("\n");
log_error("Called with -verify and proof did fail!\n");
}
}
}