Skip to content

Commit 4fd1067

Browse files
[Place] Moved Place Macros In Move Generators
1 parent 38b09e2 commit 4fd1067

29 files changed

+91
-70
lines changed

vpr/src/draw/manual_moves.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include "draw_searchbar.h"
1919
#include "buttons.h"
2020
#include "physical_types_util.h"
21-
#include "place_macro.h"
2221

2322
#ifndef NO_GRAPHICS
2423

@@ -320,14 +319,13 @@ e_create_move manual_move_display_and_propose(ManualMoveGenerator& manual_move_g
320319
t_pl_blocks_to_be_moved& blocks_affected,
321320
e_move_type& move_type,
322321
float rlim,
323-
const PlaceMacros& place_macros,
324322
const t_placer_opts& placer_opts,
325323
const PlacerCriticalities* criticalities) {
326324
draw_manual_moves_window("");
327325
update_screen(ScreenUpdatePriority::MAJOR, " ", PLACEMENT, nullptr);
328326
move_type = e_move_type::MANUAL_MOVE;
329327
t_propose_action proposed_action{move_type, -1}; //no need to specify block type in manual move "propose_move" function
330-
return manual_move_generator.propose_move(blocks_affected, proposed_action, rlim, place_macros, placer_opts, criticalities);
328+
return manual_move_generator.propose_move(blocks_affected, proposed_action, rlim, placer_opts, criticalities);
331329
}
332330

333331
#endif /*NO_GRAPHICS*/

vpr/src/draw/manual_moves.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
# include <algorithm>
2626
# include <iostream>
2727

