Skip to content

Commit e749264

Browse files
committed
fixed opto move update bug in repair_timing
Signed-off-by: Cho Moon <[email protected]>
1 parent d026bcf commit e749264

File tree

4 files changed

+249
-232
lines changed

4 files changed

+249
-232
lines changed

src/rsz/src/Resizer.cc

Lines changed: 64 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -167,15 +167,15 @@ Resizer::Resizer(Logger* logger,
167167

168168
db_network_->addObserver(this);
169169

170+
size_up_move_ = std::make_unique<SizeUpMove>(this);
171+
size_up_match_move_ = std::make_unique<SizeUpMatchMove>(this);
172+
size_down_move_ = std::make_unique<SizeDownMove>(this);
170173
buffer_move_ = std::make_unique<BufferMove>(this);
171174
clone_move_ = std::make_unique<CloneMove>(this);
172-
size_down_move_ = std::make_unique<SizeDownMove>(this);
173-
size_up_move_ = std::make_unique<SizeUpMove>(this);
174-
split_load_move_ = std::make_unique<SplitLoadMove>(this);
175175
swap_pins_move_ = std::make_unique<SwapPinsMove>(this);
176-
unbuffer_move_ = std::make_unique<UnbufferMove>(this);
177176
vt_swap_speed_move_ = std::make_unique<VTSwapSpeedMove>(this);
178-
size_up_match_move_ = std::make_unique<SizeUpMatchMove>(this);
177+
unbuffer_move_ = std::make_unique<UnbufferMove>(this);
178+
split_load_move_ = std::make_unique<SplitLoadMove>(this);
179179

180180
recover_power_ = std::make_unique<RecoverPower>(this);
181181
repair_design_ = std::make_unique<RepairDesign>(this);
@@ -4548,13 +4548,15 @@ void Resizer::journalBegin()
45484548
debugPrint(logger_, RSZ, "journal", 1, "journal begin");
45494549
odb::dbDatabase::beginEco(block_);
45504550

4551-
buffer_move_->undoMoves();
4552-
size_down_move_->undoMoves();
45534551
size_up_move_->undoMoves();
4552+
size_up_match_move_->undoMoves();
4553+
size_down_move_->undoMoves();
4554+
buffer_move_->undoMoves();
45544555
clone_move_->undoMoves();
4555-
split_load_move_->undoMoves();
45564556
swap_pins_move_->undoMoves();
4557+
vt_swap_speed_move_->undoMoves();
45574558
unbuffer_move_->undoMoves();
4559+
split_load_move_->undoMoves();
45584560
}
45594561

45604562
void Resizer::journalEnd()
@@ -4568,45 +4570,48 @@ void Resizer::journalEnd()
45684570

45694571
int move_count_ = 0;
45704572
move_count_ += size_up_move_->numPendingMoves();
4573+
move_count_ += size_up_match_move_->numPendingMoves();
45714574
move_count_ += size_down_move_->numPendingMoves();
45724575
move_count_ += buffer_move_->numPendingMoves();
45734576
move_count_ += clone_move_->numPendingMoves();
45744577
move_count_ += swap_pins_move_->numPendingMoves();
4578+
move_count_ += vt_swap_speed_move_->numPendingMoves();
45754579
move_count_ += unbuffer_move_->numPendingMoves();
45764580

4577-
debugPrint(
4578-
logger_,
4579-
RSZ,
4580-
"opt_moves",
4581-
2,
4582-
"COMMIT {} moves: up {} down {} buffer {} clone {} swap {} unbuf {}",
4583-
move_count_,
4584-
size_up_move_->numPendingMoves(),
4585-
size_down_move_->numPendingMoves(),
4586-
buffer_move_->numPendingMoves(),
4587-
clone_move_->numPendingMoves(),
4588-
swap_pins_move_->numPendingMoves(),
4589-
unbuffer_move_->numPendingMoves());
4581+
debugPrint(logger_,
4582+
RSZ,
4583+
"opt_moves",
4584+
2,
4585+
"COMMIT {} moves: up {} up_match {} down {} buffer {} clone {} "
4586+
"swap {} vt_swap {} unbuf {}",
4587+
move_count_,
4588+
size_up_move_->numPendingMoves(),
4589+
size_up_match_move_->numPendingMoves(),
4590+
size_down_move_->numPendingMoves(),
4591+
buffer_move_->numPendingMoves(),
4592+
clone_move_->numPendingMoves(),
4593+
swap_pins_move_->numPendingMoves(),
4594+
vt_swap_speed_move_->numPendingMoves(),
4595+
unbuffer_move_->numPendingMoves());
45904596

