-
Notifications
You must be signed in to change notification settings - Fork 934
drt: allow auto-taper to be disabled per net (#9995) #10721
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -295,6 +295,40 @@ proc assign_ndr { args } { | |
| } | ||
| } | ||
|
|
||
| sta::define_cmd_args "set_routing_disable_auto_taper" \ | ||
| { (-net name | -all_clocks) [-disable] [-enable] } | ||
|
|
||
| # Per-net control of the detailed router's auto-taper behavior. By default | ||
| # the detailed router tapers NDR (wide) nets down to minimum width near pin | ||
| # connections. Some nets (e.g. wide analog/NDR traces) must keep their full | ||
| # width all the way to the pin; use -disable to suppress auto-taper for those | ||
| # nets without recompiling. Use -enable to restore the default behavior. | ||
| proc set_routing_disable_auto_taper { args } { | ||
| sta::parse_key_args "set_routing_disable_auto_taper" args \ | ||
| keys {-net} flags {-all_clocks -disable -enable} | ||
| if { !([info exists keys(-net)] ^ [info exists flags(-all_clocks)]) } { | ||
| utl::error ORD 1016 "Either -net or -all_clocks need to be defined." | ||
| } | ||
| if { [info exists flags(-disable)] && [info exists flags(-enable)] } { | ||
| utl::error ORD 1017 "Only one of -disable or -enable may be specified." | ||
| } | ||
| # Default action is to disable auto-taper. | ||
| set disable [expr { ![info exists flags(-enable)] }] | ||
| set block [[[ord::get_db] getChip] getBlock] | ||
| if { [info exists keys(-net)] } { | ||
| set netName $keys(-net) | ||
| set net [$block findNet $netName] | ||
| if { $net == "NULL" } { | ||
| utl::error ORD 1018 "No net named ${netName} found." | ||
| } | ||
| $net setDisableAutoTaper $disable | ||
| } else { | ||
| foreach net [sta::find_all_clk_nets] { | ||
| $net setDisableAutoTaper $disable | ||
| } | ||
|
Comment on lines
+326
to
+328
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
| } | ||
| } | ||
|
|
||
| sta::define_cmd_args "set_debug_level" { tool group level } | ||
| proc set_debug_level { args } { | ||
| sta::check_argc_eq3 "set_debug_level" $args | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,7 +14,7 @@ | |
| #include "db/obj/frAccess.h" | ||
| #include "db/obj/frBTerm.h" | ||
| #include "db/obj/frBlockObject.h" | ||
| #include "db/obj/frInstTerm.h" | ||
| #include "db/obj/frNet.h" #include "db/obj/frInstTerm.h" | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
| #include "distributed/frArchive.h" | ||
| #include "dr/FlexDR.h" | ||
| #include "frBaseTypes.h" | ||
|
|
@@ -106,6 +106,11 @@ bool drNet::hasNDR() const | |
| return getFrNet()->getNondefaultRule() != nullptr; | ||
| } | ||
|
|
||
| bool drNet::autoTaperEnabled(bool global_enabled) const | ||
| { | ||
| return global_enabled && !fNet_->isAutoTaperDisabled(); | ||
| } | ||
|
|
||
| bool drNet::isClockNet() const | ||
| { | ||
| return fNet_->isClock(); | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Chaining
[[[ord::get_db] getChip] getBlock]can throw a Tcl error if no design or chip is loaded. It is safer to use the standardord::get_db_blockhelper and check if the returned block is valid.