Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/rsz/src/SizeDownMove.cc
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ bool SizeDownMove::doMove(const Path* drvr_path,
LibertyCell* load_cell = load_port->libertyCell();
Instance* load_inst = network_->instance(load_pin);

if (resizer_->dontTouch(load_inst)) {
if (resizer_->dontTouch(load_inst)
|| !resizer_->isLogicStdCell(load_inst)) {
Comment on lines +126 to +127
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see similar checks in various places. Perhaps you could do a refactor similar to okToBufferNet like okToResizeInstance ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you want to do this here or in another?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather do this elsewhere. We could fold isLogicStdCell into dontTouch as I'm not sure there's any transformation we want the resizer to apply to macros.

continue;
}

Expand Down
9 changes: 2 additions & 7 deletions src/rsz/src/SizeUpMove.cc
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,7 @@ bool SizeUpMove::doMove(const Path* drvr_path,
Pin* in_pin = in_path->pin(sta_);
LibertyPort* in_port = network_->libertyPort(in_pin);

// We always size the cloned gates for some reason, but it would be good if we
// also down-sized here instead since we might want smaller original.
if (!resizer_->dontTouch(drvr)
|| resizer_->clone_move_->hasPendingMoves(drvr)) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing the clone_move_->hasPendingMoves check should only matter for instances with dont touch. For that reason I'm expecting none or few metric changes. I can run a secure CI if we don't want to chance it.

if (!resizer_->dontTouch(drvr) && resizer_->isLogicStdCell(drvr)) {
float prev_drive;
if (drvr_index >= 2) {
const int prev_drvr_index = drvr_index - 2;
Expand Down Expand Up @@ -120,9 +117,7 @@ bool SizeUpMatchMove::doMove(const Path* drvr_path,
return false;
}

// Also size cloned cells if possible
if (!resizer_->dontTouch(drvr)
|| resizer_->clone_move_->hasPendingMoves(drvr)) {
if (!resizer_->dontTouch(drvr) && resizer_->isLogicStdCell(drvr)) {
LibertyPort* drvr_port = network_->libertyPort(drvr_pin);
if (drvr_port == nullptr) {
return false;
Expand Down
5 changes: 5 additions & 0 deletions src/rsz/src/VTSwapMove.cc
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,11 @@ bool VTSwapSpeedMove::isSwappable(const Path*& drvr_path,
network_->pathName(drvr_pin));
return false;
}
if (!resizer_->isLogicStdCell(drvr)) {
debugMovePrint1("REJECT vt_swap {}: drvr instance is not a standard cell",
network_->pathName(drvr_pin));
return false;
}
LibertyPort* drvr_port = network_->libertyPort(drvr_pin);
if (drvr_port == nullptr) {
debugMovePrint1("REJECT vt_swap {}: drvr pin has no library port",
Expand Down