时序约束总结

发布 2019-05-28 10:37:15 阅读 6406

很多人发贴,来信询问关于约束、时序分析的问题,比如:如何设置setup,hold时间?如何使用全局时钟和第二全局时钟(长线资源)?

如何进行分组约束?如何约束某部分组合逻辑?如何通过约束保证异步时钟域之间的数据交换可靠?

如何使用i/o逻辑单元内部的寄存器资源?如何进行物理区域约束,完成物理综合和物理实现?等等。。。

为了解决大家的疑难,我们将逐一讨论这些问题。

今天先讨论一下约束的作用?

有些人不知道何时该添加约束,何时不需要添加?有些人认为低速设计不需要时序约束?关于这些问题,希望下面关于约束作用的论述能够有所帮助!

附加约束的基本作用有3:

1)提高设计的工作频率。

对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。

2)获得正确的时序分析报告。

几乎所有的fpga设计平台都包含静态时序分析工具,利用这类工具可以获得映射或布局布线后的时序分析报告,从而对设计的性能做出评估。静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具输出正确的时序分析报告。

3)指定fpga/cpld引脚位置与电气标准。

fpga/cpld的可编程特性使电路板设计加工和fpga/cpld设计可以同时进行,而不必等fpga/cpld引脚位置完全确定,从而节省了系统开发时间。这样,电路板加工完成后,设计者要根据电路板的走线对fpga/cpld加上引脚位置约束,使fpga/cpld与电路板正确连接。另外通过约束还可以指定io引脚所支持的接口标准和其他电气特性。

为了满足日新月异的通信发展,xilinx新型fpga/cpld可以通过io引脚约束设置支持诸如agp、blvds、ctt、gtl、gtlp、hstl、ldt、lvcmos、lvdci、lvds、lvpecl、lvd***t、lvttl、pci、pcix、sstl、ulvds等丰富的io接口标准。

另外通过区域约束还能在fpga上规划各个模块的实现区域,通过物理布局布线约束,完成模块化设计等。

贴2:时序约束的概念和基本策略!

时序约束主要包括周期约束(ffs到ffs,即触发器到触发器)和偏移约束(ipad到ffs、ffs到opad)以及静态路径约束(ipad到opad)等3种。通过附加约束条件可以使综合布线工具调整映射和布局布线过程,使设计达到时序要求。例如用offset_in_before约束可以告诉综合布线工具输入信号在时钟之前什么时候准备好,综合布线工具就可以根据这个约束调整与ipad相连的logic circuitry的综合实现过程,使结果满足ffs的建立时间要求。

附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加周期约束,然后对fpga/cpld输入输出pad附加偏移约束、对全组合逻辑的pad to pad路径附加约束。附加专门约束时,首先约束分组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。

贴3:周期(period)的含义。

周期的含义是时序中最简单也是最重要的含义,其它很多时序概念会因为软件商不同略有差异,而周期的概念确是最通用的,周期的概念是fpga/asic时序定义的基础概念。后面要讲到的其它时序约束都是建立在周期约束的基础上的,很多其它时序公式,可以用周期公式推导。

周期约束是一个基本时序和综合约束,它附加在时钟网线上,时序分析工具根据period约束检查时钟域内所有同步元件的时序是否满足要求。period约束会自动处理寄存器时钟端的反相问题,如果相邻同步元件时钟相位相反,那么它们之间的延迟将被默认限制为period约束值的一半。

如下图所示,时钟的最小周期为:

tclk = tcko +tlogic +tnet +tsetup -tclk_skew

tclk_skew =tcd2 -tcd1

其中tcko为时钟输出时间,tlogic为同步元件之间的组合逻辑延迟,tnet为网线延迟,tsetup为同步元件的建立时间,tclk_skew为时钟信号延迟的差别。

这个帖子打算先澄清一些时序约束的基本概念,然后将在综合工具(synplify pro为例),设计平台( 和quartus 2.2为例)的具体约束方法和技巧,然后将如何利用时序分析工具分析关键路径。如果没有意外,应该30多个帖子吧。

**时序本来是deve的老本行,随时需要deve加入一起把这个帖子办好。欢迎大家畅谈观点,本站的版主,冲锋啊,嘻嘻。

贴4:数据和时钟之间的约束:offset和setup、hold时间。

为了确保芯片数据采样可靠和下级芯片之间正确的交换数据,需要约束外部时钟和数据输入输出引脚之间的时序关系(或者内部时钟和外部输入/输出数据之间的关系,这仅仅是从采用了不同的参照系罢了)。约束的内容为告诉综合器、布线器输入数据到达的时刻,或者输出数据稳定的时刻,从而保证与下一级电路的时序关系。

这种时序约束在xilinx中用setup to clock(edge),clock(edge) to hold等表示。在altera里常用tsu (input setup times)、th (input hold times)、tco (clock to out delays)来表示。很多其它时序工具直接用setup和hold表示。

