33
44#include < algorithm>
55#include < map>
6+ #include < memory>
67#include < string>
78#include < vector>
89
@@ -83,7 +84,8 @@ void Opendp::prepareDecapAndGaps()
8384 // Sort decaps cells in descending order
8485 std::sort (decap_masters_.begin (),
8586 decap_masters_.end (),
86- [](const DecapCell* decap1, const DecapCell* decap2) {
87+ [](const std::unique_ptr<DecapCell>& decap1,
88+ const std::unique_ptr<DecapCell>& decap2) {
8789 return decap1->capacitance > decap2->capacitance ;
8890 });
8991
@@ -92,11 +94,11 @@ void Opendp::prepareDecapAndGaps()
9294 int gaps_count = 0 ;
9395 // Sort each gap vector for X position
9496 for (auto & it : gaps_) {
95- std::sort (it. second . begin (),
96- it.second .end (),
97- []( const GapInfo* gap1, const GapInfo* gap2) {
98- return gap1-> x < gap2-> x ;
99- });
97+ std::sort (
98+ it.second .begin (),
99+ it. second . end (),
100+ []( const std::unique_ptr<GapInfo>& gap1,
101+ const std::unique_ptr<GapInfo>& gap2) { return gap1-> x < gap2-> x ; });
100102 gaps_count += it.second .size ();
101103 }
102104
@@ -166,19 +168,20 @@ void Opendp::insertDecapCells(const double target, IRDropByPoint& psm_ir_drops)
166168 total_cap);
167169}
168170
169- void Opendp::insertDecapInRow (const std::vector<GapInfo* >& gaps,
171+ void Opendp::insertDecapInRow (const std::vector<std::unique_ptr< GapInfo> >& gaps,
170172 const DbuY gap_y,
171173 const DbuX irdrop_x,
172174 const DbuY irdrop_y,
173175 double & total,
174176 const double & target)
175177{
176178 // Find gap in same row and x near the ir drop
177- auto find_gap = std::lower_bound (
178- gaps.begin (),
179- gaps.end (),
180- irdrop_x,
181- [](const GapInfo* elem, const DbuX& value) { return elem->x < value; });
179+ auto find_gap
180+ = std::lower_bound (gaps.begin (),
181+ gaps.end (),
182+ irdrop_x,
183+ [](const std::unique_ptr<GapInfo>& elem,
184+ const DbuX& value) { return elem->x < value; });
182185 // if this row has free gap with x <= xpoint <= x + width
183186 if (find_gap != gaps.end ()
184187 && ((*find_gap)->x + (*find_gap)->width ) >= irdrop_x
0 commit comments