Skip to content

Commit a709597

Browse files
authored
Merge pull request #6756 from gudeh/gpl-cornercase-revert-if-diverge
gpl: fix corner case issue with revert if diverge
2 parents f9ad14c + 4a141de commit a709597

File tree

4 files changed

+28
-28
lines changed

4 files changed

+28
-28
lines changed

src/gpl/src/nesterovPlace.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -413,17 +413,6 @@ int NesterovPlace::doNesterovPlace(int start_iter)
413413

414414
updateNextIter(iter);
415415

416-
if (!npVars_.disableRevertIfDiverge) {
417-
if (is_min_hpwl_) {
418-
diverge_snapshot_WlCoefX = wireLengthCoefX_;
419-
diverge_snapshot_WlCoefY = wireLengthCoefY_;
420-
for (auto& nb : nbVec_) {
421-
nb->snapshot();
422-
}
423-
is_diverge_snapshot_saved = true;
424-
}
425-
}
426-
427416
// For JPEG Saving
428417
// debug
429418
const int debug_start_iter = npVars_.debug_start_iter;
@@ -470,10 +459,11 @@ int NesterovPlace::doNesterovPlace(int start_iter)
470459

471460
log_->info(GPL,
472461
101,
473-
"Iter: {}, overflow: {:.3f}, keep rsz at: {}",
474-
iter,
462+
" Iter: {}, overflow: {:.3f}, keep rsz at: {}, HPWL: {}",
463+
iter + 1,
475464
average_overflow_,
476-
npVars_.keepResizeBelowOverflow);
465+
npVars_.keepResizeBelowOverflow,
466+
nbc_->getHpwl());
477467

478468
if (!virtual_td_iter) {
479469
db_cbk_->addOwner(pbc_->db()->getChip()->getBlock());
@@ -528,6 +518,16 @@ int NesterovPlace::doNesterovPlace(int start_iter)
528518
}
529519
}
530520

