# get nets of the top 10 setup-critical paths
set preRoutes [get_nets -of [get_timing_paths -max_paths 10]]
# get nets of the top 10 hold-critical paths
lappend preRoutes [get_nets -of [get_timing_paths -hold -max_paths 10]]
# route $preRoutes based on timing constraints route_design -nets [get_nets $preRoutes] -auto_delay
# preserve the routing for $preRoutes and continue with the rest of the design route_design -preserve
As in example 2, a few critical nets are routed first, followed by routing of the
entire design. The difference is the use of -auto_delay
instead of
-delay
. The router performs timing-driven routing of the
critical nets, which sacrifices some runtime for greater accuracy. This is
particularly useful for situations in which nets are involved in both setup-critical
and hold-critical paths, and the routes must fall within a delay range to meet both
setup and hold requirements.