Skip to content

Commit 291ec6f

Browse files
record timing_stats in Placer class
1 parent a632425 commit 291ec6f

File tree

4 files changed

+33
-27
lines changed

4 files changed

+33
-27
lines changed

vpr/src/place/place.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ void try_place(const Netlist<>& net_list,
6161
*/
6262
VTR_ASSERT(!is_flat);
6363
const auto& device_ctx = g_vpr_ctx.device();
64-
// const auto& timing_ctx = g_vpr_ctx.timing();
65-
// auto pre_place_timing_stats = timing_ctx.stats;
6664

6765
/* Placement delay model is independent of the placement and can be shared across
6866
* multiple placers. So, it is created and initialized once. */

vpr/src/place/place_log_util.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
#include "place_log_util.h"
23

34
#include "vtr_log.h"
@@ -277,6 +278,27 @@ void PlacementLogPrinter::print_post_placement_stats() const {
277278
}
278279
#endif //ENABLE_NOC_SAT_ROUTING
279280
}
281+
282+
// Print out swap statistics and resource utilization
283+
print_resources_utilization();
284+
print_placement_swaps_stats();
285+
286+
move_type_stats.print_placement_move_types_stats();
287+
288+
if (placer_.noc_opts_.noc) {
289+
write_noc_placement_file(placer_.noc_opts_.noc_placement_file_name,
290+
placer_.placer_state_.block_locs());
291+
}
292+
293+
print_timing_stats("Placement Quench", placer_.post_quench_timing_stats_, placer_.pre_quench_timing_stats_);
294+
print_timing_stats("Placement Total ", timing_ctx.stats, placer_.pre_place_timing_stats_);
295+
296+
const auto& p_runtime_ctx = placer_.placer_state_.runtime();
297+
VTR_LOG("update_td_costs: connections %g nets %g sum_nets %g total %g\n",
298+
p_runtime_ctx.f_update_td_costs_connections_elapsed_sec,
299+
p_runtime_ctx.f_update_td_costs_nets_elapsed_sec,
300+
p_runtime_ctx.f_update_td_costs_sum_nets_elapsed_sec,
301+
p_runtime_ctx.f_update_td_costs_total_elapsed_sec);
280302
}
281303

282304
void generate_post_place_timing_reports(const t_placer_opts& placer_opts,

vpr/src/place/placer.cpp

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ Placer::Placer(const Netlist<>& net_list,
3636
const auto& device_ctx = g_vpr_ctx.device();
3737
const auto& atom_ctx = g_vpr_ctx.atom();
3838

39+
const auto& timing_ctx = g_vpr_ctx.timing();
40+
pre_place_timing_stats_ = timing_ctx.stats;
41+
3942
init_placement_context(placer_state_.mutable_blk_loc_registry(), directs);
4043

4144
// create a NoC cost handler if NoC optimization is enabled
@@ -255,7 +258,7 @@ int Placer::check_placement_costs_() {
255258
void Placer::place() {
256259
const auto& timing_ctx = g_vpr_ctx.timing();
257260
const auto& cluster_ctx = g_vpr_ctx.clustering();
258-
const auto& p_runtime_ctx = placer_state_.runtime();
261+
259262

260263
bool skip_anneal = false;
261264
#ifdef ENABLE_ANALYTIC_PLACE
@@ -265,9 +268,6 @@ void Placer::place() {
265268
}
266269
#endif
267270

268-
const t_annealing_state& annealing_state = annealer_->get_annealing_state();
269-
const auto& [swap_stats, move_type_stats, placer_stats] = annealer_->get_stats();
270-
271271
if (!skip_anneal) {
272272
//Table header
273273
log_printer_.print_place_status_header();
@@ -307,7 +307,7 @@ void Placer::place() {
307307
// Start Quench
308308
annealer_->start_quench();
309309

310-
auto pre_quench_timing_stats = timing_ctx.stats;
310+
pre_quench_timing_stats_ = timing_ctx.stats;
311311
{ // Quench
312312
vtr::ScopedFinishTimer temperature_timer("Placement Quench");
313313

@@ -323,9 +323,10 @@ void Placer::place() {
323323

324324
log_printer_.print_place_status(temperature_timer.elapsed_sec());
325325
}
326-
auto post_quench_timing_stats = timing_ctx.stats;
326+
post_quench_timing_stats_ = timing_ctx.stats;
327327

328328
// Final timing analysis
329+
const t_annealing_state& annealing_state = annealer_->get_annealing_state();
329330
PlaceCritParams crit_params;
330331
crit_params.crit_exponent = annealing_state.crit_exponent;
331332
crit_params.crit_limit = placer_opts_.place_crit_limit;
@@ -370,25 +371,6 @@ void Placer::place() {
370371
check_place_();
371372

372373
log_printer_.print_post_placement_stats();
373-
374-
// Print out swap statistics and resource utilization
375-
log_printer_.print_resources_utilization();
376-
log_printer_.print_placement_swaps_stats();
377-
378-
move_type_stats.print_placement_move_types_stats();
379-
380-
if (noc_opts_.noc) {
381-
write_noc_placement_file(noc_opts_.noc_placement_file_name, placer_state_.block_locs());
382-
}
383-
384-
print_timing_stats("Placement Quench", post_quench_timing_stats, pre_quench_timing_stats);
385-
// print_timing_stats("Placement Total ", timing_ctx.stats, pre_place_timing_stats);
386-
387-
VTR_LOG("update_td_costs: connections %g nets %g sum_nets %g total %g\n",
388-
p_runtime_ctx.f_update_td_costs_connections_elapsed_sec,
389-
p_runtime_ctx.f_update_td_costs_nets_elapsed_sec,
390-
p_runtime_ctx.f_update_td_costs_sum_nets_elapsed_sec,
391-
p_runtime_ctx.f_update_td_costs_total_elapsed_sec);
392374
}
393375

394376
void Placer::copy_locs_to_global_state() {

vpr/src/place/placer.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ class Placer {
8686

8787
const PlacementLogPrinter log_printer_;
8888

89+
t_timing_analysis_profile_info pre_place_timing_stats_;
90+
t_timing_analysis_profile_info pre_quench_timing_stats_;
91+
t_timing_analysis_profile_info post_quench_timing_stats_;
92+
8993
friend void PlacementLogPrinter::print_post_placement_stats() const;
9094

9195
private:

0 commit comments

Comments
 (0)