28-
class PlaceMacros;
29-
3028
/**
3129
* @brief ManualMovesInfo struct
3230
*
@@ -162,7 +160,6 @@ e_create_move manual_move_display_and_propose(ManualMoveGenerator& manual_move_g
162160
t_pl_blocks_to_be_moved& blocks_affected,
163161
e_move_type& move_type,
164162
float rlim,
165-
const PlaceMacros& place_macros,
166163
const t_placer_opts& placer_opts,
167164
const PlacerCriticalities* criticalities);
168165

vpr/src/place/RL_agent_util.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
#include "RL_agent_util.h"
22

3+
#include "place_macro.h"
34
#include "simpleRL_move_generator.h"
45
#include "static_move_generator.h"
56
#include "placer_state.h"
67

78
std::pair<std::unique_ptr<MoveGenerator>, std::unique_ptr<MoveGenerator>> create_move_generators(PlacerState& placer_state,
9+
const PlaceMacros& place_macros,
810
const t_placer_opts& placer_opts,
911
int move_lim,
1012
double noc_attraction_weight,
@@ -24,8 +26,8 @@ std::pair<std::unique_ptr<MoveGenerator>, std::unique_ptr<MoveGenerator>> create
2426
move_name.c_str(),
2527
placer_opts.place_static_move_prob[move_type]);
2628
}
27-
move_generators.first = std::make_unique<StaticMoveGenerator>(placer_state, reward_fun, rng, placer_opts.place_static_move_prob);
28-
move_generators.second = std::make_unique<StaticMoveGenerator>(placer_state, reward_fun, rng, placer_opts.place_static_move_prob);
29+
move_generators.first = std::make_unique<StaticMoveGenerator>(placer_state, place_macros, reward_fun, rng, placer_opts.place_static_move_prob);
30+
move_generators.second = std::make_unique<StaticMoveGenerator>(placer_state, place_macros, reward_fun, rng, placer_opts.place_static_move_prob);
2931
} else { //RL based placement
3032
/* For the non timing driven placement: the agent has a single state *
3133
* - Available moves are (Uniform / Median / Centroid) *
@@ -89,6 +91,7 @@ std::pair<std::unique_ptr<MoveGenerator>, std::unique_ptr<MoveGenerator>> create
8991
}
9092
karmed_bandit_agent1->set_step(placer_opts.place_agent_gamma, move_lim);
9193
move_generators.first = std::make_unique<SimpleRLMoveGenerator>(placer_state,
94+
place_macros,
9295
reward_fun,
9396
rng,
9497
karmed_bandit_agent1,
@@ -102,6 +105,7 @@ std::pair<std::unique_ptr<MoveGenerator>, std::unique_ptr<MoveGenerator>> create
102105
num_movable_blocks_per_type);
103106
karmed_bandit_agent2->set_step(placer_opts.place_agent_gamma, move_lim);
104107
move_generators.second = std::make_unique<SimpleRLMoveGenerator>(placer_state,
108+
place_macros,
105109
reward_fun,
106110
rng,
107111
karmed_bandit_agent2,
@@ -125,6 +129,7 @@ std::pair<std::unique_ptr<MoveGenerator>, std::unique_ptr<MoveGenerator>> create
125129
}
126130
karmed_bandit_agent1->set_step(placer_opts.place_agent_gamma, move_lim);
127131
move_generators.first = std::make_unique<SimpleRLMoveGenerator>(placer_state,
132+
place_macros,
128133
reward_fun,
129134
rng,
130135
karmed_bandit_agent1,
@@ -137,6 +142,7 @@ std::pair<std::unique_ptr<MoveGenerator>, std::unique_ptr<MoveGenerator>> create
137142
num_movable_blocks_per_type);
138143
karmed_bandit_agent2->set_step(placer_opts.place_agent_gamma, move_lim);
139144
move_generators.second = std::make_unique<SimpleRLMoveGenerator>(placer_state,
145+
place_macros,
140146
reward_fun,
141147
rng,
142148
karmed_bandit_agent2,

vpr/src/place/RL_agent_util.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
#include "move_generator.h"
55

6+
class PlaceMacros;
7+
68
//enum represents the available agent states
79
enum class e_agent_state {
810
EARLY_IN_THE_ANNEAL,
@@ -27,6 +29,7 @@ enum class e_agent_state {
2729
*
2830
*/
2931
std::pair<std::unique_ptr<MoveGenerator>, std::unique_ptr<MoveGenerator>> create_move_generators(PlacerState& placer_state,
32+
const PlaceMacros& place_macros,
3033
const t_placer_opts& placer_opts,
3134
int move_lim,
3235
double noc_attraction_weight,

vpr/src/place/annealer.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ PlacementAnnealer::PlacementAnnealer(const t_placer_opts& placer_opts,
214214
, rng_(rng)
215215
, move_generator_1_(std::move(move_generator_1))
216216
, move_generator_2_(std::move(move_generator_2))
217-
, manual_move_generator_(placer_state, rng)
217+
, manual_move_generator_(placer_state, place_macros, rng)
218218
, agent_state_(e_agent_state::EARLY_IN_THE_ANNEAL)
219219
, delay_model_(delay_model)
220220
, criticalities_(criticalities)
@@ -391,7 +391,7 @@ e_move_result PlacementAnnealer::try_swap_(MoveGenerator& move_generator,
391391
if (manual_move_enabled) {
392392
#ifndef NO_GRAPHICS
393393
create_move_outcome = manual_move_display_and_propose(manual_move_generator_, blocks_affected_,
394-
proposed_action.move_type, rlim, place_macros_,
394+
proposed_action.move_type, rlim,
395395
placer_opts_, criticalities_);
396396
#endif //NO_GRAPHICS
397397
} else if (router_block_move) {
@@ -400,7 +400,7 @@ e_move_result PlacementAnnealer::try_swap_(MoveGenerator& move_generator,
400400
proposed_action.move_type = e_move_type::UNIFORM;
401401
} else {
402402
//Generate a new move (perturbation) used to explore the space of possible placements
403-
create_move_outcome = move_generator.propose_move(blocks_affected_, proposed_action, rlim, place_macros_, placer_opts_, criticalities_);
403+
create_move_outcome = move_generator.propose_move(blocks_affected_, proposed_action, rlim, placer_opts_, criticalities_);
404404
}
405405

406406
move_type_stats_.incr_blk_type_moves(proposed_action);

vpr/src/place/move_generators/centroid_move_generator.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,21 @@
1010
#include <queue>
1111

1212
CentroidMoveGenerator::CentroidMoveGenerator(PlacerState& placer_state,
13+
const PlaceMacros& place_macros,
1314
e_reward_function reward_function,
1415
vtr::RngContainer& rng)
15-
: MoveGenerator(placer_state, reward_function, rng)
16+
: MoveGenerator(placer_state, place_macros, reward_function, rng)
1617
, weighted_(false)
1718
, noc_attraction_weight_(0.0f)
1819
, noc_attraction_enabled_(false) {}
1920

2021
CentroidMoveGenerator::CentroidMoveGenerator(PlacerState& placer_state,
22+
const PlaceMacros& place_macros,
2123
e_reward_function reward_function,
2224
vtr::RngContainer& rng,
2325
float noc_attraction_weight,
2426
size_t high_fanout_net)
25-
: MoveGenerator(placer_state, reward_function, rng)
27+
: MoveGenerator(placer_state, place_macros, reward_function, rng)
2628
, noc_attraction_weight_(noc_attraction_weight)
2729
, noc_attraction_enabled_(true) {
2830
VTR_ASSERT(noc_attraction_weight > 0.0 && noc_attraction_weight <= 1.0);
@@ -33,7 +35,6 @@ CentroidMoveGenerator::CentroidMoveGenerator(PlacerState& placer_state,
3335
e_create_move CentroidMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_affected,
3436
t_propose_action& proposed_action,
3537
float rlim,
36-
const PlaceMacros& place_macros,
3738
const t_placer_opts& placer_opts,
3839
const PlacerCriticalities* criticalities) {
3940
auto& placer_state = placer_state_.get();
@@ -86,7 +87,7 @@ e_create_move CentroidMoveGenerator::propose_move(t_pl_blocks_to_be_moved& block
8687
return e_create_move::ABORT;
8788
}
8889

89-
e_create_move create_move = ::create_move(blocks_affected, b_from, to, blk_loc_registry, place_macros);
90+
e_create_move create_move = ::create_move(blocks_affected, b_from, to, blk_loc_registry, place_macros_);
9091

9192
//Check that all the blocks affected by the move would still be in a legal floorplan region after the swap
9293
if (!floorplan_legal(blocks_affected)) {

vpr/src/place/move_generators/centroid_move_generator.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class CentroidMoveGenerator : public MoveGenerator {
3232
* of the RL agent.
3333
*/
3434
CentroidMoveGenerator(PlacerState& placer_state,
35+
const PlaceMacros& place_macros,
3536
e_reward_function reward_function,
3637
vtr::RngContainer& rng);
3738

@@ -51,6 +52,7 @@ class CentroidMoveGenerator : public MoveGenerator {
5152
* ignored when forming NoC groups.
5253
*/
5354
CentroidMoveGenerator(PlacerState& placer_state,
55+
const PlaceMacros& place_macros,
5456
e_reward_function reward_function,
5557
vtr::RngContainer& rng,
5658
float noc_attraction_weight,
@@ -76,7 +78,6 @@ class CentroidMoveGenerator : public MoveGenerator {
7678
e_create_move propose_move(t_pl_blocks_to_be_moved& blocks_affected,
7779
t_propose_action& proposed_action,
7880
float rlim,
79-
const PlaceMacros& place_macros,
8081
const t_placer_opts& placer_opts,
8182
const PlacerCriticalities* /*criticalities*/) override;
8283

vpr/src/place/move_generators/critical_uniform_move_generator.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99
#include "move_utils.h"
1010

1111
CriticalUniformMoveGenerator::CriticalUniformMoveGenerator(PlacerState& placer_state,
12+
const PlaceMacros& place_macros,
1213
e_reward_function reward_function,
1314
vtr::RngContainer& rng)
14-
: MoveGenerator(placer_state, reward_function, rng) {}
15+
: MoveGenerator(placer_state, place_macros, reward_function, rng) {}
1516

1617
e_create_move CriticalUniformMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_affected,
1718
t_propose_action& proposed_action,
1819
float rlim,
19-
const PlaceMacros& place_macros,
2020
const t_placer_opts& placer_opts,
2121
const PlacerCriticalities* criticalities) {
2222
const auto& cluster_ctx = g_vpr_ctx.clustering();
@@ -54,7 +54,7 @@ e_create_move CriticalUniformMoveGenerator::propose_move(t_pl_blocks_to_be_moved
5454
return e_create_move::ABORT;
5555
}
5656

57-
e_create_move create_move = ::create_move(blocks_affected, b_from, to, blk_loc_registry, place_macros);
57+
e_create_move create_move = ::create_move(blocks_affected, b_from, to, blk_loc_registry, place_macros_);
5858

5959
//Check that all the blocks affected by the move would still be in a legal floorplan region after the swap
6060
if (!floorplan_legal(blocks_affected)) {

vpr/src/place/move_generators/critical_uniform_move_generator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ class CriticalUniformMoveGenerator : public MoveGenerator {
2020
public:
2121
CriticalUniformMoveGenerator() = delete;
2222
CriticalUniformMoveGenerator(PlacerState& placer_state,
23+
const PlaceMacros& place_macros,
2324
e_reward_function reward_function,
2425
vtr::RngContainer& rng);
2526

2627
private:
2728
e_create_move propose_move(t_pl_blocks_to_be_moved& blocks_affected,
2829
t_propose_action& proposed_action,
2930
float rlim,
30-
const PlaceMacros& place_macros,
3131
const t_placer_opts& /*placer_opts*/,
3232
const PlacerCriticalities* /*criticalities*/) override;
3333
};

vpr/src/place/move_generators/feasible_region_move_generator.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111
#include <cmath>
1212

1313
FeasibleRegionMoveGenerator::FeasibleRegionMoveGenerator(PlacerState& placer_state,
14+
const PlaceMacros& place_macros,
1415
e_reward_function reward_function,
1516
vtr::RngContainer& rng)
16-
: MoveGenerator(placer_state, reward_function, rng) {}
17+
: MoveGenerator(placer_state, place_macros, reward_function, rng) {}
1718

1819
e_create_move FeasibleRegionMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_affected,
1920
t_propose_action& proposed_action,
2021
float rlim,
21-
const PlaceMacros& place_macros,
2222
const t_placer_opts& placer_opts,
2323
const PlacerCriticalities* criticalities) {
2424
const auto& cluster_ctx = g_vpr_ctx.clustering();
@@ -145,7 +145,7 @@ e_create_move FeasibleRegionMoveGenerator::propose_move(t_pl_blocks_to_be_moved&
145145
return e_create_move::ABORT;
146146
}
147147

148-
e_create_move create_move = ::create_move(blocks_affected, b_from, to, blk_loc_registry, place_macros);
148+
e_create_move create_move = ::create_move(blocks_affected, b_from, to, blk_loc_registry, place_macros_);
149149

150150
//Check that all the blocks affected by the move would still be in a legal floorplan region after the swap
151151
if (!floorplan_legal(blocks_affected)) {

vpr/src/place/move_generators/feasible_region_move_generator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ class FeasibleRegionMoveGenerator : public MoveGenerator {
2424
public:
2525
FeasibleRegionMoveGenerator() = delete;
2626
FeasibleRegionMoveGenerator(PlacerState& placer_state,
27+
const PlaceMacros& place_macros,
2728
e_reward_function reward_function,
2829
vtr::RngContainer& rng);
2930

3031
private:
3132
e_create_move propose_move(t_pl_blocks_to_be_moved& blocks_affected,
3233
t_propose_action& proposed_action,
3334
float rlim,
34-
const PlaceMacros& place_macros,
3535
const t_placer_opts& placer_opts,
3636
const PlacerCriticalities* criticalities) override;
3737
};

vpr/src/place/move_generators/manual_move_generator.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@
2020
# include "draw.h"
2121
#endif //NO_GRAPHICS
2222

23-
ManualMoveGenerator::ManualMoveGenerator(PlacerState& placer_state, vtr::RngContainer& rng)
24-
: MoveGenerator(placer_state, e_reward_function::UNDEFINED_REWARD, rng) {}
23+
ManualMoveGenerator::ManualMoveGenerator(PlacerState& placer_state,
24+
const PlaceMacros& place_macros,
25+
vtr::RngContainer& rng)
26+
: MoveGenerator(placer_state, place_macros, e_reward_function::UNDEFINED_REWARD, rng) {}
2527

2628
//Manual Move Generator function
2729
e_create_move ManualMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_affected,
2830
t_propose_action& /*proposed_action*/,
2931
float /*rlim*/,
30-
const PlaceMacros& place_macros,
3132
const t_placer_opts& /*placer_opts*/,
3233
const PlacerCriticalities* /*criticalities*/) {
3334
const auto& place_ctx = g_vpr_ctx.placement();
@@ -69,7 +70,7 @@ e_create_move ManualMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_
6970
return e_create_move::ABORT;
7071
}
7172

72-
e_create_move create_move = ::create_move(blocks_affected, b_from, to, blk_loc_registry, place_macros);
73+
e_create_move create_move = ::create_move(blocks_affected, b_from, to, blk_loc_registry, place_macros_);
7374
return create_move;
7475
}
7576

vpr/src/place/move_generators/manual_move_generator.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@ class PlaceMacros;
2020
class ManualMoveGenerator : public MoveGenerator {
2121
public:
2222
ManualMoveGenerator() = delete;
23-
ManualMoveGenerator(PlacerState& placer_state, vtr::RngContainer& rng);
23+
ManualMoveGenerator(PlacerState& placer_state,
24+
const PlaceMacros& place_macros,
25+
vtr::RngContainer& rng);
2426

2527
//Evaluates if move is successful and legal or unable to do.
2628
e_create_move propose_move(t_pl_blocks_to_be_moved& blocks_affected,
2729
t_propose_action& /*proposed_action*/,
2830
float /*rlim*/,
29-
const PlaceMacros& place_macros,
3031
const t_placer_opts& /*placer_opts*/,
3132
const PlacerCriticalities* /*criticalities*/) override;
3233
};

0 commit comments

Comments
 (0)