1 静态时序分析(STA,static timing analysis)
和PCB一样,FPGA内部的信号传递也需要时间,通过逻辑门也需要一定的延迟。这些延迟在低时钟频率下可以忽略不计,但是在高时钟频率和复杂的时序逻辑下可能会导致数据比时钟慢一个时钟周期导致时序违例。为了防止出现时序违例,就需要对FPAG内部的延迟和走线进行分析。使数据和时钟更好的吻合。
时序分析的最终目的就是让数据能被时钟正确的传输到下一级。
对于FPGA的EDA软件来说,寄存器与寄存器之间的延时是可预测的,但是时钟以及在IO口处的时钟与数据之间的相移是未知的。
2 时序分析的基本模型
时序分析是对两个节点之间的信号进行时序分析,模型通常分为一下几种:
1.寄存器和寄存器之间
2.输入PAD(FPGA的接口)与寄存器之间。
3.寄存器与输出PAD之间。
4.输入PAD与输出PAD之间。
3 建立时间与保持时间
上图是两级寄存器之间的数据以及时钟传输情况。在reg1的输入端,时钟上升沿数据data2开始由D传输到Q处,并且经由组合逻辑传输到reg2的D处并稳定下来,时钟会在发射沿的下一个时钟周期对reg2处的数据进行采样并传输给下一级。
一般情况下发射沿和采样沿相差一个时钟周期,假设数据和时钟在路径中均无延时。
则数据到达reg2时,发射沿也同时到达reg2,由于发射沿比采样沿快一个时钟,于是数据到达reg2的时候,采样沿还有一个时钟周期才到。这样就要求只要数据在采样时钟来之前将数据建立起来,就可以完成采样,因此建立时间就是一个时钟周期。
数据data2在reg2处结束的时间也就是data3开始的时间是data2到来后的一个时钟,刚好是采样沿到来的时间。因此,采样沿与data2结束的时间是同步的,相差是0。也就是保持时间是0。前仿真的时候的时序就是理想情况
总结:建立时间是指采样沿与数据到来的时间差。保持时间是采样沿与数据结束的时间差。理想情况下(路径无延迟),建立时间为一个时钟周期,保持时间为0。
假如数据在路径中的延时过大,刚好是一个时钟周期,此时则数据到来时采样沿刚好到来,数据会保持一个时钟周期。根据上面的定义,此时的建立时间为0,保持时间为一个时钟周期。
实际在综合工具的布局布线中,工具会尽力的将采样沿对齐与数据的到来和结束的中心位置,这样可以在保持时间与建立时间中获得平衡。
1.时钟的偏斜(Tskew):同一时钟到达不同的寄存器之间的时间差称为时钟的偏斜。称为Skew。
全局时钟网络:该时钟到达每个寄存器之间的时间大致相同。可通过PLL或者bufg配置。
计数器的分频走的是数据线,到达寄存器之间的延迟可能过大。
2.数据延迟(Tdata):数据在数据线之间的传输延迟。Tdata。
3.寄存器更新数据延迟(Tco):当寄存器的采样时钟可以采样时到数据从D端采样到Q端稳定的时间。
4.建立时间门限和保持时间门限(Tsu/Th):寄存器时钟上升沿到来之前数据应该在D端保持的时间和上升沿到来之后时钟采集数据时数据应该保持的时间。