fpga设计之时序约束总结.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
fpga设计之时序约束总结

FPGA设计之——时序设计 关于FPGA设计中,时序约束的定义的总结说明 1.全局时序约束 1.1 PERIOD约束 ?用于约束同一时间域中同步逻辑单元之间的时序关系,PERIOD约束会自动处理寄存器时钟端的反相问题,即,如果相邻同步元件时钟相位取反,那么它们之间的延时将被默认PERIOD约束值的一半。 ?NET “net_name” PERIOD = period {HIGH|LOW} [high_or_low_time]; ? ?最小时钟周期的计算: Tclk = Tcko + Tnet +Tlogic + Tsetup - Tclk_skew; 其中,Tcko为从时钟输入到DFF输出端的时钟输出时间,Tnet为网线延时,Tlogic为同步元件之间的组合逻辑延时,Tsetup为同步元件的建立时间。 ? 1.2 OFFSET约束 ?用于约束数据的建立时间和保持时间,主要是输入PAD到同步单元和同步单元到输出PAD的时序关系 ?OFFSET_IN_BEFORE用于定义输入数据比有效时钟沿提前多长时间准备好,其芯片内部与输入引脚相连的组合逻辑的延时不能大于该时间,否则,输入的数据就达不到要求的建立时间。 ?OFFSET_IN_AFTER用于定义输入数据在有效时钟沿后多长时间到达芯片的输入引脚,其作用和BEFORE是一样的,不过BEFORE的时钟沿是AFTER的下一个沿,如果一起定义的话。 ?上述约束用于设定在数据输入时,保证有效时钟沿到来时,数据已经达到稳定。 ? ?OFFSET_OUT_AFTER用于定义了输出数据在有效时钟沿之后多长时间之内保持稳定,其实是定义了输出的最大的数据保持时间,芯片内部的输出延时必须小于这个值。 ?OFFSET_OUT_BEFORE用于定义在下一个时钟信号到来之前的某个时间,必须输出数据,以供下一级器件使用。 ?这些约束用于对设计输出端的数据输出进行约束,以满足下一级器件的建立时间的要求,保证下一级的采样数据是稳定可靠的。 2.特定约束 2.1 FROM_TO约束 ?用于定义两个逻辑组之间的时序约束,以及对两者之间的逻辑和布线延时进行控制,这两个逻辑组的定义可以是预定义也可以是用户自己定义。 ?通常用于约束多周期路径(Multi-Cycle),时钟无关的数据路径,False路径等。对于组合逻辑和慢速信号逻辑的约束经常使用。 ? ?所谓多周期路径:主要的形式为,寄存器采用同一个时钟驱动,但是有些寄存器需要用使能信号来进行控制,由于使能信号的频率较低,所以,在这个路径的传输过程中,存在着多个时钟周期进行传输的情况。 ?对于这种情况,约束要比全局约束松,可以先进行时钟周期约束,再对这个路径进行松绑约束,用FROM-TO。 ? ?所谓多时钟域:主要的形式是寄存器的两个时钟完全独立的,可以先对每个时钟所驱动的寄存器或分组进行周期约束,然后在对两个寄存器(分组)进行FROM-TO约束。 2.2 最大延时约束MAXDELAY ?用于定义特定网络上的最大延时,只能定义到网络上。 ? 2.3 最大偏移约束MAXSKEW ?SKEW用于定义同一点驱动的时钟信号经过路径传播之后,到达两个或多个终点的时间差,这个约束用于定义特定的网线上的偏移不大于某个时间。 ? 2.4 TIG/False路径约束 ?用于对不需要约束的路径(即与约束无关的路径)进行说明。推荐用这个约束来减少设计中受约束路径的数量。 ?对于静态时序分析中无法达到要求的情况,即slack为负值的情况,找到关键路径,主要的原因可能是,关键路径本身是一条TIG路径或是多周期路径,应该通过修改约束来改进这个问题。如果不是这样,当延迟值在目标延迟的20%的范围内,使用synplify 的-improve命令来重新综合优化设计,当超出20%,则需要重新修改设计,比如流水线,FSM或资源共享等方法。 ? 2.5 SYSTEM_JITTER系统时钟抖动约束 ?用于定义设计中的系统时钟抖动的最大值。 3. 分组约束 3.1 TNM和TNM_NET约束 ?TNM和TNMNET约束都是用于用户定义新的时序约束分组。两者的不同是TNM进行分组不可以穿越IBUF和BUFG,而TNM_NET则可以,也就是说,如果用TNM定义一个PADS分组,只能对这个PAD进行约束,而如果使用TNM_NET约束,则会把IBUFG后面的连接网络都加入到这个约束中来。 ?TNM_NET约束只能用于网线上,否则被忽略。? ?{NET|INST|PIN} object_name(signals_name) TNM/TNM_NET = predefined_group or identifier(net_name); 3.2 TIMEGRP约束 ?用于使已有的分组合并,构成新的分组,或用排除的方

您可能关注的文档

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档