Skip to content

Commit 5d21c9e

Browse files
committed
drt: fix data race in pa
Signed-off-by: osamahammad21 <[email protected]>
1 parent 8d776b7 commit 5d21c9e

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

src/drt/src/pa/FlexPA.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,12 @@ void FlexPA::prepPattern()
208208

209209
const auto& unique = unique_insts_.getUniqueClasses();
210210

211-
// revert access points to origin
211+
// reserve space for unique_inst_patterns_
212212
unique_inst_patterns_.reserve(unique.size());
213+
for (auto& unique_class : unique) {
214+
unique_inst_patterns_[unique_class.get()]
215+
= std::vector<std::unique_ptr<FlexPinAccessPattern>>();
216+
}
213217

214218
int cnt = 0;
215219

src/drt/src/pa/FlexPA_acc_pattern.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,6 @@ void FlexPA::buildInstsSet()
6565

6666
void FlexPA::prepPatternInst(frInst* unique_inst)
6767
{
68-
auto unique_class = unique_insts_.getUniqueClass(unique_inst);
69-
#pragma omp critical
70-
unique_inst_patterns_[unique_class]
71-
= std::vector<std::unique_ptr<FlexPinAccessPattern>>();
7268
int num_valid_pattern = prepPatternInstHelper(unique_inst, true);
7369

7470
if (num_valid_pattern > 0) {
@@ -660,8 +656,8 @@ bool FlexPA::genPatternsCommit(
660656
if (target_obj != nullptr
661657
&& genPatternsGC({target_obj}, objs, Commit, &owners)) {
662658
pin_access_pattern->updateCost();
663-
unique_inst_patterns_[unique_insts_.getUniqueClass(unique_inst)].push_back(
664-
std::move(pin_access_pattern));
659+
unique_inst_patterns_.at(unique_insts_.getUniqueClass(unique_inst))
660+
.push_back(std::move(pin_access_pattern));
665661
// genPatternsPrint(nodes, pins);
666662
is_valid = true;
667663
} else {

src/drt/src/pa/FlexPA_row_pattern.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ void FlexPA::genInstRowPatternInit(
267267
for (int inst_idx = 0; inst_idx < (int) insts.size(); inst_idx++) {
268268
auto& inst = insts[inst_idx];
269269
auto unique_class = unique_insts_.getUniqueClass(inst);
270-
auto& inst_patterns = unique_inst_patterns_[unique_class];
270+
auto& inst_patterns = unique_inst_patterns_.at(unique_class);
271271
nodes[inst_idx]
272272
= std::vector<std::unique_ptr<FlexDPNode>>(inst_patterns.size());
273273
for (int acc_pattern_idx = 0; acc_pattern_idx < (int) inst_patterns.size();
@@ -348,7 +348,7 @@ void FlexPA::genInstRowPatternCommit(
348348
int access_point_idx = 0;
349349
auto unique_class = unique_insts_.getUniqueClass(inst);
350350
auto access_pattern
351-
= unique_inst_patterns_[unique_class][curr_acc_patterns_idx].get();
351+
= unique_inst_patterns_.at(unique_class)[curr_acc_patterns_idx].get();
352352
auto& access_points = access_pattern->getPattern();
353353

354354
// update inst_term ap
@@ -392,7 +392,7 @@ void FlexPA::genInstRowPatternPrint(
392392
int access_point_idx = 0;
393393
auto unique_class = unique_insts_.getUniqueClass(inst);
394394
auto access_pattern
395-
= unique_inst_patterns_[unique_class][curr_acc_pattern_idx].get();
395+
= unique_inst_patterns_.at(unique_class)[curr_acc_pattern_idx].get();
396396
auto& access_points = access_pattern->getPattern();
397397

398398
for (auto& inst_term : inst->getInstTerms()) {
@@ -451,9 +451,9 @@ int FlexPA::getEdgeCost(FlexDPNode* prev_node,
451451
const auto curr_inst = insts[curr_inst_idx];
452452
const auto curr_unique_class = unique_insts_.getUniqueClass(curr_inst);
453453
const auto prev_pin_access_pattern
454-
= unique_inst_patterns_[prev_unique_class][prev_acc_pattern_idx].get();
454+
= unique_inst_patterns_.at(prev_unique_class)[prev_acc_pattern_idx].get();
455455
const auto curr_pin_access_pattern
456-
= unique_inst_patterns_[curr_unique_class][curr_acc_pattern_idx].get();
456+
= unique_inst_patterns_.at(curr_unique_class)[curr_acc_pattern_idx].get();
457457
addAccessPatternObj(
458458
prev_inst, prev_pin_access_pattern, objs, temp_vias, true);
459459
addAccessPatternObj(

0 commit comments

Comments
 (0)