目录
上篇一起学习了STA环境的建立,本篇就接着上篇,开始学习时序验证的核心知识,真正开始时序的验证……
1、建立时间检查
满足以下的数学关系,以满足建立时间检查的要求:(逻辑连接图见第一张图)
其中,Tlaunch 、Tcapture、Tcycle、Tsetup、Tck2q 是固定的,只有 Tdp 可以通过优化设计进行改动的。
时序报告分析查看:
1、触发器之间路径
逻辑和时序如下:
时序报告:
裕量大于等于零,表明满足时序要求。
2、输入到触发器的路径
逻辑及时序如下:
时序报告:
3、触发器到输出的路径
逻辑和时序图:
时序报告:
4、输入到输出的路径
逻辑和路径:
时序报告:
2、保持时间检查
保持时间检查满足如下关系:
其中,Tlaunch 、Tcapture、Tsetup、Tck2q 是固定的,只有 Tdp 可以通过优化设计进行改动的。
1、触发器之间的路径
时序报告:
2、输入端到触发器的路径
逻辑和时序:
检查报告:
3、触发器到输出端的路径
逻辑和时序:
时序报告:
实际时钟情景:
4、输入到输出路径
此处的连接图与建立时间的输入到输出路径相同。
保持时间裕量 = 需要的到达时间 – 实际的到达时间。
3、多周期路径
数据传输跨越多个时钟周期。
时序报告:
为了进行正常的时序分析,需要进行多周期约束:
create_clock -name CLKM -period 10 [get_ports CLKM]
#以下是 建立时间 的多周期约束
set_multicycle_path 3 -setup \
-from [get_pins UFF0/Q] \
-to [get_pins UFF1/D]
# 以下是保持时间的多周期约束
set_multicycle_path 2 -hold -from [get_pins UFF0/Q] \
-to [get_pins UFF1/D]
总结:多周期约束时,建立时间延迟N个时钟周期,保持时间需要延迟N-1个时钟周期。
4、半周期路径
捕获沿和发起沿不同性质时:
时序报告:(建立和保持时间检查)
5、去除时间检查
去除时间指的是:异步控制信号释放时刻和时钟边沿的时间间隔。保证其有效作用。
6、恢复时间检查
恢复时间指的是:异步控制信号释放时刻和下一个时钟边沿的时间间隔。保证其有效撤离。
7、伪路径
伪路径,若声明,STA就不再分析。设置伪路径,可以提高分析工具的效率。
一般来说,跨时钟域信号涉及的路径都不用STA,所以跨时钟域的路径都需要设置伪路径。
注意伪路径约束时 from to 是单向路径。
示例:
set_false_path -from [get_clocks SCAN_CLK] \
-to [get_clocks CORE_CLK]
# Any path starting from the SCAN_CLK domain to the
# CORE_CLK domain is a false path.
set_false_path -through [get_pins UMUX0/S]
# Any path going through this pin is false.
set_false_path \
-through [get_pins SAD_CORE/RSTN]]
# The false path specifications can also be specified to,
# through, or from a module pin instance.
set_false_path -to [get_ports TEST_REG*]
# All paths that end in port named TEST_REG* are false paths.
set_false_path -through UINV/Z -through UAND0/Z
# Any path that goes through both of these pins
# in this order is false.
建议:
少用 -through 选项;
尽量直接抓取时钟;
#建议:
set_false_path -from [get_clocks clockA] \
-to [get_clocks clockB]
#不建议,比较慢
set_false_path -from [get_pins {regA_*}/CP] \
-to [get_pins {regB_*}/D]
参考说明
【1】B站 邸老师学习视频。
【2】Static Timing Analysis for Nanometer Designs A Practical Approach . J. Bhasker • Rakesh Chadha