分享

[Forward]时序分析的作用与原理

 cana_xzy 2010-03-26

11.1.1 时序分析的作用      

时序分析的主要作用就是察看FPGA内部逻辑和布线的延时,验证其是否满足设计者的约束。在工程实践中,可以细分为下面5点。
1.确定芯片最高工作频率
     更高的工作频率意味着更强的处理能力,通过时序分析可以控制工程的综合、映射、布局布线等关键环节,减少逻辑和布线延迟,从而尽可能提高工作频率。一般情况下,当处理时钟高于100MHz时,必须添加合理的时序约束文件以通过相应的时序分析。

2.检查时序约束是否满足
     可以通过时序分析来察看目标模块是否满足约束,如果不能满足,可以通过时序分析器来定位程序中不满足约束的部分,并给出具体原因。然后,设计人员依此修改程序,直到时序约束为止。

3.分析时钟质量      时钟是数字系统的动力系统,但存在抖动、偏移和占空比失真等3大类不可避免的缺陷。要验证其对目标模块的影响有多大,必须通过时序分析。当采用了全局时钟等优质资源后,如果仍然是时钟造成目标模块不满足约束,则需要降低所约束的时钟频率。

 

11.1.2  静态时序分析原理     

早期的电路设计通常采用动态时序验证的方法来测试设计的正确性。但是随着FPGA工艺向着深亚微米技术的发展,动态时序验证所需要的输入向量将随着规模增大以指数增长,导致验证时间占据整个芯片开发周期的很大比重。此外,动态验证还会忽略测试向量没有覆盖的逻辑电路。因此静态时序分析(STA, Static Timing Analysis)应运而生,不需要测试向量,即使没有仿真条件也能快速地分析电路中的所有时序路径是否满足约束要求。     

STA是通过穷举法抽取整个设计电路的所有时序路径,按照约束条件分析电路中是否有违反设计规则的问题,并计算出设计的最高频率。和动态时序分析不同的,STA仅着重于时序性能的分析,并不涉及逻辑功能。
整个设计电路按四种类型来抽取时序路径:
(1)从输入端口到触发器的数据D端;

(2)从触发器的时钟CLK端到触发器的数据D端;

(3)从触发器的时钟CLK端到输出端口;

(4)从输入端口到输出端口。     

静态时序分析在分析过程中计算时序路径上数据信号的到达时间和要求时间的差值,以判断是否存在违反设计规则的错误。数据的到达时间指的是数据沿路从起点到终点经过的所有器件和连线延迟之和。要求时间是根据约束条件( 包括工艺库和STA 过程中设置的设计约束) 计算出的从起点到达终点的理论时间,默认的参考值是一个时钟周期。如果数据能够在要求时间内到达钟点,那么可以说这条路径是符合设计规则的。其计算公式如式M所示:
           T_slack - T_require - T_arrival

     其中 Trequired_time 为约束时长,为 Tarrival_time 实际时延,Slack为时序裕量标志,正值表示满足时序,负值表示不满足时序。Tarrival_time 具体计算见下节。STA 把式M作为理论依据, 分析设计电路中的所有时序路径。如果得到的STA 报告中Slack 为负值, 那么此时序路径存在时序问题, 是一条影响整个设计电路工作性能的关键路径。在逻辑综合、整体规划、时钟树插入、布局布线等阶段进行静态时序分析, 就能及时发现并修改关键路径上存在的时序问题, 达到修正错误、优化设计的目的。

 

11.1.3  时序分析的基础知识       

本节主要介绍时序分析的基础知识,重点说明时钟抖动、时钟建立时间、保持时间以及基本时序路径等基本概念。


1. 时钟的时序特性
     时钟的时序特性主要分为偏移(Skew)、抖动(Jitter)和占空比失真(Duty Cycle Distortion)这三点。对于低速设计,基本上不用考虑这些特征,但随着高速设计时代的到来,由于时钟本身所造成的时序问题的现象越来越普遍,因此有必要关注高速时钟本身的时序特性。

l 时钟偏移    

时钟偏移指的是同一个时钟信号到达两个不同的寄存器之间的时间差值,如图M所示。根据差值的正负可以分为正偏移和负偏移。时钟偏移是永远存在的,当其大到一定程度时,就会严重影响电路的时序。两条时钟路径的长度不同是造成时钟抖动的原因,如图M所示。

 

因此主要时钟信号应该走FPGA全局时钟网络以避免时钟偏移现象,该网络采用全铜工艺和树状结构,并设计了专用时钟缓冲和驱动网络,到所有的CLB、I/O单元和块RAM的偏移非常小,可以忽略不计。        

 

实际电路中时钟信号到达每一个触发器时钟引脚的时延不可能完全相等,时钟偏差是肯定存在的,这是STA 必须考虑的因素。在不同阶段,STA 设置时钟偏差的方式不同。由于静态时序分析主要分为布局布线前和布局布线后两个阶段,两者的主要区别在于:后者有具体的互连线长度、宽度、信号分布情况等信息,所以后者可以更加准确地估计线上延迟,以及时钟树的延迟;而前者只能根据设计电路面积的大小,估计线上延迟和时钟树的延迟。
时钟抖动
     抖动是时钟的一个重要参数,有多种关于抖动的定义。两个最常用的抖动参数称为周期抖动和周期间抖动。周期抖动一般比较大也比较确定,常由于第三方原因造成,如干扰、电源、噪声等。周期间抖动由环境因素造成,具有不确定性,满足高斯分布,一般难以跟踪。
                                                                         

 

图M 时钟抖动的示意图
        时钟抖动是永远存在的,当其大到可以和时钟周期相比拟时,必然会影响到设计时序,这样的时钟抖动就是不可接受的。


时钟占空比失真
      时钟占空比失真(Duty Cycle Distortion, DCD)即时钟不对称性,指信号在传输过程中由于变形、时延等原因脉冲宽度所发生的变化,该变化使有脉冲和无脉冲持续时间的比例发生改变,如图M所示。

                                                                       
                                                                        

图M 时钟占空比失真示意图
     现在的片外高速存储器(如DDR、DDRII等)都采用双数据、甚至多数据速率接口,在时钟的上升沿和下降沿都需要对数据采样,每次读或写操作至少有两拍时钟总线。此类应用时,DCD会吞噬大量的时序裕量,造成数字信号的失真,使过零区间偏离理想位置,向上或向下移动。DCD通常是由信号的上升沿和下降沿之间时序不同而造成。如果非平衡系统中存在地电位漂移、差分输入之间存在电压偏移、信号的上升和下降时间出现变化等,也可能造成这种失真。


2. 时钟建立、保持时间
     建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,常用tSU表示。如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器。保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,常用tH表示。如果保持时间不够,数据同样不能被打入触发器。建立时间和保持时间的示意图如图M所示。数据稳定传输必须满足建立和保持时间的要求。
                                                                   

图M 时钟建立、保持时间示意图
在如图M所示的电路中,时钟的tSU、tH的计算公式如示M所示:                                                                                                                                 

其中的Micro_tSU和Micro_tH指的是触发器内部的固有建立时间和保持时间,是触发器的固有属性,其典型值一般小于1ns。
      当数据在建立时间或保持时间内发生变化,即数据建立时间和保持时间不满足时,就可能发生亚稳态现象,如图M所示。亚稳态的信号不稳定,其数值在0和1之间震荡,尽管无法确定信号为0或1,但其一定是0或1。亚稳态恢复时间的长短随信号发生跳变时,因时钟相位的不同而不同,最坏情况下需要100个到1000个时钟周期。亚稳态对设计可靠性的影响很大,可能导致数据采样错误,在严重的时候甚至会导致系统崩溃,因此要充分考虑亚稳态所带来的影响。在单时钟设计中,只要满足最高频率要求,就不会出现亚稳态;在多时钟设计中,由于时钟异步,亚稳态不可避免,但可采用一些方法使电路在亚稳态仍正常工作。(简单介绍相应的方法)


3.基本时序路径的分析(需要进一步补充)
    在高速的同步电路设计中,时序决定了一切,要求所有时序路径延迟都必须在约束限制的时钟周期内,这成为设计人员最大的难题。因此,首先确定和分析基本时序路径有助于设计者快速、准确地计算时序裕量,使系统稳定工作。下面介绍Xilinx公司提倡的几种常用基本路径。 l  Clock-to-Setup路径 Clock-to-Setup路径从触发器的输出端开始,结束于下一级触发器、锁存器或者RAM的输入端,对终止端的数据信号要求一定的建立时间,如图M所示。
                                                              

 

图M Clock-to-Setup路径示意图
       该条路径包括了触发器内部clock-to-Q的延迟,触发器之间的由组合造成的路径延迟以及目标触发器的建立时间,其延时是数据从源触发器开始,在下一个时钟沿到来之前通过中间组合逻辑和布线的最大时间。Clock-to-Setup时间可通过约束文件中的周期约束来限制,如图M所示。


      需要注意的2点是:

(1)当源触发器和目标触发器的驱动时钟不同时,且时钟的占空比不是50%时,则Clock-to-Setup路径则被限制为两个时钟高低电平中最短的那一段。

(2)如过源、目的触发器使用不同的时钟网络驱动,则要求目标触发器的时钟周期必须大于Clock-to-Setup路径时延,且将其作为所允许最大时延值[ISE使用详解]。
Clock-to-Pad路径
    Clock-to-Pad路径从寄存器或者锁存器的时钟输入端开始,终止于芯片的输出管脚,中间经过了触发器输出端以及所有的组合逻辑,如图M所示。
                                                          

 图M Clock-to-Pad路径示意图
       该条路径包括了时钟到经过触发器的延时和从触发器到输出管脚之间的逻辑延迟。在约束文件中,可以通过OFFSET语句和FROM:TO来约束。如果使用OFFSET语句,那么时延计算时会包含时钟输入BUFFER/ROUTING延时;如果使用FROM:TO约束,则延时从触发器自身开始,不包括输入路径,比较精确,所以使用相对更频繁一些。

OFFSET说明了外部时钟和与其相关的输入、输出数据管脚之间的时序关系,其语法规则为:
OFFSET = {IN|OUT} "offset_time" [units] {BEFORE|AFTER} "clk_name" [TIMEGRP "group_name"]; 
OFFSET可以用于设置多类约束,对于Clock-to-Pad需要将属性配置为OUT AFTER,例如:
       NET Q_OUT OFFSET=OUT 35.0 AFTER "CLK_SYS"; 
       FROM:TO定义了两组信号之间时序关系,其语法规则为:                 

 # TIMESPEC "TSname"=FROM "group1" TO "group2" value;
     其中的TSname必须以TS开头,group1是起始路径,group2是目的路径,value值的默认单位为ns,也可以使用MHz。
下面给出一个应用实例 TIMESPEC TS_aa=FROM FFS TO PADS 10; l Pad-to-Pad路径 Pad-to-Pad路径从芯片输入信号端口开始,结束于芯片输出信号端口,中间包含所有的组合逻辑,但并不包含任何同步逻辑,如图M所示。
                                                                    

图M Pad-to-Pad路径示意图
     Pad-to-Pad路径延时是数据输入到芯片,经过逻辑延时和布线时延后再输出芯片的最大时间要求。在约束文件中仍然通过FROM:TO来约束,其语法为:                     

TIMESPEC TS_aa=FROM PADS TO PADS 10;
 Pad-to-Setup路径
        Pad-to-Setup路径从芯片的输入信号端口开始,结束于同步电路模块(触发器、锁存器和RAM),对相应的数据信号要求一定的建立时间,如图M所示。
                                                           

图M Pad-to-Setup路径示意图              

该路径可以经过输入BUFFER和所有的组合逻辑,不包含任何同步电路模块和双向端口,是数据到达芯片的最大时间要求,和Clock-to-Pad一样,可以通过OFFSET和FROM:TO来设计。其中OFFSET语句的属性设置为OFFSET IN BERORE。例如:                     

OFFSET = IN 10 ns BEFORE my_clk TIMEGRP My_FFS;
多时钟路径  

 

4. 时序裕量(Slack)
      时序裕量是约束文件要求时钟周期与实际布局布线后时钟周期的差值,当其为正时表示满足时序(正裕量),为当其为负值时表明不满足时序(负裕量)。其计算公式为:  

                                                     

其中Rclkperiod为约束要求的时钟周期,Aclkperiod为实际的时钟周期。在实际分析中,还常采用如图M所示的计算公式[Altera 高级篇]:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多