静态时序分析STA公式推导以及本质分析(基础概念、多角度公式推导、本质分析)

静态时序分析STA对于同步时序电路必不可少,通过静态时序分析,一方面可以增加系统稳定性减少亚稳态的发生,另一方面可以最大限度的提升系统工作频率。因此,对静态时序相关概念的理解,以及掌握静态时序分析的方法具有重要意义:

目录

一、STA目的与意义:

二、基础概念:

三、建立裕量、保持裕量角度分析STA公式

建立裕量:

保持裕量:

四、STA公式的本质及公式再推导

建立时间分析 

保持时间分析 

五、STA公式以及实际电路STA分析:

六、参考文献:


一、STA目的与意义:

通过STA可以提高系统工作主频(运行速度)以及增加系统的稳定性(避免亚稳态
    进行静态时序分析,主要目的就是为了提高系统工作主频以及增加系统的稳定性。对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。

二、基础概念:

静态时序的分析,涉及到了众多基础概念;在进行静态时序分析之前,应该先理清基础概念,

1、建立和保持时间:

触发器在时钟上升沿来临时对数据进行采样,产生对应的输出。但是实际器件无法瞬时完成数据采样这一过程,需要数据在时钟沿前后均稳定一定时间,即(触发器的)建立时间与保持时间。

    建立时间Tsu:时钟有效沿到来之前数据必须保持稳定的最小时间;
    保持时间Th:时钟有效沿到来之后数据必须保持稳定的最小时间;

2、一些常见延时:

触发器输出延时Tco:从时钟触发开始,直到有效数据输出的器件内部所有延时的总和;

时钟偏斜Tskew :一个时钟沿到达两个不同寄存器时钟端的时间偏移;即Tskew = Tclk2 - Tclk1;

组合逻辑延时Tcomb_logic:数据经过组合逻辑部分所需的时间;

线网延时Tnet:数据在线上传输所需的时间,一般较小可以忽略;

3、时钟路径/数据路径

 

 

发射沿与锁存沿:
    发射沿launch edge:时序分析起点,第一级寄存器数据变化的时钟边沿,是静态时序分析的起点;(即进行STA分析模块的起始时刻,对应输入端clk边沿,如图中的a时钟上升沿)
    锁存沿latch edge:时序分析终点,数据锁存的时钟边沿,是静态时序分析的终点;(即进行STA分析模块的终止时刻,对应输出数据至目的触发器的clk边沿,如图中的c时钟上升沿)

数据到达时间(数据路径):数据从时钟上升沿来临(发射沿)直到到达目的触发器输入端(锁存沿)的时间;
    以简单的二级触发器示例:

   数据经过的路径为:

        A-时钟树1-D1触发器-组合逻辑-线网传输-D2触发器
        Data Arrival Time = launch edge + Tclk1 + Tco + Tcomb_logic + Tnet

注意:数据到达时间用于与时间传输的比较,因此二者均从 launch edge 作为起点,虽然数据实际没经过时钟树,但是数据需要等待这么久直到时钟上升沿到达D1才能继续传输。因此,应将这些时钟(路径)包含在内;
   

时钟到达时间(时钟路径):时钟从latch edge到达目的寄存器(destination register)输入端所用的时间

时钟经过的路径为:

        A-时钟树2-D2触发器

    Time Arrival Time = latch edge + Tclk2

三、建立裕量、保持裕量角度分析STA公式

建立裕量

数据不应来得太晚,即数据应在D2的建立时间之前到达,如图:

恰好满足建立时间的数据来临时间:

Tr_su = 时钟到达时间 - 建立时间

         = latch edge + Tclk2 - Tsu

实际数据到达时间:

Data Arrival Time = launch edge + Tclk1 + Tco + Tcomb_logic + Tnet

因此,建立时间裕量 = 恰好满足建立时间的数据来临时间 - 实际数据到达时间

Tsetup_slack = Data Arrival Time - Tr_su

                      = latch edge + Tclk2 - Tsu -(launch edge + Tclk1 + Tco + Tcomb_logic + Tnet)

                      = (latch edge-launch edge) + (Tclk2 -Tclk1 ) -Tsu - Tco - Tcomb_logic - Tnet

                      = Tperiod + Tskew - Tsu - Tco - Tcomb_logic - Tnet

建立时间裕量应大于0,即数据应在D2的建立时间之前到达,有:

Tsetup_slack = Tperiod + Tskew - Tsu - Tco - Tcomb_logic - Tnet >= 0;

保持裕量

数据应保持一段时间,即数据应在D2的保持时间之后再结束,如图:

 

恰好满足保持时间的数据结束时间:

Tr_h = 时钟到达时间 + 保持时间

         = latch edge + Tclk2 + Th

实际数据结束时间为下一帧数据到达时间:

Data change Time = Tperiod + Data Arrival Time

                                = Tperiod + launch edge + Tclk1 + Tco + Tcomb_logic + Tnet

                                = latch edge + Tclk1 + Tco + Tcomb_logic + Tnet

因此,保持时间裕量 = 恰好满足保持时间的数据结束时间 - 实际数据结束时间

Thold_slack = Data change Time - Tr_h

                    = latch edge + Tclk1 + Tco + Tcomb_logic + Tnet -(latch edge + Tclk2 + Th)

                    = -Tskew + Tco + Tcomb_logic + Tnet - Th

保持时间裕量应大于0,即数据应在D2的保持时间之后再改变,有:

Thold_slack = -Tskew + Tco + Tcomb_logic + Tnet - Th >= 0;

结论:

                 Tsetup_slack = Tperiod + Tskew - Tsu - Tco - Tcomb_logic - Tnet >= 0;

                 Thold_slack = -Tskew + Tco + Tcomb_logic + Tnet - Th >= 0;

四、STA公式的本质及公式再推导

STA分析的本质就是,数据到达D2的时间不能太晚,否则难以满足触发器的建立时间,导致这次数据传输失败;数据到达D2的时间也不能太快,否则会冲掉上一时钟的数据,导致上一时钟数据难以满足触发器的保持时间,导致上次数据传输失败;

如图:

clk1是D1的时钟输入,clk2是D2的时钟输入,两者有时间延迟(即时钟到达时间);ab、cd、ef应两两对应,对应理论上的同一时钟上升沿,只不过有时间延迟罢了;

dataD1是触发器D1的输入,经过一定时间传输至触发器D2作为下一个clk上升沿来临时D2的输入。dataD1.1是clk上升沿a的触发器D1的输入,dataD1.2是下一clk上升沿c的触发器D1的输入;dataD2.1是dataD1.1传输至D2的结果,相比dataD1.1滞后一个clk周期,与clk上升沿c/d对应,dataD2.2是dataD1.2传输至D2的结果,相比dataD1.2滞后一个clk周期,与clk上升沿e/f对应;

 

建立时间分析 

建立时间分析两级触发器的不同时钟沿建立时间满足时,上一时钟驱动的数据才能在下一时钟沿来临时正确到达下一级触发器;
    

建立时间分析的实质是:当前时钟沿的D1的输出不能太慢,以至于在下一时钟沿还未到达D2。如上图,从传输时间延迟和数据延迟入手,假设a时刻D1采集到数据dataD1.1并传递给D2,那么D2只要在d时刻(ab的下一clk)上升沿采到数据dataD2.1即可,所以数据有一整个Tperiod的时间来传递到D2端。因为要满足建立时间要求,所以对于D2来说,数据要比下一周期的时钟“走得快”(即数据有效来临在c时钟沿-建立时间之前):

有:数据传输延时 <= 时间传输延时 + 时钟周期 - 建立时间,即数据传输到DFF2的时间应该至少比时钟沿c早Tsetup来临;
注意:此时分析的是a时刻D1数据传输至D2被d时刻驱动(时序电路按照时钟逐级传递)的逻辑,因此时间计算时不仅计算传输延迟,还应包括一个时钟周期时间
展开有:

数据传输延时 <= 时间传输延时 + 时钟周期 - 建立时间

Tclk1 + Tco + Tcomb_logic + Tnet <= Tclk2 + Tperiod - Tsu

即:

Tclk2-Tclk1 + Tperiod - Tsu - Tco - Tcomb_logic - Tnet >= 0

Tskew+ Tperiod - Tsu - Tco - Tcomb_logic - Tnet >= 0

与建立裕量、保持裕量角度分析的STA公式一致;在分析STA时,不满足此公式的即为setup violation。

保持时间分析 

保持时间分析两级触发器的同一个时钟沿保持时间满足时,当前时钟驱动的数据才不会太快到达下一级寄存器,从而避免下一级寄存器当前时钟输入对应数据被覆盖导致输出问题

保持时间实质是:当前时钟沿的D1输出不能太快,以至于在当前时钟沿到达D2。防止D1采到的新数据太快到达D2而“冲掉”原来的正确数据,数据必须要在一定时间之后才允许到达,所以保持时间分析,分析的是D1和D2的同一个时钟沿。如上图,从传输时间延迟和数据延迟入手,假设c时刻D1采集到数据dataD1.2并传递给D2,dataD2.2就会冲刷掉dataD2.1。如果传输延时太短,cd时刻对应的dataD2.1的保持时间难以保证,会造成cd时刻D2输出异常。因为要满足dataD2.1的保持时间要求,所以对于dataD2.2来说,数据要比当前时钟“走得慢”(即数据有效来临在c时钟沿+保持时间之后):

有:数据传输延时 >= 时间传输延时 + 保持时间,即数据传输到DFF2的时间应该至少比时钟沿c早Tsetup来临;
注意:此时分析的是c时刻D1数据传输至D2不能影响D2在d时刻功能(同一时钟周期)的逻辑,因此时间计算时只计算传输延迟,不在包括一个时钟周期时间

展开有:

数据传输延时 >= 时间传输延时 + 保持时间

Tclk1 + Tco + Tcomb_logic + Tnet >= Tclk2 + Th

即:

Tclk1 - Tclk2 + Tco + Tcomb_logic + Tnet - Th >= 0

-Tskew + Tco + Tcomb_logic + Tnet - Th>= 0

与建立裕量、保持裕量角度分析的STA公式一致;在分析STA时,不满足此公式的即为hold violation。

五、STA公式以及实际电路STA分析:

结论:

                 Tsetup_slack = Tperiod + Tskew - Tsu - Tco - Tcomb_logic - Tnet >= 0;

                 Thold_slack = -Tskew + Tco + Tcomb_logic + Tnet - Th >= 0;

实际电路分析:

实际电路在不同的情形下(例如不同的温度,电压),每一段电路的delay是不同的,所以对于同一段电路,其delay在如下范围:Min_delay<= Delay <= max_delay

因此实际电路分析时应遵循两个原则:
        1、以建立时间、保持时间公式为基础
        2、考虑时延范围,按照Amin>Bmax;Amax<Bminc进行分析,保证时序稳定性

六、参考文献:

STA部分知识的学习参考了许多前辈大神的博客,正是因为他们的精彩讲解,我才能对STA相关的知识有了一个更好的认识,感谢他们!;我的记录中也直接使用了前辈们的几幅示意图,再次感谢他们!参考链接如下:

时序分析之静态分析基础

建立时间和保持时间

深入理解STA(静态时序分析)

 

  • 15
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
STAStatic Timing Analysis)静态时序分析是设计验证中非常重要的一部分,它能够保证设计的时序满足要求,并且对于设计中存在的时序问题进行诊断和修复。PT(PrimeTime)是业界较为常用的 STA 工具之一。下面是一个 PT 做 STA 静态时序分析的教程。 1. 确定时序约束 时序约束文件是进行静态时序分析基础,它描述了设计中的时序要求。时序约束应该包括时钟频率、时钟时序、输入输出延迟等信息。在 PT 中,时序约束文件格式为 SDC(Synopsys Design Constraints)。 2. 进行时钟分析 时钟分析静态时序分析的第一步,它能够检查时钟网络中存在的时序问题。在 PT 中,我们可以使用 clock report 命令生成时钟分析报告。时钟分析报告能够帮助我们确定时钟路径、时钟树等信息。 3. 进行时序分析 在进行时序分析之前,我们需要将设计进行综合,并产生时序数据库(.db 文件)。时序分析主要包括前端分析和后端分析,前端分析主要是对时序路径进行分析,后端分析主要是对时序路径进行优化。 在 PT 中,我们可以使用 timing report 命令生成时序分析报告,报告中包括了时序路径、时序偏差等信息。我们可以根据报告中的信息进行时序优化,例如添加时钟缓冲、调整时钟路径等操作。 4. 进行时序约束修复 在进行时序分析时,PT 会给出一些违反时序约束的警告和错误信息。我们需要根据这些信息进行时序约束修复,以保证设计满足时序要求。在 PT 中,我们可以使用 constraint report 命令生成时序约束修复报告,报告中包括了需要修复的时序约束信息。 5. 进行时序分析验证 在进行时序分析之后,我们需要进行时序分析验证,以保证时序分析结果的准确性。在 PT 中,我们可以使用 report checks 命令生成时序分析验证报告,报告中包括了时序分析结果的正确性信息。 以上就是 PT 做 STA 静态时序分析的教程,希望能够对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值