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.14. get_clock_fmax_info (::quartus::sta)

The following table displays information for the get_clock_fmax_info Tcl command:

Tcl Package and Version

Belongs to ::quartus::sta

Syntax get_clock_fmax_info [-h | -help] [-long_help]
Arguments -h | -help Short help
  -long_help Long help with examples and possible return values
Description
Reports potential Fmax for every clock in the design, regardless of
the user-specified clock periods. Fmax is only computed for paths
where the source and destination registers or ports are driven by the
same clock. Paths of different clocks, including generated clocks,
are ignored. For paths between a clock and its inversion, Fmax is
computed as if the rising and falling edges of the clock are scaled
along with fmax, such that the duty cycle (in terms of a percentage)
is maintained.

Restricted Fmax considers hold timing in addition to setup timing, as
well as minimum pulse and minimum period restrictions. Similar to
unrestricted Fmax, the restricted Fmax is computed as if the rising
and falling edges of the clock are scaled along with Fmax, such that
the duty cycle (in terms of a percentage) is maintained.  Refer to
hold timing reports (e.g., report_timing with the -hold option) or
minimum pulse width reports (report_min_pulse_width) for details about
specific paths, registers, or ports.

This command is similar to report_clock_fmax_summary, except that it
returns the results as a Tcl list for use in Tcl scripts.  Each entry
in the list represents one clock domain. Each entry is a Tcl list of
the clock name, fmax (MHz), and restricted Fmax (MHz).
Example Usage
project_open my_project

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

# Get domain summary object
set domain_list [get_clock_fmax_info]
foreach domain $domain_list {
	set name [lindex $domain 0]
	set fmax [lindex $domain 1]
	set restricted_fmax [lindex $domain 2]

	puts "Clock $name : Fmax = $fmax (Restricted Fmax = $restricted_fmax)"
}

# The following command is optional
delete_timing_netlist

project_close
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: Timing netlist does not exist. Use create_timing_netlist to create a timing netlist.