对自己的设计的实现方式越了解,对自己的设计的时序要求越了解,对目标器件的资源分布和结构越了解,对EDA工具执行约束的效果越了解,那么对设计的时序约束目标就会越清晰,相应地,设计的时序收敛过程就会更可控。

从最近一段时间工作和学习的成果中,我总结了如下几种进行时序约束的方法。按照从易到难的顺序排列如下:

0. 核心频率约束

这是最基本的,所以标号为0。

1. 核心频率约束+时序例外约束

时序例外约束包括FalsePath、MulticyclePath、MaxDelay、MinDelay。但这还不是最完整的时序约束。如果仅有这些约束的话,说明设计者的思路还局限在FPGA芯片内部。

2. 核心频率约束+时序例外约束+I/O约束

I/O约束包括引脚分配位置、空闲引脚驱动方式、外部走线延时(InputDelay、OutputDelay)、上下拉电阻、驱动电流强度等。加入I/O约束后的时序约束,才是完整的时序约束。FPGA作为PCB上的一个器件,是整个PCB系统时序收敛的一部分。FPGA作为PCB设计的一部分,是需要PCB设计工程师像对待所有COTS器件一样,阅读并分析其I/O Timing Diagram的。FPGA不同于COTS器件之处在于,其I/O Timing是可以在设计后期在一定范围内调整的;虽然如此,最好还是在PCB设计前期给与充分的考虑并归入设计文档。

正因为FPGA的I/O Timing会在设计期间发生变化,所以准确地对其进行约束是保证设计稳定可控的重要因素。许多在FPGA重新编译后,FPGA对外部器件的操作出现不稳定的问题都有可能是由此引起的。

3. 核心频率约束+时序例外约束+I/O约束+Post-fit Netlist

引入Post-fit Netlist的过程是从一次成功的时序收敛结果开始,把特定的一组逻辑在FPGA上实现的布局位置和布线结果固定下来,保证这一布局布线结果可以在新的编译中重现,相应地,这一组逻辑的时序收敛结果也就得到了保证。由于有了EDA工具的有力支持,虽然是精确到门级的细粒度约束,设计者只须进行一系列设置操作即可,不需要关心布局和布线的具体信息。

4. 核心频率约束+时序例外约束+I/O约束+LogicLock

LogicLock是FPGA器件内部的布局约束。LogicLock的约束是粗粒度的,只规定设计顶层模块或子模块可以调整的布局位置和大小。成功的LogicLock需要设计者对可能的时序收敛目标作出预计,考虑特定逻辑资源(引脚、存储器、DSP)与LogicLock Region的位置关系对时序的影响,并可以参考上一次时序成功收敛的结果。这一权衡和规划FPGA底层物理布局的过程就是FloorPlanning。LogicLock给了设计者对布局位置和范围更多的控制权,可以有效地向EDA工具传递设计者的设计意图,避免EDA工具由于缺乏布局优先级信息而盲目优化非关键路径。由于模块在每一次编译中的布局位置变化被限定在了最优的固定范围内,时序收敛结果的可重现性也就更高。

5. 核心频率约束+时序例外约束+I/O约束+寄存器布局约束

寄存器布局约束是精确到寄存器或LE一级的细粒度布局约束。设计者通过对设计施加精准的控制来获得可靠的时序收敛结果。对设计中的每一个寄存器手工进行布局位置约束并保证时序收敛是一项浩大的工程,这标志着设计者能够完全控制设计的物理实现。这是一个理想目标,是不可能在有限的时间内完成的。通常的做法是设计者对设计的局部进行寄存器布局约束并通过实际运行布局布线工具来获得时序收敛的信息,通过数次迭代逼近预期的时序目标。

不久前我看到过一个这样的设计:一个子模块的每一个寄存器都得到了具体的布局位置约束。该模块的时序收敛也就相应地在每一次重新编译的过程中得到了保证。经过分析,这一子模块的设计和约束最初是在原理图中进行的,在达到时序收敛目标后该设计被转换为HDL语言描述,相应的约束也保存到了配置文件中。

6. 核心频率约束+时序例外约束+I/O约束+特定路径延时约束

好的时序约束应该是“引导型”的,而不应该是“强制型”的。通过给出设计中关键路径的时序延迟范围,把具体而微的工作留给EDA工具在该约束的限定范围内自由实现。这也是一个理想目标,需要设计者对每一条时序路径都做到心中有数,需要设计者分清哪些路径是可以通过核心频率和简单的时序例外约束就可以收敛的,哪些路径是必须制定MaxDelay和MinDelay的,一条也不能遗漏。设定路径延时约束就是间接地设定布局布线约束,但是比上述3、4、5的方法更灵活,而且不失其准确性。通过时序约束而不是显式的布局和网表约束来达到时序收敛才是时序约束的真谛。

