我是靠谱客的博主 危机手套,最近开发中收集的这篇文章主要介绍静态时序分析(STA)基础1 时钟/时钟树的属性2 时序分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 时钟/时钟树的属性

        一般的时钟,我们都指的是全局时钟。全局时钟在芯片中的体现形式是时钟树(由许多缓冲单元/buffer cell平衡搭建的时钟网状结构),如下图所示:

        时钟除了周期/频率、相位、占空比外,还有如下属性:

        1.1 时钟的时钟的不确定性(Clock Uncertainty)

                时钟偏移和时钟抖动都影响着时钟网络分支的延迟差异(相位差异),加起来构成了时钟的不确定性(uncertainty

                1.1.1 时钟偏斜(Clock Skew)

                        同一个时钟源到达两个不同寄存器时钟端的时间偏移(整体时钟的相位偏移)。

                        Clock Skew与时钟频率并没有直接关系,skew与时钟线的长度及被时钟线驱动的时序单元的负载电容、个数有关,故skew的大小可正可负

                        如下图,时钟偏斜计算公式如下:

                                                         

                1.1.2 时钟抖动(Clock Jitter)

                        相对于理想时钟沿,实际时钟沿存在不随时间积累的、时而超前、时而滞后的偏移(时钟占空比的微小变化),如下图所示:

                        时钟抖动与时钟频率无关,与电路固有属性和所处环境有关。 

        1.2 时钟的转换时间(Clock Transition)

                非理想时钟的电平转换是需要一定的时间的(时钟沿非理想垂直的),表现如下图:

                时钟的转换时间与单元的延时时间(也就是器件特性)和电容负载有关。 

        1.3 时钟的延时(Clock Latency)

                时钟从时钟源(比如说晶振)出发到达触发器时钟端口的延时,称为时钟的延时。时钟的延时包含时钟源延迟(source latency)和时钟网络的延迟(network latency), 如下图所示:

                时钟源延迟(clock source latency),也称为插入延迟(insertion delay),是时钟信号从其实际时钟原点到设计中时钟定义点(时钟的输入引脚)的传输时间,上图是3ns。

                时钟网络的延迟( clock network latency)是时钟信号从其定义的点(端口或引脚)到寄存器时钟引脚的传输,经过缓冲器和连线产生的延迟,上图是1ns。

                PS:时钟偏斜实际上是两个触发器时钟的时钟网络的延迟差。

2 时序分析

        2.1 基本概念

                2.1.1 建立时间和保持时间

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

                        保持时间():时钟有效沿到来之数据必须保持稳定的最小时间。

                2.1.2 触发器的数据输出延时/输出响应时间

                        数据输出延时(输出响应时间,):时钟触发开始到有效数据输出的器件内部所有延时的总和。简单地说,在时钟有效后,D的数据并不 能立即传到Q端,这段等待的时间就是触发器的时钟到输出时间。(这个时间指的是当时钟有效沿变化后,数据从输入端到输出端的最小时间间隔。)

                                                         = 逻辑延时 + 缓冲延时

                        缓冲延时:信号经过缓冲器到达有效的电压输出所需要的时间。

                        如下图:给出确定的方法,在输出缓冲的末端直接相连一个测量负载,最常见的是50欧姆的电阻或30pF的电容,然后测量负载上的信号电压到达一定电平所需要的时间,这个电平称为测量电压(Vms),一般是信号高电平的一半

                2.1.3 发射沿和锁存沿

                        发射沿(launch edge):寄存器(前级寄存器)数据变化的时钟边沿,也是静态时序分析的起点

                ​​​​​​​        锁存沿(latch edge):目的寄存器(后级寄存器)数据锁存的时钟边沿,也是静态时序分析的终点

                        如下图:

                        通常来说,Latch Edge 比 Launch Edge 晚一个时钟周期(),即它们之间通常是相差一个时钟周期的关系。 

        2.2 数据发射与锁存

                2.2.1 数据到达时间

                        数据到达时间(Data Arrival Time):输入数据在有效时钟后到达所需要的时间,主要分为三个部分:时钟到达寄存器时间()、寄存器输出延时()和数据传输延时()。

                如上图,数据到达时间计算公式如下:     

                2.2.2 (锁存)时钟到达时间

                ​​​​​​​        (锁存)时钟到达时间(Clock Arrival Time):锁存时钟从latch edge到达目的寄存器(destination register)输入端所用的时间。

                        如下图,时钟到达时间计算公式如下:

                                            

                2.2.3 数据需求时间

                        以下情况分别不考虑建立不定态(Setup Uncertainty)和保持不定态(Hold Uncertainty),这里uncertainty主要是指时钟抖动(clock jitter)。

                        建立(Setup)数据需求时间:

                        计算公式如下:

                        保持(Hold)数据需求时间

                         计算公式如下:

       

        2.3 建立与保持

                2.3.1 建立关系与保持关系

                        建立关系(Setup Relationship):对于两个相邻的寄存器,后一级(目的)寄存器每次锁存(latch)的数据应该是前一级(源)寄存器上一个时钟周期锁存过的数据。

                        保持关系(Hold Relationship):实际上是同一个edge,也就是说目的寄存器的数据保持时间可能遭到源寄存器同一个时钟沿所传输数据的“侵犯”。

                                (这里可以换一个说法,根据建立关系,需要保证launch clock下一次发射的数据不会过早到来而“侵犯”到本次latch clock的数据锁存。)

                2.3.2 建立余量和保持余量

                        建立余量(Setup Slack) = 建立(Setup)数据需求时间 - 数据到达时间(Data Arrival Time)

                        计算公式如下:

                             

                             

                            

                        若考虑

                                              ,

 建立余量可以化简为:

                                     

                        当即建立余量为正时(数据到达时间要早于建立数据需求时间),满足时序要求。由此可见,源寄存器与目的寄存器之间的数据传输延迟 不能太长,延迟越长,slack越小。

                        保持余量(Hold Slack) = 数据到达时间(Data Arrival Time)- 保持(Hold)数据需求时间

                        计算公式如下:

                             

                            

                            

                        若考虑

                                              ,

                         建立余量可以化简为:

                                     

                        当即保持余量为正时(下次数据到达时间要晚于保持数据需求时间),满足时序要求。由此可见,源寄存器与目的寄存器之间的数据传输延迟 不能太短,延迟越短,slack越小。

                PS:

                        ①相同触发器的大于其。

                        比如同步器多级触发器级联,且位置尽可能近,使得其和近乎于0,要实现同步电路打拍且不进入亚稳态(hold slack > 0),则 >  。

                        ②clock skew与建立余量、保持余量不一定是正/负相关性,但一定是一正一负。

                        减小同步器中触发器间的skew,是为了避免出现hold违例(所有寄存器的时钟做的绝对平时,是不会有hold时序违例的),但又不消耗额外的setup margin,保证足够大的setuo余量。

另外,参考时钟约束实例和时序约束实例2,以及FPGA中的时序分析(一)等。

参考时序分析之静态分析基础。

最后

以上就是危机手套为你收集整理的静态时序分析(STA)基础1 时钟/时钟树的属性2 时序分析的全部内容,希望文章能够帮你解决静态时序分析(STA)基础1 时钟/时钟树的属性2 时序分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部