File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -154,6 +154,10 @@ class GlobalRouter
154154 void setResistanceAware (bool resistance_aware);
155155 void setMacroExtension (int macro_extension);
156156 void setUseCUGR (bool use_cugr) { use_cugr_ = use_cugr; };
157+ void setSkipLargeFanoutNets (int skip_large_fanout)
158+ {
159+ skip_large_fanout_ = skip_large_fanout;
160+ };
157161
158162 // flow functions
159163 void readGuides (const char * file_name);
@@ -495,6 +499,7 @@ class GlobalRouter
495499 int total_diodes_count_;
496500 bool is_congested_{false };
497501 bool use_cugr_{false };
502+ int skip_large_fanout_{-1 };
498503
499504 // Region adjustment variables
500505 std::vector<RegionAdjustment> region_adjustments_;
Original file line number Diff line number Diff line change @@ -3744,6 +3744,9 @@ std::vector<Net*> GlobalRouter::findNets(bool init_clock_nets)
37443744 }
37453745 std::vector<Net*> clk_nets;
37463746 for (odb::dbNet* db_net : db_nets) {
3747+ if (skip_large_fanout_ > 0 && db_net->getTermCount () > skip_large_fanout_) {
3748+ continue ;
3749+ }
37473750 Net* net = addNet (db_net);
37483751 // add clock nets not connected to a leaf first
37493752 if (net) {
Original file line number Diff line number Diff line change @@ -146,6 +146,12 @@ set_use_cugr(bool use_cugr)
146146 getGlobalRouter ()->setUseCUGR (use_cugr);
147147}
148148
149+ void
150+ set_skip_large_fanout (int skip_large_fanout)
151+ {
152+ getGlobalRouter ()->setSkipLargeFanoutNets (skip_large_fanout);
153+ }
154+
149155void
150156global_route (bool start_incremental, bool end_incremental)
151157{
Original file line number Diff line number Diff line change @@ -146,6 +146,7 @@ sta::define_cmd_args "global_route" {[-guide_file out_file] \
146146 [-congestion_report_iter_step steps] \
147147 [-grid_origin origin] \
148148 [-critical_nets_percentage percent] \
149+ [-skip_large_fanout_nets fanout] \
149150 [-allow_congestion] \
150151 [-verbose] \
151152 [-start_incremental] \
@@ -157,7 +158,8 @@ sta::define_cmd_args "global_route" {[-guide_file out_file] \
157158proc global_route { args } {
158159 sta::parse_key_args " global_route" args \
159160 keys {-guide_file -congestion_iterations -congestion_report_file \
160- -grid_origin -critical_nets_percentage -congestion_report_iter_step
161+ -grid_origin -critical_nets_percentage -congestion_report_iter_step\
162+ -skip_large_fanout_nets
161163 } \
162164 flags {-allow_congestion -resistance_aware -verbose -start_incremental -end_incremental \
163165 -use_cugr}
@@ -214,6 +216,12 @@ proc global_route { args } {
214216
215217 grt::set_use_cugr [info exists flags(-use_cugr)]
216218
219+ if { [info exists keys(-skip_large_fanout_nets)] } {
220+ set fanout $keys(-skip_large_fanout_nets)
221+ sta::check_positive_integer " -skip_large_fanout_nets" $fanout
222+ grt::set_skip_large_fanout $fanout
223+ }
224+
217225 set allow_congestion [info exists flags(-allow_congestion)]
218226 grt::set_allow_congestion $allow_congestion
219227
You can’t perform that action at this time.
0 commit comments