Skip to content
Merged
34 changes: 32 additions & 2 deletions src/gpl/src/nesterovBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1110,6 +1110,10 @@ NesterovBaseCommon::NesterovBaseCommon(NesterovBaseVars nbVars,
gPinMap_[gPin.pin()] = &gPin;
if (gPin.pin()->isITerm()) {
db_iterm_to_index_map_[gPin.pin()->dbITerm()] = i;
} else if (gPin.pin()->isBTerm()) {
db_bterm_to_index_map_[gPin.pin()->dbBTerm()] = i;
} else {
debugPrint(log_, GPL, "callbacks", 1, "gPin neither bterm or iterm!");
}
}

Expand Down Expand Up @@ -1405,7 +1409,8 @@ FloatPoint NesterovBaseCommon::getWireLengthGradientPinWA(const GPin* gPin,
GPL,
"getGradientWAPin",
1,
"gradient: X[{:g} {:g}] Y[{:g} {:g}]",
"{}, X[{:g} {:g}] Y[{:g} {:g}]",
gPin->gCell()->name(),
gradientMinX,
gradientMaxX,
gradientMinY,
Expand Down Expand Up @@ -1536,13 +1541,18 @@ void NesterovBaseCommon::fixPointers()
gPins_.clear();
gPinMap_.clear();
db_iterm_to_index_map_.clear();
db_bterm_to_index_map_.clear();
gPins_.reserve(gPinStor_.size());
for (size_t i = 0; i < gPinStor_.size(); ++i) {
GPin& gPin = gPinStor_[i];
gPins_.push_back(&gPin);
gPinMap_[gPin.pin()] = &gPin;
if (gPin.pin()->isITerm()) {
db_iterm_to_index_map_[gPin.pin()->dbITerm()] = i;
} else if (gPin.pin()->isBTerm()) {
db_bterm_to_index_map_[gPin.pin()->dbBTerm()] = i;
} else {
debugPrint(log_, GPL, "callbacks", 1, "gPin neither bterm or iterm!");
}
}

Expand All @@ -1561,6 +1571,7 @@ void NesterovBaseCommon::fixPointers()
if (gCell.isFiller()) {
continue;
}

gCell.clearGPins();
for (Instance* inst : gCell.insts()) {
for (odb::dbITerm* iterm : inst->dbInst()->getITerms()) {
Expand Down Expand Up @@ -1628,6 +1639,26 @@ void NesterovBaseCommon::fixPointers()
}
}
}

for (odb::dbBTerm* bterm : gNet.net()->dbNet()->getBTerms()) {
if (isValidSigType(bterm->getSigType())) {
auto it = db_bterm_to_index_map_.find(bterm);
if (it != db_bterm_to_index_map_.end()) {
size_t gpin_index = it->second;
gNet.addGPin(&gPinStor_[gpin_index]);
if (gPinStor_[gpin_index].gCell()) {
gPinStor_[gpin_index].gCell()->addGPin(&gPinStor_[gpin_index]);
}
} else {
debugPrint(log_,
GPL,
"callbacks",
1,
"warning: gpin not found for BTerm: {}",
bterm->getName());
}
}
}
}
}

Expand Down Expand Up @@ -3274,7 +3305,6 @@ void NesterovBaseCommon::destroyCbkGNet(odb::dbNet* db_net)
}

void NesterovBaseCommon::destroyCbkITerm(odb::dbITerm* db_iterm)

