目录
一、时钟约束的目的
二、约束工程项目
三、主时钟和生成时钟
四、主时钟约束
五、生成钟约束
一、时钟约束的目的
之前的文章对时序分析的基本原理做了介绍,我们会发现时序分析离不开时钟信号。对于时序分析工具来说同样如此,分析工具需要我们去告知时钟的特征,通过添加合理的时钟约束,经过 时序分析工具分析后得到对应的时序分析结果, 用于后期的优化提供数据参考依据。这就是时序约束的目的和意义。
二、约束工程项目
本次时钟约束将以之前做过的千兆以太网数据收发项目为基础,对工程中的主时钟和生成时钟进行约束。
三、主时钟和生成时钟
主时钟通常是FPGA器件外部的板级时钟(如晶振、数据传输的同步时钟等),或者可以理解为TOP层的输入时钟。
生成时钟也叫衍生时钟,是由主时钟经过PLL或者MMCM分频、倍频、相移后的时钟,也包括自己分倍频产生的时钟。
值得注意的是,如果基准时钟经过了 PLL, 由于在 PLL 配置界面设置了基准时钟频率等信息,在约束信息里会自动添加基准时钟约束,并且自动会把生成时钟也会添加约束。
四、主时钟约束
这里我们对项目工程中的rx_clk信号做约束,这个信号是PHY芯片通过引脚传入FPGA的时钟信号,用于iddr模块的采样时钟,并没有经过PLL,因此需要进行时钟约束。
首先Run Implementation进行综合、布局布线,完成后Open Implementation Design。
然后点击Edit Timing Constraints。
选中Creat Clock,然后点击加号“ + ”创建时钟。
接着设置参数:
Clock name:设置名称(自定义)。
Source objects:选择要约束的目标时钟。
Waveform:设置时钟周期,8ns。
在 Source objects选择中,点击“...”按照以下步骤选择添加。
创建完成后如下图。
然后点击保存,rx_clk的约束信息就会被添加到项目的约束文件中。
然后就可以查看时钟约束结果了。首先关闭打开的Report timing,然后点击Report Timing。
设置要打印的时序报告的参数。设置源点为我们的tx_clki。
在option 中的设置观察时序路径条数和每个路径打印多少条信息, 点击 OK 。
这样就生成了时序报告。可以看到建立时间没有发生时序违例,而保持时间发生了时序违例(红色)。最大为-0.163ns的时序违例。
我们回去重新综合、布局布线,这时约束文件中已经添加了rx_clk的约束信息。然后再次打印时序报告,可以看到时序违例已经没有了。
五、生成钟约束
这里我们对项目工程中的tx_clk信号做约束,这个信号是经过ODDR模块生成输出的时钟信号,并没有经过PLL,因此需要进行时钟约束。
同样是Open Implementation Design,点击Edit Timing Constraints。然后点击Edit Timing Constraints。这里不同的是要选择Creat Generated Clock,然后点击加号“ + ”。
接着设置参数:
Clock name:设置名称(自定义)。
Master pin:设置源时钟信号。
Source objects:选择要约束的目标时钟。
其中源时钟设置如下:
目标时钟设置如下:
同样,点击保存后会在工程约束文件中添加tx_clk的约束信息,这里不再展示。因为现在还没有做output delay,所以这个时钟下面的路径并没有。但是我们可以通过tcl console打印生成的时钟信息。