Skip to content

[Draw][Place] Manual Moves #3275

@AlexandreSinger

Description

@AlexandreSinger

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:

#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:

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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions