Altera SDC and TimeQuest API User Manual

Page 120

Advertising
background image

2–110

Chapter 2: SDC and TimeQuest API Package and Commands

sta

SDC and TimeQuest API Reference Manual

© December 2009

Altera Corporation

This command behaves the same as the report_timing command. However, instead of reporting the paths,
it returns a Tcl collection of path objects. You can retrieve path object data using the get_path_info and
get_point_info commands.

For help on the options shared with report_timing, see the report_timing help page.

Example

# 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

Advertising