{
debugPrint(log_, GPL, "callbacks", 2, "NesterovBaseCommon::destroyITerm");
auto db_it = db_iterm_to_index_map_.find(db_iterm);
Expand Down
1 change: 1 addition & 0 deletions src/gpl/src/nesterovBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -897,6 +897,7 @@ class NesterovBaseCommon
std::unordered_map<odb::dbInst*, size_t> db_inst_to_nbc_index_map_;
std::unordered_map<odb::dbNet*, size_t> db_net_to_index_map_;
std::unordered_map<odb::dbITerm*, size_t> db_iterm_to_index_map_;
std::unordered_map<odb::dbBTerm*, size_t> db_bterm_to_index_map_;

// These three deques should not be required if placerBase allows for dynamic
// modifications on its vectors.
Expand Down
130 changes: 65 additions & 65 deletions src/gpl/test/convergence01.defok
Original file line number Diff line number Diff line change
Expand Up @@ -160,71 +160,71 @@ COMPONENTS 145 ;
- PHY_79 TAPCELL_ASAP7_75t_R + SOURCE DIST + FIXED ( 11394 11070 ) S ;
- PHY_8 TAPCELL_ASAP7_75t_R + SOURCE DIST + FIXED ( 486 1620 ) N ;
- PHY_9 TAPCELL_ASAP7_75t_R + SOURCE DIST + FIXED ( 11394 1620 ) FN ;
- _33_ INVx3_ASAP7_75t_R + PLACED ( 4175 4965 ) N ;
- _34_ INVxp33_ASAP7_75t_R + PLACED ( 7384 4198 ) N ;
- _35_ INVxp33_ASAP7_75t_R + PLACED ( 4629 4507 ) N ;
- _36_ INVxp33_ASAP7_75t_R + PLACED ( 5193 4128 ) N ;
- _37_ INVxp33_ASAP7_75t_R + PLACED ( 7485 4289 ) N ;
- _38_ INVxp33_ASAP7_75t_R + PLACED ( 5028 4231 ) N ;
- _39_ INVxp33_ASAP7_75t_R + PLACED ( 4883 4315 ) N ;
- _40_ INVxp33_ASAP7_75t_R + PLACED ( 7850 4219 ) N ;
- _41_ INVxp33_ASAP7_75t_R + PLACED ( 5121 4294 ) N ;
- _42_ INVxp33_ASAP7_75t_R + PLACED ( 4604 4437 ) N ;
- _43_ INVxp33_ASAP7_75t_R + PLACED ( 4881 5747 ) N ;
- _44_ INVxp33_ASAP7_75t_R + PLACED ( 7150 4148 ) N ;
- _45_ INVxp33_ASAP7_75t_R + PLACED ( 5167 4074 ) N ;
- _46_ INVxp33_ASAP7_75t_R + PLACED ( 7382 4413 ) N ;
- _47_ INVxp33_ASAP7_75t_R + PLACED ( 4913 7518 ) N ;
- _48_ INVxp33_ASAP7_75t_R + PLACED ( 7659 7431 ) N ;
- _49_ INVxp33_ASAP7_75t_R + PLACED ( 4756 7491 ) N ;
- _50_ INVxp33_ASAP7_75t_R + PLACED ( 7634 6085 ) N ;
- _51_ INVxp33_ASAP7_75t_R + PLACED ( 7409 7799 ) N ;
- _52_ INVxp33_ASAP7_75t_R + PLACED ( 4826 7450 ) N ;
- _53_ INVxp33_ASAP7_75t_R + PLACED ( 4755 7513 ) N ;
- _54_ INVxp33_ASAP7_75t_R + PLACED ( 5069 7436 ) N ;
- _55_ INVxp33_ASAP7_75t_R + PLACED ( 4795 4153 ) N ;
- _56_ INVxp33_ASAP7_75t_R + PLACED ( 7164 7343 ) N ;
- _57_ INVxp33_ASAP7_75t_R + PLACED ( 7669 7670 ) N ;
- _58_ INVxp33_ASAP7_75t_R + PLACED ( 4843 7166 ) N ;
- _59_ INVxp33_ASAP7_75t_R + PLACED ( 5095 6652 ) N ;
- _60_ INVxp33_ASAP7_75t_R + PLACED ( 6708 7256 ) N ;
- _61_ INVxp33_ASAP7_75t_R + PLACED ( 7155 7446 ) N ;
- _62_ INVxp33_ASAP7_75t_R + PLACED ( 7510 6853 ) N ;
- _63_ INVxp33_ASAP7_75t_R + PLACED ( 7511 4107 ) N ;
- _64_ INVxp33_ASAP7_75t_R + PLACED ( 4861 6996 ) N ;
- _65_ INVxp33_ASAP7_75t_R + PLACED ( 7325 4240 ) N ;
- _66_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6279 4250 ) N ;
- _67_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3819 6994 ) N ;
- _68_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6461 4122 ) N ;
- _69_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6459 6847 ) N ;
- _70_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6110 7437 ) N ;
- _71_ DFFLQNx1_ASAP7_75t_R + PLACED ( 5666 7251 ) N ;
- _72_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4046 6651 ) N ;
- _73_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3801 7164 ) N ;
- _74_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6609 7650 ) N ;
- _75_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6120 7336 ) N ;
- _76_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3758 4163 ) N ;
- _77_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4021 7427 ) N ;
- _78_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3716 7502 ) N ;
- _79_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3785 7441 ) N ;
- _80_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6360 7768 ) N ;
- _81_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6576 6080 ) N ;
- _82_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3719 7480 ) N ;
- _83_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6599 7421 ) N ;
- _84_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3869 7507 ) N ;
- _85_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6335 4419 ) N ;
- _86_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4119 4089 ) N ;
- _87_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6355 4389 ) N ;
- _88_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3840 5748 ) N ;
- _89_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3577 4440 ) N ;
- _90_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4074 4300 ) N ;
- _91_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6776 4230 ) N ;
- _92_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3843 4321 ) N ;
- _93_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3983 4236 ) N ;
- _94_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6435 4298 ) N ;
- _95_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4148 4131 ) N ;
- _96_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3601 4509 ) N ;
- _97_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6336 4209 ) N ;
- _33_ INVx3_ASAP7_75t_R + PLACED ( 4870 10251 ) N ;
- _34_ INVxp33_ASAP7_75t_R + PLACED ( 5543 6083 ) N ;
- _35_ INVxp33_ASAP7_75t_R + PLACED ( 5330 5831 ) N ;
- _36_ INVxp33_ASAP7_75t_R + PLACED ( 4357 10251 ) N ;
- _37_ INVxp33_ASAP7_75t_R + PLACED ( 4865 5426 ) N ;
- _38_ INVxp33_ASAP7_75t_R + PLACED ( 4382 10251 ) N ;
- _39_ INVxp33_ASAP7_75t_R + PLACED ( 6412 5022 ) N ;
- _40_ INVxp33_ASAP7_75t_R + PLACED ( 6235 4738 ) N ;
- _41_ INVxp33_ASAP7_75t_R + PLACED ( 6065 4500 ) N ;
- _42_ INVxp33_ASAP7_75t_R + PLACED ( 5930 4297 ) N ;
- _43_ INVxp33_ASAP7_75t_R + PLACED ( 5829 4144 ) N ;
- _44_ INVxp33_ASAP7_75t_R + PLACED ( 10448 3774 ) N ;
- _45_ INVxp33_ASAP7_75t_R + PLACED ( 5624 3933 ) N ;
- _46_ INVxp33_ASAP7_75t_R + PLACED ( 5525 3868 ) N ;
- _47_ INVxp33_ASAP7_75t_R + PLACED ( 3036 1359 ) N ;
- _48_ INVxp33_ASAP7_75t_R + PLACED ( 2950 1359 ) N ;
- _49_ INVxp33_ASAP7_75t_R + PLACED ( 2868 1359 ) N ;
- _50_ INVxp33_ASAP7_75t_R + PLACED ( 2785 1359 ) N ;
- _51_ INVxp33_ASAP7_75t_R + PLACED ( 2734 1359 ) N ;
- _52_ INVxp33_ASAP7_75t_R + PLACED ( 2688 1359 ) N ;
- _53_ INVxp33_ASAP7_75t_R + PLACED ( 2642 1359 ) N ;
- _54_ INVxp33_ASAP7_75t_R + PLACED ( 2596 1359 ) N ;
- _55_ INVxp33_ASAP7_75t_R + PLACED ( 3719 3973 ) N ;
- _56_ INVxp33_ASAP7_75t_R + PLACED ( 3827 3819 ) N ;
- _57_ INVxp33_ASAP7_75t_R + PLACED ( 3935 3599 ) N ;
- _58_ INVxp33_ASAP7_75t_R + PLACED ( 3969 3361 ) N ;
- _59_ INVxp33_ASAP7_75t_R + PLACED ( 4103 3141 ) N ;
- _60_ INVxp33_ASAP7_75t_R + PLACED ( 3707 3033 ) N ;
- _61_ INVxp33_ASAP7_75t_R + PLACED ( 3147 2948 ) N ;
- _62_ INVxp33_ASAP7_75t_R + PLACED ( 2272 2859 ) N ;
- _63_ INVxp33_ASAP7_75t_R + PLACED ( 6012 6516 ) N ;
- _64_ INVxp33_ASAP7_75t_R + PLACED ( 4848 10251 ) N ;
- _65_ INVxp33_ASAP7_75t_R + PLACED ( 5762 6248 ) N ;
- _66_ DFFLQNx1_ASAP7_75t_R + PLACED ( 5943 5411 ) N ;
- _67_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4053 9970 ) N ;
- _68_ DFFLQNx1_ASAP7_75t_R + PLACED ( 6217 5688 ) N ;
- _69_ DFFLQNx1_ASAP7_75t_R + PLACED ( 2085 1416 ) N ;
- _70_ DFFLQNx1_ASAP7_75t_R + PLACED ( 2954 1501 ) N ;
- _71_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3387 1607 ) N ;
- _72_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3598 1913 ) N ;
- _73_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3625 2363 ) N ;
- _74_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3664 2736 ) N ;
- _75_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3624 3033 ) N ;
- _76_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3539 3239 ) N ;
- _77_ DFFLQNx1_ASAP7_75t_R + PLACED ( 919 2038 ) N ;
- _78_ DFFLQNx1_ASAP7_75t_R + PLACED ( 919 2063 ) N ;
- _79_ DFFLQNx1_ASAP7_75t_R + PLACED ( 920 2088 ) N ;
- _80_ DFFLQNx1_ASAP7_75t_R + PLACED ( 931 2112 ) N ;
- _81_ DFFLQNx1_ASAP7_75t_R + PLACED ( 958 2143 ) N ;
- _82_ DFFLQNx1_ASAP7_75t_R + PLACED ( 1019 2227 ) N ;
- _83_ DFFLQNx1_ASAP7_75t_R + PLACED ( 1092 2502 ) N ;
- _84_ DFFLQNx1_ASAP7_75t_R + PLACED ( 1165 2884 ) N ;
- _85_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3668 4579 ) N ;
- _86_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3773 4610 ) N ;
- _87_ DFFLQNx1_ASAP7_75t_R + PLACED ( 9181 3625 ) N ;
- _88_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3972 4833 ) N ;
- _89_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4072 5042 ) N ;
- _90_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4183 5364 ) N ;
- _91_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4339 5785 ) N ;
- _92_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4508 6365 ) N ;
- _93_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3695 9864 ) N ;
- _94_ DFFLQNx1_ASAP7_75t_R + PLACED ( 4607 4684 ) N ;
- _95_ DFFLQNx1_ASAP7_75t_R + PLACED ( 3457 10069 ) N ;
- _96_ DFFLQNx1_ASAP7_75t_R + PLACED ( 5294 5015 ) N ;
- _97_ DFFLQNx1_ASAP7_75t_R + PLACED ( 5596 5239 ) N ;
END COMPONENTS
PINS 65 ;
- clock + NET clock + DIRECTION INPUT + USE SIGNAL
Expand Down
61 changes: 31 additions & 30 deletions src/gpl/test/convergence01.ok
Original file line number Diff line number Diff line change
Expand Up @@ -79,36 +79,37 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
[INFO GPL-0110] Timing-driven: new target density: 0.492
Iteration | Overflow | HPWL (um) | HPWL(%) | Penalty | Group
---------------------------------------------------------------
10 | 0.3150 | 1.838600e+04 | -95.38% | 1.18e-10 |
20 | 0.4069 | 1.093400e+04 | -40.53% | 1.73e-10 |
30 | 0.4588 | 6.429000e+03 | -41.20% | 2.55e-10 |
40 | 0.7298 | 1.900000e+03 | -70.45% | 3.76e-10 |
50 | 0.7220 | 1.761000e+03 | -7.32% | 5.54e-10 |
60 | 0.6869 | 2.253000e+03 | +27.94% | 8.17e-10 |
70 | 0.7345 | 1.504000e+03 | -33.24% | 1.20e-09 |
80 | 0.7461 | 5.080000e+02 | -66.22% | 1.77e-09 |
90 | 0.7427 | 1.071000e+03 | +110.83% | 2.61e-09 |
100 | 0.7389 | 1.308000e+03 | +22.13% | 3.85e-09 |
110 | 0.7377 | 9.970000e+02 | -23.78% | 5.67e-09 |
120 | 0.7308 | 6.830000e+02 | -31.49% | 8.35e-09 |
130 | 0.7223 | 8.200000e+02 | +20.06% | 1.23e-08 |
140 | 0.6872 | 1.081000e+03 | +31.83% | 1.81e-08 |
150 | 0.6705 | 1.399000e+03 | +29.42% | 2.67e-08 |
160 | 0.6624 | 1.775000e+03 | +26.88% | 3.93e-08 |
170 | 0.6300 | 2.615000e+03 | +47.32% | 5.79e-08 |
180 | 0.5934 | 4.233000e+03 | +61.87% | 8.53e-08 |
190 | 0.4704 | 5.945000e+03 | +40.44% | 1.26e-07 |
200 | 0.4904 | 5.878000e+03 | -1.13% | 1.85e-07 |
210 | 0.4622 | 6.146000e+03 | +4.56% | 2.73e-07 |
220 | 0.3148 | 8.130000e+03 | +32.28% | 4.02e-07 |
230 | 0.2894 | 7.669000e+03 | -5.67% | 5.92e-07 |
240 | 0.2919 | 6.825000e+03 | -11.01% | 8.72e-07 |
250 | 0.2164 | 7.684000e+03 | +12.59% | 1.28e-06 |
260 | 0.1782 | 7.785000e+03 | +1.31% | 1.89e-06 |
270 | 0.1532 | 7.620000e+03 | -2.12% | 2.79e-06 |
280 | 0.1257 | 7.782000e+03 | +2.13% | 4.11e-06 |
290 | 0.1164 | 7.974000e+03 | +2.47% | 6.05e-06 |
[INFO GPL-1001] Finished with Overflow: 0.094168
10 | 0.1628 | 4.015000e+05 | +0.91% | 1.18e-10 |
20 | 0.1613 | 3.995040e+05 | -0.50% | 1.73e-10 |
30 | 0.1815 | 3.994050e+05 | -0.02% | 2.55e-10 |
40 | 0.1796 | 3.995050e+05 | +0.03% | 3.76e-10 |
50 | 0.1878 | 3.995520e+05 | +0.01% | 5.54e-10 |
60 | 0.1950 | 3.995720e+05 | +0.01% | 8.17e-10 |
70 | 0.1970 | 3.995940e+05 | +0.01% | 1.20e-09 |
80 | 0.2027 | 3.995870e+05 | -0.00% | 1.77e-09 |
90 | 0.1982 | 3.995930e+05 | +0.00% | 2.61e-09 |
100 | 0.1897 | 3.995860e+05 | -0.00% | 3.85e-09 |
110 | 0.1995 | 3.995430e+05 | -0.01% | 5.67e-09 |
120 | 0.1999 | 3.995810e+05 | +0.01% | 8.35e-09 |
130 | 0.1927 | 3.996140e+05 | +0.01% | 1.23e-08 |
140 | 0.1916 | 3.995680e+05 | -0.01% | 1.81e-08 |
150 | 0.1962 | 3.995330e+05 | -0.01% | 2.67e-08 |
160 | 0.1968 | 3.995680e+05 | +0.01% | 3.93e-08 |
170 | 0.1925 | 3.995970e+05 | +0.01% | 5.79e-08 |
180 | 0.1895 | 3.995760e+05 | -0.01% | 8.53e-08 |
190 | 0.1908 | 3.995350e+05 | -0.01% | 1.26e-07 |
200 | 0.1912 | 3.995290e+05 | -0.00% | 1.85e-07 |
210 | 0.1886 | 3.995490e+05 | +0.01% | 2.73e-07 |
220 | 0.1858 | 3.995610e+05 | +0.00% | 4.02e-07 |
230 | 0.1841 | 3.995590e+05 | -0.00% | 5.92e-07 |
240 | 0.1801 | 3.994830e+05 | -0.02% | 8.72e-07 |
250 | 0.1726 | 3.995540e+05 | +0.02% | 1.28e-06 |
260 | 0.1606 | 3.995900e+05 | +0.01% | 1.89e-06 |
270 | 0.1525 | 3.996110e+05 | +0.01% | 2.79e-06 |
280 | 0.1460 | 3.996150e+05 | +0.00% | 4.11e-06 |
290 | 0.1374 | 3.997860e+05 | +0.04% | 6.05e-06 |
300 | 0.1121 | 4.000530e+05 | +0.07% | 8.91e-06 |
[INFO GPL-1001] Finished with Overflow: 0.097203
[INFO GPL-1002] Placed Cell Area 14.5946
[INFO GPL-1003] Available Free Area 116.6400
[INFO GPL-1004] Minimum Feasible Density 0.1251 (cell_area / free_area)
Expand Down
1 change: 1 addition & 0 deletions src/gpl/test/convergence01.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ read_sdc convergence01.sdc

source asap7/setRC.tcl

global_placement_debug
global_placement -density 0.5 -timing_driven \
-pad_left 2 \
-pad_right 2
Expand Down
Loading