Intel® Quartus® Prime Pro Edition User Guide: Scripting

ID 683432
Date 9/26/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

4.1.35.29. get_path_info (::quartus::sta)

The following table displays information for the get_path_info Tcl command:

Tcl Package and Version

Belongs to ::quartus::sta

Syntax get_path_info [-h | -help] [-long_help] [-advanced] [-arrival_points] [-arrival_time] [-borrow_dst] [-borrow_src] [-clock_relationship] [-clock_skew] [-corner] [-data_delay] [-from] [-from_clock] [-from_clock_is_inverted] [-hold_end_multicycle] [-hold_start_multicycle] [-latch_time] [-launch_time] [-num_logic_levels] [-operating_conditions] [-required_points] [-required_time] [-setup_end_multicycle] [-setup_start_multicycle] [-slack] [-to] [-to_clock] [-to_clock_is_inverted] [-type] <path_ref>
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-advanced Return clock pessimism due to advanced effects
-arrival_points Return a collection of point objects for the arrival path
-arrival_time Return the data arrival time for the path
-borrow_dst Return the time borrowed at destination (when the path ends at a level-sensitive latch)
-borrow_src Return the time borrowed at source (when the path starts at a level-sensitive latch)
-clock_relationship Return the clock relationship for the path
-clock_skew Return the clock skew for the path
-corner Returns a string indicating the operating conditions at which the path's delay values are found
-data_delay Return the data delay for the path
-from Return the source node ID
-from_clock Return the source clock ID
-from_clock_is_inverted Return 1 if the source clock is inverted, 0 otherwise
-hold_end_multicycle Return the hold end multicycle for the path
-hold_start_multicycle Return the hold start multicycle for the path
-latch_time Return the latch time for the path
-launch_time Return the launch time for the path
-num_logic_levels Return the number of logic levels on the path between the to node and from node
-operating_conditions Returns a string indicating the operating conditions at which the path's delay values are found
-required_points Return a collection of point objects for the required path
-required_time Return the data required time for the path
-setup_end_multicycle Return the setup end multicycle for the path
-setup_start_multicycle Return the setup start multicycle for the path
-slack Return the slack for the path
-to Return the destination node ID
-to_clock Return the destination clock ID
-to_clock_is_inverted Return 1 if the destination clock is inverted, 0 otherwise
-type Return the type of this path. Possible return values are: "setup", "hold", "recovery", "removal", "max_path", "min_path"
<path_ref> Path object
Description
		Returns information about the referenced timing path
		object.

		You can generate references to path objects with the
		get_timing_paths and get_path functions.

		The -type option returns one of the following types:
		"setup", "hold", "recovery", "removal", "max_path", or
		"min_path".

		The -from and -to options return the ID of the nodes
		at the start and end, respecitvely, of the arrival
		path. If there is no node, an empty string is
		returned. The -from node remains the same, regardless of
		the level of clock detail provided. It is always the
		first node clocked by the -from clock in the data
		arrival path. You can use the node ID with the
		get_node_info function to obtain additional
		information about the node.

		The -from_clock and -to_clock options return the ID of
		the launching and latching clocks, respectively. If
		there is no clock, an empty string is returned. You
		can obtain additional information about the clocks
		using the get_clock_info function.

		Path objects generated by get_path do not have clock
		information, required points, or meaningful slack
		values.

		The -arrival_points and -required_points options
		return a collection of point objects for the arrival
		and required paths, respectively. By iterating over
		the collection, and using the get_point_info function,
		you can obtain specific details about each portion of
		the path.

		If a path was created with additional clock detail,
		the elements of the clock path are included in
		each collection of points.

		The values for the -from, -to, and other options are
		either collections or a Tcl list of wildcards used to
		create collections of appropriate types. The values
		used must follow standard Tcl or Timing Analyzer-extension
		substitution rules. See the help for
		use_timing_analyzer_style_escaping for details.

		When the path starts at a level-sensitive latch, the
		-borrow_src option may be used to get the time borrowed
		at the source. Similarly, when the path ends at a level-sensitive
		latch, -borrow_dst may be used to get the time borrowed at
		the destination. When these options are used with anything
		other than level-sensitive latches, zero is returned.

		For level-sensitive latches, when you use the -launch_time
		or -latch_time options, the times reported do not include time borrowed.

		The operating condition corresponding to all of a path's delay and time
		values can be found using the -corner option.
Example Usage
# Define a few helper procedures to print out points
# on a path, and the path itself
proc get_clock_string { path clk } {
	set clk_str ""
	set clk_id [ get_path_info $path -${clk}_clock ]

	if { $clk_id ne "" } {
		set clk_str [ get_clock_info $clk_id -name ]

 		if { [ get_path_info $path -${clk}_clock_is_inverted ] } {
			append clk_str " (INVERTED)"
		}
	}

	return $clk_str
}

proc print_point { point } {
	set total     [ get_point_info $point -total    ]
	set incr      [ get_point_info $point -incr     ]
	set node_id   [ get_point_info $point -node     ]
	set type      [ get_point_info $point -type     ]
	set rf        [ get_point_info $point -rise_fall]
	set node_name ""

	if { $node_id ne "" } {
		set node_name [ get_node_info $node_id -name ]
	}

	puts [format "%10s %8s %2s %-6s %s" $total $incr $rf $type $node_name ]
}

proc print_path { path } {
	puts "Slack      : [ get_path_info $path -slack]"
	puts "To Clock   : [ get_clock_string $path to ]"
	puts "From Clock : [ get_clock_string $path from]"
	puts ""
	puts [format "%10s %8s %-2s %-6s %s" "Total" "Incr" "RF" "Type" "Name"]
	puts "=================================================================="

	foreach_in_collection pt [ get_path_info $path -arrival_points ] {
		print_point $pt
	}
}

project_open my_project

# Always create the netlist first
create_timing_netlist
read_sdc my_project.sdc
update_timing_netlist

# And now simply iterate over the 10 worst setup paths, printing each path
foreach_in_collection path [ get_timing_paths -npaths 10 -setup ] {
	print_path $path
	puts ""
}

delete_timing_netlist
project_close
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: Object with ID <string> is not an object of type <string>. Specify the ID of an object with the correct type.