aboutsummaryrefslogtreecommitdiffstats
path: root/passes/sat/mutate.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2019-03-23 20:20:32 +0100
committerClifford Wolf <clifford@clifford.at>2019-03-23 20:20:32 +0100
commitccfa2fe01cffcc4d23bc989e558bd33addfea58e (patch)
tree7b4f0a9177d788de2aecd7806b103b02e599b479 /passes/sat/mutate.cc
parent59c44bb61ab1a69a7ba4cd8d2b6d8d3e3408d9ca (diff)
downloadyosys-ccfa2fe01cffcc4d23bc989e558bd33addfea58e.tar.gz
yosys-ccfa2fe01cffcc4d23bc989e558bd33addfea58e.tar.bz2
yosys-ccfa2fe01cffcc4d23bc989e558bd33addfea58e.zip
Add "mutate -none -mode", "mutate -mode none"
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'passes/sat/mutate.cc')
-rw-r--r--passes/sat/mutate.cc31
1 files changed, 30 insertions, 1 deletions
diff --git a/passes/sat/mutate.cc b/passes/sat/mutate.cc
index 7025a7aca..c50678c51 100644
--- a/passes/sat/mutate.cc
+++ b/passes/sat/mutate.cc
@@ -46,6 +46,8 @@ struct mutate_opts_t {
IdString ctrl_name;
int ctrl_width = -1, ctrl_value = -1;
+ bool none = false;
+
int pick_cover_prcnt = 80;
int weight_cover = 500;
@@ -526,7 +528,7 @@ void mutate_list(Design *design, const mutate_opts_t &opts, const string &filena
log("Raw database size: %d\n", GetSize(database));
if (N != 0) {
- database_reduce(database, opts, N, rng);
+ database_reduce(database, opts, opts.none ? N-1 : N, rng);
log("Reduced database size: %d\n", GetSize(database));
}
@@ -550,6 +552,17 @@ void mutate_list(Design *design, const mutate_opts_t &opts, const string &filena
int ctrl_value = opts.ctrl_value;
+ if (opts.none) {
+ string str = "mutate";
+ if (!opts.ctrl_name.empty())
+ str += stringf(" -ctrl %s %d %d", log_id(opts.ctrl_name), opts.ctrl_width, ctrl_value++);
+ str += " -mode none";
+ if (filename.empty())
+ log("%s\n", str.c_str());
+ else
+ fout << str << std::endl;
+ }
+
for (auto &entry : database) {
string str = "mutate";
if (!opts.ctrl_name.empty())
@@ -730,6 +743,9 @@ struct MutatePass : public Pass {
log(" -seed N\n");
log(" RNG seed for selecting mutations\n");
log("\n");
+ log(" -none\n");
+ log(" Include a \"none\" mutation in the output\n");
+ log("\n");
log(" -ctrl name width value\n");
log(" Add -ctrl options to the output. Use 'value' for first mutation, then\n");
log(" simply count up from there.\n");
@@ -802,6 +818,10 @@ struct MutatePass : public Pass {
opts.seed = atoi(args[++argidx].c_str());
continue;
}
+ if (args[argidx] == "-none") {
+ opts.none = true;
+ continue;
+ }
if (args[argidx] == "-mode" && argidx+1 < args.size()) {
opts.mode = args[++argidx];
continue;
@@ -905,6 +925,15 @@ struct MutatePass : public Pass {
return;
}
+ if (opts.mode == "none") {
+ if (!opts.ctrl_name.empty()) {
+ Module *topmod = opts.module.empty() ? design->top_module() : design->module(opts.module);
+ if (topmod)
+ mutate_ctrl_sig(topmod, opts.ctrl_name, opts.ctrl_width);
+ }
+ return;
+ }
+
if (opts.mode == "inv") {
mutate_inv(design, opts);
return;