对自己的设计的实现方式越了解,对自己的设计的时序要求越了解,对目标器件的资源分布和结构越了解,对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的过程是从一次成功的时序收敛结果开始,把特定的一组逻辑(Design Partition)在FPGA上实现的布局位置和布线结果(Netlist)固定下来,保证这一布局布线结果可以在新的编译中重现,相应地,这一组逻辑的时序收敛结果也就得到了保证。这个部分保留上一次编译结果的过程就是Incremental Compilation,保留的网表类型和保留的程度都可以设置,而不仅仅局限于Post-fit Netlist,从而获得相应的保留力度和优化效果。由于有了EDA工具的有力支持,虽然是精确到门级的细粒度约束,设计者只须进行一系列设置操作即可,不需要关心布局和布线的具体信息。由于精确到门级的约束内容过于繁多,在qsf文件中保存不下,得到保留的网表可以以Partial Netlist的形式输出到一个单独的文件qxp中,配和qsf文件中的粗略配置信息一起完成增量编译。

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

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

需要注意的是,方法3和4经常可以混合使用,即针对FloorPlanning指定的LogicLock Region,把它作为一个Design Partition进行Incremental Compilation。这是造成上述两种方法容易混淆的原因。

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

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

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

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

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

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

时序约束优先级_几种进行时序约束的方法相关推荐

  1. lisp压盖处理_一种压盖的制造方法

    专利名称:一种压盖的制造方法 [专利摘要]本实用新型具体涉及一种压盖机的改进.目的是提供一种定位准确的压盖机,包括工作台.支架.第一气缸.支撑架,第一气缸的活塞杆朝下,该活塞杆的自由端同轴固定按压盘, ...

  2. 弹性地基梁板法计算原理_一种筏板基础内力分析方法与流程

    本发明涉及建筑建设技术领域,具体涉及一种筏板基础内力分析方法. 背景技术: 筏板基础设计通常采用有限元分析(pkpm系列jccad及yjk系列基础设计模块软件),有限元分析由地基基础建模.地基基础有限 ...

  3. 冷却水的循环方式有哪几种_一种清洁环保高效的方法处理工业循环冷却水

    1 概述 工业用水主要包括锅炉用水.工艺用水.清洗用水和冷却用水,其中水量最大的是冷却用水,占工业用水的90%以上.为了节约资源,冷却水供水系统中一般采用循环冷却水系统.循环冷却水系统又可分为密闭式或 ...

  4. 微带线特性阻抗计算公式_几种计算微带线特性阻抗的方法.pdf

    几种计算微带线特性阻抗的方法 周刊 年第 期 ○信息技术教学与研究 2011 25 几种计算微带线特性阻抗的方法 段卓琦 大理学院 工程学院 云南 大理 ( , 671000 ) 摘 要 本文从不同的 ...

  5. mysql数据库预处理_一种MySQL数据库中间件预处理方法与流程

    本发明属于通信领域,特别涉及一种MySQL数据库中间件预处理方法. (二) 背景技术: 通常来说,MySQL集群和应用程序之间需要通过一个中间件来实现通信.中间件的作用是,对于应用程序来说,不需要关心 ...

  6. python预测机票价格_一种国内机票价格预测方法与流程

    本发明属于机票查询预测技术领域,具体涉及一种国内机票价格预测方法. 背景技术: 随着生活水平的提高,选择飞机作为旅游出行的交通工具的人数逐年增加.但是,旅客对于机票价格依然十分敏感,且以最优价格购买心 ...

  7. 条纹噪声图片_一种红外图像条纹噪声滤波方法与流程

    本发明属于红外图像处理技术领域,具体涉及一种红外图像条纹噪声滤波方法. 背景技术: 红外焦平面成像系统是红外成像技术发展的方向,是红外成像系统的核心器件.红外焦平面成像装置,如热像仪,通常会受到各种各 ...

  8. mysql数据库加密设备_一种基于MySQL数据库加密方法与流程

    本发明涉及数据库加密技术技术领域,具体的讲涉及一种基于MySQL数据库加密方法. 背景技术: 聚通达DBSecurity是一款基于透明加密技术的数据防泄漏产品,该产品能够实现对数据库中的敏感数据加密存 ...

  9. pet缩聚流程图_一种PET塑料的制备方法与流程

    本发明涉及一种高分子材料技术领域,尤其涉及一种PET塑料的制备方法. 背景技术: 聚对苯二甲酸乙二醇酯俗称涤纶树脂,学名为PET,由对苯二甲酸二甲酯与乙二醇酯交换或以对苯二甲酸与乙二醇酯化先合成对苯二 ...

最新文章

  1. 深入理解虚拟机之虚拟机字节码执行引擎
  2. [NOIP模拟测试3] 建造游乐园 题解(欧拉图性质)
  3. JAVA 条件语句 跟PHP没有区别!!!!!
  4. python编程单片机_Micro Python:用Python语言控制单片机
  5. 训练dnn_[预训练语言模型专题] MT-DNN(KD) : 预训练、多任务、知识蒸馏的结合
  6. linux vcenter6.5下载,vCenter 6.0更新至6.5
  7. 测试用例设计常用方法
  8. 三级联动下拉框(省市县)存储数据库,包含信息回填
  9. (转)2007北京高考作文题目(太有才了.我都看了无数遍了)
  10. android 外边距,外边距(padding)重叠的及解决办法
  11. linux 搭建mqtt服务
  12. STM32 keil中__IO得意思
  13. 名帖73 柳公权 楷书《玄秘塔碑》
  14. 了解JavaScript中的Promise
  15. 为什么培训班都是python
  16. 最新JAVA调用新浪微博API之发微博(转)
  17. Intel 82599网卡异常挂死原因
  18. 什么是联盟营销?联盟营销如何跨业引流?异业联盟需要注意哪些问题?
  19. Windows XP SP2 完美仿Vista Ghost V3.0
  20. Live800:阿里京东拼多多入局,关于C2M的新故事

热门文章

  1. k-means聚类算法与局部最优解
  2. 帝国的余辉(ATT)(二)
  3. simhash 介绍以及应用场景
  4. 没错,华为开始对AI下手了!
  5. Hadoop HDFS-分布式存储系统入门、配置、使用及架构原理分析
  6. 【电驱动】永磁同步电机工作原理及分类
  7. C++基础之右值引用
  8. 浅析10kV~35kV 变电站综合自动化系统设计与应用
  9. 读书笔记 | 公司治理研究重点文献导读
  10. 川教版计算机三年级上册教案,川教版小学三年级上期信息技术教学计划