|
8 | 8 | #include <cmath> |
9 | 9 | #include <cstdint> |
10 | 10 | #include <iterator> |
11 | | -#include <limits> |
12 | 11 | #include <memory> |
13 | 12 | #include <string> |
14 | 13 | #include <unordered_set> |
@@ -178,34 +177,26 @@ void Opendp::detailedPlacement(const int max_displacement_x, |
178 | 177 | const odb::Rect overlap = bbox.intersect(core_); |
179 | 178 | fixed_area += overlap.area(); |
180 | 179 | } |
181 | | - const int64_t free_area = core_area - fixed_area; |
| 180 | + |
| 181 | + const int64_t used_area = inst_area + fixed_area; |
182 | 182 | const double utilization = core_area > 0 |
183 | | - ? (static_cast<double>(inst_area) |
| 183 | + ? (static_cast<double>(used_area) |
184 | 184 | / static_cast<double>(core_area)) |
185 | 185 | * 100.0 |
186 | 186 | : 0.0; |
187 | | - // Movable cell area over the core area left free by fixed instances: |
188 | | - // above 100% legalization is impossible. |
189 | | - const double effective_utilization |
190 | | - = free_area > 0 ? (static_cast<double>(inst_area) |
191 | | - / static_cast<double>(free_area)) |
192 | | - * 100.0 |
193 | | - : std::numeric_limits<double>::infinity(); |
194 | | - logger_->info(DPL, |
195 | | - 6, |
196 | | - "Core area: {:.2f} um^2, Movable instances area: {:.2f} " |
197 | | - "um^2, Utilization: {:.1f}%", |
198 | | - block_->dbuAreaToMicrons(core_area), |
199 | | - block_->dbuAreaToMicrons(inst_area), |
200 | | - utilization); |
| 187 | + logger_->info( |
| 188 | + DPL, 6, "Core area: {:.2f} um^2", block_->dbuAreaToMicrons(core_area)); |
201 | 189 | logger_->info(DPL, |
202 | 190 | 7, |
203 | | - "Fixed instances area within core: {:.2f} um^2, " |
204 | | - "Effective utilization of free area: {:.1f}%", |
205 | | - block_->dbuAreaToMicrons(fixed_area), |
206 | | - effective_utilization); |
207 | | - logger_->metric("utilization__before__dpl", effective_utilization); |
208 | | - if (effective_utilization > 100.0) { |
| 191 | + "Movable instances area: {:.2f} um^2", |
| 192 | + block_->dbuAreaToMicrons(inst_area)); |
| 193 | + logger_->info(DPL, |
| 194 | + 8, |
| 195 | + "Fixed instances area within core: {:.2f} um^2", |
| 196 | + block_->dbuAreaToMicrons(fixed_area)); |
| 197 | + logger_->info(DPL, 9, "Utilization: {:.1f}%", utilization); |
| 198 | + logger_->metric("utilization__before__dpl", utilization); |
| 199 | + if (utilization > 100.0) { |
209 | 200 | logger_->error( |
210 | 201 | DPL, 38, "Utilization greater than 100%, impossible to legalize"); |
211 | 202 | } |
|
0 commit comments