521+
if (!npVars_.disableRevertIfDiverge) {
522+
if (is_min_hpwl_) {
523+
diverge_snapshot_WlCoefX = wireLengthCoefX_;
524+
diverge_snapshot_WlCoefY = wireLengthCoefY_;
525+
for (auto& nb : nbVec_) {
526+
nb->snapshot();
527+
}
528+
is_diverge_snapshot_saved = true;
529+
}
530+
}
531531
// diverge detection on
532532
// large max_phi_cof value + large design
533533
//
@@ -705,7 +705,7 @@ void NesterovPlace::updateNextIter(const int iter)
705705
if (hpwl < min_hpwl_ && average_overflow_unscaled_ <= 0.25) {
706706
min_hpwl_ = hpwl;
707707
diverge_snapshot_average_overflow_unscaled_ = average_overflow_unscaled_;
708-
diverge_snapshot_iter_ = iter;
708+
diverge_snapshot_iter_ = iter + 1;
709709
is_min_hpwl_ = true;
710710
} else {
711711
is_min_hpwl_ = false;

src/gpl/test/convergence01.ok

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
[INFO GPL-0030] NumBins: 64
5151
[NesterovSolve] Iter: 1 overflow: 0.127 HPWL: 397899
5252
[INFO GPL-0100] Timing-driven iteration 1/5, virtual: false.
53-
[INFO GPL-0101] Iter: 0, overflow: 0.127, keep rsz at: 0.3
53+
[INFO GPL-0101] Iter: 1, overflow: 0.127, keep rsz at: 0.3, HPWL: 397899
5454
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
5555
---------------------------------------------------------------------
5656
0 | +0.0% | 0 | 0 | 0 | 98

src/gpl/test/simple01-td-tune.ok

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
[INFO GPL-0030] NumBins: 256
3939
[NesterovSolve] Iter: 1 overflow: 0.832 HPWL: 3651238
4040
[INFO GPL-0100] Timing-driven iteration 1/7, virtual: true.
41-
[INFO GPL-0101] Iter: 2, overflow: 0.761, keep rsz at: 0.3
41+
[INFO GPL-0101] Iter: 3, overflow: 0.761, keep rsz at: 0.3, HPWL: 3932272
4242
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
4343
---------------------------------------------------------------------
4444
0 | +0.0% | 0 | 0 | 0 | 356
@@ -64,7 +64,7 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
6464
[NesterovSolve] Iter: 160 overflow: 0.715 HPWL: 4037658
6565
[NesterovSolve] Iter: 170 overflow: 0.704 HPWL: 4057804
6666
[INFO GPL-0100] Timing-driven iteration 2/7, virtual: true.
67-
[INFO GPL-0101] Iter: 176, overflow: 0.695, keep rsz at: 0.3
67+
[INFO GPL-0101] Iter: 177, overflow: 0.695, keep rsz at: 0.3, HPWL: 4076876
6868
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
6969
---------------------------------------------------------------------
7070
0 | +0.0% | 0 | 0 | 0 | 356
@@ -77,7 +77,7 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
7777
[NesterovSolve] Iter: 200 overflow: 0.649 HPWL: 4204028
7878
[NesterovSolve] Iter: 210 overflow: 0.618 HPWL: 4266347
7979
[INFO GPL-0100] Timing-driven iteration 3/7, virtual: true.
80-
[INFO GPL-0101] Iter: 216, overflow: 0.594, keep rsz at: 0.3
80+
[INFO GPL-0101] Iter: 217, overflow: 0.594, keep rsz at: 0.3, HPWL: 4313387
8181
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
8282
---------------------------------------------------------------------
8383
0 | +0.0% | 0 | 0 | 0 | 356
@@ -89,7 +89,7 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
8989
[NesterovSolve] Iter: 230 overflow: 0.542 HPWL: 4396817
9090
[NesterovSolve] Iter: 240 overflow: 0.497 HPWL: 4448439
9191
[INFO GPL-0100] Timing-driven iteration 4/7, virtual: true.
92-
[INFO GPL-0101] Iter: 240, overflow: 0.492, keep rsz at: 0.3
92+
[INFO GPL-0101] Iter: 241, overflow: 0.492, keep rsz at: 0.3, HPWL: 4450361
9393
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
9494
---------------------------------------------------------------------
9595
0 | +0.0% | 0 | 0 | 0 | 356
@@ -99,7 +99,7 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
9999
[INFO GPL-0103] Timing-driven: weighted 31 nets.
100100
[NesterovSolve] Iter: 250 overflow: 0.437 HPWL: 4448311
101101
[INFO GPL-0100] Timing-driven iteration 5/7, virtual: true.
102-
[INFO GPL-0101] Iter: 257, overflow: 0.393, keep rsz at: 0.3
102+
[INFO GPL-0101] Iter: 258, overflow: 0.393, keep rsz at: 0.3, HPWL: 4435715
103103
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
104104
---------------------------------------------------------------------
105105
0 | +0.0% | 0 | 0 | 0 | 356
@@ -110,7 +110,7 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
110110
[NesterovSolve] Iter: 260 overflow: 0.384 HPWL: 4438815
111111
[NesterovSolve] Iter: 270 overflow: 0.334 HPWL: 4468479
112112
[INFO GPL-0100] Timing-driven iteration 6/7, virtual: false.
113-
[INFO GPL-0101] Iter: 278, overflow: 0.294, keep rsz at: 0.3
113+
[INFO GPL-0101] Iter: 279, overflow: 0.294, keep rsz at: 0.3, HPWL: 4477648
114114
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
115115
---------------------------------------------------------------------
116116
0 | +0.0% | 0 | 0 | 0 | 356
@@ -126,7 +126,7 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
126126
[NesterovSolve] Iter: 310 overflow: 0.217 HPWL: 2621283
127127
[NesterovSolve] Iter: 320 overflow: 0.202 HPWL: 2639961
128128
[INFO GPL-0100] Timing-driven iteration 7/7, virtual: false.
129-
[INFO GPL-0101] Iter: 322, overflow: 0.194, keep rsz at: 0.3
129+
[INFO GPL-0101] Iter: 323, overflow: 0.194, keep rsz at: 0.3, HPWL: 2649932
130130
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
131131
---------------------------------------------------------------------
132132
0 | +0.0% | 0 | 0 | 0 | 356

src/gpl/test/simple01-td.ok

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
[INFO GPL-0030] NumBins: 256
3939
[NesterovSolve] Iter: 1 overflow: 0.832 HPWL: 3651238
4040
[INFO GPL-0100] Timing-driven iteration 1/5, virtual: true.
41-
[INFO GPL-0101] Iter: 2, overflow: 0.761, keep rsz at: 0.3
41+
[INFO GPL-0101] Iter: 3, overflow: 0.761, keep rsz at: 0.3, HPWL: 3932272
4242
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
4343
---------------------------------------------------------------------
4444
0 | +0.0% | 0 | 0 | 0 | 356
@@ -67,7 +67,7 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
6767
[NesterovSolve] Iter: 190 overflow: 0.674 HPWL: 4128327
6868
[NesterovSolve] Iter: 200 overflow: 0.652 HPWL: 4181482
6969
[INFO GPL-0100] Timing-driven iteration 2/5, virtual: true.
70-
[INFO GPL-0101] Iter: 205, overflow: 0.632, keep rsz at: 0.3
70+
[INFO GPL-0101] Iter: 206, overflow: 0.632, keep rsz at: 0.3, HPWL: 4214522
7171
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
7272
---------------------------------------------------------------------
7373
0 | +0.0% | 0 | 0 | 0 | 356
@@ -84,7 +84,7 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
8484
[NesterovSolve] Iter: 270 overflow: 0.331 HPWL: 4450617
8585
[NesterovSolve] Iter: 280 overflow: 0.305 HPWL: 4478236
8686
[INFO GPL-0100] Timing-driven iteration 3/5, virtual: false.
87-
[INFO GPL-0101] Iter: 285, overflow: 0.284, keep rsz at: 0.3
87+
[INFO GPL-0101] Iter: 286, overflow: 0.284, keep rsz at: 0.3, HPWL: 4471956
8888
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
8989
---------------------------------------------------------------------
9090
0 | +0.0% | 0 | 0 | 0 | 356
@@ -98,7 +98,7 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
9898
[NesterovSolve] Iter: 300 overflow: 0.263 HPWL: 2656033
9999
[NesterovSolve] Iter: 310 overflow: 0.228 HPWL: 2638435
100100
[INFO GPL-0100] Timing-driven iteration 4/5, virtual: false.
101-
[INFO GPL-0101] Iter: 316, overflow: 0.202, keep rsz at: 0.3
101+
[INFO GPL-0101] Iter: 317, overflow: 0.202, keep rsz at: 0.3, HPWL: 2638631
102102
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
103103
---------------------------------------------------------------------
104104
0 | +0.0% | 0 | 0 | 0 | 356
@@ -112,7 +112,7 @@ Iteration | Area | Resized | Buffers | Nets repaired | Remaining
112112
[NesterovSolve] Iter: 330 overflow: 0.180 HPWL: 2655060
113113
[NesterovSolve] Iter: 340 overflow: 0.151 HPWL: 2683596
114114
[INFO GPL-0100] Timing-driven iteration 5/5, virtual: false.
115-
[INFO GPL-0101] Iter: 341, overflow: 0.145, keep rsz at: 0.3
115+
[INFO GPL-0101] Iter: 342, overflow: 0.145, keep rsz at: 0.3, HPWL: 2688300
116116
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
117117
---------------------------------------------------------------------
118118
0 | +0.0% | 0 | 0 | 0 | 356

0 commit comments

Comments
 (0)