基于TimeQuest的时序分析

220 阅读3分钟

clock setup slack: 建立时间余量

建立时间Tsu 要在时钟上升沿到来前一段时间数据必须保持稳定,只有满足这个时间要求的数据才会被正确锁存。

slack = data required time - data arrival time

由于时序路径太长,大部分时间消耗在这里,导致时序余量达不到要求。 解决方法:

1 将两个时序逻辑之间的大部分组合逻辑分成两个小的逻辑,加入寄存器,采用流水线设计思想。

2 进行时序约束

基于TimeQuest的 Th分析

时序分析不仅需要建立时间达到要求,保持时间Th也需要达到要求,由于设计中Tsu影响着Fmax,所以时序分析更多看Tsu。

但如果Th没有达到时序收敛,对于一个设计来说同样致命。

timequest对Th的 分析和优化:

对I/O 引脚进行Th分析,timequest主要根据设计者添加的input min delay 或者output min delay进行分析。

在report timing中添加 inpur max delay 以及ouput max delay时,就限定了与FPGA接口信号的最快最慢 时序延时。

对于I/O时序分析,pin2reg reg2pin。 但是对于reg2reg的时序分析是不需要添加别的时序约束的,只要相关时钟进行全局时钟约束、

timequest进行reg2reg分析:

timequest对于每一条路径建立时间和保持时间会有两种路径分析报告,即可能的最佳路径和最差路径的分析。 建立时间的最佳路径其实是保持时间分析中的最差路径。

如果时序分析里Th无法达到要求,可以考虑选项optimize hold timing 和 optimize fast - corner timing 进行优化。

I/O约束:

1 输入延时

set_input_delay 约束指定了某个输入引脚关于给定时钟的数据到达时间。

使用set_input_delay 命令来指定设计引脚的输入延时,最大值用于建立时间检测,最小值用于保持时间检测。

2 输出延时

set_output_delay 约束指定了某个输出引脚关于给定时钟相关的数据到达时间。

image.png

image.png

和一般的时序分析一样,外部器件输入到FPGA的数据也必须满足建立保持时间要求,输入最大延时就是外部期间到达FPGA端口的最晚时间,这个时间,必须考虑FPGA内部锁存这个数据的建立时间Tsua。 Tsua为FPGA相对于外部期间的建立时间,Tsu为FPGA内部寄存器的建立时间。

如果数据在时钟锁存沿到来之前 Tsua时间还没到达,那时钟无法锁存这个数据,会出现时钟违规。

输入最大延时满足:

建立时间Tsua + 输入最大延时 <= 时钟周期Tclk

输入最小延时: 数据到达FPGA的最快时间

保持时间Tha <= 输入最小延时

同理,数据从时钟发射沿到达FPGA输出端口的时间Tco <= Tclk - 输出最大延时

数据从时钟发射沿到达FPGA输出端口的时间Tco >= Tha -PCB布线延时

输出最小延时:

output minmum delay = min data delay - Th - max clock delay

min data delay: 是指数据从FPGA器件输出引脚到达外部器件输入引脚的PCB延时。

max clock delay:时钟从时钟源传播到外部器件输入端口的PCB延时。 PCB时钟偏斜是max clock delay的一个特例。

添加时序例外,时序例外会更改TimeQuest 默认的分析处理,它的优先级更高,能够覆盖其他的约束。

静态时序分析:

reg2reg 寄存器与寄存器之间的时序路径

pin2reg输入引脚到寄存器之间的时序路径

reg2pin寄存器到输出引脚之间的时序路径

pin2pin输入引脚到输出引脚的时序路径