Vivado时序约束1----时序约束与时序分析概念篇

       相信很多人接触FPGA后,或多或少都听说过时序约束的概念;也看过很多的时序约束教程,但是大部分教程都是通用的、理论性的,很少会有教程告诉你,针对某一款工具,我们究竟该怎么去做时序约束。更有甚的,有的人把时序约束和时序分析混为一谈,把人越搅越晕。

一 时序约束与时序分析

      那么,要讲清楚时序约束,我觉得有必要先讲清楚什么是时序约束?时序约束和时序分析是什么关系?

      约束、约束、何为约束?除了时序约束,还有物理约束对吧!那么物理约束是干嘛的呢,我们基础的物理约束包括pin脚位置约束 和 电平约束。所以从这里我们不难看出,所谓约束,就是我们将自己的设计信息告诉工具的一种方式。物理约束告知pin脚位置和电平(当然还有一些高阶的物理约束可以固定BRAM/DSP core的位置),时序约束顾名思义就是告知频率、占空比、IN/OUT delay等等信息,告知工具我们设计的时序条件。

      再说,时序约束 与 时序分析有什么关系!

     很多人估计都见过这种静态时序分析模型;

跟着别人在那算来算去,最后也没搞明白怎么做时序约束。一通运行下来,时序“爆红”一大堆也不知道怎么解决,本着能用就行的态度,也放那不管,等下一个有缘人。 那么到底什么是时序分析?简单来说,时序分析是工具检查设计是否满足时序要求的一个步骤;所以这里有个重点,时序分析是工具来执行的,不是工程师,工程师只需要知道其分析的原理,知道出现时序“爆红”时的改善方向。那么,工具用来分析是否满足时序要求的标准,这个标准就是时序约束。所以,做时序约束,也可以理解为告知工具我们的时序目标,这个要求不是越严越好,也不是越宽松越好;准确最重要

二 时序约束的内容

  其实,对于不同的工具,其约束的内容也会不一样。比如:ISE就是从FPGA的视角看问题,它会认为所有缺省的的时钟之间的约束都是异步的,不会主动进行时序分析(除非事先约束为同步);而Vivado则完全相反,Vivado默认所有的时钟除非事先声明都作同步处理,没有作例外约束或时钟分组,工具会主动分析每一条跨时钟域路径。这也是为什么很多人由ISE切换到Vivado之后,吐槽Vivado综合实现慢的原因;看看“爆红”的路径,有没有“requirement = 0.x” 的无理要求,这明显就是时序约束没有设置正确的原因。

那么针对 Vivado 我们需要进行哪些时序约束设置呢?这里只做简述,后续文章再展开介绍

1、时钟约束:

       create_clock                     

       设置输入时钟约束,包括晶振的输入和GTX的输入;最重要需要最早设置

扫描二维码关注公众号,回复: 16775579 查看本文章

       create_genarate_clock   

       设置衍生时钟约束

       set clock group 

       设置时钟分组,告知工具各时钟的异步和同步关系

2、IO约束:

       set input/output delay

       set max/min delay 

       缺省IO约束,Vivado 会默认时序要求无穷大,综合实现都不会考虑I/O的时序优化,时序分析时也不会针对未约束的路径“爆红”

3、例外约束

        set false path

        伪路径约束,告知工具不用分析该路径;

       set multicycle 

       多周期约束,放宽时序分析条件,但还不是完全不分析;

三、如何在Vivado进行时序约束

       1、推荐通过Constraints Wizard来进行约束

       2、通过Tool --> language Templates --> XDC 中的模板直接编写XDC文件进行约束 

猜你喜欢

转载自blog.csdn.net/ypcan/article/details/132831633