本文章磋商一下FPGA的时序约束步骤,本文章内容,来源于配置的明德扬时序约束专题课视频。
时序约束是一个非常主要的内容,而且内容比较多,比较杂。因此,很多读者对付怎么进行约束,约束的步骤过程有哪些等,不是很清楚。明德扬根据以往项目的履历,把时序约束的步骤,概括分成四大步,分别是时钟的约束、input delays的约束、output delays的约束和时序例外。
时序约束是有先后的,首先要做时钟约束、其次是input delays约束、再次是output delays约束,末了才是时序例外的约束。这是一个完全的大步骤,也便是说我们在项目开始阶段就可以约束我们的时钟,把我们时钟的频率、周期、来源等等定义好。这一步做完之后,先不要做二三四步。这时候我们要完成我们的设计,要把我们内部的时序都完成之后才做第二步设置“input delays”,比如说我们从外部进来的一个情形。第三步output delays,也便是说要往下贱器件发送的一个时序情形。当这一二三步都做完之后,我们在末了项目的阶段才做一个时序例外的情形。时序例外也便是说哪些时序是不须要剖析的,这种情形要设置好。末了我们才能把全体时序约束完成。

以上是大的步骤,但事实上每一个步骤又可以细分成很多种情形。例如时钟约束,时钟可以分很多种,一种是差分时钟,一种是管脚进来的时钟、还有我们PLL产生时钟等等。还有一种是有数据但没有时钟的情形。input delays、output delays 也有很多种,我们到底要怎么样去剖析,怎么去看。明德扬就把这四个步骤再进行细化,便是根据情形来分别列出来。
下面分别展开描述。
时钟时钟约束可以分成很多种情形,不同的情形就有不同的约束方法,一样平常有哪几种情形呢?
如上图,时钟约束概括地,可以分成三种情形,分别是输入时钟、PLL等衍生时钟以及自己分步的时钟。
输入时钟输入时钟是指时钟从FPGA管脚进来的环境,这也是最常见的情形。根据输入的管脚的不同,输入时钟情形又可以分成:输入管脚是单真个、输入管脚是差分的,以及GT或者规复时钟三种情形。
第一种:输入管脚是单真个,即时钟直接从管脚进来、并且是单端旗子暗记。例如普通低速晶振,大部分是这种情形,明德扬的FPGA ALTERA学习板,如MP801、MP603,其时钟均是由晶振产生,送到FPGA,并且是单真个旗子暗记。
第二种:输入管脚是差分的,即时钟直接从管脚进来,并且是差分旗子暗记。大部分高速晶振、LVDS接口等,属于此环境。例如明德扬FPGA XILINX学习板,如MP802,其包含了PCIE管脚,其输入的时钟便是差分的;这个板子的DDR的驱动时钟,时钟频率在200M旁边,也是属于此种以环境。
第三种:GT或者规复时钟,即利用了高速收发器的环境。在高速收发器管脚中,是没有时钟的,时钟已经嵌入到数据里面,利用FPGA的GTX IP核吸收数据,并且从数据规复出时钟。这个规复出来的时钟便是此种环境。最常见的便是光纤接口。
PLL等衍生时钟那如果说我不是输入管脚,而是PLL产生的输出时钟,这个 便是PLL等衍生时钟。这种时钟,FPGA的工具,会自行推导,一样平常无需约束,但本色运用中,强烈建议约束,会有好处的,好处不才一篇文章中解释。
自己分频的时钟还有一种情形是自己分频的时钟,如果说我们自己写了一个计数器,把它二分频、四分频、八分频等,分频出来的旗子暗记当为时钟,这种情形便是自己分频的时钟。
首先解释,明德扬不推举利用此方法来产生时钟。但确实要用到分频时钟时,那就要记得做时钟约束。这种情形下要怎么进行约束呢?
以上概括相识释了时钟的几种情形,每种情形下,其约束方法都有些不同以及把稳点。详细约束方法,可以看后续文章的内容。
input delaysinput delay约束,即输入延时约束,是时序约束的重点,input delay 又分几种呢?
如上图,input delay约束概括地,可以分成三种情形,分别是系统同步、源同步和有数据无时钟。
系统同步第一个是系统同步办法,也便是说全体电路板上FPGA以及上游器件都共用一个时钟,并且相位严格相同,这个便是系统同步的办法。
源同步第二种是源同步的办法,源同步是怎么样?便是上游器件,把数据和时钟旗子暗记一起送到FPGA上来的,那这种便是源同步。
源同步是更常用的一种办法,系统同步比较少用,为什么呢?由于要做到上游器件跟FPGA的相位差为0,没有一点时钟差,这种哀求非常高。而源同步是数据跟时钟都是从上游器件一起运送过来给FPGA,这是一种更常用的办法。
这个源同步,又有很多种,详细SDR、DDR和有数据无时钟三种情形。
第一种:SDR。SDR是指时钟是单沿有效的办法,比如说我只用上升延或者低落延的一个办法,SDR约束的参数,其获取的方法有两种:查看上游器件手册(通过查看上游器的数据手册,获取参数)以及通过示波器丈量(通过示波器丈量旗子暗记的相位差,获取参数)。
第二种:DDR。DDR是另一种办法,它是一种时钟双沿有效的一个办法。也就说即用它的上升延,也用它的低落延。例如说我们的DDR2、DDR3的时钟,都是高下降沿一贯采数据的;包括千兆网的RGMII接口,也是通过双沿的办法。
DDR的这种情形,我们还可以连续划分成中央对齐和边沿对齐两种情形。
中央对齐是指:时钟边沿始终在数据的中间,时钟上升沿的旁边两边,数据都是稳定的。边沿对齐是指:时钟和数据边沿对齐的,在时钟变革沿两边,其数据是不稳定的。
第三种:有数据无时钟。第三种便是有数据无时钟的情形。例如说常见的串口。串口是直接数据过来的,它是没有随路时钟过来的。而我们用本地时钟去采样,就会涌现有数据无时钟。那对付这种我们该当怎么去约束,又是另一种情形。
output delays输出延时约束和输入延时一样,也是约束的重点。output delay 我们紧张分两种,系统同步和源同步。
系统同步
全体电路板上FPGA以及下贱器件都共用一个时钟,并且相位严格相同,这个便是系统同步的办法。此时FPGA往下贱器件发送数据,这时候只传送数据线就可以了。而时钟跟FPGA共用一个的,不须要传时钟。
源同步源同步便是FPGA往这个器件发数据,在发数据过程中也发一个时钟过去,这是一个随路时钟的一个办法,是源同步。
源同步我们还分SDR和DDR。
第一种:SDR。SDR是指时钟是单沿有效的办法,比如说我只用上升延或者低落延的一个办法,SDR约束的参数,其获取的方法有两种:查看上游器件手册(通过查看上游器的数据手册,获取参数)以及通过示波器丈量(通过示波器丈量旗子暗记的相位差,获取参数)。示波器丈量比较少用。
第二种:DDR。DDR是另一种办法,它是一种时钟双沿有效的一个办法。也就说即用它的上升延,也用它的低落延。例如说我们的DDR2、DDR3的时钟,都是高下降沿一贯采数据的;包括千兆网的RGMII接口,也是通过双沿的办法。
DDR的这种情形,我们还可以连续划分成中央对齐和边沿对齐两种情形。
中央对齐是指:时钟边沿始终在数据的中间,时钟上升沿的旁边两边,数据都是稳定的。边沿对齐是指:时钟和数据边沿对齐的,在时钟变革沿两边,其数据是不稳定的。
时序例外时序例外一样平常用在clock与IO都约束后,还是不知足时序哀求的情形下。紧张包括多周期路径、不须要检讨的路径和组合电路延时等三种情形,如下图。
多周期路径
多周期路径是指完成一个运算须要超过1个时钟周期的环境,多周期路径在IC设计领域利用较多,但在FPGA里运用较少。
不须要检讨的路径有一些路径是不须要剖析的,详细可以分成三种:常量或伪常量旗子暗记、互斥路径和异步时钟。
第一种:常量或伪常量旗子暗记。某些旗子暗记虽然不知足时序哀求,但本色上该旗子暗记在运用处景中,是不会改变的,例如某个开关旗子暗记,它在上电时打开后,就一贯保持打开状态,不会变来变去。那么这个旗子暗记就可以认为是伪常量旗子暗记。假设它不知足时序哀求,也是无所谓的,由于不会变,不会变就意味着建立韶光和保持韶光肯定知足,以是不存在问题。这种旗子暗记是不须要检讨 的。
第二种:互斥的路径。可以大略认为是双向端口,即代码中,利用inout定义的旗子暗记。
第三种:异步时钟。即旗子暗记从一个时钟域,跨到另一个时钟域的情形。这也是不须要检讨 的。把稳,这里说不用检讨,是指完成异步旗子暗记同步化后,不用检讨的意思。
组合电路延时还有一种是组合电路的延时。组合电路延时便是说我从这个管脚到另一个管脚之间,另一个管脚进来,这个管脚出去中间没有任何一个时钟,这是组合电路给延时的一种情形。
总结与建议前面我们讲了时钟约束、输入延时、输出延时还时序例外的情形。每一种情形又分了很多种,根据它的不同类型来区分,每次约束的时候都是个中的一种情形。比如说CLK差分,就去找时钟,然后根据差分管脚怎么约束,来找到对应情形,按照哀求进行约束。这相称于我已经供应一个表给你,你按照这个表去核对。找到对应的情形,按哀求进行约束就可以了。
记住:开始的时候,只是配置时钟,不配置input delay 、 output delays和持续例外。由于我们开始的时候是专心于内部电路,我们时序的一个设计,知足内部哀求之后,再去配置我们的接口。在时钟完备通过之后再配置input delay 和output delays 。
时序例外是末了差不多要落成了再进行配置的。而且这个配置是要很小心。由于我们实际例外,比如说不用检讨,我们set false path这种情形,设置好便是表示不用检讨。如果在开始的时候,就设置好了,万一中间又要改变,你改变的话,那你忘了把这个约束给干掉了,这种情形就会涌现有缺点也提示不出来的情形。以是说时序例外该当是末了情形下进行的。
这个顺序是明德扬履历的一个顺序,我们的项目基本上是按照这个顺序做的。但是不同的公司也会有不同的做法。例如说我一开始全部都不约束,到末了再生约束,这也是可以的。这种做法没有统一标准,反正学明德扬的课程,你就按这个步骤做,去到其他公司,再根据公司哀求去做就可以了。
本文章是基于赛灵思的一个时序约束,ALTERA也是相似的,乃至IC芯片设计领域,也是同样的思路。
有句话讲的很好,我们的时序是设计出来的,不是约束出来的。以是说时序主要还是不主要?当然主要。但是它不是非常主要,更主要的是如果说我时序涌现例外,不知足的时候,更主要是改变你的设计,而不是哀求约束。
下一篇文章,我们将详细磋商“时钟约束”的内容,讲解各种情形下的时序约束方法。须要更多更详细的资料,可以找作者理解。