Intel® Quartus® Prime Pro Edition User Guide: Scripting

ID 683432
Date 6/20/2022
Public

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

Document Table of Contents

3.1.33.9. get_clocks (::quartus::sdc)

The following table displays information for the get_clocks Tcl command:

Tcl Package and Version

Belongs to ::quartus::sdc

Syntax get_clocks [-h | -help] [-long_help] [-include_generated_clocks] [-nocase] [-nowarn] [-of_objects <object_collection> ] [ <filter> ]
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-include_generated_clocks Includes generated clocks derived from the matched clocks
-nocase Specifies the matching of node names to be case-insensitive
-nowarn Do not issue warning messages when querying for clocks
-of_objects <object_collection> Returns all clocks that target (defined on) or drive (determine data frequency of) the nodes in the collection.
<filter> Valid destinations (string patterns are matched using Tcl string matching)
Description
Returns a collection of clocks in the design. Use a clock collection
as the -from/to argument of a command (such as set_multicycle_path)
to refer to all nodes driven by the clocks in the collection.

# The following multicycle constraint applies to all paths ending at registers
# driven by clk
set_multicycle_path -to [get_clocks clk] 2

If a filter, which is a Tcl list of wildcards and must follow 
standard Tcl or Timing Analyzer-extension substitution rules, is specified, then 
get_clocks returns all clocks whose names match the filter. See the help for
use_timing_analyzer_style_escaping for filter rules.

If the -of_objects option is used, then a collection of registers, ports, pins, or cells
must be provided. get_clocks returns a collection of all the clocks that target these 
nodes, or if these nodes are not clock targets, all the clocks that drive these nodes.
This option cannot be used along with the clock name filter. Refer to the long help for 
examples of using the -of_objects option.
Example Usage
# get clocks that begin with 'c' or 'C', and print out their names and periods: 
set clocks [get_clocks c* -nocase]
foreach_in_collection clk $clocks {
    set name [get_clock_info -name $clk]
    set period [get_clock_info -period $clk]
    puts "$name: $period"
}

# getting the clock that targets a port, and its generated clock: 
create_clock -name my_clock -period 10.000 [get_ports CLK_100]
create_generated_clock -name my_gen_clock -divide_by 2 -source [get_ports CLK_100] [get_registers clk_div_reg] 
get_clocks -nowarn -of_objects [get_ports CLK_100] -include_generated_clocks 

# When you use the -nowarn option with the -of_objects option, your filter should be a node collection 
# generated by another get_* collection command as shown in the examples. 
# 
# When you use the -of_objects option, the Timing Analyzer may emit many clock-related warning messages. These warnings
# can typically be ignored using the -nowarn option if SDC files read later in the flow create more clocks.
# However, the -nowarn option also suppresses warnings caused by unmatched bareword filters. To only see warnings
# due to unmatched filters, use the -nowarn option; however, instead of passing in a bareword filter, pass in a
# node collection generated from another get_* collection command.

# display the name of the clocks that drive registers beginning with 'reg_':
foreach_in_collection clk_id [get_clocks -nowarn -of_objects [get_registers reg_*]] {
    puts [get_clock_info -name $clk_id]
}
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.