时序分析基础

时间:2024-03-17 07:36:00

FPGA的内部结构好比一块PCB,FPGA的逻辑阵列好比PCB板上的一些分立元器件。PCB通过导线将具有相关电气特性的信号相连接,FPGA也需要通过内部连线将相关的逻辑节点导通。
PCB上的信号通过任何一个元器件都会产生一定的延时,FPGA的信号通过逻辑门传输也会产生延时。PCB的信号走线有延时,FPGA的信号走线也有延时。
因为过长的延时或者一条总线多个信号传输延时的不一致,会影响FPGA本身性能,也会给FPGA之外的电路或系统带来问题。

静态时序分析的前提是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,即有了约束才会有分析。

建立时间(Tsu),是指在时钟上升沿到来之前数据必须保持稳定的时间;
保持时间(Th),是指在时钟上升沿到来以后数据必须保持稳定的时间;
Tco,数据在芯片内部的路径延时;

一个数据需要在时钟的上升沿被锁存,这个数据就必须在时钟上升沿的建立时间和保持时间内保持稳定。在建立保持时间内不能有数据的变化,数据必须保持稳定。

四大基本时序路径:(1)内部寄存器之间的时序路径,即reg2reg
(2)输入引脚到内部寄存器的时序路径,即pin2reg
(3)内部寄存器到输出引脚的时序路径,即reg2pin
(4)输入引脚到输出引脚之间的时序路径,即pin2pin
时序分析基础
对于reg2reg路径,只要告诉FPGA的时序设计工具它们的时钟频率(或时钟周期),那么时序设计工具就会让这条reg2reg的路径延时符合这个固定时钟频率所要求的范围(即它的建立时间和保持时间得到满足)。

数据路径,就是数据在整个传输起点到传输终点所走过的路径;
时钟路径,是指时钟从源端到达各个寄存器输入端的路径;

data arrival path是指数据在两个寄存器间传输的实际所需时间;
data required path是指为了确保稳定、可靠且有效的传输(即满足相应的建立时间和保持时间要求),数据在两个寄存器间传输的理论所需时间(也就是最基本的必须满足的传输时间,对建立时间来说是最大值,对保持时间来说是最小值)

时序分析基础
Tc2t表示时钟源到源寄存器reg1所经过的时钟网络延迟
Tc2r表示时钟源到目的寄存器reg2所经过的时钟网络延迟
Tco表示数据在被锁存后在寄存器内经过的延时
Tr2r表示数据从上一级寄存器(源寄存器)的输出端到下一级寄存器(目的寄存器)的输入端所经过的延时
Tsu表示目的寄存器的建立时间
Th表示目的寄存器的保持时间

对于一个寄存器到寄存器的传输来说,正常情况下,各个寄存器都是在时钟的控制下,每个上升沿锁存一次数据,那么意味着两个相邻的寄存器,后一级寄存器每次锁存的数据应该是前一级寄存器上一个时钟周期锁存过的数据。
时序分析基础
setup relationship时,源寄存器为launch clock,目的寄存器为latch clock,而launch edge从时间上看就是比latch edge早一个时钟周期,即他们之间通常是相差一个时钟周期的关系
hold relationship实际上是同一个edge,也就是说后一级寄存器的保持时间很可能遭到上一级寄存器同一个时钟周期所传输数据的侵犯。对hold relationship的分析就是为了防备这种情况,因此这里的launch edge和latch edge实际上就是同一个时钟呀,那么他们的关系通常只是Tc2t和Tc2r的时间差。
时序分析基础
建立时间余量计算公式:
setup time slack = data required time – data arrival time
data arrival time = launch edge + Tc2t + Tco + Tr2r
data required time = latch edge + Tc2r – Tsu
保持时间余量的计算公式:
hold time slack = data arrival time – data required time
data arrival time = launch edge + Tc2t + Tco + Tr2r
data required time = latch edge + Tc2r + Th

对于pin2reg或reg2pin的路径分析,一般都需要用户指定一个符合相关时钟要求的虚拟时钟,这虚拟时钟作为pin端的时钟来时序分析。
reg2pin:
关于FPGA外部的路径时延参数,通过set output delay 进行约束传递信息。
时序分析基础
output delay max = dd_max + tsu_ext + (cd_altr_min – cd_ext_max)
output delay min = dd_min – th_ext + (cd_altr_max – cd_ext_min)
时序分析基础
建立时间,基本的时序关系:
launch edge + Tc2t + Tco + Tr2p + Tdpcb < latch edge + Tc2r – Tsu
保持时间,基本的时序关系:
launch edge + Tc2t + Tco + Tr2p + Tdpcb > latch edge + Tc2r + Th

output delay max= Tdpcb_max + Tsu + (0 – Tc2r_max)
output delay min = Tdpcb_min – Th + (0 – Tc2r_min)

pin2reg:
时序分析基础
大圈部分即pin2reg的完整意义上的路径约束起点和终点,小圈部分则是在FPGAnebula实际的pin2reg路径,也是约束的直接对象。
时序分析基础
Tc2s,这个时钟源到达外部芯片的时钟输入引脚的路径延时
Tc2r,时钟源到FPGA的时钟输入引脚的路径延时
extTco,数据信号在外部芯片所经过的总延时值
uTc2r,在FPGA内部时钟信号的走线延时
Tp2r,数据信号的pin2reg延时定义
uTsu,FPGA内部寄存器的建立时间
uTh,FPGA内部寄存器的保持时间

建立时间满足公式:
launch edeg + Tc2s + extTco + Tpcb + Tp2r < latch edge + (Tc2r + uTc2r) – uTsu
保持时间满足公式:
launch edge + Tc2s + extTco + Tpcb + Tp2r > latch edge + (Tc2r + uTc2r) + uTh

建立时间:
(Tc2s – Tc2r) + extTco + Tpcb < (latch edge - launch edge) – uTsu + uTc2r – Tp2r
保持时间:
(Tc2s – Tc2r) + extTco + Tpcb > (latch edge - launch edge) + uTh + uTc2r – Tp2r

如果input delay = (Tc2s - Tc2r) + extTco + Tpcb,input delay实际上就是FPGA外部所有延时参数的总和。
则:input delay < (latch edge – launch edge) + uTc2r – uTsu – Tp2r
input delay > (latch edge - launch edge) + uTc2r + uTh – Tp2r
时序分析基础