cxxrtl: order -On levels as localize, elide instead of the reverse.
authorwhitequark <whitequark@whitequark.org>
Tue, 9 Jun 2020 20:55:40 +0000 (20:55 +0000)
committerwhitequark <whitequark@whitequark.org>
Tue, 9 Jun 2020 20:55:40 +0000 (20:55 +0000)
Historically, elision was implemented before localization, so levels
with elision are lower than corresponding levels with localization.
This is unfortunate for two reasons:
  1. Elision is a logical subset of localization, since it equals to
     not giving a name to a temporary.
  2. "Localize" currently actually means "unbuffer and localize",
     and it would be useful to split those steps (at least for
     public wires) for improved design visibility.

backends/cxxrtl/cxxrtl_backend.cc

index 0ab8352c20deb7c6551cb5240de54612cf9a5d44..b1d89a7c21bf783738f919ffeba9315a4b945d1c 100644 (file)
@@ -2490,16 +2490,16 @@ struct CxxrtlBackend : public Backend {
                log("        no optimization.\n");
                log("\n");
                log("    -O1\n");
-               log("        elide internal wires if possible.\n");
+               log("        localize internal wires if possible.\n");
                log("\n");
                log("    -O2\n");
-               log("        like -O1, and localize internal wires if possible.\n");
+               log("        like -O1, and elide internal wires if possible.\n");
                log("\n");
                log("    -O3\n");
-               log("        like -O2, and elide public wires not marked (*keep*) if possible.\n");
+               log("        like -O2, and localize public wires not marked (*keep*) if possible.\n");
                log("\n");
                log("    -O4\n");
-               log("        like -O3, and localize public wires not marked (*keep*) if possible.\n");
+               log("        like -O3, and elide public wires not marked (*keep*) if possible.\n");
                log("\n");
                log("    -g <level>\n");
                log("        set the debug level. the default is -g%d. higher debug levels provide\n", DEFAULT_DEBUG_LEVEL);
@@ -2568,16 +2568,16 @@ struct CxxrtlBackend : public Backend {
                switch (opt_level) {
                        // the highest level here must match DEFAULT_OPT_LEVEL
                        case 4:
-                               worker.localize_public = true;
+                               worker.elide_public = true;
                                YS_FALLTHROUGH
                        case 3:
-                               worker.elide_public = true;
+                               worker.localize_public = true;
                                YS_FALLTHROUGH
                        case 2:
-                               worker.localize_internal = true;
+                               worker.elide_internal = true;
                                YS_FALLTHROUGH
                        case 1:
-                               worker.elide_internal = true;
+                               worker.localize_internal = true;
                                YS_FALLTHROUGH
                        case 0:
                                break;