由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此:  https://blog.csdn.net/qq_33486907/article/details/89380368   《TIMING_01 时序约束与时序分析引导篇》

目录

1 时序约束与时序分析

1.1 保证数字电路的正确性

1.2 对时序理解容易出现的误解

1.3 FPGA与FPGA构成的系统

1.4 时序约束和时序分析的关系


1 时序约束与时序分析

时序分析与时序约束一直以来都是数字电路设计中的重点和难点,即便一个数字电路功能设计的再好,如果实现时存在时序违规,其结果也是失败的。时序违规的背后其实是版图原理与实际电路工艺之间的矛盾,即现有电路工艺无法满足版图原理的时序性能;

如何解决这个问题呢? 方法很明显:(1)优化版图设计,在不改变电路功能的前提下,优化版图时序性能; (2)改善电路工艺,以满足电路设计的时序性能;

优化版图设计肯定比改善电路工艺的难度低,每一代电路工艺的进步,都需要大量的投入,尤其是在制成工艺进入7nm的时代,研发新的工艺不论是投入还是技术难度都越来越大。

1.1 保证数字电路的正确性

要保证数字电路设计的正确性其实要从两个方面去考虑:(1)功能设计的正确性;(2)时序的正确性; 前者是功能要求后者则是性能要求,设计时往往考验设计者的经验和能力,设计功能时没有加入对性能的考虑,容易导致设计失败;所以要保证数字电路的正确性不仅仅是要保证功能的正确性,同时也要保证时序的正确性;

1.2 对时序理解容易出现的误解

数字电路绝大多数都是以时序逻辑电路存在的,纯组合逻辑电路是很少的使用的,这里举一个例子说明;

使用硬件描述语言代码编写一个UART(异步串口)的电路代码,设计流程走完以后就可以上板进行调试了,如果发现通信有问题,脑海中浮现的第一个想法“是不是时序设计的不正确?”。

其实这个“时序对不对?”这个说法是有问题的,对于设计的电路来讲,UART能不能完成通信严格来讲是属于功能要求,正确的说法是设计是否满足了UART的协议(比如波特率、起始位、停止位、数据采集、数据接收逻辑处理是否正确);

“时序对不对?”这句话的正确理解应该是,对于用硬件描述语言设计的这个时序电路是否能在所要求性能的硬件环境下正常运行,而这个问题如果是使用正确的设计流程中,在时序约束和时序分析阶段就应该知道答案,而不是等到上板调试后再来提出这个问题;

讲到这里,可能又会提出一个疑问,例如一个使用了SPI总线芯片,芯片手册的时序图上也给出了很多关于SPI总线的时序参数,如果这个设计的不对,能不能称之为“时序对不对?” ,其实这个问题要分对象去看,对象不同说法不同。硬件描述语言描述的电路与SPI总线芯片进行通讯:(1)对于SPI总线芯片,时序图上标注的时序参数,实际上是SPI总线芯片对时序性能的要求;(2)而对于硬件描述语言描述的电路,这些时序参数实际上只是逻辑功能的要求罢了,为了去满足SPI总线芯片对时序性能的要求,硬件描述语言描述的电路会考虑如何去满足下游芯片的时钟周期、建立保持时间、数据采样和数据发送的恰当时机,这些时序参数要求与SPI总线协议一起都是对硬件描述语言描述的电路的功能要求;

当然还有一种情况就是外围芯片与硬件描述语言设计的电路是在同一时钟域时,外围芯片的时序要求也自然成为了硬件描述语言的时序要求,可以把这样的一个系统看作是一个整体去看待,很明显以上举的两个例子都不是属于这种情况。

以上观点仅代表个人观点,特此在这里提出可能误解的地方。

1.3 FPGA与FPGA构成的系统

前面的做了很长的内容铺垫,其实就为了能引出FPGA,FPGA与FPGA构成的系统仍然是数字电路的范畴,文章后续也是以FPGA与FPGA构成系统的时序约束与时序分析为主要内容,别的范畴在本文内容里也不在做过多的讨论;

