@@ -687,10 +687,11 @@ BnetPtr Rebuffer::bufferForTiming(const BnetPtr& tree,
687687 // of the algorithm (wire_length_step_ should have been chosen
688688 // to always allow a minimal size buffer to drive itself without
689689 // ERC)
690- logger_->critical (RSZ ,
691- 2008 ,
692- " buffering pin {}: wire step options empty" ,
693- network_->name (pin_));
690+ logger_->warn (RSZ ,
691+ 2008 ,
692+ " Skipping net buffering because no buffer can "
693+ " drive the wire load on net connected to pin {}." ,
694+ network_->name (pin_));
694695 }
695696 return opts1;
696697 }
@@ -737,13 +738,14 @@ BnetPtr Rebuffer::bufferForTiming(const BnetPtr& tree,
737738 insertBufferOptions (opts, level, std::min (remaining_wl, step));
738739
739740 if (opts.empty ()) {
740- logger_->warn (RSZ ,
741- 2007 ,
742- " buffering pin {}: wire step options empty at "
743- " round {}, falling back to last valid options" ,
744- network_->name (pin_),
745- round);
746- opts = last_valid_opts;
741+ logger_->warn (
742+ RSZ ,
743+ 2007 ,
744+ " Skipping buffer insertion along long wire "
745+ " segment on net connected to pin {} at round {} because no "
746+ " buffer can drive the wire load." ,
747+ network_->name (pin_),
748+ round);
747749 break ;
748750 }
749751 round++;
@@ -843,7 +845,13 @@ BnetPtr Rebuffer::bufferForTiming(const BnetPtr& tree,
843845 tree);
844846
845847 if (top_opts.empty ()) {
846- logger_->critical (RSZ , 2009 , " buffering pin {}: no options produced" );
848+ logger_->warn (
849+ RSZ ,
850+ 2009 ,
851+ " Skipping buffering because no valid buffering solution satisfying the "
852+ " design rules can be found for net connected to pin {}." ,
853+ network_->name (pin_));
854+ return nullptr ;
847855 }
848856
849857 FixedDelay best_slack = -FixedDelay::INF ;
0 commit comments