aboutsummaryrefslogtreecommitdiffstats
path: root/passes/equiv/equiv_opt.cc
diff options
context:
space:
mode:
Diffstat (limited to 'passes/equiv/equiv_opt.cc')
-rw-r--r--passes/equiv/equiv_opt.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/passes/equiv/equiv_opt.cc b/passes/equiv/equiv_opt.cc
index 4d0400448..f5eb75730 100644
--- a/passes/equiv/equiv_opt.cc
+++ b/passes/equiv/equiv_opt.cc
@@ -60,13 +60,16 @@ struct EquivOptPass:public ScriptPass
log(" -undef\n");
log(" enable modelling of undef states during equiv_induct.\n");
log("\n");
+ log(" -nocheck\n");
+ log(" disable running check before and after the command under test.\n");
+ log("\n");
log("The following commands are executed by this verification command:\n");
help_script();
log("\n");
}
std::string command, techmap_opts, make_opts;
- bool assert, undef, multiclock, async2sync;
+ bool assert, undef, multiclock, async2sync, nocheck;
void clear_flags() override
{
@@ -77,6 +80,7 @@ struct EquivOptPass:public ScriptPass
undef = false;
multiclock = false;
async2sync = false;
+ nocheck = false;
}
void execute(std::vector < std::string > args, RTLIL::Design * design) override
@@ -110,6 +114,10 @@ struct EquivOptPass:public ScriptPass
undef = true;
continue;
}
+ if (args[argidx] == "-nocheck") {
+ nocheck = true;
+ continue;
+ }
if (args[argidx] == "-multiclock") {
multiclock = true;
continue;
@@ -153,10 +161,14 @@ struct EquivOptPass:public ScriptPass
if (check_label("run_pass")) {
run("hierarchy -auto-top");
run("design -save preopt");
+ if (!nocheck)
+ run("check -assert", "(unless -nocheck)");
if (help_mode)
run("[command]");
else
run(command);
+ if (!nocheck)
+ run("check -assert", "(unless -nocheck)");
run("design -stash postopt");
}