Skip to content

Commit 9f89bda

Browse files
committed
grt: add option to skip large fanout nets
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
1 parent 369e8f0 commit 9f89bda

4 files changed

Lines changed: 23 additions & 1 deletion

File tree

src/grt/include/grt/GlobalRouter.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff 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_;

src/grt/src/GlobalRouter.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff 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) {

src/grt/src/GlobalRouter.i

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff 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+
149155
void
150156
global_route(bool start_incremental, bool end_incremental)
151157
{

src/grt/src/GlobalRouter.tcl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff 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] \
157158
proc 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

0 commit comments

Comments
 (0)