静态时序分析原理解读及实例应用

(整期优先)网络出版时间:2023-12-28
/ 2

静态时序分析原理解读及实例应用

薛娇龙 王磊 刘嘉

(四川九洲空管科技有限责任公司 四川省绵阳市 621000)

摘 要静态时序分析(Static Timing Analysis)是FPGA(现场可编程逻辑器件)分析电路时序的最坏情况验证此时的电路性能是否满足用户的时序要求。静态时序分析的目的是提高系统工作主频及增加系统的稳定性。

关键词静态时序分析;FPGA;关键路径

引言

静态时序分析是基于电路的拓扑结构,计算逻辑单元延时和互联延时,提取出整个电路的所有时序路径,找出延时最大的关键路径,确定电路工作时所能达到的最大频率,并检查建立时间和保持时间余量,其目的是检查FPGA 芯片中设计电路的延时和速度等性能指标,分析电路时序的最坏情况,验证此时的电路性能是否满足用户的时序要求。相比较于动态时序仿真具备更加高效和完备的特点。目前比较流行的静态时序分析工具有Prime TimeTimeQuest Timing AnalyzerVivado系列等工具

1 时序中的基本概念

1.1 时钟周期和最高频率

时序路径分为输入端口到内部寄存器路径,内部寄存器到寄存器路径,内部寄存器到输出端口路径FPGA内部时序分析的对象为寄存器寄存器路径,时序逻辑设计都是基于时钟沿的。在Quartus下的时序分析器TimeQuest的时序报告中有启动沿和锁存沿的概念,它们是针对时钟而言的

启动沿(launch edge):前级寄存器发送数据时对应的时钟沿,是时序分析的起点。锁存沿(latch edge):后级寄存器捕获数据时对应的时钟沿,是时序分析的终点。锁存沿一般默认与启动沿相差一个时钟周期。时钟周期的概念是FPGA 中时序定义的基础,根据图1计算时钟最小周期。

1时钟周期的计算

时钟最小时钟周期计算式为:

Tclk = τco + τdata_dalay + τsu − τclk_skew(式1)

其中

τclkskew = τclk1 − τclk2(式2)

1中,Tclk是时钟的最小周期。τco是寄存器固有的时钟到输出延迟,是寄存器的固有属性,指的是寄存器相应时钟沿有效,将数据送到输出端口的内部延时参数,典型值一般小于1nsτdata_dalay是组合逻辑数据延迟。τsu是寄存器内部的固有建立时间。τclk_skew是时钟偏斜。τclk1为时钟到达第一个寄存器时钟端口的延迟,τclk2为时钟到达第二个寄存器时钟端口的延迟。最高时钟频率fmax即为最小时钟周期的倒数:

fmax = 1⁄Tclk(式3)

fmax能综合体现设计的时序性能,是最重要的时序指标。时序分析工具会给出设计的fmax,并能显示影响fmax的最差时序路径(关键路径),从而指出优化方向。

1.2 建立时间(Clock Setup Time)检查和保持时间(Clock Hold Time)检查

寄存器固有的建立时间和保持时间之间的关系如图2所示。寄存器固有建立时间τsu:数据在寄存器时钟沿到来之前必须稳定最小时间。寄存器固有保持时间τh:数据在时钟沿后必须保持稳定的最小时间。τsu是寄存器的固有属性,典型值一般小于1nsτh是寄存器内部的固有保持时间,同样是寄存器的固有参数,典型值一般小于1ns。寄存器固有的建立时间和保持时间一起组成了寄存器数据需求时间窗口,这个窗口位于时钟沿的左右,在这个时间窗口中数据必须保持稳定。

2  寄存器固有建立时间和保持时间