自XILINX推出VIVADO和7系列FPGA以来,时序约束的文件从ISE的.UCF变成了业界标准的.XDC,约束的方法也进行转变,对于FPGA开发者来说这是一件好事,因为Altera和XILINX两大平台的约束统一也就不在那么难了,可以说学会一个平台的约束,那么另一个平台你也就会了。(ISE的约束方式虽然方法不太一样,但原理是一致的,时序分析的内容也值得参考),本篇文章的内容将结合示例,将时序分析原理、时序约束、时序分析、约束流程等进行一次较为全面的讲解。

1.4 时序约束和时序分析的关系

“好的时序性能是设计出来的,而不是约束出来的”;这句话是需要深刻体会一下的,为什么会这么说呢?

下面先来了解一下,时序约束到底在整个研发流程中都干了什么?

如图所示是vivado的界面,功能排布上是按照标准的设计流程排版的,这里简述一下FPGA的开发流程,设计输入 → 功能仿真(Simulation)→ RTL分析(RTL Analysis)→ 综合(Synthesis) → 实现(Implementation) ,具体如下图所示:

当然这幅图中的约束文件还包含了物理约束,这里只讨论时序约束;

时序约束通常在设计综合和设计实现里起作用。 在设计综合阶段,将优化过的RTL电路映射到FPGA的资源上,如何使用FPGA资源去映射才能更好的满足时序约束的条件,综合工具会尽力完成,同时在综合完毕以后会给出相应的时序报告; 在设计实现阶段,就是将综合阶段所映射的资源,在FPGA内部采用合适的布局和布线方式,来满足时序约束的条件;

这里可以总结出时序约束的第一个目的:告诉EDA工具需要的时序性能,EDA工具会竭尽所能满足;  可以肯定的是时序约束会影响电路的映射和布局布线,但是工具所能改善毕竟有限的,如果设计很糟糕,工具竭尽所能也没有满足要求的时序性能,那么这时就应该去优化设计,而不是约束,约束则不是解决时序违例的根本办法。

可能会提出另外一个问题,既然时序约束不能从源头解决时序违例问题,改善的作用很有限,那么为什么还要进行时序约束呢?  这就是时序约束的第二个目的:EDA工具会根据要求的时序性能,分析设计中的每一条时序路径是否满足要求,并告知不满足时序的路径,为优化设计提供依据,其实这个过程就是时序分析。  如果不进行时序约束,EDA工具将按照默认设置进行分析,能不能满足实际使用时的时序性能就不得而知了; 所以时序约束是时序分析的前提,没有约束就没有分析;

简单总结时序约束的作用:

(1)使EDA工具优化综合策略与布局布线,以满足时序约束条件; (2)为时序分析提供参考依据;

第2条的作用往往比第1条的作用要大的多,在设计时序很紧张时,或许EDA工具的尽力,可以勉强使设计能正常工作,但是这样的设计鲁棒性很差(Robus),同时也不便于维护升级,后期即使一个很小的改动也会导致时序异常。但是好的设计就不会有这样的问题,好的设计可以通过以下几个方面获得保证:(1)设计者的经验;(2)良好的设计风格;(3)以时序分析工具分析结果为参考依据,通过优化设计解决所有关键路径的时序违例问题;所以“好的时序性能是设计出来的,而不是约束出来的”;

不要急着跑,干货在后面,下一篇文章传送门在此:

https://blog.csdn.net/qq_33486907/article/details/89393007

《TIMING_03 时序分析原理》

