静态时序分析的一些总结

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):在最快条件下检查保持时间

        

参考:

6-标准单元库_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值