STA(静态时序分析)总结
STA(Static Timing Analysis,即静态时序分析)在实际FPGA设计过程中的重要性是不言而喻的,其作用是:
-
1、帮助分析和验证一个FPGA设计的时序是否符合要求;
-
2、指导fitter(布线综合器)布局布线出符合要求的结果;
简单地说,静态时序分析(STA)告诉我们电路的实际表现如何,而提供约束(SDC文件,即上面的要求)来告诉分析工具我们希望电路的表现应该是怎样。Quartus II自带的STA工具TimeQuest TA在整个FPGA设计过程中的使用流程如下图所示:
简而言之,我们需要学会:
A. 正确理解时序,看背景知识介绍
B. 正确编写SDC文件,以及利用TimeQuest TA生成SDC约束命令,SDC介绍
C. 利用TimeQuest TA来查看和验证时序
一、 背景知识介绍:
1.1 启动沿(launch)和锁存沿(latch):
启动沿:数据被launch的时钟边沿;也就是说,每一个启动沿,一般都会产生一个新的数据!
锁存沿:数据被latch的时钟边沿;也就是说,每一个锁存沿,都会有一个新的数据被保存!
一般蓝色的上升沿作为第一个触发器的启动沿,而红色的上升沿(一般都是紧跟着启动沿后的有效边沿)。所以说:蓝色的启动沿之后由REG1输出有效数据,并在红色的边沿被锁存进REG2并输出到下级。
1.2 建立(setup)和保持(hold)时间
上述的锁存沿会将数据保存下来,但是必须要满足一定的条件:
-
建立时间Tsu:在时钟有效沿之前,数据必须保持稳定的最小时间;
-
保持时间Th:在时钟有效沿之后,数据必须保持稳定的最小时间;
1.3 数据到达时间(DAT:data arrival time)
所有的信号在FPGA内部传播都会有延时,包括时钟信号、数据信号(实际上不该如此可以的区分这两种信号,在一定条件下,这两个信号可能可以相互转换,这个是题外话了),也就是说,从信号的发出点到信号的接收点,会存在一个延时,这个延时可能是因为FPGA内部空间分布所致,也有可能是因为组合逻辑造成,这里不再深究;
-
Tclk1:时钟信号从起点(一般是PLL输出或者时钟输入引脚)到达启动寄存器(或说启动触发器)的相应clk端口所耗的时间;
-
Tco: 启动寄存器内部延时,是寄存器REG1感受到有效的上升沿后,到数据真正从从REG1的Q输出之间延时;请注意:上述所谓的有效的上升沿,就是REG1.CLK,而不是CLK;所以实际的有效数据输出的时序如上图的REG1.Q;
-
Tdata:数据从上级寄存器输出Q(经过所有其他组合逻辑以及FPGA内部走线)到下级寄存器的数据输入D之间的延时;如图所示,数据从从REG1的Q流向了REG2的D,所以REG2.D实际感受到的数据时序是REG2.D;
数据到达时间,DAT:
DAT=启动沿+Tclk1+Tco+Tdata;
1.4 数据建立需要时间(DRTsu:data require time (setup))
-
Tclk2,不同于上述的Tclk1,这个延时是时钟从起点(一般是PLL或者时钟输入引脚)到锁存触发器之间的延时;如上图所示,REG2实际感受到的时钟来自于其本身的clk引脚,而不是源时钟CLK,他们之间存在一个延时,即Tclk2;所以REG2实际感受到的时钟,实际上是上图的REG2.CLK;
-
Tsu:上面分析过了,每一个数据被锁存都要满足建立时间和保持时间,Tsu就是建立时间,也就是在REG2实际感受到Latch Edge时,数据如果需要被正确锁存,就必须提前Tsu的时间来到REG2的D;
综合时钟走线延时Tclk2以及Tsu,我们得到了数据建立时间DRTsu:
数据建立时间DRTsu:
DRTsu=锁存沿+Tclk2-Tsu。
1.5 数据保持需要时间(DRTh:data require time (hold))
即DRTh=锁存沿+Tclk2+Th;
也就是说,数据在DRTh时间之前必须保持住不变;
1.6 建立时间裕量(Setup Slack)
建立时间裕量指的是数据到达时间和数据建立需要时间之间的关系:
建立时间裕量:数据要求建立时间-数据到达时间
正如上图所示
Setup Slack=DRTsu-DAT=锁存沿+Tclk2-Tsu-(启动沿+Tclk1+Tco+Tdata)
如果Setup Slack为正,则说明数据在规定的时间内达到了目标。反之,则认为数据并没有在规定的时间达到目标,此时REG2锁存的数据很有可能是亚稳态;
1.7 保持时间裕量(hold slack)
Hold Slack = Data Arrival Time - Data Required Time = 锁存沿+Tclk1+Tco+Tdata - (锁存沿+Tclk2+Th)
如果为正,则认为数据在被锁存的时候有足够多的稳定时间,是有效的。反之则认为数据有误或者数据可能是亚稳态;
z1185741726: 里面职称和研究方向怎么投的
weixin_59717686: 在source那右键 Add file,和添加.c文件一样
m0_73353331: 请问录用后多久见刊
Denny_0807: 试了一下 代码 wr_addr的assign部分可能会报错
不是二哈的柯基: 没事,直接投