FPGA时序分析笔记(三)
时钟分组
时钟组的引出是因为电路中有异步时钟。
电路中有异步时钟意味着,各时钟之间的相位关系位置,从而没法计算建立检查(是否满足建立时间要求)、保持检查。所以让工具避免满足这类路径的时序要求。
可是用set_clock_groups实现。
当让set_clock_groups还可以避免互斥时钟之间的路径时序、以及串扰分析。
该指令的BNF为:
set_clock_groups
[-name group_name]
[-group clock_list]
[-logically_exclusive]
[-physically_exclusive]
[-asynchronous]
[-allow_paths]
[-comments comment_string]
logically_exclusive、-physically_exclusive、-asynchronous是互斥的。在creat_clock_groups命令中只能使用一个。
eg1:
creat_clock –preiod 10 –name C1 –waveform {0 5}[get_ports C1]
creat_clock–preiod 10 –name C2 –waveform {0 5}[get_ports C2`]
set_clock_groups-logically_exclusive –group C1 –group C2
eg2:
creat_clock –preiod 10 –name C1 –waveform {0 5}[get_ports C1]
creat_clock–preiod 10 –name C2 –waveform {0 5}[get_ports C2]
set_clock_groups- physically_exclusive –group C1 –group C2
eg3:
creat_clock –preiod 10 –name C1 –waveform {0 5}[get_ports C1]
creat_clock–preiod 10 –name C2 –waveform {0 5}[get_ports C2]
set_clock_groups -asynchronous –group C1 –group C2
- 这三个选项 说明时序电路路径分析工具不再考虑。
- 对于串扰分析来说:
- 时钟组设为-logically_exclusive,则时钟组之间的串扰分析就像两个同步时钟。
- 时钟组设为-physically_exclusive,则无法完成串扰分析。此时可以和-allow_paths选项一起使用,此选项用于信号完整性的检查。
- 时钟组设为-asynchronous,则假设干扰源和受扰者同在一个无限时序窗口。
可以在一个set_clock_groups 命令中设定多个组。
这个时钟组列表意味着一组时钟和其他组时钟保持逻辑独立、物理独立、或异步关系。如果仅设定了一个组,则组内所有时钟与设计中的其他时钟均保持逻辑独立、物理独立、或异步关系。这条命令不涉及组内关系
eg:
set_clock_groups -asynchronous –group [get_clocks {clk1 clk2 clk3}] –group [get_clock{ clk4 clk5clk6}]
这个指令表示:
clk1 异步与 clk4 clk5 clk6。
clk2 异步与 clk4 clk5 clk6。
clk3 异步与 clk4 clk5 clk6。
clk1 clk2 clk3 直接没有假设关系
clk4 clk5 clk6 直接没有假设关系
注意事项
- 就虽然定义了一个时钟组,只是说不考虑是否满足时序,而不代表他们同步了。
- 组内时钟之间的关系可以另外定义(利用set_clock_group 或者工具默认的设置)
- 三个选项使用总结:
- 如果设计中共存多个时钟,却没有相位关系,使用-asynchronous。
- 如果设计中共存多个时钟,且电路中仅选择其中一个,使用-logically_exclusive
- 如果设计中不能共存多个时钟,使用 -physically_exclusive