Timing Analyzer set_clock_groups Command

author-image

By

Many clocks can exist in a design; however, not all clocks interact with one another, and certain clock interactions are not possible. Asynchronous clocks are unrelated clocks (asynchronous clocks have different ideal clock sources). Exclusive clocks are not active at the same time (e.g, multiplexed clocks). The mutual exclusivity must be declared to the Timing Analyzer to prevent it from analyzing these clock interactions.

You can use the set_clock_groups command to specify clocks that are exclusive or asynchronous. The following list shows the set_clock_groups command, including the available options:

set_clock_groups
     [-asynchronous | -exclusive]
     -group <clock name>
     -group <clock name>
     [-group <clock name>] ...

Table 1 describes the options for the set_clock_groups command.

The following example shows a set_clock_groups command and the equivalent set_false_path commands.

# Clocks A & C are never active when clocks B & D are active
set_clock_groups -exclusive -group {A C} -group {B D}

# Equivalent specification using false paths
set_false_path -from [get_clocks A] -to [get_clocks B]
set_false_path -from [get_clocks A] -to [get_clocks D]
set_false_path -from [get_clocks C] -to [get_clocks B]
set_false_path -from [get_clocks C] -to [get_clocks D]
set_false_path -from [get_clocks B] -to [get_clocks A]
set_false_path -from [get_clocks B] -to [get_clocks C]
set_false_path -from [get_clocks D] -to [get_clocks A]
set_false_path -from [get_clocks D] -to [get_clocks C]