提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
约束文件笔记,傅里叶的猫的视频。
一、周期约束
时序约束就是告诉软件输入从那个引脚输入信号,输入信号要延迟多少时间,时钟周期是多少。
让布局布线后的电路能够满足需求。不加时序约束,软件就无法得知时钟周期是多少,无法提供时序警告的功能。
两个概念:
发起端/发起寄存器/发起时钟/发起沿:指的是产生数据的源端
接收端/接收寄存器/捕获时钟/捕获沿:指的是接收数据的目的端
二、建立时间和保持时间
建立时间就是在上升沿,数据保持不变的最小时间。保持时间就是在上升沿来到后,数据保持不变的最小时间。不满足这两个时间就会发生时序违例。
亚稳态是指,收端寄存器没能够满足建立时间和保持时间,导致输出不稳定的情况。

建立时间和保持时间由器件特性决定,当选择了FPGA,那么器件就确定好了。
可以到对应的AC和DC手册里查看。

三、时序路径
四类路径,片间路径(1和3),片内路径(2和4)。

对于时序路径,需要关注的是起点和终点。

四、时序模型

一个完整的时序路径包括,源时钟路径、数据路径、目的时钟路径。
源时钟路径:指的是时钟信号从其源头(如时钟发生器、PLL输出或外部晶振)到目标寄存器(如触发器的时钟输入端)的完整传播路径。直接影响建立时间(Setup Time)和保持时间(Hold Time)的计算。
数据路径:是指数据信号从一个寄存器的输出端(发送寄存器)传输到另一个寄存器的输入端(接收寄存器)的完整路径。它是时序分析的核心对象之一,直接决定了数据能否在时钟的有效沿(如上升沿或下降沿)到达目标寄存器,并满足建立时间(Setup Time)和保持时间(Hold Time)**的要求。
目的时钟路径:(或称为捕获时钟路径)是指时钟信号从时钟源(如晶振、PLL输出)到捕获寄存器(即接收数据的寄存器)时钟输入端(CLK引脚)的完整传播路径。它是时序分析的关键组成部分,直接影响建立时间(Setup Time)和保持时间(Hold Time)的裕量计算。
该时序模型的要求为
Tclk ≥ Tco + Tlogic + Trouting + Tsetup - Tskew
其中,Tco为发端寄存器时钟的输出时间;Tlogic为组合逻辑延迟;Trouting为两级寄存器之间的布线延迟;Tsetup为收端寄存器建立时间;Tskew为两级寄存器的时钟歪斜,其值等于时钟同边沿到达两个寄存器时钟端口的时间差;Tclk为系统所能达到的最小时钟周期。
简单来说就是,这个时序模型能够正常工作的要求是,从发端时钟上升沿开始,到这个时钟周期结束,数据能够到达接收端寄存器,也就是系统的时钟周期要大于发端寄存器产生数据和接收端寄存器获得上升沿的时间,这个时间不包括保持时间,也就是说满足这个要求,接收端寄存器未必能够正常获取数据。
skew分为两种,positive skew和negative skew,其中positive skew见下图,这相当于增加了后一级寄存器的触发时间。就是后一级寄存器触发的时间晚于发端寄存器。

这个时钟歪斜应该是同一个时钟到达不同寄存器产生的。
但对于negative skew,则相当于减少了后一级寄存器的触发时间,如下图所示。
就是接收寄存器采集数据的时间提前了,和发端寄存器的时钟相比。

发送端寄存器产生的数据,数据经过Tco、Tlogic、Trouting后到达接收端,同时还要给接收端留出Tsetup的时间。而时钟延迟了Tskew的时间。

因此有:
Tdata_path + Tsetup <= Tskew + Tclk
Tdata_path=Tco+Tlogic+Trouting
对于同步设计Tskew可忽略(认为其值为0),因为FPGA中的时钟树会尽量保证到每个寄存器的延迟相同。
保持时间:用于确保寄存器能够正确采样和存储数据。它定义了在时钟信号的有效边沿(如上升沿或下降沿)之后,输入数据必须保持稳定的最短时间。如果数据在保持时间内发生改变,可能导致寄存器进入亚稳态(Metastability)或捕获错误值,最终引发电路功能故障。
因为寄存器获取数据时需要时间的。

reg2在边沿2时刻刚刚捕获reg1在边沿1时刻发出的数据,若reg1在边沿2时刻发出的数据过快到达reg2,则会冲掉前面的数据,从而不满足保持时间。因此保持时间约束的是同一个边沿。

需要满足:
Tdata_path = Tco + Tlogic + Trouting ≥ Tskew + Thold
Tco和Tskew以及Thold由器件决定,只能通过代码来更改Tlogic和Trouting。