Get timing paths
Syntax
get_timing_paths [‑from <args>] [‑rise_from <args>] [‑fall_from <args>]
[‑to <args>] [‑rise_to <args>] [‑fall_to <args>] [‑through <args>]
[‑rise_through <args>] [‑fall_through <args>] [‑delay_type <arg>]
[‑setup] [‑hold] [‑max_paths <arg>] [‑nworst <arg>] [‑unique_pins]
[‑slack_lesser_than <arg>] [‑slack_greater_than <arg>] [‑group <args>]
[‑no_report_unconstrained] [‑user_ignored] [‑routable_nets]
[‑inter_slr <arg>] [‑sort_by <arg>] [‑filter <arg>] [‑regexp] [‑nocase]
[‑cell <args>] [‑quiet] [‑verbose]
Usage
| Name | Description |
|---|---|
[-from]
|
From pins, ports, cells or clocks |
[-rise_from]
|
Rising from pins, ports, cells or clocks |
[-fall_from]
|
Falling from pins, ports, cells or clocks |
[-to]
|
To pins, ports, cells or clocks |
[-rise_to]
|
Rising to pins, ports, cells or clocks |
[-fall_to]
|
Falling to pins, ports, cells or clocks |
[-through]
|
Through pins, ports, cells or nets |
[-rise_through]
|
Rising through pins, ports, cells or nets |
[-fall_through]
|
Falling through pins, ports, cells or nets |
[-delay_type]
|
Type of path delay: Values: max, min, min_max, max_rise, max_fall, min_rise, min_fall Default: max |
[-setup]
|
Get max delay timing paths (equivalent to -delay_type max) |
[-hold]
|
Get min delay timing paths (equivalent to -delay_type min) |
[-max_paths]
|
Maximum number of paths to return: Value >=1 Default: 1 |
[-nworst]
|
List N worst paths to endpoint: Value >=1 Default: 1 |
[-unique_pins]
|
for each unique set of pins, show at most 1 path per path group |
[-slack_lesser_than]
|
Include paths with slack less than this Default: 1e+30 |
[-slack_greater_than]
|
Include paths with slack greater than this Default: -1e+30 |
[-group]
|
Limit paths in this group(s) |
[-no_report_unconstrained]
|
Do not get unconstrained paths |
[-user_ignored]
|
only report paths which have infinite slack because of set_false_path or set_clock_groups timing constraints |
[-routable_nets]
|
store the number of routable nets traversed as a property on timing paths. |
[-inter_slr]
|
report timing paths crossing between SLRs: Values: any_crossing, data_crossing, clock_crossing, no_crossing |
[-sort_by]
|
Sorting order of paths: Values: group, slack Default: slack |
[-filter]
|
Filter list with expression |
[-regexp]
|
Patterns specified in filter are full regular expressions |
[-nocase]
|
Perform case-insensitive matching for patterns specified in filter (valid only when -regexp specified) |
[-cell]
|
run get_timing_paths on the cell |
[-quiet]
|
Ignore command errors |
[-verbose]
|
Suspend message limits during command execution |
Description
Gets timing path objects that meets the specified criteria. It predefines timing paths to pass to
the report_timing command for instance and creates custom reporting and
analysis.
The get_timing_paths command is very similar to the
report_timing command. However, get_timing_paths
returns timing path objects to query for properties, or passes to other Tcl commands for
processing, where report_timing returns a file or a string.
get_* commands return a container list of a single type of objects (e.g. cells, nets, pins, or ports). You can add new objects to the list (using lappend for instance), but you can only add the same type of object that is currently in the list. Adding a different type of object, or string, to the list is not permitted and will result in a Tcl error.
Arguments
-from <args> - (Optional) Defines the starting points of the timing paths to
run the analysis. You can specify ports, pins, or cells can be specified as timing path
startpoints. For a clock object, it analyzes all startpoints clocked by the named
clock.
-rise_from <args> - (Optional) Similar to the -from option,
but considers only the rising edge of signals coming from the startpoints. For a clock
object, it analyzes only the paths launched by the rising edge of the clock as
startpoints.
-fall_from <args> - (Optional) Similar to the -from option,
but considers only the falling edge of signals coming from the startpoints. For a clock
object, it analyzes only the paths launched by the falling edge of the clock are
considered as startpoints.
-to <args> - (Optional) Specifies the endpoints or destination objects of
timing paths to run the analysis.You can specify ports, pins, and cell objects as
endpoints. For a clock object, it analyzes endpoints clocked by the named clock.
-rise_to <args> - (Optional) Similar to the -to option, but
considers only the rising edge of signals going to the endpoints. For a clock object, it
analyzes only the paths captured by the rising edge of the named clock as endpoints.
-fall_to <args> - (Optional) Similar to the -to option, but
considers only the falling edge of signals going to the endpoints for timing analysis.
For a clock object, it analyzes only the paths captured by the falling edge of the named
clock as endpoints.
-through <args> - (Optional) Considers paths through the specified pins, cell
instance, or nets only for timing analysis. You can specify individual
-through (or -rise_through and
-fall_through ) points in sequence to define a specific path through
the design for analysis. The order of the specified through points is important to
define a specific path. You can also specify through points with multiple objects, in
which case the timing path passes through any of the specified through objects.
-rise_through <args> - (Optional) Similar to the -through
option, but it performs timing analysis on paths with a rising transition at the
specified objects.
-fall_through <args> - (Optional) Similar to the -through
option, but it performs timing analysis on paths with a falling transition at the
specified objects.
-delay_type <arg> - (Optional) Specifies the type of delay to analyze when running the timing report. The valid values are min, max, min_max, max_rise, max_fall, min_rise, min_fall. The default setting for -delay_type is max.
-setup - (Optional) Check for setup violations. This is the same as specifying -delay_type max.
-hold - (Optional) Check for hold violations. This is the same as specifying
-delay_type min.
-setup and -hold together, which is the same
as specifying -delay_type min_max.
-max_paths <arg> - (Optional) The maximum number of paths to output when
sorted by slack; or the maximum number of paths per path group when sorted by group, as
specified by -sort_by. The value must be greater than or equal to 1.
The default value is 1 and returns the single worst timing path or the worst path per
group.
-nworst <arg> - (Optional) The number of timing paths to show to each
endpoint. The timing report shows the N worst paths based on the specified value. The
value must be greater than or equal to 1. The default setting is 1.
-unique_pins - (Optional) Shows only one timing path per each unique pin or
group of pins. This is a boolean option, enabled by the use.
-inter_slr <args> - (Optional) Reports the timing paths based on
their SLR-crossing characteristics. Ensure to specify one of the following values:
any_crossing, data_crossing, clock_crossing, or no_crossing.
-routable_nets - (Optional) Reports the number of routable nets traversed as a
property of the returned timing paths.
-slack_greater_than <arg> - (Optional) Report timing on paths with a
calculated slack value greater than the specified value. Provides a range of slack
values of specific interest with -slack_lesser_than.
-slack_lesser_than <arg> - (Optional) Report timing on paths with a
calculated slack value less than the specified value. Provides a range of slack values
of specific interest with -slack_greater_than.
-group <args> - (Optional) Reports timing for paths in the specified path
groups.
-no_report_unconstrained - (Optional) Does not report timing on unconstrained
paths.
-user_ignored - (Optional) Shows the timing paths that are ignored during timing
analysis because the user has specified set_false_path or
set_clock_groups timing constraints. This is a boolean option,
enabled by its use.
-sort_by [ slack | group ] - (Optional) Sort timing paths by path groups, or by slack values. The default sort order is by slack values.
-filter <args> - (Optional) Filters the results list with the specified
expression. The -filter argument filters the list of objects returned
by get_timing_paths based on property values on the timing paths. You
can find the properties on an object with the report_property or
list_property commands. For timing path object, some properties
"DATAPATH_DELAY", "ENDPOINT_PIN" and "ENDPOINT_CLOCK" filters results.
The following example gets the first 100 most critical timing paths objects and returns only
those from the path group clk_tx_clk_core_1:
get_timing_paths -max_paths 100 -filter {GROUP == clk_tx_clk_core_1}
get_pins * -filter {DIRECTION == IN && NAME !~ "*RESET*"}
bool) type properties can be directly evaluated in filter expressions as true or not true: -filter {IS_PRIMITIVE && !IS_LOC_FIXED}
-regexp - (Optional) Specifies that the search <patterns> are written as regular expressions. Both search <patterns> and -filter expressions must be written as regular expressions when this argument is used. Xilinx® regular expression Tcl commands are always anchored to the start of the search string. You can add ".*" to the beginning or end of a search string to widen the search to include a substring. See http://perldoc.perl.org/perlre.html for help with regular expression syntax.
regexp is not anchored, and works as a standard Tcl command. For more information refer to http://www.tcl.tk/man/tcl8.5/TclCmd/regexp.htm.
-nocase - (Optional) Perform case-insensitive matching when a pattern has been specified. This argument applies to the use of -regexp only.
-cell <arg> - (Optional) Applies the get_timing_paths
command to the specified cell. You can specify the cells by name, or as an object
returned by the get_cells command.
-quiet - (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
set_msg_config command.Examples
The following example gets the five worst timing paths from the specified endpoint and reports all the properties of the fourth timing path in the list:
report_property -all [lindex [get_timing_paths -to [get_ports led_pins[*]]\
-nworst 5] 3]
The following example defines a procedure called custom_report and
report the 100 worst paths from the clk_tx_clk_core_1 path group:
proc custom_report { listOfPaths } {
puts [format {%-40s %-40s %-20s %-20s %7s} "Startpoint" "Endpoint" \
"Launch Clock" "Capture Clock" "Slack"]
puts [string repeat "-" 140]
foreach path $listOfPaths {
set startpoint [get_property STARTPOINT_PIN $path]
set startclock [get_property STARTPOINT_CLOCK $path]
set endpoint [get_property ENDPOINT_PIN $path]
set endclock [get_property ENDPOINT_CLOCK $path]
set slack [get_property SLACK $path]
puts [format {%-40s %-40s %-20s %-20s %7s} $startpoint $endpoint \
$startclock $endclock $slack]
}
}
set paths [get_timing_paths -group clk_tx_clk_core_1 -max_paths 100]\
custom_report $path
The following example uses get_timing_paths to perform a timing analysis on the specified paths:
set paths [get_timing_paths -group clk_tx_clk_core_1 -max_paths 100]
report_timing -of_objects $paths
The following example is the equivalent of:
report_timing -group clk_tx_clk_core_1 -max_paths 100
The following example returns timing paths where the logic levels are greater than the specified number of logic levels.
get_timing_paths -max_paths 1000 -filter {LOGIC_LEVELS > 1}
The following example returns the number of SLR crossings in the worst setup path with the datapath crossing SLRs:
get_property SLR_CROSSINGS [get_timing_path -inter_slr data_crossing]