11#include " move_utils.h"
22
33#include " globals.h"
4+ // Is this needed?
45#include " place_util.h"
56
7+ t_pl_blocks_to_be_moved::t_pl_blocks_to_be_moved (size_t max_blocks){
8+ moved_blocks.reserve (max_blocks);
9+ moved_blocks.resize (0 );
10+ }
11+
12+ size_t t_pl_blocks_to_be_moved::get_size_and_increment () {
13+ VTR_ASSERT (moved_blocks.size () < moved_blocks.capacity ());
14+ moved_blocks.resize (moved_blocks.size () + 1 );
15+ return moved_blocks.size () - 1 ;
16+ }
17+
618// Records that block 'blk' should be moved to the specified 'to' location
719e_block_move_result record_block_move (t_pl_blocks_to_be_moved& blocks_affected, ClusterBlockId blk, t_pl_loc to) {
820 auto res = blocks_affected.moved_to .emplace (to);
@@ -24,11 +36,10 @@ e_block_move_result record_block_move(t_pl_blocks_to_be_moved& blocks_affected,
2436 VTR_ASSERT_SAFE (to.sub_tile < int (place_ctx.grid_blocks .num_blocks_at_location ({to.x , to.y , to.layer })));
2537
2638 // Sets up the blocks moved
27- int imoved_blk = blocks_affected.num_moved_blocks ;
39+ size_t imoved_blk = blocks_affected.get_size_and_increment () ;
2840 blocks_affected.moved_blocks [imoved_blk].block_num = blk;
2941 blocks_affected.moved_blocks [imoved_blk].old_loc = from;
3042 blocks_affected.moved_blocks [imoved_blk].new_loc = to;
31- blocks_affected.num_moved_blocks ++;
3243
3344 return e_block_move_result::VALID;
3445}
@@ -40,7 +51,7 @@ void apply_move_blocks(const t_pl_blocks_to_be_moved& blocks_affected) {
4051
4152 // Swap the blocks, but don't swap the nets or update place_ctx.grid_blocks
4253 // yet since we don't know whether the swap will be accepted
43- for (int iblk = 0 ; iblk < blocks_affected.num_moved_blocks ; ++iblk) {
54+ for (size_t iblk = 0 ; iblk < blocks_affected.moved_blocks . size () ; ++iblk) {
4455 ClusterBlockId blk = blocks_affected.moved_blocks [iblk].block_num ;
4556
4657 const t_pl_loc& old_loc = blocks_affected.moved_blocks [iblk].old_loc ;
@@ -67,7 +78,7 @@ void commit_move_blocks(const t_pl_blocks_to_be_moved& blocks_affected) {
6778 auto & place_ctx = g_vpr_ctx.mutable_placement ();
6879
6980 /* Swap physical location */
70- for (int iblk = 0 ; iblk < blocks_affected.num_moved_blocks ; ++iblk) {
81+ for (size_t iblk = 0 ; iblk < blocks_affected.moved_blocks . size () ; ++iblk) {
7182 ClusterBlockId blk = blocks_affected.moved_blocks [iblk].block_num ;
7283
7384 const t_pl_loc& to = blocks_affected.moved_blocks [iblk].new_loc ;
@@ -97,7 +108,7 @@ void revert_move_blocks(const t_pl_blocks_to_be_moved& blocks_affected) {
97108 auto & device_ctx = g_vpr_ctx.device ();
98109
99110 // Swap the blocks back, nets not yet swapped they don't need to be changed
100- for (int iblk = 0 ; iblk < blocks_affected.num_moved_blocks ; ++iblk) {
111+ for (size_t iblk = 0 ; iblk < blocks_affected.moved_blocks . size () ; ++iblk) {
101112 ClusterBlockId blk = blocks_affected.moved_blocks [iblk].block_num ;
102113
103114 const t_pl_loc& old_loc = blocks_affected.moved_blocks [iblk].old_loc ;
@@ -126,10 +137,10 @@ void clear_move_blocks(t_pl_blocks_to_be_moved& blocks_affected) {
126137 blocks_affected.moved_to .clear ();
127138 blocks_affected.moved_from .clear ();
128139
129- // For run-time, we just reset num_moved_blocks to zero, but do not free the blocks_affected
140+ // For run-time, we just reset size of blocks_affected.moved_blocks to zero, but do not free the blocks_affected
130141 // array to avoid memory allocation
131142
132- blocks_affected.num_moved_blocks = 0 ;
143+ blocks_affected.moved_blocks . resize ( 0 ) ;
133144
134145 blocks_affected.affected_pins .clear ();
135146}
0 commit comments