其实他们所要描述的是同一个问题,仅仅是时间节点的定义上略有不同。下面依次介绍。

贴5:关于输入到达时间,这一贴估计问题比较多,看起来也比较累,但是没有办法,这些都是时序的基本概念啊。搞不清楚,永远痛苦,长痛不如短痛了,呵呵。

xilinx的"输入到达时间的计算"时序描述如图所示:

定义的含义是输入数据在有效时钟沿之后的tarrival时刻到达。则,tarrival=tcko+toutput+tlogic 公式1

根据”贴3“介绍的周期(period)公式,我们可以得到:

tcko+toutput+tlogic+tinput+tsetup-tclk_skew=tclk; 公式2

将公式1代入公式2:

tarrival+tinput+tsetup-tclk_skew=tclk, 而tclk_skew满足时序关系后为负,所以。

tarrival +tinput+tsetup

贴6 数据延时和数据到达时间的关系:

tdelay为要求的芯片内部输入延迟,其最大值tdelay_max与输入数据到达时间tarrival的关系如图2所示。也就是说:

tdelay_max+tarrival=tperiod 公式4

所以:tdelay帖7 要求输出的稳定时间。

从下一级输入端的延迟可以计算出当前设计输出的数据必须在何时稳定下来,根据这个数据对设计输出端的逻辑布线进行约束,以满足下一级的建立时间要求,保证下一级采样的数据是稳定的。

计算要求的输出稳定时间如图所示。

公式的推导如下:

定义:tstable = tlogic +tinput +tsetup

从前面帖子介绍的周期(period)公式,可以得到(其中tclk_skew=tclk1-tclk2):

tclk=tcko+toutput+tlogic+tinput+tsetup+tclk_skew

将tstable的定义代入到周期公式,可以得到:

tclk=tcko+toutput+tstable+tclk_skew

所以,tcko +toutput+tstable

转贴lipple的问题:

请问斑竹上面几贴那些延时属于setup,哪些属于hold啊。

周期=tsetup+tlogic+thold这个公式对比斑竹的公式,区别在于是不是划分的不够细啊?

westor的答复:

基本是哪个意思。这些公式描述的对象是意义的,只是每个变量的定义略有区别罢了,换句话说,变量定义的节点不同。

这个公式是altera等采用的描述方法,一些工具为了便于理解用。

周期=tsetup+tlogic+thold约束时序。

和我前面介绍的公式:

tclk = tcko +tlogic +tnet +tsetup -tclk_skew

相比,他把到寄存器前的所有组合逻辑logic和线延时都归在tsetup里面了,而且上面公式忽略了tclk_skew。

帖8 实施上述约束的方法和命令。

实施上述约束的基本方法是,根据已知时序信息,推算需要约束的时间值,实施约约束。具体的说是这样的,首先对于一般设计,首先掌握的是tclk,这个对于设计者来说是个已知量。前面介绍公式和图中的tcko和tsetup(注:

有的工具软件对tcko和tsetup的定义与前面图形不同,还包含了到达同步器件的一段logic的时延)是器件内部固有的一个时间量,一般我们选取典型值,对于fpga,这个量值比较小,一般不大于1~2ns。比较难以确定的是tinput和toutput两个时间量。

约束输入时间偏移,需要知道tinput,tinput为输入端的组合逻辑、网线和pad的延迟之和(详细定义见帖5),pad的延时也根据器件型号也有典型值可选,但是到达输入端的组合逻辑电路和网线的延时就比较难以确定了,只能通过静态时序分析工具分析,或者通过底层布局布线工具量取,有很大的经验和试探的成分在里面。

约束输出时间偏移,需要知道toutput,toutput为设计中连接同步元件输出端的组合逻辑、网线和pad的延迟之和(见帖7),仍然是到达输出端的组合逻辑电路和网线的延时就比较难以确定,需要通过静态时序分析工具分析,或者通过底层布局布线工具量取,有很大的经验和试探的成分在里面。

约束的具体命令根据约束工具不同而异,首先说使用xilinx器件的情况下,实施上述约束的命令和方法。xilinx把上述约束统称为:offset约束(偏移约束),一共有4个相关约束属性:

offset_in_before、offset_in_after、offset_out_before和offset_out_after。

其中前两个属性叫做输入偏移(offset_in)约束,基本功能相似,仅仅是约束取的参考对象不同而已。后两个属性叫做输出偏移(offset_out)约束,基本功能相似,也是约束取的参考对象不同而已。

为了便于理解,举例说明。

输入偏移约束例:时钟周期为20ns,前级寄存器的tcko选则1ns,前级输出逻辑延时toutput为3ns,中间逻辑tlogic的延时为10ns,那么tarrival=14ns,于是可以在数据输入引脚附加。