时序分析器TimeQuest 检查时序主要是进行路径的建立时间和保持时间的检查。TimeQuest 根据数据实际到达时间(Data Arrival Time)和数据需求时间(Data Required Time)计算出时间余量(Slack。图3表示建立时间和保持时间检查原理。

建立时间余量=数据建立需求时间数据到达时间

数据建立需求时间= latch edge + τclk2 – τsu –Setup Uncertainty

数据到达时间= launch edge +τclk1 + τco + τdata_delay

保持时间余量=数据保持需求时间数据到达时间

数据保持需求时间= latch edge + τclk2 + τh + Hold Uncertainty

数据到达时间= launch edge +τclk1 + τco + τdata_delay

图 3  建立时间和保持时间检查

正的时序余量值表示满足时序要求,负的时间余量值表示不符合时序要求。建立时间检查遵循的原则是从信号启动沿开始计时,经过一系列的时序路径,到达后级寄存器的数据输入引脚的速度不能太慢,否则会侵占后级寄存器数据输入引脚相对于锁存沿的建立时间,恰好满足后级寄存器建立时间的数据到达时间是数据建立需求时间。可以看出,在建立时间检查中,数据实际到达时间要小于数据建立需求时间,否则就会造成建立时间违规。同样的原理进行保持时间检查。

2 静态时序分析实例

2.1 时序约束

在使用工具静态时序分析之前,必须要指定出对时序的要求,也就是时序约束,主要包括时钟时序约束、IO时序约束、时序例外

时钟类型包括基础时钟,生成时钟及虚拟时钟,基础时钟是FPGA主要的输入时钟,一般来源于外部的晶振或者外部器件。生成时钟或者其他约束都是参考基础时钟;生成时钟一般包括PLL生成时钟或者自己分频的时钟;虚拟时钟并没有真正的输入源,使用create _clock命令来产生虚拟时钟,用来代表与FPGA相连的外部器件的时钟,通常作为set_input_delayset_output_delay约束的参考时钟。

TimeQuest可以检查外部器件和FPGA之间的建立和保持关系,可以使用set_input_delayset_output_delay命令进行IO时序约束。

时序例外某种程度上是降低时序设计的要求,设计中可以指定一个false path不进行时序分析,可以使用set_false_path命令来指定false path来规避时序分析。

2.2 TimeQuest Timing Analyzer静态时序分析实例

TimeQuest Timing AnalyzerQuartus下集成的静态时序分析工具,和传统的静态时序分析工具Classic Timing Analyzer 相比,TimeQuest Timing Analyzer更加适合分析工艺和性能不断进步的芯片,比如Stratix 系列就只支持TimeQuest Timing Analyzer不再支持Classic Timing Analyzer

Quartus下指定时序分析工具为TimeQuest Timing Analyzer之后,唯一需要做的是在工程全编译之前建立一个SDC Synopsys Design Constraints)约束文件加入到待测工程中

SDC文件中约束基础时钟i_clk_100M ,约束时钟周期为10ns,占空比为50%create_clock -name i_clk_100M -period 10 -duty_cycle 50 [get_ports i_clk_100M]。全编译工程,查看TimeQuest Timing Analyzer任务窗口,可以看到最高时钟频率Fmax,建立时间余量及保持时间余量及关键路径等时序报告,静态时序分析结果4

图 4  建立时间和保持时间检查

3 结论

静态时序分析已经成为FPGA设计实现以及验证中必不可少的一环,不仅大大提高了设计验证效率而且保证设计的完备性和充分性。本文详细介绍了时序中的基本概念,给出了时序约束的实例。随着FPGA设计规模的不断增大,静态时序分析在时序验证中将发挥更大的作用

参考文献

[1]许天一,涨乃通. FPGA静态时序分析的研究和实现[D].哈尔滨:哈尔滨工业大学,2016

[2]廖军和,叶兵.深亚微米ASIC设计中的静态时序分析 [J]半导体技术,34(1):45-48

[3]刘晟. FPGA静态时序约束的策略研究及探讨[J]. 通信技术,2019,52(08):2038-2043.

[4]Synopsys,Pime Timesuite Modeling user guide[S] version C-2009.06

[5]Synopsys,Pime Time Advanced Timing Analysis User Guide[S] version C-2009.06

作者简介:

薛娇龙1992-)女,本科辽宁朝阳人,四川九洲空管科技有限责任公司,工程师,从事二次雷达FPGA研发测试工作;

王磊1985-男,本科河南郸人,四川九洲空管科技有限责任公司工程从事二次雷达系统研发工作;

刘嘉1985-)女,本科四川成都人,四川九洲空管科技有限责任公司工程从事二次雷达FPGA研发测试工作