静态时序分析在高速FPGA设计中的应用
摘要:介绍了采用STA (静态时序分析)对FPGA (现场可编程门阵列)设计进行时序验证的基本原理,并介绍了几种与STA相关联的时序约束。针对时序不满足的情况,提出了几种常用的促进时序收敛的方法。结合设计实例,阐明了STA在高速、大规模FPGA开发中的应用。实践表明,随着数字设计复杂度的增加,在后端的时序验证环节,与传统的动态门级时序仿真相比,采用STA方法的优势在于可以全面、高效地完成验证任务。
1FPGA设计中的验证手段
在以往的小规模FPGA (现场可编程门阵列)设计中,验证环节通常只需要做动态的门级时序仿真,就可同时完成对DUT (被测试设计)的逻辑功能验证和时序验证。随着FPGA设计规模和速度的不断提高,要得到较高的测试覆盖率,就必须编写大量的测试向量,这使得完成一次门级时序仿真的时间越来越长。为了提高验证效率,有必要将DUT的逻辑功能验证和时序验证分开,分别采用不同的验证手段加以验证。首先,电路逻辑功能的正确性,可以由RTL (寄存器传输级)或门级的功能仿真来保证;其次,电路时序是否满足,则通过STA (静态时序分析)得到。两种验证手段相
辅相成,确保验证工作高效可靠地完成。STA在FPGA设计流程中的位置如图1所示。
STA是一种穷尽分析方法,它按照同步电路设计的要求,根据电路网表的拓扑结构,计算并检查电路中每一个DFF (触发器)的建立和保持时间以及其他基于路径的时延要求是否满足。STA作为FPGA设计的主要验证手段之一,不需要设计者编写测试向量,验证时间大大缩短,测试覆盖率可达100%。
2STA的时序路径
同步时序逻辑设计中整个电路可看做由组合逻辑和寄存器相间隔而成,由于所有寄存器都使用同一个时钟源,而且FPGA的全局时钟具有接近0的时钟扭曲( clock skew) ,因此, STA非常适合用于同步设计。
STA是基于时序路径的,它将DUT分解为4种主要的时序路径,如图2所示。
每条路径包含一个起点和一个终点,时序路径的起点只能是设计的基本输入端口或内部寄存器的时钟输入端,终点则只能是内部寄存器的数据输入端或设计的基本输出端口。路径1为从基本输入端到内部寄存器的数据输入端;路径2为从内部寄存器的时钟输入端到下一个内部寄存器的数据输入端;路径3为从内部寄存器的时钟输入端到基本输出端;路径4为从基本输入端到基本输出端。
STA的目的就是要保证DUT中所有路径满足内部时序单元对建立时间和保持时间的要求。首先,信号可以及时地从任一时序路径的起点传递到终点,同时要求在电路正常工作所需的时间内保持恒定。
3STA的主要内容
STA工具将DUT分解成不同的时序路径集合后,首先分析每条路径的门延时和线延时,再计算每条路径总的延时。因此,它既可分析给定路径的各种延时信息,也可用来分析设计者的时序约束是否满足,最终得到一个完整的STA报告。与STA有关的时序约束主要有时钟周期、时钟扭曲、输入延时和输出延时等。
3. 1时钟扭曲
为获得足够的驱动能力,时钟信号到达寄存器之前需要经过多级缓冲器驱动。时钟扭曲是指时钟源到达所有目的寄存器的最大和最小延迟的差值,这个值越小越好。通过约束,高速FPGA的全局时钟扭曲可以做到±0. 1 ns。
3. 2寄存器的建立/保持时序分析
寄存器的建立时间是指数据信号在时钟信号到达之前必须保持稳定的最小时间,它约束的是数据路径的最大延时;寄存器的保持时间是指时钟信号到达之后数据信号必须保持稳定的最小时间,它约束的是数据路径的最小延时。
STA的结果通常用时间余量Tslack表示,它是指时序约束和实际分析结果的差值,如果为负,则说明时序不满足。寄存器的建立/保持时间分析如图3所示。
寄存器的建立时间余量Tslack, setup为:
寄存器的保持时间余量Thold为:
式中: Tperiod为时序约束的时钟周期; Tcko和Tsetup /Thold为DFF固有的输出时间和建立/保持时间; Tlogic为组合逻辑的延时; Tnet为线延时; Tclk_skew为两个DFF间的时钟扭曲。
式(1)中,由于时间余量不允许为负,对于给定的FPGA, Tcko和Tsetup为固定值, Tclk_skew接近0,因此,时钟的最小周期主要取决于Tlogic和Tnet ,提高时钟工作频率也就是要设法减小Tlogic和Tnet的值。对于寄存器的保持时间,即使在包含快速路径的移位寄存器( Tlogic =
0)中也是比较容易满足的。
对寄存器进行建立/保持时序分析,不只是针对路径2而言。由于FPGA要与片外的时序逻辑相连接,因此对路径1和路径3也必须进行类似分析,通常我们可以对路径1和路径3分别施加输入和输出延时约束来满足寄存器的建立/保持时间要求。
值得一提的是,对于设计者预知的多周期路径必须在时序约束中加以声明,否则, STA进行建立/保持时间分析时可能会报错。
3. 3门控时钟的建立、保持时序分析
时钟网络若包含除反相器外的组合逻辑就会产生门控时钟信号。门控时钟的建立/保持时序分析见图4,图中假定门控时钟为时钟信号和门控信号相“与”。
门控时钟建立/保持时序分析的基本准则是:门控时钟控制信号的变化不允许引起时钟有效脉冲变化。
3. 4异步复位/置位与时钟信号的时序分析
异步复位/置位与时钟信号的时序分析如图5所示。图中假定复位信号rst_n为低电平有效,时钟clk为上升沿触发。Trecovery是指时钟有效沿到来之前,异步复位/置位已经无效的最小时间; Tremoval是指时钟有效沿到来之后,异步复位/置位保持有效的最小时间。
若异步复位信号的上升沿落在Trecovery与Tremoval的窗口之内,就会导致Trecove ry时序或Tremoval时序不满足,造成寄存器的输出不可预知。
4时序不收敛的几种改进方法
在高速FPGA设计中,通过STA,往往会发现时序不满足要求的情况,可以采取修改代码、重设综合属性或添加约束等方法加以改进。由于后两种方法不会改变设计的逻辑功能,因此较为常用。
4. 1通过设置综合属性提高工作频率
在FPGA综合时,通过设置合适的综合属性,发挥综合工具的某些优化特性,减小时序路径上组合逻辑的门延时和线延时,可以有效地促进时序收敛。
在Xilinx公司的FPGA 开发环境ISE中,常用的方法有:采用寄存器平衡技术和插入流水线( pipelin2ing) 。寄存器平衡技术在不改变逻辑功能的前提下,通过调整使寄存器在组合逻辑间分布更均匀,如图6所示。使决定时钟工作频率的那些大延时路径的延时减小,从而提高设计速度,而寄存器级数并没有改变。插入流水线则向组合逻辑中插入寄存器,由于FPGA内部包含了大量的寄存器资源,为改善时序提供了可能。插入的寄存器级数可以由设计工具自动完成,也可以由设计者找到需要插入流水线的时序路径后添加代码实现。与寄存器平衡技术相比较,这种方法更为灵活,但是增加了寄存器级数。
其次,通过寄存器复制( duplication) 、减小关键路径的扇出数、取消资源共享等办法,可减少时序路径上驱动缓冲的数目,减小路径延时,提高设计频率。此外,还可利用I/O块中的寄存器对FPGA的输入、输出信号进行锁存,提高板级的设计速度。
4. 2通过修改布局布线促进时序收敛
修改布局布线虽然不能减小门延时,但由于目前的高速FPGA设计属于深亚微米范围,互连延时已非常可观,不加约束时甚至占总路径延时的60%以上。
作为可编程ASIC (专用集成电路)器件, FPGA设计的布局布线不如ASIC设计那样灵活,但是目前的FPGA开发工具,也能让设计者通过添加约束等方式介入到布局布线过程中。而且,时序分析器通常支持和布局规划器进行时序的交互探测( cross p robing) ,使得查找和改进关键路径的时序极为方便。因此,通过合理的布局布线,减小互连线上的延时,也是提高时钟工作频率的常用方法之一。
5设计实例
我们在使用FPGA进行高速FFT处理器设计时,使用了ISE (集成软件环境)的时序分析仪(TimingAnalyzer) 。以基4的蝶形运算单元模块为例,由于FFT的乘加运算无法在一个时钟周期内完成,必须插入流水线, STA报告中的时间余量为负就说明了这一点。通过STA报告,还可以分析出运算的中间结果何时需要寄存。图7是与时序约束相比较生成的时序分析报告的部分内容。
图7所示内容是对一个包含乘法器的时序路径进行寄存器建立时间分析,报告给出了这条时序路径完整的延时信息,通过与时序约束比较,时间余量为正值,表明这条时序路径满足寄存器的建立时间要求。
在完成设计之前,我们对整个设计做了一次反标了SDF文件的动态门级时序仿真,结果也证明了STA的正确性。
6结束语
STA通过分析给定路径的各种延时信息,以及分析设计者的时序约束是否满足,不仅可以快速地完成对设计的时序验证,而且根据时序分析结果还可以指导和改进设计。随着FPGA 设计规模的不断增大,STA在时序验证中将发挥更大的作用。