Skip to content

Commit 7bb781b

Browse files
use VTR_ASSERT_SAFE instead of VTR_ASSERT in placement context getters
1 parent 946a235 commit 7bb781b

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

vpr/src/base/load_flat_place.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ static void print_flat_cluster(FILE* fp, ClusterBlockId iblk,
1515
t_pl_loc loc = block_locs[iblk].loc;
1616
size_t bnum = size_t(iblk);
1717

18-
for (auto atom : atoms) {
18+
for (AtomBlockId atom : atoms) {
1919
t_pb_graph_node* atom_pbgn = atom_ctx.lookup.atom_pb(atom)->pb_graph_node;
2020
fprintf(fp, "%s %d %d %d %d #%zu %s\n", atom_ctx.nlist.block_name(atom).c_str(),
2121
loc.x, loc.y, loc.sub_tile,
@@ -27,14 +27,16 @@ static void print_flat_cluster(FILE* fp, ClusterBlockId iblk,
2727

2828
/* prints a flat placement file */
2929
void print_flat_placement(const char* flat_place_file) {
30+
const auto& block_locs = g_vpr_ctx.placement().block_locs();
31+
3032
FILE* fp;
3133

3234
ClusterAtomsLookup atoms_lookup;
3335
auto& cluster_ctx = g_vpr_ctx.clustering();
3436

35-
if (!g_vpr_ctx.placement().block_locs().empty()) {
37+
if (!block_locs.empty()) {
3638
fp = fopen(flat_place_file, "w");
37-
for (auto iblk : cluster_ctx.clb_nlist.blocks()) {
39+
for (ClusterBlockId iblk : cluster_ctx.clb_nlist.blocks()) {
3840
auto atoms = atoms_lookup.atoms_in_cluster(iblk);
3941
print_flat_cluster(fp, iblk, atoms);
4042
}

vpr/src/base/vpr_context.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -400,14 +400,14 @@ struct PlacementContext : public Context {
400400

401401
public:
402402

403-
const vtr::vector_map<ClusterBlockId, t_block_loc>& block_locs() const { VTR_ASSERT(loc_vars_are_accessible_); return place_loc_vars_.block_locs(); }
404-
vtr::vector_map<ClusterBlockId, t_block_loc>& mutable_block_locs() { VTR_ASSERT(loc_vars_are_accessible_); return place_loc_vars_.mutable_block_locs(); }
405-
const GridBlock& get_grid_blocks() const { VTR_ASSERT(loc_vars_are_accessible_); return place_loc_vars_.grid_blocks(); }
406-
GridBlock& get_mutable_grid_blocks() { VTR_ASSERT(loc_vars_are_accessible_); return place_loc_vars_.mutable_grid_blocks(); }
407-
vtr::vector_map<ClusterPinId, int>& mutable_physical_pins() { VTR_ASSERT(loc_vars_are_accessible_); return place_loc_vars_.mutable_physical_pins(); }
408-
const vtr::vector_map<ClusterPinId, int>& physical_pins() const { VTR_ASSERT(loc_vars_are_accessible_); return place_loc_vars_.physical_pins(); }
409-
PlaceLocVars& mutable_place_loc_vars() { VTR_ASSERT(loc_vars_are_accessible_); return place_loc_vars_; }
410-
const PlaceLocVars& place_loc_vars() const { VTR_ASSERT(loc_vars_are_accessible_); return place_loc_vars_; }
403+
const vtr::vector_map<ClusterBlockId, t_block_loc>& block_locs() const { VTR_ASSERT_SAFE(loc_vars_are_accessible_); return place_loc_vars_.block_locs(); }
404+
vtr::vector_map<ClusterBlockId, t_block_loc>& mutable_block_locs() { VTR_ASSERT_SAFE(loc_vars_are_accessible_); return place_loc_vars_.mutable_block_locs(); }
405+
const GridBlock& get_grid_blocks() const { VTR_ASSERT_SAFE(loc_vars_are_accessible_); return place_loc_vars_.grid_blocks(); }
406+
GridBlock& get_mutable_grid_blocks() { VTR_ASSERT_SAFE(loc_vars_are_accessible_); return place_loc_vars_.mutable_grid_blocks(); }
407+
vtr::vector_map<ClusterPinId, int>& mutable_physical_pins() { VTR_ASSERT_SAFE(loc_vars_are_accessible_); return place_loc_vars_.mutable_physical_pins(); }
408+
const vtr::vector_map<ClusterPinId, int>& physical_pins() const { VTR_ASSERT_SAFE(loc_vars_are_accessible_); return place_loc_vars_.physical_pins(); }
409+
PlaceLocVars& mutable_place_loc_vars() { VTR_ASSERT_SAFE(loc_vars_are_accessible_); return place_loc_vars_; }
410+
const PlaceLocVars& place_loc_vars() const { VTR_ASSERT_SAFE(loc_vars_are_accessible_); return place_loc_vars_; }
411411

412412
/**
413413
* @brief Makes place_loc_vars_ inaccessible through the getter methods.
@@ -416,15 +416,15 @@ struct PlacementContext : public Context {
416416
* guarantee that the placement stage code does not access block location variables
417417
* stored in the global state.
418418
*/
419-
void lock_loc_vars() { loc_vars_are_accessible_ = false; }
419+
void lock_loc_vars() { VTR_ASSERT_SAFE(loc_vars_are_accessible_); loc_vars_are_accessible_ = false; }
420420

421421
/**
422422
* @brief Makes place_loc_vars_ accessible through the getter methods.
423423
*
424424
* This method should be called at the end of the placement stage to
425425
* make the block location information accessible for subsequent stages.
426426
*/
427-
void unlock_loc_vars() { loc_vars_are_accessible_ = true; }
427+
void unlock_loc_vars() { VTR_ASSERT_SAFE(!loc_vars_are_accessible_); loc_vars_are_accessible_ = true; }
428428

429429
///@brief The pl_macros array stores all the placement macros (usually carry chains).
430430
std::vector<t_pl_macro> pl_macros;

0 commit comments

Comments
 (0)