Skip to content

Commit c25d003

Browse files
committed
Fixed removeBuffer() to report the correct num of removed buffers
Signed-off-by: Jaehyun Kim <[email protected]>
1 parent 696a4b1 commit c25d003

File tree

2 files changed

+12
-14
lines changed

2 files changed

+12
-14
lines changed

src/rsz/src/UnbufferMove.cc

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,7 @@ bool UnbufferMove::doMove(const Path* drvr_path,
195195
1,
196196
"ACCEPT unbuffer {}",
197197
network_->pathName(drvr));
198-
removeBuffer(drvr);
199-
return true;
198+
return removeBuffer(drvr);
200199
}
201200
debugPrint(logger_,
202201
RSZ,
@@ -213,8 +212,7 @@ bool UnbufferMove::removeBufferIfPossible(Instance* buffer,
213212
bool honorDontTouchFixed)
214213
{
215214
if (canRemoveBuffer(buffer, honorDontTouchFixed)) {
216-
removeBuffer(buffer);
217-
return true;
215+
return removeBuffer(buffer);
218216
}
219217
return false;
220218
}
@@ -327,7 +325,7 @@ bool UnbufferMove::canRemoveBuffer(Instance* buffer, bool honorDontTouchFixed)
327325
return false;
328326
}
329327

330-
void UnbufferMove::removeBuffer(Instance* buffer)
328+
bool UnbufferMove::removeBuffer(Instance* buffer)
331329
{
332330
LibertyCell* lib_cell = network_->libertyCell(buffer);
333331
debugPrint(logger_,
@@ -338,18 +336,12 @@ void UnbufferMove::removeBuffer(Instance* buffer)
338336
network_->pathName(buffer),
339337
lib_cell->name());
340338

341-
addMove(buffer);
342-
343339
LibertyPort *in_port, *out_port;
344340
lib_cell->bufferPorts(in_port, out_port);
345341

346342
Pin* in_pin = db_network_->findPin(buffer, in_port);
347343
Pin* out_pin = db_network_->findPin(buffer, out_port);
348344

349-
// Hierarchical net handling
350-
odb::dbModNet* op_modnet = db_network_->hierNet(out_pin);
351-
odb::dbModNet* ip_modnet = db_network_->hierNet(in_pin);
352-
353345
odb::dbNet* in_db_net = db_network_->flatNet(in_pin);
354346
odb::dbNet* out_db_net = db_network_->flatNet(out_pin);
355347

@@ -360,14 +352,16 @@ void UnbufferMove::removeBuffer(Instance* buffer)
360352
168,
361353
"The input pin of buffer '{}' is undriven. Do not remove the buffer.",
362354
network_->pathName(buffer));
363-
return;
355+
return false;
364356
}
365357

358+
addMove(buffer);
359+
366360
// Remove the unused buffer
367361
if (out_db_net == nullptr) {
368362
dbInst* dbinst_buffer = db_network_->staToDb(buffer);
369363
dbInst::destroy(dbinst_buffer);
370-
return;
364+
return true;
371365
}
372366

373367
// in_net and out_net are flat nets.
@@ -377,6 +371,8 @@ void UnbufferMove::removeBuffer(Instance* buffer)
377371
// Decide survivor net when two nets are merged
378372
Net* survivor = in_net; // buffer input net is the default survivor
379373
Net* removed = out_net;
374+
odb::dbModNet* op_modnet = db_network_->hierNet(out_pin);
375+
odb::dbModNet* ip_modnet = db_network_->hierNet(in_pin);
380376
odb::dbModNet* survivor_modnet = ip_modnet;
381377
odb::dbModNet* removed_modnet = op_modnet;
382378
bool in_net_has_port = db_network_->hasPort(in_net);
@@ -455,6 +451,8 @@ void UnbufferMove::removeBuffer(Instance* buffer)
455451
if (survivor_modnet != nullptr && new_modnet_name) {
456452
survivor_modnet->rename(new_modnet_name->c_str());
457453
}
454+
455+
return true;
458456
}
459457

460458
} // namespace rsz

src/rsz/src/UnbufferMove.hh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class UnbufferMove : public BaseMove
3030

3131
bool removeBufferIfPossible(Instance* buffer, bool honorDontTouchFixed);
3232
bool canRemoveBuffer(Instance* buffer, bool honorDontTouchFixed);
33-
void removeBuffer(Instance* buffer);
33+
bool removeBuffer(Instance* buffer);
3434

3535
private:
3636
bool bufferBetweenPorts(Instance* buffer);

0 commit comments

Comments
 (0)