Skip to content

Commit d84b4df

Browse files
authored
Merge pull request #8639 from The-OpenROAD-Project-staging/dpl-reduce-pad-mem
dpl: reduce memory used by Pixel::padding_reserved_by field
2 parents 6c97626 + 278afa9 commit d84b4df

File tree

4 files changed

+9
-12
lines changed

4 files changed

+9
-12
lines changed

src/dpl/src/Opendp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ void Opendp::setFixedGridCells()
271271
if (cell->getType() == Node::CELL && cell->isFixed()) {
272272
grid_->visitCellPixels(*cell, true, [&](Pixel* pixel, bool padded) {
273273
if (padded) {
274-
pixel->padding_reserved_by.insert(cell.get());
274+
pixel->padding_reserved_by = cell.get();
275275
} else {
276276
setGridCell(*cell, pixel);
277277
}

src/dpl/src/PlacementDRC.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,8 @@ bool PlacementDRC::checkPadding(const Node* cell,
312312
if (hasPaddingConflict(cell, pixel->cell)) {
313313
return false;
314314
}
315-
for (auto padding_cell : pixel->padding_reserved_by) {
316-
if (hasPaddingConflict(cell, padding_cell)) {
317-
return false;
318-
}
315+
if (hasPaddingConflict(cell, pixel->padding_reserved_by)) {
316+
return false;
319317
}
320318
}
321319
}

src/dpl/src/infrastructure/Grid.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -437,9 +437,8 @@ void Grid::erasePixel(Node* cell)
437437
}
438438

439439
// Clear padding reservations made by this cell
440-
if (pixel->padding_reserved_by.find(cell)
441-
!= pixel->padding_reserved_by.end()) {
442-
pixel->padding_reserved_by.erase(cell);
440+
if (pixel->padding_reserved_by == cell) {
441+
pixel->padding_reserved_by = nullptr;
443442
}
444443
}
445444
}
@@ -491,7 +490,7 @@ void Grid::paintCellPadding(Node* cell,
491490
if (pixel == nullptr) {
492491
continue;
493492
}
494-
pixel->padding_reserved_by.insert(cell);
493+
pixel->padding_reserved_by = cell;
495494
}
496495
}
497496

@@ -502,7 +501,7 @@ void Grid::paintCellPadding(Node* cell,
502501
if (pixel == nullptr) {
503502
continue;
504503
}
505-
pixel->padding_reserved_by.insert(cell);
504+
pixel->padding_reserved_by = cell;
506505
}
507506
}
508507
}

src/dpl/src/infrastructure/Grid.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ struct Pixel
4545
bool is_valid = false; // false for dummy cells
4646
bool is_hopeless = false; // too far from sites for diamond search
4747
uint8_t blocked_layers = 0;
48-
// Cells that reserved this pixel for padding
49-
std::unordered_set<Node*> padding_reserved_by;
48+
// Cell that reserved this pixel for padding
49+
Node* padding_reserved_by = nullptr;
5050
};
5151

5252
// Return value for grid searches.

0 commit comments

Comments
 (0)