net data_in ffet=in14nsafter clk

约束,也可以使用offset_in_before对芯片内部的输入逻辑进行约束,其语法如下:

net data_in ffet=intdelay before clk

其中tdelay为要求的芯片内部输入延迟,其最大值与输入数据到达时间tarrival的关系如帖6所述:tdelay_max + tarrival = tperiod,所以。

tdelay < tperiod - tarrival = 20 - 14 =6 ns.

输出偏移约束例:设时钟周期为20ns,后级输入逻辑延时tinput为4ns、建立时间tsetup为1ns,中间逻辑tlogic的延时为10ns,那么tstable=15ns,于是可以在数据输入引脚附加net data_out ffet=out15nsbefore clk

约束,也可以直接对芯片内部的输出逻辑直接进行约束,net data_out ffet=outtoutput_delayafter clk,其中toutput_delay为要求的芯片内部输出延迟,其最大值与要求的输出数据稳定时间tstable的关系为:toutput_delay_max+tstable= tperiod.

tout_delay< tperiod - tstable = 20 - 15 = 5ns

这些概念和推导有些枯燥和乏味,但是如果要掌握好数据与时钟之间的约束,就要耐心看下去,明天介绍一下altera的相关约束方法。

铁路建设项目激励约束考核暂行办法

为加强铁路建设项目管理,提高工程建设管理水平,制定本办法。一 考核范围。签订合同的铁路建设项目施工 监理单位。二 考核机构。成立建设项目激励约束考核领导小组,由总经理为组长 其他领导为副组长,各部门负责人为成员。负责工程建设项目施工 监理激励约束考核工作。按照各自岗位职责组织考核工作。三 考核费用。...

实习总结 工作总结

近一个月的实习,令我感慨颇多。我实习的班级是五年级 1 班,一大群十一二岁的小孩子,又可爱,又活泼,又好动,又调皮。听了一周的课之后,我开始走上讲台,开始了自己的第一篇 作 当然,刚开始心情特别紧张,由于经验不足和应变能力不强,课堂出现了很多问题,针对出现的问题,指导老师给了我宝贵的建议以及耐心的帮...

LAYOUT总结

布局前的准备 1 查看捕捉点设置是否正确。08工艺为0.1,06工艺为0.05,05工艺为0.025.2 cell名称不能以数字开头。否则无法做dracula检查。3 布局前考虑好出pin的方向和位置。4 布局前分析电路,完成同一功能的mos管画在一起。5 对两层金属走向预先订好。一个图中栅的走向尽...

每月总结 九月总结反思

新教师九月总结反思。时光如白驹过隙一般快,一转眼我已经带班一个月了。在这个月中,我收获了很多也学习了到了很多以前书本上和实习时没学到的知识。开学一个月中我十分感谢我们邵老师对我的不断指导,致使我可以学习的更多,并取得一定进步。刚开学时,我整个人的状态都没调整过来,邵老师说我就像见习生一样跟在她后面,...

总结 中学5月安全工作总结

安全工作重于泰山 校园安全不但关系到全校师生的生命 财产安全,更关系到无数家庭的幸福和社会的稳定。因此,我校自5月4日以来,根据上级文件精神,结合我校实际,在安全工作上做了大量细致且有效的工作,现总结如下 一 领导重视,机构健全。我校领导班子及全校师生员工皆十分重视安全工作,及时认真领会和响应上级 ...

体育课总结 游泳课1总结

教师 尹宝玉学号 38151312姓名 王备。游泳课总结。王备38151312 我们的游泳课程已经接近尾声,考试项目是200米蛙泳。十次课下来,我从开始时对蛙泳一窍不通,到现在能基本上掌握蛙泳的动作要领,感觉收获真的很大。总结一学期来的学习体会,游泳课是一项技术性很强的运动,没有系统的指导和有针对性...

2019年总结表彰大会总结讲话

2013年度xx公司总结表彰大会总结讲话。尊敬的各位来宾 各位领导,亲爱的xx家人们 大家上午好!雪逊梅花一段香,羊踏飞雪奋蹄扬。首先,请允许我代表公司再次向受到表彰的先进集体和先进个人表示热烈的祝贺,向奋战在工作第一线的xx全体员工表示诚挚的谢意。感谢你们一年以来奋发进取 尽职尽责,感谢你们为xx...

个人工作总结 名字 个人总结

个人工作总结模板。标题黑体二号加粗 由于各个时期的工作不同,我只写了接下来的模板。空一行 一 个人主要负责工作 宋体标题加粗三号 包括正常工作交接 宋体标题四号 1 小标题用宋体标题小四。类似这种格式分类,行距为1.0 正文用宋体正文小四 若前段时间无这部分内容,便不需写入总结中。每一大类之后空一行...