本文是学习威视锐学院课程《FPGA静态时序分析精讲》系列课程第二讲的学习笔记。原视频地址:课程地址
目录
分析对象
Altera时序分析基本项
发射沿和采样沿
建立时间和保持时间
数据和时钟的到达时间
建立时间
保持时间
建立时间余量
保持时间余量
I/O时序分析
复位输入和撤离
在FPGA中对于时序分析的理论基础,主要是依赖下图进行分析的。
时序分析的主要对象是:在REG2中,时钟信号CLK经过路径③的有效沿,与从REG1寄存器输出的数据经过路径①到达REG2的D端时的关系。两级寄存器的时序分析,本博客的前面博文中已经详细分析,在此不做更详细介绍。
在实际的工程中进行分析,应该依据下图,图中所有的红色线条路径上的时序关系,都需要进行计算。即下图所示的路径,都是我们关心的路径。
发射沿(Launch Edge):时钟信号CLK在发射沿将数据从源寄存器REG1发射出去
采样沿(Latch Edge):目标寄存器REG2对从原寄存器发射出来的数据进行“锁存”的时钟有效沿,一般情况下,相比于发射沿,晚一个时钟周期。
建立时间:在时钟有效沿到来之前,数据保持稳定不变的时间
保持时间:在时钟有效沿到来之后,数据保持稳定不变的时间
需要说明的是:在硬件固定以后,Tsu和Th的改变,只能通过改变芯片来实现。
数据到达时间
在硬件器件已经选定好的情况下,数据到达时间只能调整Tdata.
采样沿时钟到达时间
影响Tclk2的主要因素为时钟布线。但在FPGA内,有时钟树,推荐设计方法是将时钟信号在时钟树上布线。当时钟信号走在时钟树上的时候Tclk2会足够小,可以不予考虑(绝大多数情况下)。但是若时钟信号没有走在时钟树上,该延时就会变得很大,实际STA设计的时候就需要考虑该延时。
Tsu为REG2建立时间的门限.
Setup Uncertainty:表示建立Tsu的不稳定度,表示Tsu并不总是在确定的位置,而是在图示位置附近有抖动。“-”(减去)不稳定度的意思是:当不稳定度为正值的时候,即表示Tsu相比于图示位置向左偏,这会引起建立时间窗缩小,容易引起时序违例。当不稳定度为负值的时候,即表示Tsu相比于图示位置向右偏,这回引起建立时间窗增大,不容易引起时序违例。
请注意,REG2的建立时间中,没有考虑到从REG1到REG2的数据传输延时。
Th为REG2寄存器保持时间门限。
Hold Uncertainty:表示保持Th的不稳定度,其意思为实际保持时间相比于原预订位置的变化。“+”(加法)不稳定度的意思是:当不稳定度的值为正的时候,会引起保持时间窗增加,这不会引起时序违例。当不稳定度的值为负的啥时候,会引起保持时间窗减少,这会引起时序违例。
建立时间余量,实际上是探究目标寄存器REG2的时钟与数据的关系。其本质是分析实际数据到来的时间与电路所期待的数据到来时间之间的关系。
建立时间余量 = 电路所要求的数据到来的时间 - 实际数据到来的时间
Setup Slack = Data Required Time - Data Arrival Time
保持时间余量 = 目标寄存器实际数据结束的时间 - 目标寄存器期望数据结束的时间
Hold Slack = Data Arrvial Time - Data Required Time