Add 'opt_share' to 'opt -full'
authorEddie Hung <eddie@fpgeh.com>
Fri, 16 Aug 2019 20:47:37 +0000 (13:47 -0700)
committerEddie Hung <eddie@fpgeh.com>
Fri, 16 Aug 2019 20:47:37 +0000 (13:47 -0700)
passes/opt/opt.cc

index e9a43e0f32d96ff5fc68cfc8ff580a09db019043..3968198832def0b71345ae8a948d77161fb114ad 100644 (file)
@@ -44,6 +44,7 @@ struct OptPass : public Pass {
                log("        opt_muxtree\n");
                log("        opt_reduce [-fine] [-full]\n");
                log("        opt_merge [-share_all]\n");
+               log("        opt_share (-full only)\n");
                log("        opt_rmdff [-keepdc] [-sat]\n");
                log("        opt_clean [-purge]\n");
                log("        opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n");
@@ -70,6 +71,7 @@ struct OptPass : public Pass {
                std::string opt_reduce_args;
                std::string opt_merge_args;
                std::string opt_rmdff_args;
+               bool opt_share = false;
                bool fast_mode = false;
 
                log_header(design, "Executing OPT pass (performing simple optimizations).\n");
@@ -105,6 +107,7 @@ struct OptPass : public Pass {
                        if (args[argidx] == "-full") {
                                opt_expr_args += " -full";
                                opt_reduce_args += " -full";
+                               opt_share = true;
                                continue;
                        }
                        if (args[argidx] == "-keepdc") {
@@ -151,6 +154,8 @@ struct OptPass : public Pass {
                                Pass::call(design, "opt_muxtree");
                                Pass::call(design, "opt_reduce" + opt_reduce_args);
                                Pass::call(design, "opt_merge" + opt_merge_args);
+                               if (opt_share)
+                                       Pass::call(design, "opt_share");
                                Pass::call(design, "opt_rmdff" + opt_rmdff_args);
                                Pass::call(design, "opt_clean" + opt_clean_args);
                                Pass::call(design, "opt_expr" + opt_expr_args);