Skip to content

Commit b8583f6

Browse files
committed
rsz: don't buffer inputs faning out to a dont-touch driver
Fixes The-OpenROAD-Project/OpenLane#1572 Signed-off-by: Matt Liberty <[email protected]>
1 parent b8b93f4 commit b8583f6

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

src/rsz/src/Resizer.cc

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,28 @@ Resizer::bufferInput(const Pin *top_pin,
492492
Net *input_net = db_network_->net(term);
493493
LibertyPort *input, *output;
494494
buffer_cell->bufferPorts(input, output);
495+
496+
bool has_dont_touch = false;
497+
NetConnectedPinIterator *pin_iter = network_->connectedPinIterator(input_net);
498+
while (pin_iter->hasNext()) {
499+
Pin *pin = pin_iter->next();
500+
// Leave input port pin connected to input_net.
501+
if (pin != top_pin && dontTouch(network_->instance(pin))) {
502+
has_dont_touch = true;
503+
logger_->warn(RSZ,
504+
85,
505+
"Input {} can't be buffered due to dont-touch fanout {}",
506+
network_->name(input_net),
507+
network_->name(pin));
508+
break;
509+
}
510+
}
511+
delete pin_iter;
512+
513+
if (has_dont_touch) {
514+
return nullptr;
515+
}
516+
495517
string buffer_name = makeUniqueInstName("input");
496518
Instance *parent = db_network_->topInstance();
497519
Net *buffer_out = makeUniqueNet();
@@ -501,7 +523,7 @@ Resizer::bufferInput(const Pin *top_pin,
501523
parent, pin_loc);
502524
inserted_buffer_count_++;
503525

504-
NetConnectedPinIterator *pin_iter = network_->connectedPinIterator(input_net);
526+
pin_iter = network_->connectedPinIterator(input_net);
505527
while (pin_iter->hasNext()) {
506528
Pin *pin = pin_iter->next();
507529
// Leave input port pin connected to input_net.
@@ -1186,6 +1208,9 @@ bool
11861208
Resizer::dontTouch(const Instance *inst)
11871209
{
11881210
dbInst *db_inst = db_network_->staToDb(inst);
1211+
if (!db_inst) {
1212+
return false;
1213+
}
11891214
return db_inst->isDoNotTouch();
11901215
}
11911216

0 commit comments

Comments
 (0)