set_clock_groups 用来控制各个时钟的之间的关系,该命令有如下option:
set_clock_groups
-name name #用来指定 clock groups 的名字
-logically_exclusive # 用来指定时钟之间的互斥关系为逻辑互斥
-physically_exclusive # 用来指定时钟之间的互斥关系为物理互斥
-asynchronous # 用来指定时钟之间的互斥关系为异步
-allow_paths # 用来允许异步时钟进行时钟路径分析,默认情况下是不分析的
-group clocks_list # 时钟组名字划定时钟名
注: -logically_exclusive 用来指定同步时钟在有限的时间窗口进行SI分析。
该选项主要用在多个时钟通过一个选择器,但是之间的时钟路径可能有相互的耦合。
-physically_exclusive 对同步时钟不进行SI分析。
该选项主要用在多个时钟通过一个选择器,但是之间的时钟不可能同时存在。
-asynchronous 对异步时钟进行无线长时钟窗口进行SI分析。
例:
set PLL_1G 1
set PLL_800M 1.25
set PLL_500M 2
set PLL_20M 50
### create clock for design #####
create_clock -name PLL_1G -period 1 [ get_ports clk ]
create_clock -name PLL_800M -period 1.25 [ get_ports clk ] -add
create_clock -name PLL_500M -period 2 [ get_ports clk ] -add
create_clock -name PLL_20M -period 50 [ get_ports clk ] -add
#### define clock path group ###
set_clock_groups -asynchronous -group PLL_1G -group PLL_800M -group PLL_500M -group PLL_20M
由于上面的四个时钟是独立存在的,之间没有同步关系,也不需要时钟之间的相互检查,所以对每一个时钟设为异步时钟组。