下面内容是从某站视频课程和公众号书籍中整理,以及阅读ug906\ug949自己翻译整理的一些内容,时间太长忘记具体出处了。。
相关概念
基本概念
发送沿 :发送数据的源时钟的活动边缘
捕获边沿:捕获数据的目的时钟的活动边缘
源时钟:发送数据的时钟
目的时钟:捕获数据的时钟
建立要求:最苛刻建立约束的发送沿、捕获沿的关系
保持要求:最苛刻保持约束的发送沿、捕获沿的关系
建立关系:时序分析工具的建立检查
保持关系:时序分析工具的保持检查
Path Group.
路径端点所属的时钟组,通常由目的时钟定义的组
Path Type.
路径上执行的分析类型
Max —ste up/recover
Min----hold/removal
报告使用的哪个corner —fast or slow
Requirement
当起点和端点由同一个时钟或没有相移的时钟控制时,时序路径要求通常是:
○一个时钟周期进行设置/恢复分析。
○0ns进行保持/去除分析。
当路径在两个不同的时钟之间时,要求对应于任意源和目标时钟边缘之间最小的正差。 此值由时序异常约束(如多周期路径、最大延迟和最小延迟)覆盖。
Data Path Delay
通过路径的逻辑部分累积延迟。 时钟延迟被排除在外,除非时钟被用作数据。 延迟类型对应于路径类型行描述的内容。
Logic Levels
路径的数据部分中包含的每种类型的原语的数量,不包括起始点和端点单元格。
Clock Path Skew
源时钟的发射边缘与目标时钟的捕获边缘之间的插入延迟差,加上时钟悲观校正(如果有的话)
Destination Clock Delay(DCD)
从目标时钟源点到路径端点的累积延迟。
○对于最大延迟分析(设置/恢复),使用最小单元和净延迟值
○对于最小延迟分析(保持/移除),使用最大延迟值。
Source Clock Delay(SCD)
从时钟源点到路径起始点的累积延迟。 ○对于最大延迟分析(设置/恢复),使用最大单元格和净延迟值。 ○对于最小延迟分析(保持/移除),使用最小延迟值。
Clock Pessimium Removal
源时钟和目标时钟以不同类型的延迟报告,即使在它们的共同电路上,也会引入额外时钟偏差的绝对量。 在消除了这种额外的悲观之后,源时钟和目标时钟在它们的共同电路上没有任何偏差。 对于路由设计,最后一个公共时钟树节点通常位于时钟网络使用的路由资源中,并且在路径细节中没有报告。
Clock Uncertainty
任何一对时钟边缘之间可能的时间变化的总量。
不确定性包括计算的时钟抖动(系统和离散)、某些硬件原语引入的相位误差和用户在设计约束(set_clock_uncertainty)中指定的任何时钟不确定性)。
用户时钟不确定性是VivadoIDE时序引擎计算的不确定性的加性。
Total System Jitter(TSJ)
组合系统抖动应用于源时钟和目标时钟。
要全局修改系统抖动,请使用set_system_jitter约束。
虚拟时钟是理想的,因此没有任何系统抖动。
时序路径
时序路径:由设计实例之间的连接所定义,由相同或不同时钟控制的一对元器件(触发器)所构成。
公共时序路径:
(1)输入端口 >>>>内部时序单元
(2)时序单元>>>>时序单元
(3)内部时序元器件>>>>输出端口
(4)输入端口>>>>输出端口
建立和保持松弛 slack
slack -为正,满足时序要求。
-为负,不满足时序要求。
建立松弛 = 数据所要求建立时间 - 数据到达时间
保持松弛 = 撒除数据时间 - 所要求的保持时间
建立和保持检查
建立检查
要求时间 = 捕获沿时间 + 目的时钟路径延迟 - 时钟不确定性 - 建立时间
到达时间 = 发送沿时间 + 源时钟延迟 + 数据路径延迟
建立松弛 = 要求时间 - 到达时间
保持检查
要求时间 = 目的捕获延迟 + 目的时钟路径延迟 + 时钟不确定性 + 保持时间
到达时间 = 发送沿时间 + 源时钟延迟 + 数据路径延迟
保持松弛 = 到达 - 要求
恢复和去除检查
恢复时间 : 不活动 >>>>>下一个活动时钟沿之前
去除时间 : 活动>>>>>>不活动状态
源同步和系统同步
系统同步
上游器件和当前器件同一个clk,器件间的传输时延无法确定,不适用于高速传输,已淘汰。
源同步
上游器件输出clk给后端设备,保持数据和clk的相位相同。逐渐被高速串行总线替代(PCIE和SATA)
时序约束
时序约束概念
时钟网络延迟和时钟的不确定性
时钟进入FPGA或通过时钟树传播时,时钟边沿存在延迟,并且由于噪声和硬件行为导致时钟变化。
不确定性:时钟抖动,相位误差,及设计者指定的任何其他不确定性
时钟定义
- 基本时钟
- 虚拟时钟
- 生成时钟
时钟分组
综合工具会默认分析所有的时钟路径,除非使用了时钟分组和设置了伪路径的情况。
使用set_clock_group命令,时序分析只会分析group内部的时序路径,不会分析group之间的路径。
I/O延迟约束
UG949 UG903
即输入端口和第一级寄存器之间的延迟。
时序例外
- 多周期路径
set_muticyele_path
setup time针对捕获沿时钟,针对发送沿需加start
hold time 针对发送时钟沿,针对捕获沿需加end(这是约束的最小时间)
如果不修改保持时间的约束,工具在映射阶段将需要在数据的传输路径上插入大量的延迟以使其满足保持时间的要求,导致不必要的面积和功耗。
保持关系 1:保证活动的捕获沿 以前 建立发送沿没有被到达的沿捕获。
保持关系 2: 保证活动的发射沿 之后 没有被活动的捕获沿捕获。
-
多周期路径和时钟相移
clk同一个频率,相位不一致。
(正) 右移 ;负相移通常不需要约束。
set_muticycle_path 2 - setup -from [get_clocks CLK1] -to [get_clocks CLK2]
-
多周期路径从慢时钟到快时钟周期
CLK2是CLK1的N倍
set_…_path N -setup -from [get_clocks CLK1] -to [get clocks CLK2]