HeAP: Make log output more consistent

Signed-off-by: David Shah <dave@ds0.me>
This commit is contained in:
David Shah 2019-03-25 15:39:15 +00:00
parent 49e827a9b4
commit 25e3350675
2 changed files with 9 additions and 5 deletions

View File

@ -242,6 +242,7 @@ class SAPlacer
} }
require_legal = false; require_legal = false;
diameter = 3; diameter = 3;
log_info("Running simulated annealing placer for refinement.\n");
} }
auto saplace_start = std::chrono::high_resolution_clock::now(); auto saplace_start = std::chrono::high_resolution_clock::now();

View File

@ -148,7 +148,8 @@ class HeAPPlacer
seed_placement(); seed_placement();
update_all_chains(); update_all_chains();
wirelen_t hpwl = total_hpwl(); wirelen_t hpwl = total_hpwl();
log_info("Initial placer starting hpwl = %d\n", int(hpwl)); log_info("Creating initial analytic placement for %d cells, random placement wirelen = %d.\n",
int(place_cells.size()), int(hpwl));
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
setup_solve_cells(); setup_solve_cells();
auto solve_startt = std::chrono::high_resolution_clock::now(); auto solve_startt = std::chrono::high_resolution_clock::now();
@ -161,7 +162,7 @@ class HeAPPlacer
update_all_chains(); update_all_chains();
hpwl = total_hpwl(); hpwl = total_hpwl();
log_info("Initial placer iter %d, hpwl = %d\n", i, int(hpwl)); log_info(" at initial placer iter %d, wirelen = %d\n", i, int(hpwl));
} }
wirelen_t solved_hpwl = 0, spread_hpwl = 0, legal_hpwl = 0, best_hpwl = std::numeric_limits<wirelen_t>::max(); wirelen_t solved_hpwl = 0, spread_hpwl = 0, legal_hpwl = 0, best_hpwl = std::numeric_limits<wirelen_t>::max();
@ -190,6 +191,7 @@ class HeAPPlacer
heap_runs.push_back(all_celltypes); heap_runs.push_back(all_celltypes);
// The main HeAP placer loop // The main HeAP placer loop
log_info("Running main analytical placer.\n");
while (stalled < 5 && (solved_hpwl <= legal_hpwl * 0.8)) { while (stalled < 5 && (solved_hpwl <= legal_hpwl * 0.8)) {
// Alternate between particular Bel types and all bels // Alternate between particular Bel types and all bels
for (auto &run : heap_runs) { for (auto &run : heap_runs) {
@ -225,9 +227,10 @@ class HeAPPlacer
legal_hpwl = total_hpwl(); legal_hpwl = total_hpwl();
auto run_stopt = std::chrono::high_resolution_clock::now(); auto run_stopt = std::chrono::high_resolution_clock::now();
log_info("Iter %d type %s: HPWL solved = %d, spread = %d, legal = %d; time = %.02fs\n", iter, log_info(" at iteration #%d, type %s: wirelen solved = %d, spread = %d, legal = %d; time = %.02fs\n",
(run.size() > 1 ? "ALL" : run.begin()->c_str(ctx)), int(solved_hpwl), int(spread_hpwl), iter + 1, (run.size() > 1 ? "ALL" : run.begin()->c_str(ctx)), int(solved_hpwl),
int(legal_hpwl), std::chrono::duration<double>(run_stopt - run_startt).count()); int(spread_hpwl), int(legal_hpwl),
std::chrono::duration<double>(run_stopt - run_startt).count());
} }
if (ctx->timing_driven) if (ctx->timing_driven)