Skip to content

Commit 394dd79

Browse files
committed
gpl: move checker to cpp and set as debug print
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
1 parent 01c5cda commit 394dd79

2 files changed

Lines changed: 60 additions & 59 deletions

File tree

src/gpl/src/nesterovBase.cpp

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1862,10 +1862,6 @@ void NesterovBase::initFillerGCells()
18621862
/ static_cast<float>(whiteSpaceArea_);
18631863
uniformTargetDensity_ = ceilf(uniformTargetDensity_ * 100) / 100;
18641864

1865-
log_->report("TargetDensity: {:.4f} (UniformTargetDensity: {:.4f})",
1866-
targetDensity_,
1867-
uniformTargetDensity_);
1868-
18691865
if (totalFillerArea_ < 0) {
18701866
log_->warn(GPL,
18711867
302,
@@ -2031,6 +2027,65 @@ void NesterovBase::setTargetDensity(float density)
20312027
bg_.updateBinsNonPlaceArea();
20322028
}
20332029

2030+
void NesterovBase::checkConsistency()
2031+
{
2032+
if (!log_->debugCheck(GPL, "checkConsistency", 1)) {
2033+
return;
2034+
}
2035+
auto block = pb_->db()->getChip()->getBlock();
2036+
const int64_t tolerance = 10000;
2037+
2038+
int64_t expected_white_space
2039+
= pb_->getDie().coreArea() - pb_->nonPlaceInstsArea();
2040+
if (std::abs(whiteSpaceArea_ - expected_white_space) > tolerance) {
2041+
log_->warn(utl::GPL, 319, "Inconsistent white space area");
2042+
log_->report(
2043+
"whiteSpaceArea_: {} (expected:{}) | coreArea: {}, "
2044+
"nonPlaceInstsArea: {}",
2045+
block->dbuAreaToMicrons(whiteSpaceArea_),
2046+
block->dbuAreaToMicrons(expected_white_space),
2047+
block->dbuAreaToMicrons(pb_->getDie().coreArea()),
2048+
block->dbuAreaToMicrons(pb_->nonPlaceInstsArea()));
2049+
}
2050+
2051+
int64_t expected_movable_area = whiteSpaceArea_ * targetDensity_;
2052+
if (std::abs(movableArea_ - expected_movable_area) > tolerance) {
2053+
log_->warn(utl::GPL, 320, "Inconsistent movable area 1");
2054+
log_->report(
2055+
"movableArea_: {} (expected:{}) | whiteSpaceArea_: {}, "
2056+
"targetDensity_: {}",
2057+
block->dbuAreaToMicrons(movableArea_),
2058+
block->dbuAreaToMicrons(expected_movable_area),
2059+
block->dbuAreaToMicrons(whiteSpaceArea_),
2060+
targetDensity_);
2061+
}
2062+
2063+
int64_t expected_filler_area = movableArea_ - getNesterovInstsArea();
2064+
if (std::abs(totalFillerArea_ - expected_filler_area) > tolerance) {
2065+
log_->warn(utl::GPL, 321, "Inconsistent filler area");
2066+
log_->report(
2067+
"totalFillerArea_: {} (expected:{}) | movableArea_: {}, "
2068+
"getNesterovInstsArea_: {}",
2069+
block->dbuAreaToMicrons(totalFillerArea_),
2070+
block->dbuAreaToMicrons(expected_filler_area),
2071+
block->dbuAreaToMicrons(movableArea_),
2072+
block->dbuAreaToMicrons(getNesterovInstsArea()));
2073+
}
2074+
2075+
float expected_density = movableArea_ * 1.0 / whiteSpaceArea_;
2076+
float density_diff = std::abs(targetDensity_ - expected_density);
2077+
if (density_diff > 1e-6) {
2078+
log_->warn(utl::GPL, 322, "Inconsistent target density");
2079+
log_->report(
2080+
"targetDensity_: {} (expected:{}) | movableArea_: {}, "
2081+
"whiteSpaceArea_: {}",
2082+
targetDensity_,
2083+
expected_density,
2084+
block->dbuAreaToMicrons(movableArea_),
2085+
block->dbuAreaToMicrons(whiteSpaceArea_));
2086+
}
2087+
}
2088+
20342089
int NesterovBase::getBinCntX() const
20352090
{
20362091
return bg_.getBinCntX();

src/gpl/src/nesterovBase.h

Lines changed: 1 addition & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,61 +1003,7 @@ class NesterovBase
10031003
float getTargetDensity() const;
10041004

10051005
void setTargetDensity(float targetDensity);
1006-
void checkConsistency()
1007-
{
1008-
auto block = pb_->db()->getChip()->getBlock();
1009-
const int64_t tolerance = 10000;
1010-
1011-
int64_t expected_white_space
1012-
= pb_->getDie().coreArea() - pb_->nonPlaceInstsArea();
1013-
if (std::abs(whiteSpaceArea_ - expected_white_space) > tolerance) {
1014-
log_->warn(utl::GPL, 319, "Inconsistent white space area");
1015-
log_->report(
1016-
"whiteSpaceArea_: {} (expected:{}) | coreArea: {}, "
1017-
"nonPlaceInstsArea: {}",
1018-
block->dbuAreaToMicrons(whiteSpaceArea_),
1019-
block->dbuAreaToMicrons(expected_white_space),
1020-
block->dbuAreaToMicrons(pb_->getDie().coreArea()),
1021-
block->dbuAreaToMicrons(pb_->nonPlaceInstsArea()));
1022-
}
1023-
1024-
int64_t expected_movable_area = whiteSpaceArea_ * targetDensity_;
1025-
if (std::abs(movableArea_ - expected_movable_area) > tolerance) {
1026-
log_->warn(utl::GPL, 320, "Inconsistent movable area 1");
1027-
log_->report(
1028-
"movableArea_: {} (expected:{}) | whiteSpaceArea_: {}, "
1029-
"targetDensity_: {}",
1030-
block->dbuAreaToMicrons(movableArea_),
1031-
block->dbuAreaToMicrons(expected_movable_area),
1032-
block->dbuAreaToMicrons(whiteSpaceArea_),
1033-
targetDensity_);
1034-
}
1035-
1036-
int64_t expected_filler_area = movableArea_ - getNesterovInstsArea();
1037-
if (std::abs(totalFillerArea_ - expected_filler_area) > tolerance) {
1038-
log_->warn(utl::GPL, 321, "Inconsistent filler area");
1039-
log_->report(
1040-
"totalFillerArea_: {} (expected:{}) | movableArea_: {}, "
1041-
"getNesterovInstsArea_: {}",
1042-
block->dbuAreaToMicrons(totalFillerArea_),
1043-
block->dbuAreaToMicrons(expected_filler_area),
1044-
block->dbuAreaToMicrons(movableArea_),
1045-
block->dbuAreaToMicrons(getNesterovInstsArea()));
1046-
}
1047-
1048-
float expected_density = movableArea_ * 1.0 / whiteSpaceArea_;
1049-
float density_diff = std::abs(targetDensity_ - expected_density);
1050-
if (density_diff > 1e-6) {
1051-
log_->warn(utl::GPL, 322, "Inconsistent target density");
1052-
log_->report(
1053-
"targetDensity_: {} (expected:{}) | movableArea_: {}, "
1054-
"whiteSpaceArea_: {}",
1055-
targetDensity_,
1056-
expected_density,
1057-
block->dbuAreaToMicrons(movableArea_),
1058-
block->dbuAreaToMicrons(whiteSpaceArea_));
1059-
}
1060-
}
1006+
void checkConsistency();
10611007

10621008
// RD can shrink the number of fillerCells.
10631009
void cutFillerCells(int64_t targetFillerArea);

0 commit comments

Comments
 (0)