45914597
accepted_move_count_ += move_count_;
45924598

4593-
buffer_move_->commitMoves();
45944599
size_up_move_->commitMoves();
4600+
size_up_match_move_->commitMoves();
45954601
size_down_move_->commitMoves();
4602+
buffer_move_->commitMoves();
45964603
clone_move_->commitMoves();
4597-
split_load_move_->commitMoves();
45984604
swap_pins_move_->commitMoves();
4599-
unbuffer_move_->commitMoves();
4600-
size_up_match_move_->commitMoves();
46014605
vt_swap_speed_move_->commitMoves();
4606+
unbuffer_move_->commitMoves();
4607+
split_load_move_->commitMoves();
46024608

46034609
debugPrint(logger_,
46044610
RSZ,
46054611
"opt_moves",
46064612
1,
4607-
"TOTAL {} moves (acc {} rej {}): up {} up_match {} down {} "
4608-
"buffer {} clone "
4609-
"{} swap {} unbuf {} vt_swap {}",
4613+
"TOTAL {} moves (acc {} rej {}): up {} up_match {} down {} buffer "
4614+
"{} clone {} swap {} vt_swap {} unbuf {}",
46104615
accepted_move_count_ + rejected_move_count_,
46114616
accepted_move_count_,
46124617
rejected_move_count_,
@@ -4616,8 +4621,8 @@ void Resizer::journalEnd()
46164621
buffer_move_->numCommittedMoves(),
46174622
clone_move_->numCommittedMoves(),
46184623
swap_pins_move_->numCommittedMoves(),
4619-
unbuffer_move_->numCommittedMoves(),
4620-
vt_swap_speed_move_->numCommittedMoves());
4624+
vt_swap_speed_move_->numCommittedMoves(),
4625+
unbuffer_move_->numCommittedMoves());
46214626
}
46224627

46234628
void Resizer::journalMakeBuffer(Instance* buffer)
@@ -4656,63 +4661,75 @@ void Resizer::journalRestore()
46564661
sta_->findRequireds();
46574662

46584663
// Update transform counts
4659-
debugPrint(
4660-
logger_,
4661-
RSZ,
4662-
"journal",
4663-
1,
4664-
"Undid {} sizing {} buffering {} cloning {} swaps {} buf removal",
4665-
size_up_move_->numPendingMoves() + size_down_move_->numPendingMoves(),
4666-
buffer_move_->numPendingMoves(),
4667-
clone_move_->numPendingMoves(),
4668-
swap_pins_move_->numPendingMoves(),
4669-
unbuffer_move_->numPendingMoves());
4664+
debugPrint(logger_,
4665+
RSZ,
4666+
"journal",
4667+
1,
4668+
"Undid {} up {} up_match {} down {} buffer {} clone {} swap {} "
4669+
"vt_swap {} unbuf",
4670+
size_up_move_->numPendingMoves(),
4671+
size_up_match_move_->numPendingMoves(),
4672+
size_down_move_->numPendingMoves(),
4673+
buffer_move_->numPendingMoves(),
4674+
clone_move_->numPendingMoves(),
4675+
swap_pins_move_->numPendingMoves(),
4676+
vt_swap_speed_move_->numPendingMoves(),
4677+
unbuffer_move_->numPendingMoves());
46704678

46714679
int move_count_ = 0;
4672-
move_count_ += size_down_move_->numPendingMoves();
46734680
move_count_ += size_up_move_->numPendingMoves();
4681+
move_count_ += size_up_match_move_->numPendingMoves();
4682+
move_count_ += size_down_move_->numPendingMoves();
46744683
move_count_ += buffer_move_->numPendingMoves();
46754684
move_count_ += clone_move_->numPendingMoves();
46764685
move_count_ += swap_pins_move_->numPendingMoves();
4686+
move_count_ += vt_swap_speed_move_->numPendingMoves();
46774687
move_count_ += unbuffer_move_->numPendingMoves();
46784688

