Added "miter -equiv -flatten"
authorClifford Wolf <clifford@clifford.at>
Sun, 20 Jul 2014 13:23:08 +0000 (15:23 +0200)
committerClifford Wolf <clifford@clifford.at>
Sun, 20 Jul 2014 13:33:07 +0000 (15:33 +0200)
passes/sat/miter.cc
tests/share/generate.py

index 6c8e2ff48eb80e288dee57d7538c9ea0c11d8e2b..0ef9e9aaa2818c0bdfc79b9c151269510e77880a 100644 (file)
@@ -27,6 +27,7 @@ static void create_miter_equiv(struct Pass *that, std::vector<std::string> args,
        bool flag_make_outputs = false;
        bool flag_make_outcmp = false;
        bool flag_make_assert = false;
+       bool flag_flatten = false;
 
        log_header("Executing MITER pass (creating miter circuit).\n");
 
@@ -49,6 +50,10 @@ static void create_miter_equiv(struct Pass *that, std::vector<std::string> args,
                        flag_make_assert = true;
                        continue;
                }
+               if (args[argidx] == "-flatten") {
+                       flag_flatten = true;
+                       continue;
+               }
                break;
        }
        if (argidx+3 != args.size() || args[argidx].substr(0, 1) == "-")
@@ -287,6 +292,12 @@ static void create_miter_equiv(struct Pass *that, std::vector<std::string> args,
        miter_module->add(not_cell);
 
        miter_module->fixup_ports();
+
+       if (flag_flatten) {
+               log_push();
+               Pass::call_on_module(design, miter_module, "flatten; opt_const -undriven;;");
+               log_pop();
+       }
 }
 
 struct MiterPass : public Pass {
@@ -317,6 +328,9 @@ struct MiterPass : public Pass {
                log("    -make_assert\n");
                log("        also create an 'assert' cell that checks if trigger is always low.\n");
                log("\n");
+               log("    -flatten\n");
+               log("        call 'flatten; opt_const -undriven;;' on the miter circuit.\n");
+               log("\n");
        }
        virtual void execute(std::vector<std::string> args, RTLIL::Design *design)
        {
index 86be6b5edc0845ee5704ce64c533cd09e4622c34..07821b72130d8a32df638f0c8939872163e58b0a 100644 (file)
@@ -35,7 +35,6 @@ for idx in range(100):
         print('copy uut_%05d gold' % idx)
         print('rename uut_%05d gate' % idx)
         print('share -aggressive gate')
-        print('miter -equiv -ignore_gold_x -make_outputs -make_outcmp gold gate miter')
-        print('flatten miter')
+        print('miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp gold gate miter')
         print('sat -verify -prove trigger 0 -show-inputs -show-outputs miter')