From 3ed2041cbaddd4c29a019b5476471a114b5192d2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:36:26 +0000 Subject: [PATCH] drt: add -disable_auto_taper_ndr_nets flag to detailed_route Exposes AUTO_TAPER_NDR_NETS as a user-controllable option in the detailed_route Tcl command via a new -disable_auto_taper_ndr_nets flag. Fixes The-OpenROAD-Project/OpenROAD#9995 Signed-off-by: GitHub Copilot Agent-Logs-Url: https://github.com/hpretl/OpenROAD/sessions/bfe7f851-ca02-4d23-ae14-e570fbc76522 Co-authored-by: hpretl <57392031+hpretl@users.noreply.github.com> --- src/drt/README.md | 2 ++ src/drt/include/drt/TritonRoute.h | 1 + src/drt/src/TritonRoute.cpp | 1 + src/drt/src/TritonRoute.i | 6 ++++-- src/drt/src/TritonRoute.tcl | 6 ++++-- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/drt/README.md b/src/drt/README.md index 2fdeef94f6c..0d717b10abc 100644 --- a/src/drt/README.md +++ b/src/drt/README.md @@ -64,6 +64,7 @@ detailed_route [-save_guide_updates] [-repair_pdn_vias layer] [-single_step_dr] + [-disable_auto_taper_ndr_nets] ``` #### Options @@ -95,6 +96,7 @@ detailed_route | `-no_pin_access` | Disables pin access for routing. | | `-save_guide_updates` | Flag to save guides updates. | | `-repair_pdn_vias` | This option is used for PDKs where M1 and M2 power rails run in parallel. | +| `-disable_auto_taper_ndr_nets` | Disables automatic tapering of NDR nets at pin connections. By default, tapering is enabled. | #### Developer arguments diff --git a/src/drt/include/drt/TritonRoute.h b/src/drt/include/drt/TritonRoute.h index 574ffe08346..3327dd1d9c7 100644 --- a/src/drt/include/drt/TritonRoute.h +++ b/src/drt/include/drt/TritonRoute.h @@ -78,6 +78,7 @@ struct ParamStruct bool saveGuideUpdates = false; std::string repairPDNLayerName; int num_threads = 1; + bool autoTaperNdrNets = true; }; class TritonRoute : public PinAccessService diff --git a/src/drt/src/TritonRoute.cpp b/src/drt/src/TritonRoute.cpp index 84312a3ddc8..bdb4ba3cfb6 100644 --- a/src/drt/src/TritonRoute.cpp +++ b/src/drt/src/TritonRoute.cpp @@ -1324,6 +1324,7 @@ void TritonRoute::setParams(const ParamStruct& params) router_cfg_->SAVE_GUIDE_UPDATES = params.saveGuideUpdates; router_cfg_->REPAIR_PDN_LAYER_NAME = params.repairPDNLayerName; router_cfg_->MAX_THREADS = params.num_threads; + router_cfg_->AUTO_TAPER_NDR_NETS = params.autoTaperNdrNets; } void TritonRoute::addWorkerResults( diff --git a/src/drt/src/TritonRoute.i b/src/drt/src/TritonRoute.i index 5833c25cb6c..1fc56805a7b 100644 --- a/src/drt/src/TritonRoute.i +++ b/src/drt/src/TritonRoute.i @@ -66,7 +66,8 @@ void detailed_route_cmd(const char* outputMazeFile, int minAccessPoints, bool saveGuideUpdates, const char* repairPDNLayerName, - int drcReportIterStep) + int drcReportIterStep, + bool autoTaperNdrNets) { auto* router = ord::OpenRoad::openRoad()->getTritonRoute(); const int num_threads = ord::OpenRoad::openRoad()->getThreadCount(); @@ -89,7 +90,8 @@ void detailed_route_cmd(const char* outputMazeFile, minAccessPoints, saveGuideUpdates, repairPDNLayerName, - num_threads}); + num_threads, + autoTaperNdrNets}); router->main(); router->setDistributed(false); } diff --git a/src/drt/src/TritonRoute.tcl b/src/drt/src/TritonRoute.tcl index 75c0777e70f..41b2e886d57 100644 --- a/src/drt/src/TritonRoute.tcl +++ b/src/drt/src/TritonRoute.tcl @@ -28,6 +28,7 @@ sta::define_cmd_args "detailed_route" { [-save_guide_updates] [-repair_pdn_vias layer] [-single_step_dr] + [-disable_auto_taper_ndr_nets] } proc detailed_route { args } { @@ -38,7 +39,7 @@ proc detailed_route { args } { -top_routing_layer -verbose -remote_host -remote_port -shared_volume \ -cloud_size -min_access_points -repair_pdn_vias -drc_report_iter_step} \ flags {-disable_via_gen -distributed -clean_patches -no_pin_access \ - -single_step_dr -save_guide_updates} + -single_step_dr -save_guide_updates -disable_auto_taper_ndr_nets} sta::check_argc_eq0 "detailed_route" $args set enable_via_gen [expr ![info exists flags(-disable_via_gen)]] @@ -48,6 +49,7 @@ proc detailed_route { args } { # development. It is not listed in the help string intentionally. set single_step_dr [expr [info exists flags(-single_step_dr)]] set save_guide_updates [expr [info exists flags(-save_guide_updates)]] + set auto_taper_ndr_nets [expr ![info exists flags(-disable_auto_taper_ndr_nets)]] if { [info exists keys(-repair_pdn_vias)] } { set repair_pdn_vias $keys(-repair_pdn_vias) @@ -166,7 +168,7 @@ proc detailed_route { args } { $via_in_pin_bottom_layer $via_in_pin_top_layer \ $via_access_layer $or_seed $or_k $verbose \ $clean_patches $no_pin_access $single_step_dr $min_access_points \ - $save_guide_updates $repair_pdn_vias $drc_report_iter_step + $save_guide_updates $repair_pdn_vias $drc_report_iter_step $auto_taper_ndr_nets } proc detailed_route_num_drvs { args } {