时序约束(一):时钟的约束

发布于:2024-06-27 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

一、时钟约束的目的

二、约束工程项目

三、主时钟和生成时钟

四、主时钟约束 

五、生成钟约束

一、时钟约束的目的

        之前的文章对时序分析的基本原理做了介绍,我们会发现时序分析离不开时钟信号。对于时序分析工具来说同样如此,分析工具需要我们去告知时钟的特征,通过添加合理的时钟约束,经过 时序分析工具分析后得到对应的时序分析结果, 用于后期的优化提供数据参考依据。这就是时序约束的目的和意义。

二、约束工程项目

        本次时钟约束将以之前做过的千兆以太网数据收发项目为基础,对工程中的主时钟和生成时钟进行约束。

三、主时钟和生成时钟

        主时钟通常是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打印生成的时钟信息。