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]
[‑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. |
[-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 meet the specified criteria. This command can be used to predefine timing paths to pass to the report_timing
command for instance. Another usage of this command is to create 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 which can be queried for properties, or passed 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 be analyzed. Ports, pins, or cells can be specified as timing path startpoints. You can also specify a clock object, and all startpoints clocked by the named clock will be analyzed.
-rise_from
<args> - (Optional) Similar to the -from
option, but only the rising edge of signals coming from the startpoints are considered for timing analysis. If a clock object is specified, only the paths launched by the rising edge of the clock are considered as startpoints.
-fall_from
<args> - (Optional) Similar to the -from
option, but only the falling edge of signals coming from the startpoints are considered for timing analysis. If a clock object is specified, 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 be analyzed. Ports, pins, and cell objects can be specified as endpoints. A clock object can also be specified, in which case endpoints clocked by the named clock are analyzed.
-rise_to
<args> - (Optional) Similar to the -to
option, but only the rising edge of signals going to the endpoints is considered for timing analysis. If a clock object is specified, only the paths captured by the rising edge of the named clock are considered as endpoints.
-fall_to
<args> - (Optional) Similar to the -to
option, but only the falling edge of signals going to the endpoints is considered for timing analysis. If a clock object is specified, only the paths captured by the falling edge of the named clock are considered as endpoints.
-through
<args> - (Optional) Specifies that only paths through the specified pins, cell instance, or nets are considered during 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 can pass through any of the specified through objects.
-rise_through
<args> - (Optional) Similar to the -through
option, but timing analysis is only performed on paths with a rising transition at the specified objects.
-fall_through
<args> - (Optional) Similar to the -through
option, but timing analysis is only performed 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
can be specified 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
. This is specified as a value greater than or equal to 1. The default value is 1, returning 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 will report the N worst paths based on the specified value. This is specified as a value greater than or equal to 1. The default setting is 1.
-unique_pins
- (Optional) Show only one timing path per each unique pin or group of pins. This is a boolean option, enabled by its use.
-routable_nets
- (Optional) Report the number of routable nets traversed as a property of the timing paths returned.
-slack_greater_than <arg>
- (Optional) Report timing on paths with a calculated slack value greater than the specified value. Used with -slack_lesser_than
to provide a range of slack values of specific interest.
-slack_lesser_than <arg>
- (Optional) Report timing on paths with a calculated slack value less than the specified value. Used with -slack_greater_than
to provide a range of slack values of specific interest.
-group
<args> - (Optional) Report timing for paths in the specified path groups.
-no_report_unconstrained
- (Optional) Do not report timing on unconstrained paths.
-user_ignored
- (Optional) Show 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) Filter 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. In the case of the timing path object, "DATAPATH_DELAY", "ENDPOINT_PIN" and "ENDPOINT_CLOCK" are some of the properties that can be used to filter 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) Apply the get_timing_paths
command to the specified cell. Cells can be specified 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
Get the five worst timing paths from the specified endpoint and report 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]
Define a procedure called custom_report and report the 100 worst paths from the clk_tx_clk_core_1 path group using the procedure.
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
Use 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
Which is the equivalent of:
report_timing -group clk_tx_clk_core_1 -max_paths 100
Return 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}