记得有网友说过“好的时序是设计出来的,不是约束出来的”,我一直把这句话作为自己进行逻辑设计和时序约束的指导。好的约束必须以好的设计为前提。没有好的设计,在约束上下再大的功夫也是没有意义的。不过,通过正确的约束也可以检查设计的优劣,通过时序分析报告可以检查出设计上时序考虑不周的地方,从而加以修改。通过几次“分析—修改—分析”的迭代也可以达到完善设计的目标。应该说,设计是约束的根本,约束是设计的保证,二者是相辅相成的关系。

该用户于2009-1-7 12:58:19编辑过该文章

fpga如何约束走线_FPGA时序约束的几种方法相关推荐

  1. fpga如何约束走线_FPGA时序约束实战篇之多周期路径约束

    多周期路径约束 多周期路径,我们一般按照以下4个步骤来约束: 1. 带有使能的数据 首先来看带有使能的数据,在本工程中的Tming Report中,也提示了同一个时钟域之间的几个路径建立时间不满足要求 ...

  2. fpga如何约束走线_FPGA设计约束技巧之XDC约束之I/O篇 (上)

    <XDC约束技巧之时钟篇>中曾对I/O约束做过简要概括,相比较而言,XDC中的I/O约束虽然形式简单,但整体思路和约束方法却与UCF大相径庭.加之FPGA的应用特性决定了其在接口上有多种构 ...

  3. fpga如何约束走线_FPGA中的CLOCK REGION和SLR是什么含义

    上期内容:FPGA中的BEL, SITE, TILE是什么含义 由BEL到SITE再到TILE,具体内容可看上篇推文,那么TILE之上是什么呢? CLOCKREGION不同类型的TILE按列排列构成了 ...

  4. Allegro PCB设计中Etch层走线阻焊开窗的一种方法

    很多时候我们需要把一些走线不进行覆盖绿油处理,即阻焊开窗,通常是用于加大电流和散热能力功能. 在新版本的Allegro中 如果采用COPY或者Z-COPY命令的话, 走线CLINE只能在ETCH层中进 ...

  5. 【FPGA——时序篇】时序优化的几种方法

    参考博文:https://www.cnblogs.com/sepeng/p/5578402.html 参考书目:英文版:<advanced FPGA design>    中文版:< ...

  6. 怎么把线稿提取出来_PS教程:提取线稿如此简单?三种方法总有一种适合你

    原标题:PS教程:提取线稿如此简单?三种方法总有一种适合你 部落窝教育,每天学习PS独家原创视频 在PS出现之前,如果我们喜欢某个动漫角色大概只能通过临摹的方式将人物线条勾勒出来,但PS的出现将提取线 ...

  7. fpga如何约束走线_经验总结:FPGA时序约束的6种方法

    对自己的设计的实现方式越了解,对自己的设计的时序要求越了解,对目标器件的资源分布和结构越了解,对EDA工具执行约束的效果越了解,那么对设计的时序约束目标就会越清晰,相应地,设计的时序收敛过程就会更可控 ...

  8. fpga电平约束有什么作用_FPGA时序约束有什么样的作用

    何谓静态时序分析(Static Timing Analysis,简称STA) 它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析 ...

  9. fpga如何约束走线_如何正确的约束时钟—Vivado优化到关键路径

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

最新文章

  1. WebService之soap类型的服务和rest类型的服务
  2. 父类中“this” 指向问题
  3. 如何实现Asp与Asp.Net共享Session
  4. Lecture 17 Shortest Paths I
  5. 令牌桶 限速_Go 限流器实战系列(2) Token Bucket 令牌桶
  6. asp.net,Ajax发送异步请求后台修改数据
  7. 统计自然语言处理基础——学习摘要(1)
  8. 报错:bash: pip: command not found
  9. bs4 乱码_python使用beautifulsoup乱码问题
  10. 压缩视图状态之ajax(atlas)修正版
  11. 【STUDY】工程数学
  12. 扫拖一体洗地机实用吗、扫拖一体洗地机哪个品牌好,看完就知道
  13. 使用Java操纵Excel表格
  14. 第一章 红绿灯数据采集
  15. MHT代码阅读(1)
  16. qml之Repeater
  17. jn-社团申请、及时雨、风采展示三个模块bug修改
  18. Google C++编程风格指南阅读笔记之命名、注释和格式
  19. Android FTM Porting笔记
  20. 2004年十月十一日

热门文章

  1. PHP内存溢出是什么样的
  2. SkeyeVSS安全生产风险监测预警系统
  3. 计算机类扬大好还是苏州科技大学好,扬州大学和苏州科技大学哪个好?各自的优势有什么不同?...
  4. c语言中定义字母二维数组,C语言 | 数组
  5. 26488-24-4,Cyclo(D-Phe-L-Pro),cyclo-L-Phe-L-Pro,环(D-苯丙氨酸-L-脯氨酸)
  6. 【黑苹果】微星MSI Mortar Z370M+i7 9700k+macOS 10.15.x efi文件下载
  7. eclipse Java project 项目旁边有红色感叹号
  8. 表单序列化及问题处理
  9. 医械研发中的验证与确认
  10. 你不是不努力,但成功的为什么不是你?