TIMING_02 浅谈时序约束与时序分析相关推荐

  1. TIMING_01 时序约束与时序分析引导篇

    笔者前段时间推出AXI总线IP核系列博客(传送门在此:https://blog.csdn.net/qq_33486907/article/details/88289714) ,现在有要推出时序约束和时 ...

  2. 浅谈时序数据库(TSDB)

    浅谈时序数据库(TSDB) 一.什么是时序数据库 二.时序数据库特点 基本特点 核心特性 三.补充知识 LSM树(LSM tree vs B tree) B tree LSM tree 总结 四.常见 ...

  3. FPGA时序约束、时序分析(一)

    很多人询问关于约束.时序分析的问题,比如:如何设置setup,hold时间?如何使用全局时钟和第二全局时钟(长线资源)?如何进行分组约束?如何约束某部分组合逻辑?如何通过约束保证异步时钟域之间的数据交 ...

  4. FPGA时序分析和时序约束

    FPGA时序分析和时序约束 1时序分析和时序约束 2例子分析 2.1实现代码 2.2时序分析的基本模型 1时序分析和时序约束 时序分析的目的: 通过分析FPGA设计中各个寄存器之间的数据和时钟传输路径 ...

  5. FPGA时序约束篇之时序分析与时序约束的作用

    FPGA时序约束篇之时序分析与时序约束的作用 一.写在前面 二.名词解释 三.举个栗子 3.1 降低时钟频率 3.2 提升时钟频率 END 一.写在前面   在每个初学者学习FPGA设计时,都会听前辈 ...

  6. 时序分析和时序约束基础

    时序分析和时序约束基础 时序分析和时序约束基础 1. 时序分析 2. 时钟约束 时序分析和时序约束基础 1. 时序分析 以下图所示的电路为例,电路由两个 D 触发器 Reg1 和 Reg2 组成,数据 ...

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

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

  8. TIMING_06 VIVADO环境下的时序约束 之 输入延迟约束

    由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此:  https://blog.csdn.net/qq_33486907/ ...

  9. TIMING_05 VIVADO环境下的时序约束 之 基本时钟周期约束

    由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此:  https://blog.csdn.net/qq_33486907/ ...

最新文章

  1. 异步IO一定更好吗?
  2. 超人类AI的幻想与思考:自下而上构建的自我迭代意识系统
  3. 讲解Linux数据库安装
  4. displaytag 相关
  5. android 版本更新工具类_报表分析工具FastReport .Net 2021年超大版本更新,实现了对.NET 5的支持...
  6. 与 Brian Kernighan 一起回忆 Unix 的诞生!
  7. html2canvas图片坐标,html2canvas生成的图片偏移不完整的解决方法
  8. ibatis中输入/输出各种类型的参数分析及#与$区别 (转)
  9. HowNet文件介绍
  10. 基于PHP+MySQL共享自行车租赁管理系统的设计与实现
  11. tomcat发布网站的三种方式
  12. 今日学习在线编程题:小码哥的序列
  13. JavaScript 常用数组方法及使用技巧「数组的力量隐藏在数组方法中,必收藏」
  14. mysql|给表格插入一列,自带固定值
  15. java中的url_java中的url是什么
  16. 树莓派(七):调取IP摄像头
  17. 联发科p60和骁龙710哪个好_麒麟710和联发科P60哪款更好?联发科P60与麒麟710区别对比全面评测...
  18. Matlab-simulink汽车二自由度模型
  19. FileZilla FTP服务器源代码分析
  20. Consider using `allow_partial_search_results` setting to bypass this error.

热门文章

  1. Angular应用页面里_ngcontent属性的生成逻辑
  2. 还在安装各种截图软件?Windows10自带的截图工具你会用吗?
  3. 把经典的ABAP webdynpro应用配置到SAP Fiori Launchpad里
  4. How to configure a different backend system for OData consumption
  5. 如何在ui5 xml view中使用嵌入的自定义css style
  6. research how javascript is generated by java class
  7. CRM呼叫中心采用轮询和SNS服务器两种方式的架构
  8. Middleware Monitor Cockpit SMWP
  9. SAP CRM WebClient UI BSP server event
  10. 如何使用Kubernetes官网的免费测试集群学习Kubernetes操作