diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/timing_opt.cc | 28 | 
1 files changed, 12 insertions, 16 deletions
| diff --git a/common/timing_opt.cc b/common/timing_opt.cc index 6aa120ae..a451bfa0 100644 --- a/common/timing_opt.cc +++ b/common/timing_opt.cc @@ -83,27 +83,22 @@ class TimingOptimiser      bool optimise()      {          log_info("Running timing-driven placement optimisation...\n"); -#if 1 -        timing_analysis(ctx, false, true, false, false); -#endif -        for (int i = 0; i < 100; i++) { +        if (ctx->verbose) +            timing_analysis(ctx, false, true, false, false); +        for (int i = 0; i < 30; i++) {              log_info("   Iteration %d...\n", i);              get_criticalities(ctx, &net_crit);              setup_delay_limits();              auto crit_paths = find_crit_paths(0.98, 50000);              for (auto &path : crit_paths)                  optimise_path(path); -#if 1 -            timing_analysis(ctx, false, true, false, false); -#endif +            if (ctx->verbose) +                timing_analysis(ctx, false, true, false, false);          }          return true;      }    private: -    // Ratio of available to already-candidates to begin borrowing -    const float borrow_thresh = 0.2; -      void setup_delay_limits()      {          max_net_delay.clear(); @@ -416,7 +411,7 @@ class TimingOptimiser          if (front_net != nullptr && front_net->driver.cell != nullptr) {              auto front_cell = front_net->driver.cell;              if (front_cell->belStrength <= STRENGTH_WEAK && cfg.cellTypes.count(front_cell->type) && -                        front_cell->constr_parent == nullptr && front_cell->constr_children.empty()) { +                front_cell->constr_parent == nullptr && front_cell->constr_children.empty()) {                  path_cells.push_back(front_cell->name);              }          } @@ -457,7 +452,7 @@ class TimingOptimiser          for (size_t i = 0; i < path.size(); i++) {              NetInfo *pn = path.at(i)->cell->ports.at(path.at(i)->port).net;              for (size_t j = 0; j < pn->users.size(); j++) { -                auto & usr = pn->users.at(j); +                auto &usr = pn->users.at(j);                  if (usr.cell == path.at(i)->cell && usr.port == path.at(i)->port) {                      original_delay += ctx->predictDelay(pn, usr);                      break; @@ -475,7 +470,8 @@ class TimingOptimiser          if (ctx->debug) {              for (auto cell : path_cells) { -                log_info("Candidate neighbours for %s (%s):\n", cell.c_str(ctx), ctx->getBelName(ctx->cells[cell]->bel).c_str(ctx)); +                log_info("Candidate neighbours for %s (%s):\n", cell.c_str(ctx), +                         ctx->getBelName(ctx->cells[cell]->bel).c_str(ctx));                  for (auto neigh : cell_neighbour_bels.at(cell)) {                      log_info("    %s\n", ctx->getBelName(neigh).c_str(ctx));                  } @@ -541,7 +537,7 @@ class TimingOptimiser                  for (size_t i = 0; i < path.size(); i++) {                      NetInfo *pn = path.at(i)->cell->ports.at(path.at(i)->port).net;                      for (size_t j = 0; j < pn->users.size(); j++) { -                        auto & usr = pn->users.at(j); +                        auto &usr = pn->users.at(j);                          if (usr.cell == path.at(i)->cell && usr.port == path.at(i)->port) {                              total_delay += ctx->predictDelay(pn, usr);                              break; @@ -593,8 +589,8 @@ class TimingOptimiser                  route_to_solution.push_back(cursor);              }              if (ctx->debug) -                log_info("Found a solution with cost %.02f ns (existing path %.02f ns)\n", ctx->getDelayNS(lowest->second), -                         ctx->getDelayNS(original_delay)); +                log_info("Found a solution with cost %.02f ns (existing path %.02f ns)\n", +                         ctx->getDelayNS(lowest->second), ctx->getDelayNS(original_delay));              for (auto rt_entry : boost::adaptors::reverse(route_to_solution)) {                  CellInfo *cell = ctx->cells.at(rt_entry.first).get();                  cell_swap_bel(cell, rt_entry.second); | 
