set_clock_groups:指定clock groups 之间的关系是mutually exclusive or asynchronous ,这些clock 间的timing path 是不做分析的。
status set_clock_groups
-physically_exclusive | -logically_exclusive | -asynchronous [-allow_paths]
[-name clock_group_name]
-group clock_list
[-comment comment_string]
其中-physically_exclusive 意思为:指定clock_group 与其他clock 是physically exclusive (物理互斥)。physically-exclusive clocks 不能同时存在在design physically。例如multiple clocks 被定义在相同的source pin 上。
-logically_exclusive 意思为:指定clock_group 与其他clock 是logically exclusive(逻辑互斥)。例如由mux 选择的多个clocks 是是逻辑互斥clocks ,但是在design 中彼此可能会相互连接。如果在design中的某个地方存在一些物理路径,则不应将这些多路复用clocks设置为logically_exclusive。
-physically_exclusive | -logically_exclusive | -asynchronous 三者是相互排斥的,你必须选择其中一个
-allow_paths意思为:启用指定clock groups之间的时序分析。如果未指定此选项,则disabled 定义的时钟组之间的timing分析。这个option 只适用在asynchromous clock groups。
-group:指定clocks 在一个group 里。在单个命令执行中可以多次使用-group选项.但是在执行单个命令时, 一个clock 只能在一个group 中出现。如果想要一个clock 出现在多个group 中,你必须执行set_clock_groups 多次。默认情况下,当定义了exclusive 或者asynchronous clock groups ,generated clock 和its master clock 不能在同一个group 中,如果有需要,将这些时钟明确地放在同一组中。
每个-group实例指定一组时钟,这些clocks 与其他group 中的clocks 互斥或异步。
如果只指定一个group,则意味着该group 中的clocks 与设计中的所有其他clocks是互斥或异步。
为这个组创建一个默认的其他组。一旦创建了新的时钟,它就会自动包含在这个组中。
如果为同一对时钟定义了多个时钟组关系,那么physically exclusive 优先级最高。
默认的话,这些clocks 间的timing paths 是不做timing analysis 的考虑,这与声明这些clocks 为false path 是相似的。
当你指定了两个clocks 作为exclusive or asynchronous 的话,就不需要手动在设置false path。
如果指定的两个clcoks 是exclusive or asynchronous的话,这两个clocks 已经设置了false path ,那么set_false_path 会被set_clock_groups 命令覆盖。其他的exceptions 不会影响。
解除set_clock_groups command 使用remove_clock_groups。报告design 中的clock groups 定义使用report_clock -group
set_clock_groups 仅支持当前的scenario.
具体例子如下:
1.定义两个asynchronous clock domains:
set_clock_groups -asynchronous -name g1 \
-group CLK1 -group CLK2
2.定义一个clock name 为CLK1 与design 中的其他clocks 为asynchronous 关系
set_clock_groups -asynchronous -group CLK1
3.下面分析在不手动加入false path 的情况下,同时分析每个寄存器的多个clocks.
假设一个设计包含两对相互排斥的多路复用时钟:CLK1和CLK2 ;CLK3和CLK4
如果每对时钟都是由不同的信号选择的,则必须执行两个命令才能同时分析所有四个时钟
set_clock_groups -logically_exclusive \
-group CLK1 -group CLK2
set_clock_groups -logically_exclusive \
-group CLK3 -group CLK4
如果每对时钟都是由相同的信号选择的,则必须执行一个命令就能同时分析所有四个时钟
set_clock_groups -logically_exclusive \
-group {CLK1 CLK3} -group {CLK2 CLK4}