46794689
debugPrint(logger_,
46804690
RSZ,
46814691
"opt_moves",
46824692
2,
4683-
"UNDO {} moves: up {} down {} buffer {} clone {} swap {} unbuf {}",
4693+
"UNDO {} moves: up {} up_match {} down {} buffer {} clone {} swap "
4694+
"{} vt_swap {} unbuf {}",
46844695
move_count_,
46854696
size_up_move_->numPendingMoves(),
4697+
size_up_match_move_->numPendingMoves(),
46864698
size_down_move_->numPendingMoves(),
46874699
buffer_move_->numPendingMoves(),
46884700
clone_move_->numPendingMoves(),
46894701
swap_pins_move_->numPendingMoves(),
4702+
vt_swap_speed_move_->numPendingMoves(),
46904703
unbuffer_move_->numPendingMoves());
46914704

46924705
rejected_move_count_ += move_count_;
46934706

4694-
size_down_move_->undoMoves();
46954707
size_up_move_->undoMoves();
4708+
size_up_match_move_->undoMoves();
4709+
size_down_move_->undoMoves();
46964710
buffer_move_->undoMoves();
46974711
clone_move_->undoMoves();
4698-
split_load_move_->undoMoves();
46994712
swap_pins_move_->undoMoves();
4713+
vt_swap_speed_move_->undoMoves();
47004714
unbuffer_move_->undoMoves();
4715+
split_load_move_->undoMoves();
47014716

47024717
debugPrint(logger_,
47034718
RSZ,
47044719
"opt_moves",
47054720
1,
4706-
"TOTAL {} moves (acc {} rej {}): up {} down {} buffer {} clone "
4707-
"{} swap {} unbuf {}",
4721+
"TOTAL {} moves (acc {} rej {}): up {} up_match {} down {} buffer "
4722+
"{} clone {} swap {} vt_swap {} unbuf {}",
47084723
accepted_move_count_ + rejected_move_count_,
47094724
accepted_move_count_,
47104725
rejected_move_count_,
47114726
size_up_move_->numCommittedMoves(),
4727+
size_up_match_move_->numCommittedMoves(),
47124728
size_down_move_->numCommittedMoves(),
47134729
buffer_move_->numCommittedMoves(),
47144730
clone_move_->numCommittedMoves(),
47154731
swap_pins_move_->numCommittedMoves(),
4732+
vt_swap_speed_move_->numCommittedMoves(),
47164733
unbuffer_move_->numCommittedMoves());
47174734

47184735
debugPrint(logger_, RSZ, "journal", 1, "journal restore ends <<<");

src/rsz/test/buffer_varying_lengths.ok

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ tns max -40.818
1616
| Buffers | Gates | Buffers | Gates | Swaps | | | | Endpts | Endpt
1717
--------------------------------------------------------------------------------------------------------------
1818
0 | 0 | 0 | 0 | 0 | 0 | +0.0% | -0.355 | -40.8 | 200 | p3-200
19-
final | 71 | 1575 | 0 | 0 | 0 | +465.4% | -0.302 | -31.0 | 200 | p3-200
19+
final | 71 | 1500 | 0 | 0 | 0 | +465.4% | -0.302 | -31.0 | 200 | p3-200
2020
--------------------------------------------------------------------------------------------------------------
2121
[INFO RSZ-0059] Removed 71 buffers.
22-
[INFO RSZ-0051] Resized 1575 instances: 1500 up, 75 up match, 0 down, 0 VT
22+
[INFO RSZ-0051] Resized 1500 instances: 1500 up, 0 up match, 0 down, 0 VT
2323
[WARNING RSZ-0062] Unable to repair all setup violations.
2424
[INFO RSZ-0033] No hold violations found.
2525
worst slack max -0.302

0 commit comments

Comments
 (0)