1、标准单元库
1.1、标准单元库格式
标准单元库描述一个cell的一些信息,比如时延模型,电压电流和电容的单位信息等。
1.2、表中单元库中cell的描述
一个cell的基本信息如上,描述cell的引脚信息及引脚方向,input引脚到output引脚的时延信息,该cell是采用查找表来查时延信息,所以根据index_1和index_2的信息,便可以对应找values中值,确认时延信息。
1.3、非线性时延模型查找表
时钟上升的延迟和下降的延迟值通过查找表可以获得。
实际场景下,input transition和output 电容值不在查找表,这种情况需要使用高斯消员插值的方式,估算一个结果出来
设定四个参数ABCD,使用插值点周围4个查找表中的数值,按照高斯消员公式,带入公式,得四个方程,求出ABCD的值,然后把input transition和ouput电容值带入公式,即可得一个最终时延值
2、静态时序分析
2.1时钟描述
2.1.1定义时钟
主要从时钟源(引脚或者cell或者port)、时钟周期、占空比和边沿时间(上升延和下降沿时间)来确定。
creat_clock -name SYSCLK -period 20 -waveform {0 5} [get_ports 2 SCLK]
创建时钟SYSCLK,时钟周期是20, 0时刻是上升沿,5时刻是下降沿,拿到这个SCLK
2.1.2、设置时钟不确定度
set_clock_uncertainty -setup 0.2 [get_clocks CLK_CONFIG]
set_clock_uncertainty -hold 0.02 [get_clocks CLK_CONFIG]
命令的实际物理意义就是让时钟保持时间提前0.2,保持时间推后0.02数据才可变动,进行严苛的时序约束,让时序电路更稳定
上图中,红色箭头分别表示setup和hold时间推移的情况,绿色箭头表示实际约束情况。
理论分析,建立时间更早了,保持时间更长了,电路肯定更稳定了。
2.1.3、指定时钟的latency
source latency:时钟源到clock definition point
network tatency:clock definition point到clock point
指令格式如下:
2.2、生成时钟
2.2.1、概念
基于主时钟生成的时钟叫生成时钟
2.2.2、生成时钟定义
create_clock -name CLKP 10 [get_pins UPLL0/CLKOUT]
创建主时钟,命名为CLKP,时钟周期是10,占空比是默认值,即50%, 该时钟是从UPLL0的CLKOUT引出的。
create_generated_clock -name CLKPDIV2 -source UPLL0/CLKOUT -divide_by 2 {get_pins UFF0/Q}
创建一个2分频时钟,命名为CLKPDIV2,时钟源是UPLLO/CLKOUT时钟,该时钟是从UFF0的Q端引出
2分频时钟也可以直接定义程master 时钟,引出的问题就是失去了和主时钟的联系,认为是2个独立的时钟
有一些情况,生成时钟和源时钟已经失去联系,就可以将生成时钟定义为源时钟,比如,两个时钟输入源相与之后,作为下级的时钟输入,此时下级的时钟输入便可以直接定义为源时钟
3、约束input/output path
3.1约束input delay
上一级触发器到下一级触发器之间,有其他处理逻辑,但是没有时钟场景,下一级建立时间为了能够满足时序约束,需要在入端口上加delay延时,让下一级触发器建立满足时序要求
上图中起点是INP1,中断时DUA中的D端,使用set_input_delay 指定在特定时钟域CLKA下设置max时延,该时延时加在INP1上的
3.2约束output delay
约束和input delay设置类似。
除了上述两种场景,如果是input到output的时序路径,需要在input和output两个端口上都加上delay延时。
另外,设置input和output路径延时,还可以指定最大值和最小值。
4、虚拟时钟
是一种不和任何pin和port连接的时钟,主要是用来静态时序分析的时候,指定input/output delay的一个相关时钟参考,方便进行时序分析。
5、静态时序分析
5.1、相关概念
5.1.1、建立时间
采样时钟的边沿到来时,采样数据必须稳定的时间,称为建立时间,建立时间是数据保持稳定的最大的时间
5.1.1.1、建立时间的检查
数据传输的时间必须小于等于时钟传输到终点前的保持时间
5.1.1.2、建立时间时序报告分析
上图是lautch路径到达D端的一个时序信息,path列中出现的r和f分别表示上升还是下降的时间
上图是capture路径的时序分析,数据到达D端,至少要在9.66前到达,lautch路径理论上到达D端的时间是0.26,到达时间在要求时间之前就满足了,所以建立时间是可以满足建立时间检查公式要求的。
特别注意,添加了input delay的时序路径,input delay的时延是加到lautch路径中的,因为delay让数据保持稳定延后了。添加了output delay的时延,时延是需要在capture路径上减去这个delay时间才能算出期望最迟数据保持稳定的时间。
5.1.1.3、建立时间违例如何调整
从建立时间约束的公式:
上述公式中,只有Tdp时间是一个变量,其他时间都是固定值,所以建立时间发生违例,只能调整tdp时间,launch路径的时延最大值可以让公式满足逻辑关系即可。
5.1.2、保持时间
采样时钟的边沿到来后,采样数据需要依旧保持稳定的时间。保持时间是数据保持稳定的最小的时间。
5.1.2.1保持时间检查
5.1.2.2保持时间时序报告分析
lautch路径和capture路径时钟是同一个时钟沿,所以保持时间时序报告中,capture路径的时钟是从0时刻开始计算
保持路径需要加uncertainty时延,主要是让保持时间要求严苛点,让时钟保持时间长点,电路可以更稳定
最后可以看出,capture路径上,预期数据至少要保持的时刻是0.19,实际数据保持的时间到了0.33时刻,是大于要求的保持时间的,故而保持时间符合时序检查的公式
注意:input delay时延需要加上delay延时到lautch路径,output delay时延需要在capture路径上减去
5.1.2.3、保持时间违例如何调整
从保持时间逻辑关系可知,launch路径时延最小值需要大于捕获路径时序要求即可,还是通过调整逻辑处理单元的时延即可。
5.1.2.4、multicycle path时序分析
上级Q端数据到达本级D端,需要多个周期才能到达。
建立时间如何分析:lautch路径时序计算和普通单周期时间计算一致,capture路径时序计算,需要起始时间,从T变为nT,n取决于上级Q端输出需要几个周期达到本级D端。
保持时间如何分析:保持时间capture路径从0时刻开始计算,和单周期时序分析一致。
有个专栏也写的比较好:https://zhuanlan.zhihu.com/p/552258929
5.1.2.4、half cycle path时序分析
上级Q端数据在下降沿开始lautch,下级D端数据在上升沿开始capture。
建立时间如何分析:lautch路径时序计算起点是半周期时间下降沿(比如时钟周期是12ns,setup起始时间就是6ns),故起始时间是T/2,按照公式再计算其他时间即可,capture路径时序计算,起始时间在当前周期的上升沿,所以起始时间应该是周期T,n取决于上级Q端输出需要几个周期达到本级D端。
保持时间如何分析:lautch路径仍旧是从T/2时刻开始分析,capture路径从0时刻开始计算。
5.1.3、时序路径
path1: input port to D
path2: clk pin to D
path3: clk pin to output port
path2: input port to output port
5.1.4、时钟域
不同时钟域的电路称为异步路径,时序分析是在同步路径上进行,异步电路无法进行时序分析。
芯片通常是全局异步,局部同步。所以静态时序分析是发生在局部同步电路上。
5.1.4.1、异步路径时序分析
异步路径主要分为慢时钟域到快时钟域、快时钟域到慢时钟域2种时序约束分析。通常可以进行时序约束分析的异步路径,都是同一个时钟源,经过分频器分频得到的2个不同时钟域,可以进行时序约束分析。
1、慢时钟域到快时钟域的分析
建立时间分析:lautch路径,时钟起点是0,capture路径,最后一个周期起始时间作为setup分析的起点。
保持时间分析:lautch路径,时钟起点是0,capture路径,需要在前一个周期起始时间作为hold分析的起点,所以对应图中setup起点的前一个周期起点
2、快时钟域到慢时钟域的分析
建立时间分析:
保持时间分析:lautch和capture都是从0起始时刻开始分析
5.1.4.2、多时钟域
此部分内容参考:10-特殊时序检查-多时钟
线性多时钟域,指的是两个时钟域是倍数关系的时钟域,比如时钟周期为5、10、20这种
非线性多时钟域,指的是两个时钟域无倍数关系的时钟域,比如时钟周期是5、8这种
相位移动:时钟频率相同,时钟起点不同
1、线性多时钟域建立时间和保持时间的检查(建立时间和保持时间分析)
建立时间:选择capture和lautch路径时间起始时间最小的时钟边沿作为起始时刻,开始计算建立时间
保持时间:从时刻0开始作为起始时间,计算保持时间,保持时间是最严苛情况,所以从0开始满足约束,其他条件均满足。
2、非线性多时钟域建立时间和保持时间的检查(建立时间和保持时间分析)
需要选择2个时钟周期的最小公倍数时间长度作为分析区间,从这一大区间中,按照快且慢还是慢切快时钟域的关系,选择发送数据和接收数据边沿差值最小的时刻(最严苛条件),作为建立时间。
建立时间:选择capture和lautch路径时间起始时间最小的时钟边沿作为起始时刻,开始计算建立时间
保持时间:从时刻0开始作为起始时间,计算保持时间,保持时间是最严苛情况,所以从0开始满足约束,其他条件均满足。
3、相位移动情况(建立时间和保持时间分析)
和半周期分析原理一样
https://zhuanlan.zhihu.com/p/552258929
5.1.5、静态时序分析的条件
SLOW(高温低压SS):在最慢条件检查下检查建立时间
TYPICAL:
FAST(低温高压FF):在最快条件下检查保持时间
参考: