From bba524b419ffe12232137ce9abf6900fce4721a2 Mon Sep 17 00:00:00 2001 From: Mike Inouye Date: Thu, 20 Aug 2026 19:59:46 +0000 Subject: [PATCH 1/4] rsz: Run findBufferSizes before annotating slews in performEarlySizingRound Signed-off-by: Mike Inouye Co-authored-by: Simon Bucher --- src/rsz/src/RepairDesign.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rsz/src/RepairDesign.cc b/src/rsz/src/RepairDesign.cc index 2fd1c7db6c..476db017da 100644 --- a/src/rsz/src/RepairDesign.cc +++ b/src/rsz/src/RepairDesign.cc @@ -130,6 +130,8 @@ void RepairDesign::repairDesign(double max_wire_length, void RepairDesign::performEarlySizingRound(int& repaired_net_count) { debugPrint(logger_, RSZ, "early_sizing", 1, "Performing early sizing round."); + findBufferSizes(); + // keep track of user annotations so we don't remove them std::set> slew_user_annotated; @@ -155,7 +157,6 @@ void RepairDesign::performEarlySizingRound(int& repaired_net_count) } } } - findBufferSizes(); sta_->searchPreamble(); search_->findAllArrivals(); From c52ede804308ce78aa2416a16ad5934e46fa23fe Mon Sep 17 00:00:00 2001 From: Mike Inouye Date: Thu, 20 Aug 2026 20:58:04 +0000 Subject: [PATCH 2/4] rsz: clamp max_fanout to prevent overflow Signed-off-by: Mike Inouye --- src/rsz/src/RepairDesign.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rsz/src/RepairDesign.cc b/src/rsz/src/RepairDesign.cc index 476db017da..d608c911dd 100644 --- a/src/rsz/src/RepairDesign.cc +++ b/src/rsz/src/RepairDesign.cc @@ -198,7 +198,7 @@ void RepairDesign::performEarlySizingRound(int& repaired_net_count) drvr_pin, sta_->cmdMode(), max_, fanout, max_fanout, fanout_slack); bool repaired_net = false; - if (max_fanout <= 0) { + if (max_fanout <= 0 || max_fanout > 1e9) { max_fanout = 1e9; } From ddcd46e33a7d8ce97d1e4996d5b27d2020e2acbe Mon Sep 17 00:00:00 2001 From: Mike Inouye Date: Fri, 21 Aug 2026 18:59:30 +0000 Subject: [PATCH 3/4] rsz: revert findBufferSizes move Signed-off-by: Mike Inouye --- src/rsz/src/RepairDesign.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rsz/src/RepairDesign.cc b/src/rsz/src/RepairDesign.cc index d608c911dd..1c4ed2a9bb 100644 --- a/src/rsz/src/RepairDesign.cc +++ b/src/rsz/src/RepairDesign.cc @@ -130,7 +130,6 @@ void RepairDesign::repairDesign(double max_wire_length, void RepairDesign::performEarlySizingRound(int& repaired_net_count) { debugPrint(logger_, RSZ, "early_sizing", 1, "Performing early sizing round."); - findBufferSizes(); // keep track of user annotations so we don't remove them std::set> slew_user_annotated; @@ -160,6 +159,7 @@ void RepairDesign::performEarlySizingRound(int& repaired_net_count) sta_->searchPreamble(); search_->findAllArrivals(); + findBufferSizes(); for (int i = drvrs.size() - 1; i >= 0; i--) { sta::Vertex* drvr = drvrs[i]; From 25df8a6996319cb41032401c8610b48640588f90 Mon Sep 17 00:00:00 2001 From: Mike Inouye Date: Fri, 21 Aug 2026 19:04:57 +0000 Subject: [PATCH 4/4] rsz: revert findBufferSizes Signed-off-by: Mike Inouye --- src/rsz/src/RepairDesign.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/rsz/src/RepairDesign.cc b/src/rsz/src/RepairDesign.cc index 1c4ed2a9bb..7649ac1089 100644 --- a/src/rsz/src/RepairDesign.cc +++ b/src/rsz/src/RepairDesign.cc @@ -130,7 +130,6 @@ void RepairDesign::repairDesign(double max_wire_length, void RepairDesign::performEarlySizingRound(int& repaired_net_count) { debugPrint(logger_, RSZ, "early_sizing", 1, "Performing early sizing round."); - // keep track of user annotations so we don't remove them std::set> slew_user_annotated; @@ -156,10 +155,10 @@ void RepairDesign::performEarlySizingRound(int& repaired_net_count) } } } + findBufferSizes(); sta_->searchPreamble(); search_->findAllArrivals(); - findBufferSizes(); for (int i = drvrs.size() - 1; i >= 0; i--) { sta::Vertex* drvr = drvrs[i];