techmap -max_iter to apply to each module individually
authorEddie Hung <eddie@fpgeh.com>
Wed, 21 Aug 2019 02:48:16 +0000 (19:48 -0700)
committerEddie Hung <eddie@fpgeh.com>
Wed, 21 Aug 2019 02:50:20 +0000 (19:50 -0700)
passes/techmap/techmap.cc

index b271c8781a4c13280a5179f9f263a47d9148caad..a6c1214a7b871e8e9dd8c8a72516809d304d1d5f 100644 (file)
@@ -943,7 +943,8 @@ struct TechmapPass : public Pass {
                log("        instead of inlining them.\n");
                log("\n");
                log("    -max_iter <number>\n");
-               log("        only run the specified number of iterations.\n");
+               log("        only run the specified number of iterations for each module.\n");
+               log("        default: unlimited\n");
                log("\n");
                log("    -recursive\n");
                log("        instead of the iterative breadth-first algorithm use a recursive\n");
@@ -1157,15 +1158,16 @@ struct TechmapPass : public Pass {
                        RTLIL::Module *module = *worker.module_queue.begin();
                        worker.module_queue.erase(module);
 
+                       int module_max_iter = max_iter;
                        bool did_something = true;
                        std::set<RTLIL::Cell*> handled_cells;
                        while (did_something) {
                                did_something = false;
-                                       if (worker.techmap_module(design, module, map, handled_cells, celltypeMap, false))
-                                               did_something = true;
+                               if (worker.techmap_module(design, module, map, handled_cells, celltypeMap, false))
+                                       did_something = true;
                                if (did_something)
                                        module->check();
-                               if (max_iter > 0 && --max_iter == 0)
+                               if (module_max_iter > 0 && --module_max_iter == 0)
                                        break;
                        }
                }