-
Notifications
You must be signed in to change notification settings - Fork 427
Description
I do not believe that manual moves are working as intended.
Currently, the try_swap_
method takes a boolean argument which decides whether manual moves are on for the given swap or not. This boolean is only ever set to true during the initial temperature estimation as far as I can tell:
vtr-verilog-to-routing/vpr/src/place/annealer.cpp
Lines 312 to 321 in 112d358
#ifndef NO_GRAPHICS | |
// Checks manual move flag for manual move feature | |
t_draw_state* draw_state = get_draw_state_vars(); | |
if (draw_state->show_graphics) { | |
manual_move_enabled = manual_move_is_selected(); | |
} | |
#endif /*NO_GRAPHICS*/ | |
// Will not deploy setup slack analysis, so omit crit_exponenet and setup_slack | |
e_move_result swap_result = try_swap_(*move_generator_1_, placer_opts_.place_algorithm, manual_move_enabled); |
This happens before any annealing iteration occurs. During the actual inner-loop of the annealer, you can see that this is always set to false:
vtr-verilog-to-routing/vpr/src/place/annealer.cpp
Lines 683 to 690 in 112d358
bool manual_move_enabled = false; | |
MoveGenerator& move_generator = select_move_generator(move_generator_1_, move_generator_2_, agent_state_, | |
placer_opts_, quench_started_); | |
// Inner loop begins | |
for (int inner_iter = 0, inner_crit_iter_count = 1; inner_iter < annealing_state_.move_lim; inner_iter++) { | |
e_move_result swap_result = try_swap_(move_generator, placer_opts_.place_algorithm, manual_move_enabled); |
I wonder if something was removed from the inner-loop method which no longer allows for manual moves during the actual annealing algorithm.
See #3271 for context.